From 73a7ab390658080e0a766b319b80f3e6568f4c2e Mon Sep 17 00:00:00 2001 From: Frank Bryden Date: Tue, 30 Jun 2020 14:32:37 +0200 Subject: [PATCH 001/580] Issue fixes regarding NSD Management --- .../NSDManagementKeywords.robot | 118 +++++++++--------- .../NSDManagementNotification.robot | 2 + .../environment/nsDescriptors.txt | 9 +- .../environment/pnfDescriptors.txt | 5 +- .../environment/variables.txt | 17 +-- 5 files changed, 81 insertions(+), 70 deletions(-) diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 9304e5e06..b6681872a 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -4,13 +4,14 @@ Resource environment/subscriptions.txt Resource environment/nsDescriptors.txt # Specific nsDescriptors Parameters Resource environment/pnfDescriptors.txt # Specific pnfDescriptors Parameters Resource environment/individualSubscription.txt -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library MockServerLibrary Library OperatingSystem Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ +Library RequestsLibrary Library Process Library String @@ -65,7 +66,7 @@ Get all Network Service Descriptors Information without authorization token Get all Network Service Descriptors Information with expired or revoked authorization token Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication - Log The GET method queries using invalid token + Log The GET method queries using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} Log Execute Query and validate response @@ -203,7 +204,6 @@ GET Individual Network Service Descriptor Information with invalid resource iden Integer response status 404 ${output}= Output response Set Suite Variable ${response} ${output} - Set Suite Variable ${usageState} ${response['body']['nsdUsageState']} Send PATCH to disable Individual Network Service Descriptor Log Trying to perform a PATCH. As prerequisite the nsdInfo shall be in enabled operational state @@ -333,25 +333,24 @@ 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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdDownloadableZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} Get single file NSD Content in Plain or Zip Format Log Trying to get a NSD present in the NFVO Catalogue - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Accept": "${ACCEPT_ZIP}, ${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content + Rest Instances frankie.json ${output}= Output response Set Suite Variable ${response} ${output} Get multi file NSD Content in Plain or Zip Format Log Trying to get a VNFD from a given NSD Management present in the NFVO Catalogue - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Accept": "${ACCEPT_ZIP}, ${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdDownloadableZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -359,14 +358,13 @@ Get multi file NSD Content 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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdDownloadableZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} Get NSD Content with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Accept": "${ACCEPT_ZIP}, ${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${erroneous_nsdInfoId}/nsd_content ${output}= Output response @@ -374,8 +372,7 @@ Get NSD Content with invalid resource identifier 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_PLAIN}"} - Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Accept": "${ACCEPT_ZIP}, ${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd_content ${output}= Output response @@ -402,48 +399,54 @@ GET NSD Content with invalid Range Request Set Suite Variable ${response} ${output} Send PUT Request to upload NSD Content as zip file in asynchronous mode - Log Trying to perform a PUT. This method upload the content of a NSD - Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File ${contentZipFile} - PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${body} - ${response}= Output response body - Should Be Empty ${response} - ${output}= Output response - Set Suite Variable ${response} ${output} + Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_JSON}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False + ${body}= Get Binary File ${contentZipFile} + ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} + Log ${response} + Should Be Empty ${response.text} + ${response}= Create Dictionary status=${response.status_code} + Log ${response} + Set Suite Variable ${response} ${response} + Send PUT Request to upload NSD Content as plain text file in asynchronous mode Log Trying to perform a PUT. This method upload the content of a NSD - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_PLAIN}", "Authorization": "${AUTHORIZATION}", "Content-Type": "text/plain"} verify=False ${body}= Get File ${contentPlainFile} - PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content ${body} - ${response}= Output response body - Should Be Empty ${response} - ${output}= Output response - Set Suite Variable ${response} ${output} + ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} + Should Be Empty ${response.text} + ${response}= Create Dictionary status=${response.status_code} + Set Suite Variable ${response} ${response} Send PUT Request to upload NSD Content as zip file in synchronous mode - Log Trying to perform a PUT. This method upload the content of a NSD - Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File ${contentZipFile} - PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${body} - ${response}= Output response body - Should Be Empty ${response} - ${output}= Output response - Set Suite Variable ${response} ${output} + Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_JSON}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False + ${body}= Get Binary File ${contentZipFile} + ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} + Should Be Empty ${response.text} + #Log Got frankie's put with ${response.status_code} + ${response}= Create Dictionary status=${response.status_code} + Set Suite Variable ${response} ${response} Send PUT Request to upload NSD Content as plain text file in synchronous mode Log Trying to perform a PUT. This method upload the content of a NSD - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_PLAIN}", "Authorization": "${AUTHORIZATION}", "Content-Type": "text/plain"} verify=False ${body}= Get File ${contentPlainFile} - PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content ${body} + ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} + Should Be Empty ${response.text} + ${response}= Create Dictionary status=${response.status_code} + Set Suite Variable ${response} ${response} + +Check Post Condition NSD Content has been Uploaded + Log Checking NsdOnboardingNotification Recieved + Wait Until Keyword Succeeds ${retry} ${interval} Check Response is NsdOnboardingNotification + +Check Response is NsdOnboardingNotification ${response}= Output response body - Should Be Empty ${response} - ${output}= Output response - Set Suite Variable ${response} ${output} + Should Contain ${response['headers']['Content-Type']} application/json + ${schema} = Catenate SEPARATOR= NsdOnboardingNotification .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK + Check Post Condition NSD Content has been Uploaded Log Checking NsdOnboardingNotification Recieved @@ -653,7 +656,6 @@ GET Individual PNF Descriptor Information with invalid resource identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${erroneous_pnfdInfoId} - Integer response status 404 ${output}= Output response Set Suite Variable ${response} ${output} @@ -742,14 +744,16 @@ Get PNFD Content with conflict due to onboarding state Send PUT Request to upload PNFD Content as plain text file Log Trying to perform a PUT. This method upload the content of a PNFD - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File ${contentFilePnfd} - PUT ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${body} - ${response}= Output response body - Should Be Empty ${response} - ${output}= Output response - Set Suite Variable ${response} ${output} + Create Session github http://api.github.com + Create Session pnfd ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_PLAIN}", "Content-Type": "${ACCEPT_PLAIN}", "Authorization": "${AUTHORIZATION}"} verify=False + ${body}= Get Binary File ${contentZipFile} + ${response}= Put Request pnfd ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoUpld}/pnfd_content data=${body} + Log ${response} + Should Be Empty ${response.text} + ${response}= Create Dictionary status=${response.status_code} + Log ${response} + Set Suite Variable ${response} ${response} + Send PUT Request to upload PNFD Content with conflict due to onboarding state Log Trying to perform a PUT. This method upload the content of a PNFD @@ -980,13 +984,13 @@ Send Delete request for individual NSD Management Subscription with invalid reso Set Suite Variable ${response} ${output} Send Post request for individual NSD Management Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiVersion}/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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -995,7 +999,7 @@ Send Put request for individual NSD Management Subscription Set Suite Variable ${response} ${output} Send Patch request for individual NSD Management Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} diff --git a/SOL005/NSDManagement-API/NSDManagementNotification.robot b/SOL005/NSDManagement-API/NSDManagementNotification.robot index de6418c75..e2315bd50 100644 --- a/SOL005/NSDManagement-API/NSDManagementNotification.robot +++ b/SOL005/NSDManagement-API/NSDManagementNotification.robot @@ -295,6 +295,8 @@ Configure Notification Forward Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} Create Sessions + ${dir}= List Directory ${MOCK_SERVER_DIR} + Log ${dir} Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance Wait For Process handle=mockInstance timeout=5s on_timeout=continue Create Mock Session ${callback_uri}:${callback_port} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/environment/nsDescriptors.txt b/SOL005/NSDManagement-API/environment/nsDescriptors.txt index b16e19ee9..8c4ecdf58 100644 --- a/SOL005/NSDManagement-API/environment/nsDescriptors.txt +++ b/SOL005/NSDManagement-API/environment/nsDescriptors.txt @@ -1,9 +1,10 @@ *** Variables *** ${POS_FIELDS} name=nsdOnboardingState ${NEG_FIELDS} wrongName=any_value -${nsdInfoId} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 -${nsdInfoIdPlain} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 -${nsdInfoIdZip} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 +${nsdInfoId} 030b1c34-116a-4cfe-9226-19732c3a7b28 +${nsdInfoIdPlain} 20734bbb-abf6-4cd8-a35d-f416f95dc180 +${nsdInfoIdZip} 5548bf85-8580-4c52-90d1-13c1a7a1dcb0 +${nsdDownloadableZip} f3ce866a-a935-49db-9f39-8b14b662cedc ${erroneous_nsdInfoId} erroneous_nsdInfoId ${disabledNsdInfoId} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 ${fields} _links @@ -19,7 +20,7 @@ ${NFVO_RANGE_OK} 1 ${range} bytes=0-1023 ${erroneousRange} bytes=100000-1000000 # Requesting a out of range number of bytes ${onboardingStateNsdInfoId} b992a851-08b1-45a8-9282-a5f7a7df04a6 -${contentZipFile} files/nsdContent.zip +${contentZipFile} files/nsdContent.tar.gz ${contentPlainFile} files/nsdContent.yaml ${creatingNsdInfoId} 71241932-994a-46e2-ad6c-1740674dda44 ${NEG_AUTHORIZATION} Bearer negativetoken diff --git a/SOL005/NSDManagement-API/environment/pnfDescriptors.txt b/SOL005/NSDManagement-API/environment/pnfDescriptors.txt index c3bf1896b..1a7d70dbc 100644 --- a/SOL005/NSDManagement-API/environment/pnfDescriptors.txt +++ b/SOL005/NSDManagement-API/environment/pnfDescriptors.txt @@ -1,7 +1,8 @@ *** Variables *** ${POS_FIELDS} name=pnfdOnboardingState ${NEG_FIELDS} wrongName=any_value -${pnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 +${pnfdInfoId} 3327be9e-f716-43ac-aaeb-fcd54b0a5369 #used for testing downloads +${pnfdInfoUpld} 93c4cca6-b68b-4aa0-b06a-0e3725995585 #used for testing uploads ${erroneous_pnfdInfoId} erroneous_pnfdInfoId ${enabledPnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 ${NFVO_FIELDS} 1 @@ -10,6 +11,6 @@ ${ACCEPT_PLAIN} text/plain ${CONTENT_TYPE_PLAIN} text/plain ${erroneous_pnfdId} erroneousPnfdId ${onboardingStatePnfdId} 8ed2bf1f-f6ae-4d18-b478-bfab02fd4cd2 -${contentFilePnfd} files/pnfdContent.zip +${contentFilePnfd} files/nsdContent.yaml ${creatingPnfdId} 2e4ce0ef-3ea8-49f9-92dd-8771866015bb ${userDefinedDataSet} some \ No newline at end of file diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index 9de189269..9c5a80749 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -1,20 +1,23 @@ *** Variables *** -${NFVO_HOST} localhost # Hostname of the NFVO -${NFVO_PORT} 8081 # Listening port of the NFVO +${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO +${NFVO_PORT} 9999 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +#auth token for OSM Access +${AUTHORIZATION} Bearer FJMG15bVJeJb4Y1t1fSKXFaCFUh0e8LD ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json -${apiRoot} / +${apiRoot} /osm/ ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken ${apiVersion} v1 ${apiName} nsd ${FIELD_USAGE} 1 -${NFVO_AUTHENTICATION} Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 -${NFVO_AUTH_USAGE} 1 +${NFVO_AUTHENTICATION} Bearer isDGF7TiifGUgzeNb0Fls9aatfZRy4iX #never referenced +${NFVO_AUTH_USAGE} 1 #never refernced -${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#MOCK_SERVER_JAR one too many '..' +${MOCK_SERVER_JAR} ../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +${MOCK_SERVER_DIR} ../../bin/ ${callback_port} 9091 ${callback_uri} http://172.22.1.7:${callback_port} -- GitLab From ea60d8f7735ec5cbaf1e75ccdad670ea274004f8 Mon Sep 17 00:00:00 2001 From: brydenf Date: Wed, 1 Jul 2020 15:37:24 +0200 Subject: [PATCH 002/580] Reverted extra changes Signed-off-by: brydenf --- SOL005/NSDManagement-API/NSDManagementKeywords.robot | 6 ------ SOL005/NSDManagement-API/NSDManagementNotification.robot | 2 -- SOL005/NSDManagement-API/environment/variables.txt | 2 -- 3 files changed, 10 deletions(-) diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index b6681872a..b2c513f74 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -342,7 +342,6 @@ Get single file NSD Content in Plain or Zip Format Set Headers {"Accept": "${ACCEPT_ZIP}, ${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content - Rest Instances frankie.json ${output}= Output response Set Suite Variable ${response} ${output} @@ -402,10 +401,8 @@ Send PUT Request to upload NSD Content as zip file in asynchronous mode Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_JSON}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False ${body}= Get Binary File ${contentZipFile} ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} - Log ${response} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} - Log ${response} Set Suite Variable ${response} ${response} @@ -423,7 +420,6 @@ Send PUT Request to upload NSD Content as zip file in synchronous mode ${body}= Get Binary File ${contentZipFile} ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} Should Be Empty ${response.text} - #Log Got frankie's put with ${response.status_code} ${response}= Create Dictionary status=${response.status_code} Set Suite Variable ${response} ${response} @@ -748,10 +744,8 @@ Send PUT Request to upload PNFD Content as plain text file Create Session pnfd ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_PLAIN}", "Content-Type": "${ACCEPT_PLAIN}", "Authorization": "${AUTHORIZATION}"} verify=False ${body}= Get Binary File ${contentZipFile} ${response}= Put Request pnfd ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoUpld}/pnfd_content data=${body} - Log ${response} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} - Log ${response} Set Suite Variable ${response} ${response} diff --git a/SOL005/NSDManagement-API/NSDManagementNotification.robot b/SOL005/NSDManagement-API/NSDManagementNotification.robot index e2315bd50..de6418c75 100644 --- a/SOL005/NSDManagement-API/NSDManagementNotification.robot +++ b/SOL005/NSDManagement-API/NSDManagementNotification.robot @@ -295,8 +295,6 @@ Configure Notification Forward Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} Create Sessions - ${dir}= List Directory ${MOCK_SERVER_DIR} - Log ${dir} Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance Wait For Process handle=mockInstance timeout=5s on_timeout=continue Create Mock Session ${callback_uri}:${callback_port} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index 9c5a80749..7d4b0a285 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -15,9 +15,7 @@ ${FIELD_USAGE} 1 ${NFVO_AUTHENTICATION} Bearer isDGF7TiifGUgzeNb0Fls9aatfZRy4iX #never referenced ${NFVO_AUTH_USAGE} 1 #never refernced -#MOCK_SERVER_JAR one too many '..' ${MOCK_SERVER_JAR} ../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -${MOCK_SERVER_DIR} ../../bin/ ${callback_port} 9091 ${callback_uri} http://172.22.1.7:${callback_port} -- GitLab From 33b77cd746925e5ed5489e2f80f3c1c95842d9f6 Mon Sep 17 00:00:00 2001 From: brydenf Date: Mon, 6 Jul 2020 10:46:18 +0200 Subject: [PATCH 003/580] New JS files. Merge with remote changes. --- .../environment/nsDescriptors.txt | 4 +- .../environment/variables.txt | 2 +- .../NSFaultManagement-API/Subscriptions.robot | 4 ++ .../environment/variables.txt | 8 ++-- .../DeleteNSInstanceWorkflow.robot | 2 +- .../NSInstances.robot | 4 ++ .../NSLCMOperationKeywords.robot | 9 +++-- .../TerminateNSTask.robot | 1 + .../environment/variables.txt | 12 +++--- .../jsons/CreateNs.json | 6 +++ .../jsons/InstantiateNs.json | 3 ++ .../jsons/ScaleNs.json | 11 +++++ .../jsons/TerminateNsRequest.json | 5 ++- .../NSPerformanceManagementKeywords.robot | 40 +++++++++---------- .../environment/variables.txt | 8 ++-- .../VNFPackageManagementKeywords.robot | 4 +- .../environment/variables.txt | 8 ++-- 17 files changed, 81 insertions(+), 50 deletions(-) create mode 100644 SOL005/NSLifecycleManagement-API/jsons/CreateNs.json create mode 100644 SOL005/NSLifecycleManagement-API/jsons/InstantiateNs.json create mode 100644 SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json diff --git a/SOL005/NSDManagement-API/environment/nsDescriptors.txt b/SOL005/NSDManagement-API/environment/nsDescriptors.txt index 8c4ecdf58..4956174c4 100644 --- a/SOL005/NSDManagement-API/environment/nsDescriptors.txt +++ b/SOL005/NSDManagement-API/environment/nsDescriptors.txt @@ -1,9 +1,9 @@ *** Variables *** ${POS_FIELDS} name=nsdOnboardingState ${NEG_FIELDS} wrongName=any_value -${nsdInfoId} 030b1c34-116a-4cfe-9226-19732c3a7b28 +${nsdInfoId} 7abbe544-6a51-4c86-af55-3a345f80e7cc ${nsdInfoIdPlain} 20734bbb-abf6-4cd8-a35d-f416f95dc180 -${nsdInfoIdZip} 5548bf85-8580-4c52-90d1-13c1a7a1dcb0 +${nsdInfoIdZip} 352fac1d-ddce-454b-b072-184cf5ed94f5 ${nsdDownloadableZip} f3ce866a-a935-49db-9f39-8b14b662cedc ${erroneous_nsdInfoId} erroneous_nsdInfoId ${disabledNsdInfoId} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index 7d4b0a285..0501bca2d 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -3,7 +3,7 @@ ${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO ${NFVO_PORT} 9999 # Listening port of the NFVO ${NFVO_SCHEMA} https #auth token for OSM Access -${AUTHORIZATION} Bearer FJMG15bVJeJb4Y1t1fSKXFaCFUh0e8LD +${AUTHORIZATION} Bearer YguA4klaSzOxwE65MJ7aAWZvkOj2gAup ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json ${apiRoot} /osm/ diff --git a/SOL005/NSFaultManagement-API/Subscriptions.robot b/SOL005/NSFaultManagement-API/Subscriptions.robot index 0fb8ac8ce..36b04350c 100644 --- a/SOL005/NSFaultManagement-API/Subscriptions.robot +++ b/SOL005/NSFaultManagement-API/Subscriptions.robot @@ -1,7 +1,11 @@ *** Settings *** Resource environment/variables.txt Resource NSFMOperationKeywords.robot +<<<<<<< Updated upstream Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +======= +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +>>>>>>> Stashed changes Library OperatingSystem Library DependencyLibrary Library JSONLibrary diff --git a/SOL005/NSFaultManagement-API/environment/variables.txt b/SOL005/NSFaultManagement-API/environment/variables.txt index 7f86938c5..5b0d10e77 100644 --- a/SOL005/NSFaultManagement-API/environment/variables.txt +++ b/SOL005/NSFaultManagement-API/environment/variables.txt @@ -1,15 +1,15 @@ *** Variables *** -${NFVO_HOST} localhost # Hostname of the VNFM -${NFVO_PORT} 8080 # Listening port of the VNFM +${NFVO_HOST} 172.21.248.145 # Hostname of the VNFM +${NFVO_PORT} 9999 # Listening port of the VNFM ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${AUTHORIZATION} Bearer 3mT1BuYgMFj3UDqGGtj4ZTfKH74LUCLU ${ACCEPT} application/json ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 ${alarm_filter} nsInstanceId ${nsInstanceId} 007c111c-38a1-42c0-a666-7475ecb1567c ${invalid_alarm_filter} badFilter -${apiRoot} / +${apiRoot} /osm ${apiName} nsfm ${apiVersion} v1 ${CONTENT_TYPE} application/json diff --git a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot index 480600cca..fe061b727 100644 --- a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot @@ -20,4 +20,4 @@ NS Instance Deletion DELETE IndividualNSInstance Check HTTP Response Status Code Is 204 Check HTTP Response Body Json Schema Is NsIdentifierDeletionNotification - Check Instance Deleted \ No newline at end of file + Check Instance Deleted diff --git a/SOL005/NSLifecycleManagement-API/NSInstances.robot b/SOL005/NSLifecycleManagement-API/NSInstances.robot index 3d579f4cc..bf22dac23 100644 --- a/SOL005/NSLifecycleManagement-API/NSInstances.robot +++ b/SOL005/NSLifecycleManagement-API/NSInstances.robot @@ -1,7 +1,11 @@ *** Settings *** Resource environment/variables.txt Resource NSLCMOperationKeywords.robot +<<<<<<< Updated upstream Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +======= +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +>>>>>>> Stashed changes Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index a11b0047c..1b77de8b2 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -214,7 +214,8 @@ POST New nsInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/CreateNsRequest.json + #changed CreateNsRequest to CreateNs + ${body}= Get File jsons/CreateNs.json Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -396,7 +397,7 @@ GET Instantiate NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/InstantiateNsRequest.json + ${body}= Get File jsons/InstantiateNs.json Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/instantiate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -440,7 +441,7 @@ POST scale nsInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/ScaleNsRequest.json + ${body}= Get File jsons/ScaleNs.json Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -699,7 +700,7 @@ GET Individual NS LCM OP Occurrence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot index 9e9870149..20d927b2e 100644 --- a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot @@ -20,6 +20,7 @@ POST Terminate a NSInstance Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check resource not_instantiated + Sleep 15s POST Terminate a NSInstance Conflict [Documentation] Test ID: 5.3.2.7.2 diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index 94a133ae4..3ce8b5edb 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -1,22 +1,22 @@ *** Variables *** ${VNFM_HOST} localhost # Hostname of the VNFM ${VNFM_PORT} 8080 # Listening port of the VNFM -${NFVO_HOST} localhost # Hostname of the NFVO -${NFVO_PORT} 8081 # Listening port of the NFVO +${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO +${NFVO_PORT} 9999 # Listening port of the NFVO ${VNFM_SCHEMA} https ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${AUTHORIZATION} Bearer kn6jROAkSsHj0Bw70j5jyJiLN8KO6xKI ${CONTENT_TYPE} application/json ${CONTENT_TYPE_PATCH} application/merge-patch+json ${ACCEPT_JSON} application/json ${ACCEPT} application/json -${apiRoot} / +${apiRoot} /osm/ ${apiName} nslcm ${apiVersion} v1 ${AUTH_USAGE} 1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX -${nsInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${nsInstanceId} 66f27112-8b6b-4e70-91a8-b8625a20fc8f ${ConflictNsInstanceId} 007c111c-e602-4afa-8e13-962fb5a7d81d ${nsInstanceName} Test-nsInstance ${nsInstanceDescription} description ns @@ -28,7 +28,7 @@ ${nsPkgId_processing} 007c111c-38a1-42c0-a666-7475ecb1567c ${ARTIFACT_TYPE} application/octet-stream ${ARTIFACT_ID} artifactId ${WRONG_ACCEPT} application/json -${nsLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d +${nsLcmOpOccId} 4f704476-6a4f-4473-be24-2868b94ac214 ${CancelMode} GRACEFUL ${NFVO_DUPLICATION} 0 ${sub_filter} filter diff --git a/SOL005/NSLifecycleManagement-API/jsons/CreateNs.json b/SOL005/NSLifecycleManagement-API/jsons/CreateNs.json new file mode 100644 index 000000000..58485d950 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/jsons/CreateNs.json @@ -0,0 +1,6 @@ +{ + "nsdId": "20734bbb-abf6-4cd8-a35d-f416f95dc180", + "nsName": "myNS", + "vimAccountId": "46baa285-994b-4615-8fd1-84fff6e90832", + "nsDescription": "fancy router and firewall combo" +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNs.json b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNs.json new file mode 100644 index 000000000..696945298 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNs.json @@ -0,0 +1,3 @@ +{ + "nsFlavourId": 0 +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json b/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json new file mode 100644 index 000000000..d5c8dd902 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json @@ -0,0 +1,11 @@ +{ + "scaleType": "SCALE_VNF", + "timeout_ns_scale": 1, + "scaleVnfData": { + "scaleVnfType": "SCALE_IN", + "scaleByStepData": { + "scaling-group-descriptor": "myScalingGroup", + "member-vnf-index": "1" + } + } + } \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/TerminateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/TerminateNsRequest.json index a65d7d3b0..4ca37f187 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/TerminateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/TerminateNsRequest.json @@ -1,3 +1,4 @@ { - "terminationTime": "2021-04-12T23:20:50.52Z" -} \ No newline at end of file + "timeout_ns_terminate": 1, + "autoremove": false +} diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index fd2302fac..a4c73f1a5 100644 --- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot +++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot @@ -273,7 +273,7 @@ Check HTTP Response Body Pm Job Identifier matches the requested Pm Job Get Individual Performance Report Log Trying to get a performance report present in the NFVO 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}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -281,21 +281,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}/${apiVersion}/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}/${apiVersion}/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}/${apiVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -305,7 +305,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}/${apiVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -315,7 +315,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}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -343,7 +343,7 @@ Check Postcondition NS Individual Performance Report is Unmodified (Implicit) GET all Performance Thresholds Log Trying to get all thresholds present in the NFVO 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}/${apiVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -359,7 +359,7 @@ GET Performance Thresholds with attribute-based filter GET Performance Thresholds with invalid attribute-based filter Log Trying to get thresholds present in the NFVO 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}/${apiVersion}/thresholds?${FILTER_KO} ${output}= Output response Set Suite Variable ${response} ${output} @@ -367,14 +367,14 @@ GET Performance Thresholds with invalid attribute-based filter GET NS performance Thresholds with invalid resource endpoint Log Trying to get thresholds present in the NFVO 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}/${apiVersion}/threshold ${output}= Output response Set Suite Variable ${response} ${output} Send Post Request Create new Performance Threshold Log Creating a new THreshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${request}= Get File jsons/CreateThresholdRequest.json @@ -384,7 +384,7 @@ Send Post Request Create new Performance Threshold Send PUT Request for all Performance Thresholds Log PUT THresholds - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} PUT ${apiRoot}/${apiName}/${apiVersion}/thresholds @@ -393,7 +393,7 @@ Send PUT Request for all Performance Thresholds Send PATCH Request for all Performance Thresholds Log PUT THresholds - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds @@ -402,7 +402,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}/${apiVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -430,7 +430,7 @@ Check HTTP Response Body Thresholds match the requested attribute-based filter GET Individual NS performance Threshold Log Trying to get a Threhsold present in the NFVO 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}/${apiVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -438,28 +438,28 @@ GET Individual NS performance Threshold GET individual NS 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}/${apiVersion}/thresholds/${erroneousThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual NS performance Threshold Log Trying to delete a Threhsold in the NFVO - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual NS performance Threshold with invalid resource identifier Log Trying to delete a Threhsold in the NFVO 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}/${apiVersion}/thresholds/${erroneousThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post request for individual NS 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}/${apiVersion}/thresholds/${newThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -467,7 +467,7 @@ Send Post request for individual NS performance Threshold Send Put request for individual NS 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}/${apiVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -478,7 +478,7 @@ Send Put request for individual NS performance Threshold Send Patch request for individual NS 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}/${apiVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} diff --git a/SOL005/NSPerformanceManagement-API/environment/variables.txt b/SOL005/NSPerformanceManagement-API/environment/variables.txt index 64de1566e..3fa28a915 100644 --- a/SOL005/NSPerformanceManagement-API/environment/variables.txt +++ b/SOL005/NSPerformanceManagement-API/environment/variables.txt @@ -1,11 +1,11 @@ *** Variables *** -${NFVO_HOST} localhost # Hostname of the NFVO -${NFVO_PORT} 8081 # Listening port of the NFVO +${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO +${NFVO_PORT} 9999 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${AUTHORIZATION} Bearer ivwDluws6XVhdFqGznZiw8cK1wP67S9b ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json -${apiRoot} / +${apiRoot} /osm ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken ${apiVersion} v1 diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index ff83f44c6..8f9cdeb61 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -173,7 +173,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}/${apiVersion}/vnf_package + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${erroneousVnfPkgId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -387,7 +387,7 @@ Get VNFD in Individual VNF Package with conflict due to onboarding state 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_ZIP}"} + Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 80469cdfe..aef570b42 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -1,12 +1,12 @@ *** Variables *** -${NFVO_HOST} localhost # Hostname of the NFVO -${NFVO_PORT} 8081 # Listening port of the NFVO +${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO +${NFVO_PORT} 9999 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${AUTHORIZATION} Bearer Vr37Kbwr4eWZUNoSpWwy49mkxVmpmPWG ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json -${apiRoot} / +${apiRoot} /osm ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken ${apiVersion} v1 -- GitLab From 526c4acaa7f5f318d760555402822ecbced2c268 Mon Sep 17 00:00:00 2001 From: brydenf Date: Mon, 6 Jul 2020 12:20:39 +0200 Subject: [PATCH 004/580] Removed duplicate decleration of keywords --- .../NSDManagement-API/NSDManagementKeywords.robot | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index b2c513f74..2db6cd863 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -444,18 +444,6 @@ Check Response is NsdOnboardingNotification Log Json Schema Validation OK -Check Post Condition NSD Content has been Uploaded - Log Checking NsdOnboardingNotification Recieved - Wait Until Keyword Succeeds ${retry} ${interval} Check Response is NsdOnboardingNotification - -Check Response is NsdOnboardingNotification - ${response}= Output response body - Should Contain ${response['headers']['Content-Type']} application/json - ${schema} = Catenate SEPARATOR= NsdOnboardingNotification .schema.json - Validate Json ${schema} ${response['body']} - Log Json Schema Validation OK - - Check Postcondition NSD Content is uploaded and available in the NFVO Get single file NSD Content in Plain or Zip Format Check HTTP Response Status Code Is 200 @@ -740,7 +728,6 @@ Get PNFD Content with conflict due to onboarding state Send PUT Request to upload PNFD Content as plain text file Log Trying to perform a PUT. This method upload the content of a PNFD - Create Session github http://api.github.com Create Session pnfd ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_PLAIN}", "Content-Type": "${ACCEPT_PLAIN}", "Authorization": "${AUTHORIZATION}"} verify=False ${body}= Get Binary File ${contentZipFile} ${response}= Put Request pnfd ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoUpld}/pnfd_content data=${body} -- GitLab From b30d067e2ebd8a440f164d01010dad84b78f9fc5 Mon Sep 17 00:00:00 2001 From: brydenf Date: Mon, 6 Jul 2020 12:21:06 +0200 Subject: [PATCH 005/580] Made js file into template --- SOL005/NSLifecycleManagement-API/jsons/CreateNs.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/jsons/CreateNs.json b/SOL005/NSLifecycleManagement-API/jsons/CreateNs.json index 58485d950..b014121df 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/CreateNs.json +++ b/SOL005/NSLifecycleManagement-API/jsons/CreateNs.json @@ -1,6 +1,6 @@ -{ - "nsdId": "20734bbb-abf6-4cd8-a35d-f416f95dc180", +{{ + "nsdId": "{nsdId}", "nsName": "myNS", "vimAccountId": "46baa285-994b-4615-8fd1-84fff6e90832", "nsDescription": "fancy router and firewall combo" -} \ No newline at end of file +}} \ No newline at end of file -- GitLab From aacc11c9e2d7585f1cd8a5de90c7406ec75a4eb0 Mon Sep 17 00:00:00 2001 From: brydenf Date: Fri, 17 Jul 2020 10:08:33 +0200 Subject: [PATCH 006/580] Templated JSON files in SOL005/ along with minor bug fixes Signed-off-by: brydenf --- .../IndividualNSDescriptor.robot | 2 +- .../NSDManagementKeywords.robot | 13 ++++--- .../environment/nsDescriptors.txt | 8 ++--- .../environment/pnfDescriptors.txt | 4 +-- .../environment/subscriptions.txt | 3 +- .../environment/variables.txt | 3 +- .../NSDManagement-API/files/nsdContent.yaml | 16 +++++++++ SOL005/NSDManagement-API/files/nsdContent.zip | Bin 0 -> 391 bytes .../jsons/subscriptions.json | 2 +- .../NSFMOperationKeywords.robot | 12 ++++--- .../NSFaultManagement-API/Subscriptions.robot | 4 --- .../environment/variables.txt | 4 +-- .../jsons/fmSubscriptionRequest.json | 14 ++++---- .../NSInstances.robot | 4 --- .../NSLCMOperationKeywords.robot | 34 +++++++++++------- .../environment/variables.txt | 18 ++++++++-- .../jsons/CreateNs.json | 6 ---- .../jsons/CreateNsRequest.json | 30 ++++------------ .../jsons/HealNsRequest.json | 6 ++-- .../jsons/InstantiateNs.json | 6 ++-- .../jsons/LccnSubscriptionRequest.json | 16 ++++----- .../jsons/ScaleNs.json | 22 ++++++------ .../jsons/TerminateNsRequest.json | 2 +- .../jsons/UpdateNsRequest.json | 6 ++-- .../jsons/scaleNsToLevelRequest.json | 6 ++-- .../NSPerformanceManagementKeywords.robot | 22 +++++++----- .../environment/IndividualPmJob.txt | 2 +- .../environment/variables.txt | 8 +++-- .../jsons/CreatePmJobRequest.json | 16 ++++----- .../jsons/CreateThresholdRequest.json | 23 ++++++------ .../jsons/subscriptions.json | 10 +++--- .../VNFPackageManagementKeywords.robot | 31 +++++++++------- .../environment/variables.txt | 2 +- .../environment/vnfPackageContentViaUri.txt | 2 +- .../jsons/UploadVnfPkgFromUriRequest.json | 6 ++-- .../jsons/subscriptions.json | 12 +++---- 36 files changed, 203 insertions(+), 172 deletions(-) create mode 100644 SOL005/NSDManagement-API/files/nsdContent.yaml create mode 100644 SOL005/NSDManagement-API/files/nsdContent.zip delete mode 100644 SOL005/NSLifecycleManagement-API/jsons/CreateNs.json diff --git a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot index 2ff40359e..47a1aa7a0 100644 --- a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot @@ -94,7 +94,7 @@ Enable Individual Network Service Descriptor with conflict due to onboarding sta Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - Enable Individual Network Service Descriptor with HTTP Etag precondition failure +Enable Individual Network Service Descriptor with HTTP Etag precondition failure [Documentation] Test ID: 5.3.1.2.7 ... Test title: Enable Individual Network Service Descriptor with HTTP Etag precondition failure ... Test objective: The objective is to test that the retrieval of an Network Service Descriptor fails due to a precondition failure when using an uncorrect Http Etag identified. diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 2db6cd863..325d91c6b 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -815,7 +815,8 @@ Send Post Request for NSD Management Subscription Log Trying to create a new subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${output}= Output response @@ -828,7 +829,8 @@ 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}"} - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${output}= Output response @@ -880,6 +882,7 @@ Check HTTP Response Body Json Schema Is [Arguments] ${input} Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json + Log ${response['body']} Validate Json ${schema} ${response['body']} Log Json Schema Validation OK @@ -895,7 +898,8 @@ Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filte Check HTTP Response Body NsdmSubscription Attributes Values Match the Issued Subscription Log Check Response matches subscription - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} ${subscription}= evaluate json.loads('''${body}''') json Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} @@ -922,7 +926,8 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab ${result}= Output response body Validate Json NsdmSubscription.schema.json ${result} Log Validated NsdmSubscription schema - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} ${subscription}= evaluate json.loads('''${body}''') json Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} Log Validated Issued subscription is same as original diff --git a/SOL005/NSDManagement-API/environment/nsDescriptors.txt b/SOL005/NSDManagement-API/environment/nsDescriptors.txt index 4956174c4..72804bd3a 100644 --- a/SOL005/NSDManagement-API/environment/nsDescriptors.txt +++ b/SOL005/NSDManagement-API/environment/nsDescriptors.txt @@ -1,10 +1,10 @@ *** Variables *** ${POS_FIELDS} name=nsdOnboardingState ${NEG_FIELDS} wrongName=any_value -${nsdInfoId} 7abbe544-6a51-4c86-af55-3a345f80e7cc -${nsdInfoIdPlain} 20734bbb-abf6-4cd8-a35d-f416f95dc180 -${nsdInfoIdZip} 352fac1d-ddce-454b-b072-184cf5ed94f5 -${nsdDownloadableZip} f3ce866a-a935-49db-9f39-8b14b662cedc +${nsdInfoId} 9e708376-4f96-4972-89c2-243760626f20 +${nsdInfoIdPlain} 01872c48-3631-4060-afa8-ca7cbef8a4d8 +${nsdInfoIdZip} 01872c48-3631-4060-afa8-ca7cbef8a4d8 +${nsdDownloadableZip} cac6ac71-0fdf-45d1-a056-775cbb8157b5 ${erroneous_nsdInfoId} erroneous_nsdInfoId ${disabledNsdInfoId} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 ${fields} _links diff --git a/SOL005/NSDManagement-API/environment/pnfDescriptors.txt b/SOL005/NSDManagement-API/environment/pnfDescriptors.txt index 1a7d70dbc..57b78b807 100644 --- a/SOL005/NSDManagement-API/environment/pnfDescriptors.txt +++ b/SOL005/NSDManagement-API/environment/pnfDescriptors.txt @@ -1,8 +1,8 @@ *** Variables *** ${POS_FIELDS} name=pnfdOnboardingState ${NEG_FIELDS} wrongName=any_value -${pnfdInfoId} 3327be9e-f716-43ac-aaeb-fcd54b0a5369 #used for testing downloads -${pnfdInfoUpld} 93c4cca6-b68b-4aa0-b06a-0e3725995585 #used for testing uploads +${pnfdInfoId} b227e618-cdb9-485b-8bfe-d4b8dee8e678 #used for testing downloads +${pnfdInfoUpld} dd7ff0f8-0e63-41b4-a572-568d0db30153 #used for testing uploads ${erroneous_pnfdInfoId} erroneous_pnfdInfoId ${enabledPnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 ${NFVO_FIELDS} 1 diff --git a/SOL005/NSDManagement-API/environment/subscriptions.txt b/SOL005/NSDManagement-API/environment/subscriptions.txt index d8c041102..72c529236 100644 --- a/SOL005/NSDManagement-API/environment/subscriptions.txt +++ b/SOL005/NSDManagement-API/environment/subscriptions.txt @@ -1,4 +1,5 @@ *** Variables *** -${filter_ok} callbackUri=http://172.22.1.7:9091/nsd/subscriptions +${notifCallbackUri} http://172.22.1.7:9091/nsd/subscriptions +${filter_ok} callbackUri=${notifCallbackUri} ${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based ${SEPERATOR} = \ No newline at end of file diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index 0501bca2d..f79a4d346 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -2,8 +2,7 @@ ${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO ${NFVO_PORT} 9999 # Listening port of the NFVO ${NFVO_SCHEMA} https -#auth token for OSM Access -${AUTHORIZATION} Bearer YguA4klaSzOxwE65MJ7aAWZvkOj2gAup +${AUTHORIZATION} Bearer lTxE0BXRcVPjlIUwHLVH5Dtjl39sZ9qp ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json ${apiRoot} /osm/ diff --git a/SOL005/NSDManagement-API/files/nsdContent.yaml b/SOL005/NSDManagement-API/files/nsdContent.yaml new file mode 100644 index 000000000..94b9907be --- /dev/null +++ b/SOL005/NSDManagement-API/files/nsdContent.yaml @@ -0,0 +1,16 @@ +nsd:nsd-catalog: + nsd: + - constituent-vnfd: [] + description: myNSD descriptor + id: myNSDRevisitedA + name: myNSDRevisitedA + short-name: myNSD + vendor: OSM Composer + version: '1.0' + vld: + - id: ns_vl_u5el + mgmt-network: 'true' + name: ns_vl_u5el + type: ELAN + vim-network-name: PUBLIC + vnfd-connection-point-ref: [] diff --git a/SOL005/NSDManagement-API/files/nsdContent.zip b/SOL005/NSDManagement-API/files/nsdContent.zip new file mode 100644 index 0000000000000000000000000000000000000000..7518dd85af2450c67ce648cb1a80760070040652 GIT binary patch literal 391 zcmWIWW@Zs#U}4~35U;rv@T}Tj?;-;OLpUP?g8+jJLvE#Cu!}yJ)T>O)%?Sx z>T4X=yRUJj72FJrEQ&zoU?MeOqaU*&&)uI~`R1%s8&##Z@OUg;8&c}D!YcNTP~k@Z zPW=`2@$+vhu>^nl^X7Y;+|&mvS*~xr^sVMgIRn@73Ng?57 zk&KE_rN{ECWgm?nFZO_A95@~DYS>HM$XN}sXhjrpJyW+=WnOYU8I zujaLTMt+*=+FHMFy+7{$rkB;@_!2ga`*Zf&m`rltBlGIJ&YAt(mb|k*rvBWr%j?RF zJg)02X5an%skCnKR)OWbf@Q({c@I{YrrJb!rw4d5GRZOH3LFWbzZn>S;l!|{5yZj_ aDpp8Pp#@WbH!B-RJtGi?0cmNF5exwIxQKxO literal 0 HcmV?d00001 diff --git a/SOL005/NSDManagement-API/jsons/subscriptions.json b/SOL005/NSDManagement-API/jsons/subscriptions.json index c77b51999..92a9db1b0 100644 --- a/SOL005/NSDManagement-API/jsons/subscriptions.json +++ b/SOL005/NSDManagement-API/jsons/subscriptions.json @@ -1,3 +1,3 @@ { - "callbackUri": "http://172.22.1.7:9091/nsd/subscriptions" + "callbackUri": "{notifCallbackUri}" } \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot index a1c10db6a..f2df28a61 100644 --- a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot +++ b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot @@ -7,7 +7,8 @@ Library OperatingSystem #Suite Teardown Terminate All Processes kill=true Library MockServerLibrary Library Process -Library Collections +Library Collections +Library String *** Keywords *** Create Sessions @@ -212,7 +213,8 @@ POST Subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/fmSubscriptionRequest.json + ${template}= Get File jsons/fmSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -223,7 +225,8 @@ Post Create subscription - DUPLICATION Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/fmSubscriptionRequest.json + ${template}= Get File jsons/fmSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -234,7 +237,8 @@ Post Create subscription - NO-DUPLICATION Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/fmSubscriptionRequest.json + ${template}= Get File jsons/fmSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSFaultManagement-API/Subscriptions.robot b/SOL005/NSFaultManagement-API/Subscriptions.robot index 36b04350c..0fb8ac8ce 100644 --- a/SOL005/NSFaultManagement-API/Subscriptions.robot +++ b/SOL005/NSFaultManagement-API/Subscriptions.robot @@ -1,11 +1,7 @@ *** Settings *** Resource environment/variables.txt Resource NSFMOperationKeywords.robot -<<<<<<< Updated upstream Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -======= -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false ->>>>>>> Stashed changes Library OperatingSystem Library DependencyLibrary Library JSONLibrary diff --git a/SOL005/NSFaultManagement-API/environment/variables.txt b/SOL005/NSFaultManagement-API/environment/variables.txt index 5b0d10e77..f1f00fbe7 100644 --- a/SOL005/NSFaultManagement-API/environment/variables.txt +++ b/SOL005/NSFaultManagement-API/environment/variables.txt @@ -2,7 +2,7 @@ ${NFVO_HOST} 172.21.248.145 # Hostname of the VNFM ${NFVO_PORT} 9999 # Listening port of the VNFM ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer 3mT1BuYgMFj3UDqGGtj4ZTfKH74LUCLU +${AUTHORIZATION} Bearer 7EiP8HbWqpAaWVcZojq5WGm8theaCiym ${ACCEPT} application/json ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 @@ -51,8 +51,8 @@ ${response} {} ${req_mock} {} ${resp_mock} {} -${callback_uri} http://localhost ${callback_port} 9091 +${callback_uri} http://172.22.1.7:${callback_port} ${callback_endpoint} /endpoint ${callback_endpoint_fwd} /endpoint/check ${callback_endpoint_error} /endpoint_404 diff --git a/SOL005/NSFaultManagement-API/jsons/fmSubscriptionRequest.json b/SOL005/NSFaultManagement-API/jsons/fmSubscriptionRequest.json index 0f22fd8bb..e9a8b3b01 100644 --- a/SOL005/NSFaultManagement-API/jsons/fmSubscriptionRequest.json +++ b/SOL005/NSFaultManagement-API/jsons/fmSubscriptionRequest.json @@ -1,10 +1,10 @@ -{ - "filter": { - "nsInstanceSubscriptionFilter": { +{{ + "filter": {{ + "nsInstanceSubscriptionFilter": {{ "notificationTypes": [ "AlarmNotification" ] - } - }, - "callbackUri": "http://127.0.0.1/subscribe" -} \ No newline at end of file + }} + }}, + "callbackUri": "{callback_uri}{callback_endpoint}" +}} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/NSInstances.robot b/SOL005/NSLifecycleManagement-API/NSInstances.robot index bf22dac23..3d579f4cc 100644 --- a/SOL005/NSLifecycleManagement-API/NSInstances.robot +++ b/SOL005/NSLifecycleManagement-API/NSInstances.robot @@ -1,11 +1,7 @@ *** Settings *** Resource environment/variables.txt Resource NSLCMOperationKeywords.robot -<<<<<<< Updated upstream Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -======= -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false ->>>>>>> Stashed changes Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 1b77de8b2..26c63494e 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -7,6 +7,7 @@ Library JSONSchemaLibrary schemas/ Library OperatingSystem Library MockServerLibrary Library Collections +Library String *** Keywords *** Initialize System @@ -148,7 +149,8 @@ Launch another LCM operation Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleNsToLevelRequest.json + ${template}= Get File jsons/scaleNsToLevelRequest.json + ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale_to_level ${body} Integer response status 202 @@ -182,13 +184,14 @@ Check Postcondition NS Instance is deleted Check Postcondition NS Instance is not modified GET IndividualNSInstance ${resp_dict}= evaluate json.loads('''${response['body']}''') json - ${body}= Get File jsons/CreateNsRequest.json + ${template}= Get File jsons/CreateNsRequest.json + ${body}= Format String ${template} nsdId=${nsdId} nsInstanceName=${nsInstanceName} vimAccountId=${vimAccountId} nsInstanceDescription=${nsInstanceDescription} Dictionaries Should Be Equal ${resp_dict} ${body} values=True Check HTTP Response Header Contains [Arguments] ${HEADER_TOCHECK} Should Contain ${response['headers']} ${HEADER_TOCHECK} - Log Header is present + Log Header is present Check HTTP Response Body Json Schema Is [Arguments] ${input} @@ -214,8 +217,8 @@ POST New nsInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - #changed CreateNsRequest to CreateNs - ${body}= Get File jsons/CreateNs.json + ${template}= Get File jsons/CreateNsRequest.json + ${body}= Format String ${template} nsdId=${nsdId} nsInstanceName=${nsInstanceName} vimAccountId=${vimAccountId} nsInstanceDescription=${nsInstanceDescription} Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -397,7 +400,8 @@ GET Instantiate NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/InstantiateNs.json + ${template}= Get File jsons/InstantiateNs.json + ${body}= Format String ${template} nsFlavourId=${nsFlavourId} Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/instantiate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -441,7 +445,8 @@ POST scale nsInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/ScaleNs.json + ${template}= Get File jsons/ScaleNs.json + ${body}= Format String ${template} scaleType=${scaleType} scaleTimeout=${scaleTimeout} scaleVnfType=${scaleVnfType} scaleGroupDescriptor=${scaleGroupDescriptor} scaleMemberVnfIndex=${scaleMemberVnfIndex} Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -485,7 +490,8 @@ POST Update NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/UpdateNsRequest.json + ${template}= Get File jsons/UpdateNsRequest.json + ${body}= Format String ${template} vnfUpdateType=${vnfUpdateType} Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/update ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -529,7 +535,8 @@ POST Heal NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/HealNsRequest.json + ${template}= Get File jsons/HealNsRequest.json + ${body}= Format String ${template} nsDegreeHealing=${nsDegreeHealing} Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/heal ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -916,7 +923,8 @@ POST subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/LccnSubscriptionRequest.json + ${template}= Get File jsons/LccnSubscriptionRequest.json + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -927,7 +935,8 @@ POST subscriptions DUPLICATION Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/LccnSubscriptionRequest.json + ${template}= Get File jsons/LccnSubscriptionRequest.json + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -938,7 +947,8 @@ POST subscriptions NO DUPLICATION Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/LccnSubscriptionRequest.json + ${template}= Get File jsons/LccnSubscriptionRequest.json + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index 3ce8b5edb..cec5cabbc 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -6,7 +6,7 @@ ${NFVO_PORT} 9999 # Listening port of the NFVO ${VNFM_SCHEMA} https ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer kn6jROAkSsHj0Bw70j5jyJiLN8KO6xKI +${AUTHORIZATION} Bearer RW6sV6rtFa3TUEdazW4Dyd66muED2kBA ${CONTENT_TYPE} application/json ${CONTENT_TYPE_PATCH} application/merge-patch+json ${ACCEPT_JSON} application/json @@ -16,11 +16,15 @@ ${apiName} nslcm ${apiVersion} v1 ${AUTH_USAGE} 1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX -${nsInstanceId} 66f27112-8b6b-4e70-91a8-b8625a20fc8f +${nsdId} 9e708376-4f96-4972-89c2-243760626f20 +${nsInstanceId} bef2ab38-d117-4f29-bb07-0b02508575a9 ${ConflictNsInstanceId} 007c111c-e602-4afa-8e13-962fb5a7d81d ${nsInstanceName} Test-nsInstance ${nsInstanceDescription} description ns ${nsInstanceDescription_Update} Updated description ns +${nsFlavourId} 0 +${nsDegreeHealing} HEAL_RESTORE +${vimAccountId} 46baa285-994b-4615-8fd1-84fff6e90832 ${SINGLE_FILE_VNFD} 1 # If VNFD is PLAIN TEXT ${ACCEPT_PLAIN} text/plain ${ACCEPT_ZIP} application/zip @@ -38,9 +42,17 @@ ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${VnfLcmOperationOccurrenceNotification} {} ${VnfIdentifierCreationNotification} {} ${VnfIdentifierDeletionNotification} {} +${vnfUpdateType} ADD_VNF +${instantiationLevelId} myNextLevel + +${scaleType} SCALE_VNF +${scaleTimeout} 1 +${scaleVnfType} SCALE_IN +${scaleGroupDescriptor} myScalingGroup +${scaleMemberVnfIndex} 1 -${callback_uri} http://localhost ${callback_port} 9091 +${callback_uri} http://localhost:${callback_port} ${callback_endpoint} /endpoint ${callback_endpoint_fwd} /endpoint/check ${callback_endpoint_error} /endpoint_404 diff --git a/SOL005/NSLifecycleManagement-API/jsons/CreateNs.json b/SOL005/NSLifecycleManagement-API/jsons/CreateNs.json deleted file mode 100644 index b014121df..000000000 --- a/SOL005/NSLifecycleManagement-API/jsons/CreateNs.json +++ /dev/null @@ -1,6 +0,0 @@ -{{ - "nsdId": "{nsdId}", - "nsName": "myNS", - "vimAccountId": "46baa285-994b-4615-8fd1-84fff6e90832", - "nsDescription": "fancy router and firewall combo" -}} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/CreateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/CreateNsRequest.json index eb879873a..a8026a810 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/CreateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/CreateNsRequest.json @@ -1,24 +1,6 @@ -{ -"CreateNsRequest": { - "type": "object", - "required": [ - "nsdId", - "nsName", - "nsDescription" - ], - "properties": { - "nsdId": { - "description": "Identifier of the NSD that defines the NS instance to be created.\n", - "$ref": "SOL005_def.yaml#/definitions/Identifier" - }, - "nsName": { - "description": "Human-readable name of the NS instance to be created.\n", - "type": "string" - }, - "nsDescription": { - "description": "Human-readable description of the NS instance to be created.\n", - "type": "string" - } - } - } -} \ No newline at end of file +{{ + "nsdId": "{nsdId}", + "nsName": "{nsInstanceName}", + "vimAccountId": "{vimAccountId}", + "nsDescription": "{nsInstanceDescription}" +}} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/HealNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/HealNsRequest.json index 2922dc4a1..b8fa38ecb 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/HealNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/HealNsRequest.json @@ -1,3 +1,3 @@ -{ - "degreeHealing": "HEAL_RESTORE" -} \ No newline at end of file +{{ + "degreeHealing": "{nsDegreeHealing}" +}} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNs.json b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNs.json index 696945298..60eee0859 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNs.json +++ b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNs.json @@ -1,3 +1,3 @@ -{ - "nsFlavourId": 0 -} \ No newline at end of file +{{ + "nsFlavourId": {nsFlavourId} +}} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json b/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json index 091cc0cdb..4a6434f53 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json @@ -1,10 +1,10 @@ -{ - "filter": { - "nsInstanceSubscriptionFilter": { +{{ + "filter": {{ + "nsInstanceSubscriptionFilter": {{ "nsdIds": [ - "6fc3539c-e602-4afa-8e13-962fb5a7d81f" + "{nsdId}" ] - } - }, - "callbackUri": "http://127.0.0.1/subscribe" -} \ No newline at end of file + }} + }}, + "callbackUri": "{callbackUri}{callbackEndpoint}" +}} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json b/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json index d5c8dd902..39d410cfd 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json +++ b/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json @@ -1,11 +1,11 @@ -{ - "scaleType": "SCALE_VNF", - "timeout_ns_scale": 1, - "scaleVnfData": { - "scaleVnfType": "SCALE_IN", - "scaleByStepData": { - "scaling-group-descriptor": "myScalingGroup", - "member-vnf-index": "1" - } - } - } \ No newline at end of file +{{ + "scaleType": "{scaleType}", + "timeout_ns_scale": {scaleTimeout}, + "scaleVnfData": {{ + "scaleVnfType": "{scaleVnfType}", + "scaleByStepData": {{ + "scaling-group-descriptor": "{scaleGroupDescriptor}", + "member-vnf-index": "{scaleMemberVnfIndex}" + }} + }} +}} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/TerminateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/TerminateNsRequest.json index 4ca37f187..65e326002 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/TerminateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/TerminateNsRequest.json @@ -1,4 +1,4 @@ { "timeout_ns_terminate": 1, "autoremove": false -} +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json index 64a2c0f4c..336075de4 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json @@ -1,3 +1,3 @@ -{ - "updateType": "ADD_VNF" -} \ No newline at end of file +{{ + "updateType": "{vnfUpdateType}" +}} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/scaleNsToLevelRequest.json b/SOL005/NSLifecycleManagement-API/jsons/scaleNsToLevelRequest.json index 1c39a7bb5..ca0ea8d3f 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/scaleNsToLevelRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/scaleNsToLevelRequest.json @@ -1,3 +1,3 @@ -{ - "instantiationLevelId": "myNextLevel" -} \ No newline at end of file +{{ + "instantiationLevelId": "{instantiationLevelId}" +}} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index a4c73f1a5..48a306e04 100644 --- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot +++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot @@ -89,7 +89,8 @@ Send Post Request Create new NS Performance Monitoring Job Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/CreatePmJobRequest.json + ${template}= Get File jsons/CreatePmJobRequest.json + ${body}= Format String ${template} pmJobId=${pmJobId} POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -377,7 +378,8 @@ Send Post Request Create new Performance Threshold Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${request}= Get File jsons/CreateThresholdRequest.json + ${template}= Get File jsons/CreateThresholdRequest.json + ${body}= Format String ${template} pmJobId=${pmJobId} POST ${apiRoot}/${apiName}/${apiVersion}/thresholds ${request} ${output}= Output response Set Suite Variable ${response} ${output} @@ -576,8 +578,9 @@ Send Post Request for NS Performance Subscription Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body_request}= Get File jsons/subscriptions.json - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 @@ -597,8 +600,9 @@ Send Post Request for Duplicated NS Performance Subscription Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body_request}= Get File jsons/subscriptions.json - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} @@ -663,7 +667,8 @@ Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filte Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription Log Check Response matches subscription - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} ${subscription}= evaluate json.loads('''${body}''') json Should Be Equal ${response['body']['callbackUri']} ${subscription['callbackUri']} @@ -690,7 +695,8 @@ Check Postcondition Subscription Resource URI Returned in Location Header Is Ava ${result}= Output response body Validate Json PmSubscriptions.schema.json ${result} Log Validated PmSubscriptions schema - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} ${subscription}= evaluate json.loads('''${body}''') json Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} Log Validated Issued subscription is same as original diff --git a/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt b/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt index 99a00a748..cde92cf92 100644 --- a/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt +++ b/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt @@ -1,5 +1,5 @@ *** Variables *** -${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e +${pmJobId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a ${erroneousPmJobId} erroneousPmJobId ${response}= httpresponse ${OrigResponse}= httpresponse diff --git a/SOL005/NSPerformanceManagement-API/environment/variables.txt b/SOL005/NSPerformanceManagement-API/environment/variables.txt index 3fa28a915..6b07f6ad8 100644 --- a/SOL005/NSPerformanceManagement-API/environment/variables.txt +++ b/SOL005/NSPerformanceManagement-API/environment/variables.txt @@ -26,5 +26,9 @@ ${sleep_interval} 20s ${total_polling_time} 2 min ${polling_interval} 10 sec - -${response} +${performanceMetric} cpu_util +${thresholdType} SIMPLE +${thresholdValue} 10 +${hysteresis} 50 +${collectionPeriod} 10 +${reportingPeriod} 30 \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/jsons/CreatePmJobRequest.json b/SOL005/NSPerformanceManagement-API/jsons/CreatePmJobRequest.json index 75549f534..506e25475 100644 --- a/SOL005/NSPerformanceManagement-API/jsons/CreatePmJobRequest.json +++ b/SOL005/NSPerformanceManagement-API/jsons/CreatePmJobRequest.json @@ -1,9 +1,9 @@ -{ - "objectInstanceIds": ["1f50d68b-82e8-4deb-bd40-c934d4d1ac0a"], - "criteria": { - "performanceMetric": [], +{{ + "objectInstanceIds": ["{pmJobId}"], + "criteria": {{ + "performanceMetric": "{performanceMetric}", "performanceMetricGroup": [], - "collectionPeriod": 10, - "reportingPeriod": 30 - } -} \ No newline at end of file + "collectionPeriod": {collectionPeriod}, + "reportingPeriod": {reportingPeriod} + }} +}} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/jsons/CreateThresholdRequest.json b/SOL005/NSPerformanceManagement-API/jsons/CreateThresholdRequest.json index 1e58c2bac..e5b0b975c 100644 --- a/SOL005/NSPerformanceManagement-API/jsons/CreateThresholdRequest.json +++ b/SOL005/NSPerformanceManagement-API/jsons/CreateThresholdRequest.json @@ -1,12 +1,11 @@ -{ - "objectInstanceIds" : "1f50d68b-82e8-4deb-bd40-c934d4d1ac0a", - "criteria" : { - "performanceMetric": "cpu_util", - "thresholdType": "SIMPLE", - "simpleThresholdDetails": { - "thresholdValue": 10, - "hysteresis": 50 - } - - } -} \ No newline at end of file +{{ + "objectInstanceIds" : "{pmJobId}", + "criteria" : {{ + "performanceMetric": "{performanceMetric}", + "thresholdType": "{thresholdType}", + "simpleThresholdDetails": {{ + "thresholdValue": {thresholdValue}, + "hysteresis": {hysteresis} + }} + }} +}} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/jsons/subscriptions.json b/SOL005/NSPerformanceManagement-API/jsons/subscriptions.json index 6293d99d2..3ca4fc25a 100644 --- a/SOL005/NSPerformanceManagement-API/jsons/subscriptions.json +++ b/SOL005/NSPerformanceManagement-API/jsons/subscriptions.json @@ -1,6 +1,6 @@ -{ - "callbackUri": "http://172.22.1.7:9091/nspm/subscriptions", - "filter": { +{{ + "callbackUri": "{callback_uri}{callback_endpoint}", + "filter": {{ "notificationTypes": ["ThresholdCrossedNotification"] - } -} \ No newline at end of file + }} +}} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 8f9cdeb61..4efc809be 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -266,7 +266,7 @@ Send PATCH to disable Individual VNF Package Log Trying to perform a PATCH. As prerequisite the nsdInfo shall be in enabled operational state Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${body}= Get File jsons/NsdInfoModificationDisable.json + ${body}= Get File jsons/VnfPkgInfoModificationsDisabled.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} PATCH ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId} ${body} ${output}= Output response @@ -281,7 +281,7 @@ Send PATCH to enable Individual VNF Package Log Trying to perform a PATCH. As prerequisite the nsdInfo shall be in disabled operational state Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${body}= Get File jsons/NsdInfoModificationEnable.json + ${body}= Get File jsons/VnfPkgInfoModifications.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} PATCH ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId} ${body} ${output}= Output response @@ -639,7 +639,8 @@ Send POST Request to upload VNF Package Content from URI Log Trying to perform a POST. The POST method provides the information for the NFVO to get the content of a VNF package. Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/UploadVnfPkgFromUriRequest.json + ${template}= Get File jsons/UploadVnfPkgFromUriRequest.json + ${body}= Format String ${template} vnfPkgUri=${vnfPkgUri} POST ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -648,7 +649,8 @@ Send POST Request to upload VNF Package Content from URI with conflict due to on Log Trying to perform a POST. The POST method provides the information for the NFVO to get the content of a VNF package. Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/UploadVnfPkgFromUriRequest.json + ${template}= Get File jsons/UploadVnfPkgFromUriRequest.json + ${body}= Format String ${template} vnfPkgUri=${vnfPkgUri} POST ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${creatingVnfPkgViaUriId}/package_content/upload_from_uri ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -728,7 +730,8 @@ Send Post Request for VNF Package Subscription Log Trying to create a new subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${output}= Output response @@ -740,7 +743,8 @@ Send Post Request for Duplicated VNF Package Subscription Log Trying to create a subscription with an already created content Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${output}= Output response @@ -776,7 +780,8 @@ Check Postcondition VNF Package Subscriptions Exists Check HTTP Response Body PkgmSubscription Attributes Values Match the Issued Subscription Log Check Response matches subscription - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} ${subscription}= evaluate json.loads('''${body}''') json Should Be Equal ${response['body']['callbackUri']} ${subscription['callbackUri']} @@ -806,7 +811,8 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab ${result}= Output response body Validate Json PkgmSubscription.schema.json ${result} Log Validated PkgmSubscription schema - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} 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 @@ -849,13 +855,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}/${apiVersion}/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}/${apiVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -864,7 +870,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}/${apiVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -928,7 +934,8 @@ Check Notification Endpoint Check HTTP Response Body Matches the Subscription Log Check Response matches subscription - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} ${subscription}= evaluate json.loads('''${body}''') json Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index aef570b42..36cafcc88 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -20,8 +20,8 @@ ${testOptionalMethods} 0 ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -${callback_uri} http://localhost ${callback_port} 9091 +${callback_uri} http://localhost:${callback_port} ${callback_endpoint} /endpoint ${callback_endpoint_fwd} /endpoint/check ${callback_endpoint_error} /endpoint_404 diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt index 9cb902861..53981f953 100644 --- a/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt +++ b/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt @@ -1,4 +1,4 @@ *** Variables *** ${vnfPkgViaUriId} 788106a2-d692-44f3-a86d-384f0ce35e42 ${creatingVnfPkgViaUriId} d246ccdd-71aa-402f-b256-6a80ee54be3d - +${vnfPkgUri} http://localhost/content.zip diff --git a/SOL005/VNFPackageManagement-API/jsons/UploadVnfPkgFromUriRequest.json b/SOL005/VNFPackageManagement-API/jsons/UploadVnfPkgFromUriRequest.json index f76054e5f..685340204 100644 --- a/SOL005/VNFPackageManagement-API/jsons/UploadVnfPkgFromUriRequest.json +++ b/SOL005/VNFPackageManagement-API/jsons/UploadVnfPkgFromUriRequest.json @@ -1,3 +1,3 @@ -{ -"addressInformation": "http://localhost/content.zip" -} \ No newline at end of file +{{ + "addressInformation": "{vnfPkgUri}" +}} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/jsons/subscriptions.json b/SOL005/VNFPackageManagement-API/jsons/subscriptions.json index 4314ec0ce..124004374 100644 --- a/SOL005/VNFPackageManagement-API/jsons/subscriptions.json +++ b/SOL005/VNFPackageManagement-API/jsons/subscriptions.json @@ -1,6 +1,6 @@ -{ - "callbackUri": "http://127.0.0.1/subscribe", - "filter": { - "vnfPkgId": ["491ed430-67f5-4c6c-b78e-797f5d718868"] - } -} \ No newline at end of file +{{ + "callbackUri": "{callback_uri}{callback_endpoint}", + "filter": {{ + "vnfPkgId": ["{vnfPkgId}"] + }} +}} \ No newline at end of file -- GitLab From afc6032a6783200761a25265ca174fb743a8dcdf Mon Sep 17 00:00:00 2001 From: Frank Bryden Date: Fri, 24 Jul 2020 11:46:18 +0200 Subject: [PATCH 007/580] Introduced new NSLCM test to test the creation of an NS with a disabled NSD. Signed-off-by: Frank Bryden --- SOL005/NSDManagement-API/environment/variables.txt | 4 ++-- .../CreateNSInstanceWorkflow.robot | 12 +++++++++++- .../NSLCMOperationKeywords.robot | 11 +++++++++++ .../environment/variables.txt | 3 ++- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index f79a4d346..547e487e3 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -2,7 +2,7 @@ ${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO ${NFVO_PORT} 9999 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer lTxE0BXRcVPjlIUwHLVH5Dtjl39sZ9qp +${AUTHORIZATION} Bearer u5JGp5D3k7m1VUlrCa39k8WX15em149q ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json ${apiRoot} /osm/ @@ -14,7 +14,7 @@ ${FIELD_USAGE} 1 ${NFVO_AUTHENTICATION} Bearer isDGF7TiifGUgzeNb0Fls9aatfZRy4iX #never referenced ${NFVO_AUTH_USAGE} 1 #never refernced -${MOCK_SERVER_JAR} ../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar ${callback_port} 9091 ${callback_uri} http://172.22.1.7:${callback_port} diff --git a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot index 9092991e1..ae2915934 100644 --- a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot @@ -24,4 +24,14 @@ NS Instance Creation Check HTTP Response Body Json Schema Is NsIdentifierCreationNotification Check resource not_instantiated - \ No newline at end of file +NS Instance Creation with DISABLED nsd + [Documentation] Test ID: 5.3.2.18.2 + ... Test title: NS Instance Creation with DISABLED nsd + ... Test objective: The objective is to test the workflow for Creating a NS instance with a disabled NSD + ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in disabled operational state. + ... Reference: Clauses 6.4.2.3.1 and 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST New nsInstance with DISABLED nsd + Check HTTP Response Status Code Is 409 \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 26c63494e..49c77d238 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -223,6 +223,17 @@ POST New nsInstance ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST New nsInstance with DISABLED nsd + Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiVersion}/ns_instances + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template}= Get File jsons/CreateNsRequest.json + ${body}= Format String ${template} nsdId=${disabledNsdId} nsInstanceName=${nsInstanceName} vimAccountId=${vimAccountId} nsInstanceDescription=${nsInstanceDescription} + Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET NsInstances Log Query NS The GET method queries information about multiple NS instances. Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index cec5cabbc..b9a2ab988 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -6,7 +6,7 @@ ${NFVO_PORT} 9999 # Listening port of the NFVO ${VNFM_SCHEMA} https ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer RW6sV6rtFa3TUEdazW4Dyd66muED2kBA +${AUTHORIZATION} Bearer v1qDEucqjIZSua6t4R40sraMZafJxEKb ${CONTENT_TYPE} application/json ${CONTENT_TYPE_PATCH} application/merge-patch+json ${ACCEPT_JSON} application/json @@ -17,6 +17,7 @@ ${apiVersion} v1 ${AUTH_USAGE} 1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX ${nsdId} 9e708376-4f96-4972-89c2-243760626f20 +${disabledNsdId} 9e708376-4f96-4972-89c2-243760626f20 ${nsInstanceId} bef2ab38-d117-4f29-bb07-0b02508575a9 ${ConflictNsInstanceId} 007c111c-e602-4afa-8e13-962fb5a7d81d ${nsInstanceName} Test-nsInstance -- GitLab From 38600bde31afea7399d8cc487305e771fd232dd4 Mon Sep 17 00:00:00 2001 From: Frank Bryden Date: Thu, 13 Aug 2020 10:36:30 +0200 Subject: [PATCH 008/580] More minor bug fixes Signed-off-by: Frank Bryden --- .../NSDManagementKeywords.robot | 14 ++++---- .../schemas/NsdInfoModification.schema.json | 8 ++--- .../VNFPackageManagementKeywords.robot | 34 ++++++++++--------- .../VnfPackageChangeNotification.schema.json | 2 +- 4 files changed, 28 insertions(+), 30 deletions(-) diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 325d91c6b..35f2858e0 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -410,7 +410,7 @@ Send PUT Request to upload NSD Content as plain text file in asynchronous mode Log Trying to perform a PUT. This method upload the content of a NSD Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_PLAIN}", "Authorization": "${AUTHORIZATION}", "Content-Type": "text/plain"} verify=False ${body}= Get File ${contentPlainFile} - ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} + ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content data=${body} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} Set Suite Variable ${response} ${response} @@ -427,7 +427,7 @@ Send PUT Request to upload NSD Content as plain text file in synchronous mode Log Trying to perform a PUT. This method upload the content of a NSD Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_PLAIN}", "Authorization": "${AUTHORIZATION}", "Content-Type": "text/plain"} verify=False ${body}= Get File ${contentPlainFile} - ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} + ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content data=${body} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} Set Suite Variable ${response} ${response} @@ -450,12 +450,12 @@ Check Postcondition NSD Content is uploaded and available in the NFVO Send PUT Request to upload NSD Content with conflict due to onboarding state Log Trying to perform a PUT. This method upload the content of a NSD - Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False ${body}= Get Binary File ${contentZipFile} - PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${creatingNsdInfoId}/nsd_content ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} + ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} + Log ${response} + ${response}= Create Dictionary status=${response.status_code} headers=${response.headers} body=${response.json()} + Set Suite Variable ${response} ${response} Send POST Request for NSD Content Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. diff --git a/SOL005/NSDManagement-API/schemas/NsdInfoModification.schema.json b/SOL005/NSDManagement-API/schemas/NsdInfoModification.schema.json index c3af950e4..01296fd74 100644 --- a/SOL005/NSDManagement-API/schemas/NsdInfoModification.schema.json +++ b/SOL005/NSDManagement-API/schemas/NsdInfoModification.schema.json @@ -11,12 +11,8 @@ ] }, "userDefinedData": { - "description": "Modifications of the userDefinedData attribute in NsdInfo data type. See note. If present, these modifications shall be applied according to the rules of JSON Merge PATCH (see IETF RFC 7396 [25]). NOTE- At least one of the attributes - nsdOperationalState and userDefinedData - shall be present.\n", - "type": "array", - "items": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", - "type": "object" - } + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", + "type": "object" } } } \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 4efc809be..1cbd72922 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -11,6 +11,7 @@ Resource environment/vnfPackageArtifacts.txt Resource environment/individualSubscription.txt Library OperatingSystem Library JSONLibrary +Library RequestsLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library Process Library MockServerLibrary @@ -503,14 +504,13 @@ Send PUT Request for individual VNF Package Content Send PUT Request to upload VNF Package Content Log Trying to perform a PUT. This method upload the content of a NSD - Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get Binary File files/vnfPackage.zip - PUT ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${newVnfPackageId}/package_content ${body} - ${response}= Output response body - Should Be Empty ${response} - ${output}= Output response - Set Suite Variable ${response} ${output} + Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False + ${body}= Get Binary File files/hackfest_gateway_vnfd-1.0.tar.gz + ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${newVnfPackageId}/package_content data=${body} + Should Be Empty ${response.text} + ${response}= Create Dictionary status=${response.status_code} + Set Suite Variable ${response} ${response} + Check Postcondition VNF Package Content is uploaded and available in the NFVO Log Trying to get a VNF Package Content @@ -521,12 +521,12 @@ Check Postcondition VNF Package Content is uploaded and available in the NFVO Send PUT Request to upload VNF Package Content with conflict due to onboarding state Log Trying to perform a PUT. This method upload the content of a NSD - Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get Binary File files/vnfPackage.zip - PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${creatingVnfPackageId}/nsd_content ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} + Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False + ${body}= Get Binary File files/hackfest_gateway_vnfd-1.0.tar.gz + ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${creatingVnfPackageId}/package_content data=${body} + Should Be Empty ${response.text} + ${response}= Create Dictionary status=${response.status_code} + Set Suite Variable ${response} ${response} Send PATCH Request for individual VNF Package Content Log Trying to perform a PATCH (method should not be implemented) @@ -630,9 +630,11 @@ Send DELETE Request for individual VNF Package Artifact Check Postcondition VNF Package Artifact Exist Log Checking that vnf pacakge still exists - Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 Send POST Request to upload VNF Package Content from URI @@ -902,7 +904,7 @@ Create Sessions Create Mock Session ${callback_uri}:${callback_port} Check HTTP Response Status Code Is - [Arguments] ${expected_status} + [Arguments] ${expected_status} Should Be Equal As Strings ${response['status']} ${expected_status} Log Status code validated diff --git a/SOL005/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json b/SOL005/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json index 7db3fe98c..3ba43e8df 100644 --- a/SOL005/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json +++ b/SOL005/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF package management notification, which informs the receiver of a change of the status in an on-boarded VNF package. Only changes in the \"operationalState\" attribute of an on-boarded VNF package and the deletion of the VNF package will be reported. Change in the \"usageState\" and \"onboardingState\" attributes are not reported. The notification shall comply with the provisions defined in Table 9.5.2.9-1. The support of this notification is mandatory. The notification shall be triggered by the NFVO when there is a change in the status of an onboarded VNF package, as follows. • The \"operationalState\" attribute of a VNF package has changed, and the \"onboardingState\" attribute of the package has the value \"ONBOARDED\". • The on-boarded VNF package has been deleted.\n", + "description": "This type represents a VNF package management notification, which informs the receiver of a change of the status in an on-boarded VNF package. Only changes in the \"operationalState\" attribute of an on-boarded VNF package and the deletion of the VNF package will be reported. Change in the \"usageState\" and \"onboardingState\" attributes are not reported. The notification shall comply with the provisions defined in Table 9.5.2.9-1. The support of this notification is mandatory. The notification shall be triggered by the NFVO when there is a change in the status of an onboarded VNF package, as follows. The \"operationalState\" attribute of a VNF package has changed, and the \"onboardingState\" attribute of the package has the value \"ONBOARDED\". � The on-boarded VNF package has been deleted.\n", "type": "object", "required": [ "id", -- GitLab From 4505bd1efc36aedd8d00b865082fb93085443469 Mon Sep 17 00:00:00 2001 From: Frank Bryden Date: Mon, 24 Aug 2020 14:36:34 +0200 Subject: [PATCH 009/580] Added missing line in high-end logic. Small piece of logic missing in NSDManagKeywords --- SOL005/NSDManagement-API/IndividualNSDescriptor.robot | 1 + SOL005/NSDManagement-API/NSDManagementKeywords.robot | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot index 47a1aa7a0..9fd77ae9b 100644 --- a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot @@ -66,6 +66,7 @@ Enable Individual Network Service Descriptor Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsdInfoModification Check Postcondition Network Service Descriptor is in operational state ENABLED + Check PostCondition GET Individual Network Service Descriptor Information Check Postcondition Network Service Descriptor usage state is unmodified (Implicit) Enable Individual Network Service Descriptor with conflict due to operational state ENABLED diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 35f2858e0..4172e6bed 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -1046,4 +1046,6 @@ 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}/${apiVersion}/ns_descriptors/${nsdInfoId} - Should Be Equal As Strings ${response['status']} 200 \ No newline at end of file + Should Be Equal As Strings ${response['status']} 200 + ${output}= Output response + Set Suite Variable ${response} ${output} -- GitLab From e0c1e808e7655ea0f1a74aacc99007e39a7515d3 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 31 Aug 2020 13:59:06 +0500 Subject: [PATCH 010/580] updated objective and fixed minor bugs --- .../ChangeExternalVNFConnectivityTask.robot | 13 +++++++++++++ .../ChangeVNFFlavourTask.robot | 2 +- SOL002/VNFLifecycleManagement-API/HealVNFTask.robot | 2 +- .../IndividualVnfLcmOperationOccurence.robot | 6 +++--- .../VNFLifecycleManagement-API/OperateVNFTask.robot | 4 ++-- .../RetryOperationTask.robot | 8 ++++---- .../ScaleVNFToLevelTask.robot | 3 +-- .../TerminateVNFTask.robot | 4 ++-- .../jsons/scaleVnfToLevelRequest.json | 2 +- 9 files changed, 28 insertions(+), 16 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index 7e73154a7..54e8686ec 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -68,6 +68,19 @@ DELETE Change external VNF connectivity - Method not implemented ... Post-Conditions: none DELETE Change External VNF Connectivity Check HTTP Response Status Code Is 405 + +POST Operate a vnfInstance Conflict (Not-Instantiated) + [Documentation] Test ID: 6.3.5.10.6 + ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) + ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. + ... Pre-conditions: none + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: + POST Operate VNF + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Check resource existence diff --git a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index a63561402..f70393324 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -24,7 +24,7 @@ POST Change deployment flavour of a vnfInstance POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) [Documentation] Test ID: 6.3.5.6.2 ... Test title: POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) - ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because of a conflict with the state of the VNF instance resource. + ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because of a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 ... Config ID: Config_prod_VE diff --git a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot index b05b9eeea..724573a8e 100644 --- a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot @@ -25,7 +25,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) # TODO: Need to set the pre-condition of the test. VNF instance shall be in INSTANTIATED state [Documentation] Test ID: 6.3.5.8.2 ... Test title: POST Heal a vnfInstance (Not-Instantiated) - ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. + ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 ... Config ID: Config_prod_VNFM diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 6d7ab224d..f818c20e3 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -39,7 +39,7 @@ PUT status information about multiple VNF instances - Method not implemented ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none - Put multiple VNF instances + PUT multiple vnfInstances Check HTTP Response Status Code Is 405 PATCH status information about multiple VNF instances - Method not implemented @@ -51,7 +51,7 @@ PATCH status information about multiple VNF instances - Method not implemented ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none - Patch multiple VNF instances + PATCH multiple vnfInstances Check HTTP Response Status Code Is 405 DELETE status information about multiple VNF instances - Method not implemented @@ -63,5 +63,5 @@ DELETE status information about multiple VNF instances - Method not implemented ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none - Delete multiple VNF instances + DELETE multiple vnfInstances Check HTTP Response Status Code Is 405 diff --git a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot index 4e4c12817..5fed39874 100644 --- a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -24,7 +24,7 @@ POST Operate a vnfInstance POST Operate a vnfInstance Conflict (Not-Instantiated) [Documentation] Test ID: 6.3.5.9.2 ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) - ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. + ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 ... Config ID: Config_prod_VE @@ -45,7 +45,7 @@ POST Operate a vnfInstance Not Found ... Applicability: none ... Post-Conditions: POST Operate VNF - Check HTTP Response Status Code Is 409 + Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails GET Operate VNFInstance - Method not implemented diff --git a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot index 3b85e5943..73415cd4e 100644 --- a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -55,7 +55,7 @@ GET Retry operation task - Method not implemented ... Test title: GET Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.14.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.14.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -67,7 +67,7 @@ PUT Retry operation task - Method not implemented ... Test title: PUT Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.14.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.14.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -79,7 +79,7 @@ PATCH Retry operation task - Method not implemented ... Test title: PATCH Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.14.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.14.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -91,7 +91,7 @@ DELETE Retry operation task - Method not implemented ... Test title: DELETE Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.14.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.14.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 2964f9827..920eb313c 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -21,10 +21,9 @@ POST Scale a vnfInstance to level Check Operation Occurrence Id POST Scale a vnfInstance to level Conflict (Not-Instantiated) - # TODO: Need to set the pre-condition of the test. VNF instance shall be in INSTANTIATED state [Documentation] Test ID: 6.3.5.5.2 ... Test title: POST Scale a vnfInstance to level Conflict (Not-Instantiated) - ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. + ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 ... Config ID: Config_prod_VE diff --git a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot index 96c9eb0e5..62f4f8f10 100644 --- a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -24,14 +24,14 @@ POST Terminate a vnfInstance POST Terminate a vnfInstance Conflict (Not-Instantiated) [Documentation] Test ID: 6.3.5.7.2 ... Test title: POST Terminate a vnfInstance Conflict (Not-Instantiated) - ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. + ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: POST Terminate VNF - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL002/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequest.json index 1c39a7bb5..eeccec1d2 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequest.json @@ -1,3 +1,3 @@ { - "instantiationLevelId": "myNextLevel" + "newFlavourId" : "" } \ No newline at end of file -- GitLab From 05e93ed6430955a9085dfc843c7080e769bf9de4 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 31 Aug 2020 14:37:53 +0500 Subject: [PATCH 011/580] callbackUri attributed added --- .../VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json | 3 ++- .../jsons/CreateThresholdRequest.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json b/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json index 6a21ba34f..1f34fa20d 100644 --- a/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json +++ b/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json @@ -5,5 +5,6 @@ "performanceMetricGroup": [], "collectionPeriod": 10, "reportingPeriod": 30 - } + }, + "callbackuri": "127.0.0.1" } \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json b/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json index 1e58c2bac..c42c3773f 100644 --- a/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json +++ b/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json @@ -8,5 +8,6 @@ "hysteresis": 50 } - } + }, + "callbackuri": "127.0.0.1" } \ No newline at end of file -- GitLab From 7ced1ad5e9f2da04f09c2567c236e64434cbf64a Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 31 Aug 2020 16:19:34 +0500 Subject: [PATCH 012/580] fix TD ids --- SOL003/VNFFaultManagement-API/Subscriptions.robot | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/Subscriptions.robot b/SOL003/VNFFaultManagement-API/Subscriptions.robot index 4063c36f4..1d1f3d25b 100644 --- a/SOL003/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL003/VNFFaultManagement-API/Subscriptions.robot @@ -207,7 +207,7 @@ GET subscriptions - Bad Request Response too Big Check HTTP Response Body Json Schema Is ProblemDetails GET Subscription with attribute-based filter "id" - [Documentation] Test ID: 6.3.4.4.16 + [Documentation] Test ID: 7.3.5.3.16 ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: @@ -221,7 +221,7 @@ GET Subscription with attribute-based filter "id" Check PostCondition HTTP Response Body Subscription Matches the requested attribute-based filter "id" Get subscriptions with filter "filter.notificationTypes" - [Documentation] Test ID: 6.3.4.4.17 + [Documentation] Test ID: 7.3.5.3.17 ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: @@ -235,7 +235,7 @@ Get subscriptions with filter "filter.notificationTypes" Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_notificationTypes" Get subscriptions with filter "filter.faultyResourceTypes" - [Documentation] Test ID: 6.3.4.4.18 + [Documentation] Test ID: 7.3.5.3.18 ... Test title: GET Subscription with attribute-based filter "filter.faultyResourceTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes" ... Pre-conditions: @@ -249,7 +249,7 @@ Get subscriptions with filter "filter.faultyResourceTypes" Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_faultyResourceTypes" Get subscriptions with filter "filter.perceivedSeverities" - [Documentation] Test ID: 6.3.4.4.19 + [Documentation] Test ID: 7.3.5.3.19 ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" ... Pre-conditions: @@ -263,7 +263,7 @@ Get subscriptions with filter "filter.perceivedSeverities" Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_perceivedSeverities" Get subscriptions with filter "filter.eventTypes" - [Documentation] Test ID: 6.3.4.4.20 + [Documentation] Test ID: 7.3.5.3.20 ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" ... Pre-conditions: @@ -277,7 +277,7 @@ Get subscriptions with filter "filter.eventTypes" Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_eventTypes" Get subscriptions with filter "filter.probableCauses" - [Documentation] Test ID: 6.3.4.4.21 + [Documentation] Test ID: 7.3.5.3.21 ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" ... Pre-conditions: -- GitLab From 65e7d8653208b49d65e03b7659fcd6e5e8853454 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 1 Sep 2020 09:46:58 +0500 Subject: [PATCH 013/580] new test cases added for Subscriptions --- .../Subscriptions.robot | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot index 14c92a2ce..a2b2e6303 100644 --- a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot @@ -172,4 +172,43 @@ DELETE subscriptions - Method not implemented DELETE subscriptions Check HTTP Response Status Code Is 405 Check Subscription resource exist - \ No newline at end of file + +POST Create a new Subscription - Unprocessable Entity + [Documentation] Test ID: 6.3.5.17.14 + ... Test title: POST Create a new Subscription - Unprocessable Entity + ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. + ... re-conditions: none + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + Post Create subscription + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple subscriptions to get Paged Response + [Documentation] Test ID: 6.3.5.17.15 + ... Test title: GET information about multiple subscriptions to get Paged Response + ... Test objective: The objective is to retrieve information about the subscriptions to get paged response + ... Pre-conditions: + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Config ID: Config_prod_VE + ... Applicability: + ... Post-Conditions: + Get subscriptions + Check HTTP Response Status Code Is 200 + Check LINK in Header + +GET information about multiple subscriptions for Bad Request Response too big + [Documentation] Test ID: 6.3.5.17.16 + ... Test title: GET information about multiple subscriptions for Bad Request Response too big + ... Test objective: The objective is to test that GET method fail retrieving status information about subscriptions when Response is too big, and perform the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Config ID: Config_prod_VE + ... Applicability: + ... Post-Conditions: + Get subscriptions + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + -- GitLab From b795b06bbe53c96199d3938720cdb2648ea20c87 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 1 Sep 2020 13:02:29 +0500 Subject: [PATCH 014/580] new test cases added for IndividualPmJob --- .../IndividualPmJob.robot | 50 +++++++++++++------ .../jsons/PMJobModification.json | 3 ++ 2 files changed, 37 insertions(+), 16 deletions(-) create mode 100644 SOL002/VNFPerformanceManagement-API/jsons/PMJobModification.json diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index 5c49a39fe..529441010 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -1,9 +1,12 @@ *** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Library JSONLibrary -Resource environment/IndividualPmJob.txt -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library JSONLibrary +Resource environment/IndividualPmJob.txt +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library DependencyLibrary + *** Test Cases *** GET individual VNF Performance Job @@ -77,7 +80,7 @@ PUT Individual VNF Performance Job - Method not implemented ... Test title: PUT Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance Monitoring Job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation @@ -85,19 +88,33 @@ PUT Individual VNF Performance Job - Method not implemented Check HTTP Response Status Code Is 405 Check Postcondition VNF Performance Job is Unmodified (Implicit) -PATCH Individual VNF Performance Job - Method not implemented +PATCH Individual VNF Performance Job [Documentation] Test ID: 6.3.3.2.7 - ... Test title: PATCH Individual VNF Performance Job - method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new VNF Performance Monitoring Job + ... Test title: PATCH Individual VNF Performance Job + ... Test objective: The objective is to test that PATCH method allows to modify an exsisting individual PM job resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Job is not modified by the operation + ... Post-Conditions: Send Patch request for individual VNF Performance Job - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Job is Unmodified (Implicit) + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PMJobModification +PATCH Individual VNF Performance Job - Precondition failed + [Documentation] Test ID: 6.3.3.2.8 + ... Test title: PATCH Individual VNF Performance Job - Precondition failed + ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance Job is not modified by the operation + Send Patch request for individual VNF Performance Job + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails + Check Postcondition VNF Performance Job is Unmodified (Implicit) + *** Keywords *** GET individual VNF Performance Job Log Trying to get a Pm Job present in the NFVO Catalogue @@ -151,10 +168,11 @@ Send Put request for individual VNF Performance Job Set Suite Variable ${response} ${output} Send Patch request for individual VNF Performance Job - 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}/${apiVersion}/pm_jobs/${pmJobId} + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/PMJobModification.json + PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/jsons/PMJobModification.json b/SOL002/VNFPerformanceManagement-API/jsons/PMJobModification.json new file mode 100644 index 000000000..3aeb5f91c --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/jsons/PMJobModification.json @@ -0,0 +1,3 @@ +{ + "callbackUri":"127.0.0.1" +} \ No newline at end of file -- GitLab From 92780b73d90fa6ff5f7520477f483bd503cef2e4 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 1 Sep 2020 13:09:25 +0500 Subject: [PATCH 015/580] new test cases added for IndividualThreshold --- .../IndividualThreshold.robot | 32 +++++++++++++------ .../jsons/ThresholdModification.json | 3 ++ 2 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 SOL002/VNFPerformanceManagement-API/jsons/ThresholdModification.json diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index 1a68cdce9..702b3f80e 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -84,17 +84,32 @@ PUT Individual Threshold - Method not implemented Check HTTP Response Status Code Is 405 Check Postcondition VNF Performance Threshold is Unmodified (Implicit) -PATCH Individual Threshold - Method not implemented +PATCH Individual Threshold [Documentation] Test ID: 6.3.3.5.7 - ... Test title: PATCH Individual Threshold - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Performance threshold + ... Test title: PATCH Individual Threshold + ... Test objective: The objective is to test that PATCH method allows to modify an Individual threshold resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not modified by the operation Send Patch request for individual VNF Performance Threshold - Check HTTP Response Status Code Is 405 + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ThresholdModification + + +PATCH Individual Threshold - Precondition failed + [Documentation] Test ID: 6.3.3.5.8 + ... Test title: PATCH Individual Threshold - Preconition failed + ... Test objective: The objective is to attempt to modify an individual threshold resource, where the precondition was not met. + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance Job is not modified by the operation + Send Patch request for individual VNF Performance Threshold + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails Check Postcondition VNF Performance Threshold is Unmodified (Implicit) *** Keywords *** @@ -148,11 +163,10 @@ Send Put request for individual VNF Performance Threshold Send Patch 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} - ${origOutput}= Output response - Set Suite Variable ${origResponse} ${origOutput} + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/ThresholdModification.json PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/jsons/ThresholdModification.json b/SOL002/VNFPerformanceManagement-API/jsons/ThresholdModification.json new file mode 100644 index 000000000..3aeb5f91c --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/jsons/ThresholdModification.json @@ -0,0 +1,3 @@ +{ + "callbackUri":"127.0.0.1" +} \ No newline at end of file -- GitLab From fb67b6963aaa4906b0aa875753177bfddf75a3f2 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 1 Sep 2020 16:03:26 +0500 Subject: [PATCH 016/580] Updated pre-conditoin and post-condition of different LCM operations --- SOL005/NSLifecycleManagement-API/HealNSTask.robot | 14 +++++++------- .../InstantiateNSTask.robot | 2 +- SOL005/NSLifecycleManagement-API/ScaleNSTask.robot | 12 ++++++------ .../TerminateNSTask.robot | 4 ++-- .../NSLifecycleManagement-API/UpdateNSTask.robot | 12 ++++++------ 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/HealNSTask.robot b/SOL005/NSLifecycleManagement-API/HealNSTask.robot index 379ed397b..dc237b439 100644 --- a/SOL005/NSLifecycleManagement-API/HealNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/HealNSTask.robot @@ -12,24 +12,24 @@ POST Heal a NSInstance [Documentation] Test ID: 5.3.2.6.1 ... Test title: POST Heal a NSInstance ... Test objective: The objective is to test that POST method trigger a Heal NS instance - ... Pre-conditions: resource status is not in NOT_INSTANTIATED state + ... Pre-conditions: NS Instance is in INSTANTIATED state. ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: none + ... Post-Conditions: NS instance is still in INSTANTIATED state. POST Heal NSInstance Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location -POST Heal a NSInstance Conflict +POST Heal a NSInstance - Conflict (Not Instantited) [Documentation] Test ID: 5.3.2.6.2 - ... Test title: POST Heal a NSInstance Conflict - ... Test objective: The objective is to test that POST method fail if NS instance is not in NOT_INSTANTIATE state - ... Pre-conditions: resource status is in NOT_INSTANTIATED state + ... Test title: POST Heal a NSInstance - Conflict (Not Instantited) + ... Test objective: The objective is to test that POST method fail if NS instance is in NOT_INSTANTIATE state + ... Pre-conditions: NS Instance is in NOT_INSTANTIATED state ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: none + ... Post-Conditions: NS Instance is still in NOT_INSTANTIATED state POST Heal NSInstance Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot b/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot index 0fa8de84e..ae0178684 100644 --- a/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot @@ -12,7 +12,7 @@ POST Instantiate a nsInstance [Documentation] Test ID: 5.3.2.3.1 ... Test title: POST Instantiate a nsInstance ... Test objective: The objective is to test that POST method instantiate a new NS instance - ... Pre-conditions: none + ... Pre-conditions: An NS instance created and it is in NOT_INSTANTIATED state ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 ... Config ID: Config_prod_NFVO ... Applicability: none diff --git a/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot b/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot index 034f7af8e..8343fa87b 100644 --- a/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot @@ -12,21 +12,21 @@ POST Scale a nsInstance [Documentation] Test ID: 5.3.2.4.1 ... Test title: POST Scale a nsInstance ... Test objective: The objective is to test that POST method scales NS instance - ... Pre-conditions: the resource is in NOT_INSTANTIATED state + ... Pre-conditions: NS instance is INSTANTIATED state ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: none + ... Post-Conditions: NS instance is INSTANTIATED state and NS has been scaled POST scale nsInstance Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check resource existence -POST Instantiate a nsInstance Conflict +POST Scale a nsInstance - Conflict (Not Instantited) [Documentation] Test ID: 5.3.2.4.2 - ... Test title: POST Instantiate a nsInstance Conflict - ... Test objective: The objective is to test that POST method cannot scale NS instance because of conflict in resource status (i.e. because the resource is in not in NOT_INSTANTIATED state) - ... Pre-conditions: the resource is in not in NOT_INSTANTIATED state + ... Test title: POST Scale a nsInstance - Conflict (Not Instantited) + ... Test objective: The objective is to test that POST method cannot scale NS instance because of conflict in resource status (i.e. because the resource is in NOT_INSTANTIATED state) + ... Pre-conditions: NS instance is in NOT_INSTANTIATED state. ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 ... Config ID: Config_prod_NFVO ... Applicability: none diff --git a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot index 9e9870149..f04165ec2 100644 --- a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot @@ -21,9 +21,9 @@ POST Terminate a NSInstance Check HTTP Response Header Contains Location Check resource not_instantiated -POST Terminate a NSInstance Conflict +POST Terminate a NSInstance - Conflict (Not Instantited) [Documentation] Test ID: 5.3.2.7.2 - ... Test title: POST Terminate a NSInstance Conflict + ... Test title: POST Terminate a NSInstance - Conflict (Not Instantited) ... Test objective: The objective is to test that POST method cannot terminate the NS because of conflict in resource status (i.e. the resource is not in INSTANTIATED state) ... Pre-conditions: NS instance is in NOT_INSTANTIATED state ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 diff --git a/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot b/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot index b0f3f3569..bd9ebc651 100644 --- a/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot @@ -12,20 +12,20 @@ POST Update a NSInstance [Documentation] Test ID: 5.3.2.5.1 ... Test title: POST Update a NSInstance ... Test objective: The objective is to test that POST method update a NS instance - ... Pre-conditions: an existing NS Instance + ... Pre-conditions: An NS instance is in INSTANTIATED state ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance is updated on the NFVO + ... Post-Conditions: The NS instance is still INSTANTIATED and updated on the NFVO POST Update NSInstance Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location -POST Update a NSInstance Conflict +POST Update a NSInstance - Conflict (Not Instantited) [Documentation] Test ID: 5.3.2.5.2 - ... Test title: POST Update a NSInstance Conflict - ... Test objective: The objective is to test that POST method fail if a NS Instance is not existing or is not in NOT_INSTANTIATED state - ... Pre-conditions: an existing NS Instance + ... Test title: POST Update a NSInstance - Conflict (Not Instantited) + ... Test objective: The objective is to test that POST method fail if a NS Instance is not existing or is in NOT_INSTANTIATED state + ... Pre-conditions: An NS instance is in INSTANTIATED state ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 ... Config ID: Config_prod_NFVO ... Applicability: none -- GitLab From 060176568a2d702022b0f53e47690d84dc0f4dcc Mon Sep 17 00:00:00 2001 From: Frank Bryden Date: Tue, 1 Sep 2020 15:58:45 +0200 Subject: [PATCH 017/580] Fixes to various tests Signed-off-by: Frank Bryden --- .../VNFPackageManagementKeywords.robot | 3 +- .../NotificationEndpoint.robot | 9 ++-- .../CreateNSInstanceWorkflow.robot | 4 +- .../DeleteNSInstanceWorkflow.robot | 1 - .../NSLCMOperationKeywords.robot | 42 ++++++++++++------- .../NotificationEndpoint.robot | 12 ++++-- .../jsons/InstantiateNs.json | 4 +- .../NSPerformanceManagementKeywords.robot | 13 +++--- .../Notifications.robot | 6 ++- .../IndividualVNFPackage.robot | 2 +- .../Notifications.robot | 7 +++- .../VNFPackageManagementKeywords.robot | 8 ++-- 12 files changed, 69 insertions(+), 42 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 18bd70bcf..90d2c306c 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -522,8 +522,7 @@ Send DELETE Request for VNFD in individual VNF Package Check Postcondition VNFD Exist Log Checking that vnf pacakge still exists - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Accept": "${ACCEPT_PLAIN}, ${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd Check HTTP Response Status Code Is 200 diff --git a/SOL005/NSFaultManagement-API/NotificationEndpoint.robot b/SOL005/NSFaultManagement-API/NotificationEndpoint.robot index 650bb2a7a..5c97d192a 100644 --- a/SOL005/NSFaultManagement-API/NotificationEndpoint.robot +++ b/SOL005/NSFaultManagement-API/NotificationEndpoint.robot @@ -115,7 +115,8 @@ Configure Notification Alarm List Rebuilt Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{headers} = Create Dictionary Content-Type=application/json + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Alarm Handler @@ -125,7 +126,8 @@ Configure Notification Alarm Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{headers} = Create Dictionary Content-Type=application/json + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Alarm Cleareance Handler @@ -135,7 +137,8 @@ Configure Notification Alarm Cleareance Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{headers} = Create Dictionary Content-Type=application/json + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward diff --git a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot index ae2915934..7a9e9e2e1 100644 --- a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot @@ -21,8 +21,8 @@ NS Instance Creation POST New nsInstance Check HTTP Response Status Code Is 201 Check HTTP Response Header Contains Location - Check HTTP Response Body Json Schema Is NsIdentifierCreationNotification - Check resource not_instantiated + Check HTTP Response Body Json Schema Is NsInstance + Check resource not_instantiated 1 NS Instance Creation with DISABLED nsd [Documentation] Test ID: 5.3.2.18.2 diff --git a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot index fe061b727..915e8e041 100644 --- a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot @@ -19,5 +19,4 @@ NS Instance Deletion Check resource not_instantiated DELETE IndividualNSInstance Check HTTP Response Status Code Is 204 - Check HTTP Response Body Json Schema Is NsIdentifierDeletionNotification Check Instance Deleted diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 49c77d238..30952bc57 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -16,8 +16,7 @@ Initialize System Create Mock Session ${callback_uri}:${callback_port} Check Operation Occurrence Id - ${occid}= Get Value From Json ${response['headers']['Location']} ${response} - Set Global Variable @{nsLcmOpOccId} ${occid} + Set Global Variable @{nsLcmOpOccId} ${response['headers']['Location']} Should Not Be Empty ${nsLcmOpOccId} Create Sessions @@ -84,6 +83,8 @@ Check Operation Notification ${json}= Get File schemas/${element}.schema.json Configure Notification Forward ${element} ${callback_endpoint} ${callback_endpoint_fwd} Configure Notification Status Handler ${callback_endpoint_fwd} ${status} + ${BODY}= evaluate json.dumps(${json}) json + &{notification_request}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON" body=${BODY} Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} Clear Requests ${callback_endpoint_fwd} @@ -98,29 +99,40 @@ Configure Notification Forward Configure Notification Status Handler [Arguments] ${endpoint} ${status}="" - Run Keyword If ${status}!="" set to dictionary ${json["notificationStatus"]} dp=${status} + ${json}= evaluate {"notificationStatus": {}} + Run Keyword If '${status}' != "" set to dictionary ${json["notificationStatus"]} dp=${status} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle ${endpoint} &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{headers} = Create Dictionary "Content-Type"="application/json" + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check resource operationState is [Arguments] ${state} String ${response['body']['operationState']} ${state} - -Check resource instantiated + +Check resource Instantiated + Wait Until Keyword Succeeds 2 min 10 sec Probe resource Instantiated + +Probe resource Instantiated Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} String response body nsState INSTANTIATED - + Check resource not_instantiated + Wait Until Keyword Succeeds 2 min 10 sec Probe resource not_instantiated + +Probe resource not_instantiated + [Arguments] ${fresh_resource}=0 Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Log ${fresh_resource} + ${instanceId}= Set Variable If ${fresh_resource} == 0 ${nsInstanceId} ${response['body']['id']} + Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${instanceId} String response body nsState NOT_INSTANTIATED Check operation resource state is FAILED_TEMP @@ -165,7 +177,7 @@ Check Postcondition NS Instance is not created Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nonExistentNsId} Integer response status 404 Check HTTP Response Status Code Is @@ -178,7 +190,7 @@ Check Postcondition NS Instance is deleted Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${disabledNsdId} Integer response status 404 Check Postcondition NS Instance is not modified @@ -323,7 +335,7 @@ POST IndividualNSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nonExistentNsId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -412,7 +424,7 @@ GET Instantiate NSInstance Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/InstantiateNs.json - ${body}= Format String ${template} nsFlavourId=${nsFlavourId} + ${body}= Format String ${template} nsFlavourId=${nsFlavourId} vimAccountId=${vimAccountId} nsdId=${nsdId} Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/instantiate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -935,7 +947,7 @@ POST subscriptions 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} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${nsdId} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -947,7 +959,7 @@ POST subscriptions 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} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${nsdId} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -959,7 +971,7 @@ POST subscriptions 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} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${nsdId} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot b/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot index 628bbdf57..e17087e22 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot @@ -98,7 +98,8 @@ Configure Notification NS LCM Operation Occurrence Start Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{headers}= Create Dictionary Content-Type=application/json + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check NS LCM Operation Occurrence Result Notification Http POST Request Body Json Schema Is @@ -120,7 +121,8 @@ Configure Notification NS LCM Operation Occurrence Result Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{headers}= Create Dictionary Content-Type=application/json + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check NS Identifier Creation Notification Http POST Request Body Json Schema Is @@ -142,7 +144,8 @@ Configure Notification NS Identifier Creation Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{headers}= Create Dictionary Content-Type=application/json + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check NS Identifier Deletion Notification Http POST Request Body Json Schema Is @@ -164,7 +167,8 @@ Configure Notification NS Identifier Deletion Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{headers}= Create Dictionary Content-Type=application/json + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check NS LCM Operation Occurrence Start Notification Http POST Request Body notificationStatus attribute Is diff --git a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNs.json b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNs.json index 60eee0859..cd352b53a 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNs.json +++ b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNs.json @@ -1,3 +1,5 @@ {{ - "nsFlavourId": {nsFlavourId} + "nsdId": "{nsdId}", + "nsName": "postmanNS", + "vimAccountId": "{vimAccountId}" }} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index 48a306e04..fcf0c3523 100644 --- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot +++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot @@ -352,7 +352,7 @@ GET all Performance Thresholds GET Performance Thresholds with attribute-based filter Log Trying to get thresholds present in the NFVO 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}/${apiVersion}/thresholds?${FILTER_OK_Threshold} ${output}= Output response Set Suite Variable ${response} ${output} @@ -739,13 +739,13 @@ Send Delete request for individual NS Performance Subscription with invalid reso Set Suite Variable ${response} ${output} Send Post request for individual NS Performance Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Put request for individual NS Performance Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -754,7 +754,7 @@ Send Put request for individual NS Performance Subscription Set Suite Variable ${response} ${output} Send Patch request for individual NS Performance Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -798,8 +798,9 @@ Create Sessions Check Notification Endpoint - &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{notification_request}= Create Mock Request Matcher 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} Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} diff --git a/SOL005/NSPerformanceManagement-API/Notifications.robot b/SOL005/NSPerformanceManagement-API/Notifications.robot index fcc032436..a24cbc2a7 100644 --- a/SOL005/NSPerformanceManagement-API/Notifications.robot +++ b/SOL005/NSPerformanceManagement-API/Notifications.robot @@ -87,7 +87,8 @@ Configure Notification Performance Information Available Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{headers} = Create Dictionary Content-Type=application/json + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Threshold Crossed Handler @@ -97,7 +98,8 @@ Configure Notification Threshold Crossed Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{headers} = Create Dictionary Content-Type=application/json + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot index 8e8d887c0..bf7219775 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -121,7 +121,7 @@ DELETE Individual VNF Package ... Applicability: none ... Post-Conditions: The VNF Package is not available anymore in the NFVO Send DELETE Request for individual VNF Package - Check HTTP Response Status Code Is 405 + Check HTTP Response Status Code Is 204 Check Postcondition VNF Package is Deleted DELETE Individual VNF Package in operational state ENABLED diff --git a/SOL005/VNFPackageManagement-API/Notifications.robot b/SOL005/VNFPackageManagement-API/Notifications.robot index fefa8c79b..a83952742 100644 --- a/SOL005/VNFPackageManagement-API/Notifications.robot +++ b/SOL005/VNFPackageManagement-API/Notifications.robot @@ -119,8 +119,10 @@ Configure Notification Onboarding Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{headers} = Create Dictionary Content-Type=application/json + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} + Set Suite Variable ${notification_request} ${notification_request} Configure Notification Delete Handler [Arguments] ${endpoint} ${type} ${change} @@ -129,7 +131,8 @@ Configure Notification Delete Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{headers} = Create Dictionary Content-Type=application/json + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Change Status Handler diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 1cbd72922..d715bcb23 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -420,10 +420,11 @@ Send DELETE Request for VNFD in individual VNF Package Check Postcondition VNFD Exist Log Checking that vnf pacakge still exists - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Accept": "${ACCEPT_PLAIN}, ${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd + ${output}= Output response + Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 GET Individual VNF Package Content @@ -929,7 +930,8 @@ Check HTTP Response Body Subscription Identifier matches the requested Subscript Check Notification Endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{headers} = Create Dictionary Content-Type=application/json + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} -- GitLab From 2ffbdb4151a53c880164952736ae5c96d39253ab Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 2 Sep 2020 09:06:50 +0500 Subject: [PATCH 018/580] schemas PMJobModifications and ThresholdModification added --- .../IndividualPmJob.robot | 2 +- .../IndividualThreshold.robot | 2 +- .../schemas/PMJobModifications.json | 62 +++++++++++++++++++ .../schemas/ThresholdModifications.json | 62 +++++++++++++++++++ 4 files changed, 126 insertions(+), 2 deletions(-) create mode 100644 SOL002/VNFPerformanceManagement-API/schemas/PMJobModifications.json create mode 100644 SOL002/VNFPerformanceManagement-API/schemas/ThresholdModifications.json diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index 529441010..3729a715b 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -99,7 +99,7 @@ PATCH Individual VNF Performance Job ... Post-Conditions: Send Patch request for individual VNF Performance Job Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PMJobModification + Check HTTP Response Body Json Schema Is PMJobModifications PATCH Individual VNF Performance Job - Precondition failed [Documentation] Test ID: 6.3.3.2.8 diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index 702b3f80e..9bb807520 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -95,7 +95,7 @@ PATCH Individual Threshold ... Post-Conditions: The VNF Performance Threshold is not modified by the operation Send Patch request for individual VNF Performance Threshold Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ThresholdModification + Check HTTP Response Body Json Schema Is ThresholdModifications PATCH Individual Threshold - Precondition failed diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PMJobModifications.json b/SOL002/VNFPerformanceManagement-API/schemas/PMJobModifications.json new file mode 100644 index 000000000..7a0962056 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/schemas/PMJobModifications.json @@ -0,0 +1,62 @@ + { + "description": "This type represents modifications to a PM job. It shall comply with the provisions defined in table 6.5.2.12-1.\n", + "type": "object", + "properties": { + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "authentication": { + "type": "object", + "required": [ + "authType" + ], + "properties": { + "authType": { + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS", + "TLS_CERT" + ] + } + }, + "paramsBasic": { + "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "userName": { + "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + }, + "password": { + "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + } + } + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/schemas/ThresholdModifications.json b/SOL002/VNFPerformanceManagement-API/schemas/ThresholdModifications.json new file mode 100644 index 000000000..995cee351 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/schemas/ThresholdModifications.json @@ -0,0 +1,62 @@ + { + "description": "This type represents modifications to a threshold. It shall comply with the provisions defined in table 6.5.2.11-1.\n", + "type": "object", + "properties": { + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "authentication": { + "type": "object", + "required": [ + "authType" + ], + "properties": { + "authType": { + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS", + "TLS_CERT" + ] + } + }, + "paramsBasic": { + "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "userName": { + "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + }, + "password": { + "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + } + } + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } \ No newline at end of file -- GitLab From 5eae1233dc6314b29fcb45ee4ac8138390787d13 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 2 Sep 2020 09:12:32 +0500 Subject: [PATCH 019/580] new test added for subscription --- SOL002/VNFFaultManagement-API/Subscriptions.robot | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index 1977027d5..b77885650 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -285,6 +285,19 @@ Get subscriptions with filter "filter.probableCauses" Check HTTP Response Body Json Schema Is FmSubscriptions Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_probableCauses" +POST Create a new Subscription - Unprocessable Entity + [Documentation] Test ID: 6.3.4.4.21 + ... Test title: POST Create a new Subscription - Unprocessable Entity + ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. + ... re-conditions: none + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Create subscription + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** Post Create subscription Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions -- GitLab From aa04d0dc6c6d86a69380514b246b1ff31f2b6388 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 2 Sep 2020 09:26:57 +0500 Subject: [PATCH 020/580] missing and new test cases added for subscription --- SOL002/VNFIndicator-API/Subscriptions.robot | 69 ++++++++++++++++++++- 1 file changed, 67 insertions(+), 2 deletions(-) diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index fd458fbb6..1d54a66d2 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -139,8 +139,47 @@ GET VNF Indicators Subscriptions - Bad Request Response too Big ... Post-Conditions: none Get VNF Indicators Subscriptions Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Create a new Subscription - Unprocessable Entity + [Documentation] Test ID: 6.3.2.4.11 + ... Test title: POST Create a new Subscription - Unprocessable Entity + ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. + ... re-conditions: none + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + Send Post Request for VNF Indicator Subscription + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + +Create new VNF indicator Subscription - DUPLICATION + [Documentation] Test ID: 6.3.2.4.12 + ... Test title: POST Create a new subscription - DUPLICATION + ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist + ... Pre-conditions: none + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Config ID: Config_prod_VE + ... Applicability: SUT should support duplication of subscription creation + ... Post-Conditions: in response header Location shall not be null + Post Create subscription - DUPLICATION + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is VnfIndicatorSubscription +Create new VNF indicator Subscription - NO-DUPLICATION + [Documentation] Test ID: 6.3.2.4.13 + ... Test title: POST Create a new subscription - NO-DUPLICATION + ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist + ... Pre-conditions: none + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Config ID: Config_prod_VE + ... Applicability: SUT should not support duplication of subscription creation + ... Post-Conditions: in response header Location shall not be null + Post Create subscription - NO-DUPLICATION + Check HTTP Response Status Code Is 303 + Check Operation Occurrence Id + *** Keywords *** Get VNF Indicators Subscriptions Log Trying to get the list of subscriptions @@ -265,4 +304,30 @@ Check Notification Endpoint Check LINK in Header ${linkURL}= Get Value From Json ${response['headers']} $..Link - Should Not Be Empty ${linkURL} \ No newline at end of file + Should Not Be Empty ${linkURL} + +Post Create subscription - DUPLICATION + Log Trying to create a subscription with an already created content + Pass Execution If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 0 VNFM is not permitting duplication. Skipping the test + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body}= Get File jsons/subscriptions.json + Post ${apiRoot}/${apiName}/${apiVersion}/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_CHECKS_NOTIF_ENDPOINT} == 1 VNFM permits duplication. Skipping the test + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body}= Get File jsons/subscriptions.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check Operation Occurrence Id + ${vnfLcmOpOccId}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${vnfLcmOpOccId} -- GitLab From 381c201a848ade90f050801c18bec2a582555bab Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 2 Sep 2020 15:35:06 +0500 Subject: [PATCH 021/580] fix for issue 122 --- SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot | 4 ++-- SOL005/NSLifecycleManagement-API/environment/variables.txt | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index a11b0047c..298987ee8 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -163,7 +163,7 @@ Check Postcondition NS Instance is not created Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${indNSInstanceId} Integer response status 404 Check HTTP Response Status Code Is @@ -308,7 +308,7 @@ POST IndividualNSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${indNSInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index 94a133ae4..ecaffd28a 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -17,6 +17,7 @@ ${apiVersion} v1 ${AUTH_USAGE} 1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX ${nsInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${indNSInstanceId} 962fb5a7-e602-4afa-8e13-962fb5a7d81f ${ConflictNsInstanceId} 007c111c-e602-4afa-8e13-962fb5a7d81d ${nsInstanceName} Test-nsInstance ${nsInstanceDescription} description ns -- GitLab From 7229c8df5fec145ddd705d73a0641fa8c606e9c3 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 3 Sep 2020 10:22:34 +0500 Subject: [PATCH 022/580] fix for issue 121 --- .../VNFPackageManagement-API/ApiVersion.robot | 1 - .../IndividualSubscription.robot | 3 +- .../IndividualVNFPackage.robot | 3 +- .../Subscriptions.robot | 3 +- .../VNFDInIndividualVNFPackage.robot | 3 +- .../VNFPackageArtifacts.robot | 3 +- .../VNFPackageContent.robot | 3 +- .../VNFPackageContentViaURI.robot | 3 +- .../VNFPackageManagementKeywords.robot | 8 --- .../VNFPackages.robot | 1 - .../environment/individualSubscription.txt | 7 --- .../environment/individualVnfPackage.txt | 5 -- .../environment/subscriptions.txt | 7 --- .../environment/variables.txt | 49 ++++++++++++++++++- .../environment/vnfPackageArtifacts.txt | 8 --- .../environment/vnfPackageContent.txt | 12 ----- .../environment/vnfPackageContentViaUri.txt | 4 -- .../environment/vnfPackages.txt | 10 ---- .../vnfdInIndividualVnfPackage.txt | 12 ----- 19 files changed, 54 insertions(+), 91 deletions(-) delete mode 100644 SOL005/VNFPackageManagement-API/environment/individualSubscription.txt delete mode 100644 SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt delete mode 100644 SOL005/VNFPackageManagement-API/environment/subscriptions.txt delete mode 100644 SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt delete mode 100644 SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt delete mode 100644 SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt delete mode 100644 SOL005/VNFPackageManagement-API/environment/vnfPackages.txt delete mode 100644 SOL005/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt diff --git a/SOL005/VNFPackageManagement-API/ApiVersion.robot b/SOL005/VNFPackageManagement-API/ApiVersion.robot index 787f4ccf5..609a71d1a 100644 --- a/SOL005/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL005/VNFPackageManagement-API/ApiVersion.robot @@ -1,7 +1,6 @@ *** Settings *** Resource environment/variables.txt - Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library DependencyLibrary Library JSONLibrary diff --git a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot index 06b4a44c5..c72164f90 100644 --- a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Resource environment/individualSubscription.txt +Resource environment/variables.txt Resource VNFPackageManagementKeywords.robot Library OperatingSystem Library JSONLibrary diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot index 8e8d887c0..f47c41c4d 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Resource environment/individualVnfPackage.txt +Resource environment/variables.txt Resource VNFPackageManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/VNFPackageManagement-API/Subscriptions.robot b/SOL005/VNFPackageManagement-API/Subscriptions.robot index 00d943bf7..8ca89778a 100644 --- a/SOL005/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL005/VNFPackageManagement-API/Subscriptions.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Resource environment/subscriptions.txt +Resource environment/variables.txt Resource VNFPackageManagementKeywords.robot Library OperatingSystem Library JSONLibrary diff --git a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index 9ea927e29..05586203f 100644 --- a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Resource environment/vnfdInIndividualVnfPackage.txt +Resource environment/variables.txt Resource VNFPackageManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot index 17fe131cf..72304b904 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Resource environment/vnfPackageArtifacts.txt +Resource environment/variables.txt Resource VNFPackageManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot index 8d4248295..661a04e62 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Resource environment/vnfPackageContent.txt +Resource environment/variables.txt Resource VNFPackageManagementKeywords.robot Library JSONLibrary Library OperatingSystem diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot index 82ccf7e73..6369bdeeb 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Resource environment/vnfPackageContentViaUri.txt +Resource environment/variables.txt Resource VNFPackageManagementKeywords.robot Library JSONLibrary Library OperatingSystem diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index ff83f44c6..28b292b6a 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1,14 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/subscriptions.txt -Resource environment/vnfPackages.txt # VNF Packages specific parameters -Resource environment/individualVnfPackage.txt -Resource environment/vnfdInIndividualVnfPackage.txt -Resource environment/vnfPackageContent.txt -Resource environment/vnfPackageContentViaUri.txt -Resource environment/vnfPackageArtifacts.txt -Resource environment/individualSubscription.txt Library OperatingSystem Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/VNFPackageManagement-API/VNFPackages.robot b/SOL005/VNFPackageManagement-API/VNFPackages.robot index 617e627de..3cfc30de7 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackages.robot @@ -1,5 +1,4 @@ *** Settings *** -Resource environment/vnfPackages.txt # VNF Packages specific parameters Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Resource VNFPackageManagementKeywords.robot diff --git a/SOL005/VNFPackageManagement-API/environment/individualSubscription.txt b/SOL005/VNFPackageManagement-API/environment/individualSubscription.txt deleted file mode 100644 index 78c7b91b4..000000000 --- a/SOL005/VNFPackageManagement-API/environment/individualSubscription.txt +++ /dev/null @@ -1,7 +0,0 @@ -*** Variables *** -${subscriptionId} f3ae6df7-07e1-47c9-8924-9ebe10343586 -${erroneousSubscriptionId} 442e3ee5-0499-4849-9b31-eb91ce1638f1 # Not existing ID on the subscriptions -${newSubscriptionId} newSubsciptionId -${response} httpresponse -${origResponse} httpresponse - diff --git a/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt b/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt deleted file mode 100644 index 23b0dd07b..000000000 --- a/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt +++ /dev/null @@ -1,5 +0,0 @@ -*** Variables *** -${erroneousVnfPackageId} erroneousVnfPackageId # Given ID for vnfPkg not present in database -${disabledVnfPackageId} 87a2c9d3-00ea-4032-8c67-a5106d001868 -${vnfPackageId} 788106a2-d692-44f3-a86d-384f0ce35e42 -${instantiatedVnfPackageId} 0b79bab50daca910b000d4f1a2b675d604257e42 \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/environment/subscriptions.txt b/SOL005/VNFPackageManagement-API/environment/subscriptions.txt deleted file mode 100644 index ca34ee831..000000000 --- a/SOL005/VNFPackageManagement-API/environment/subscriptions.txt +++ /dev/null @@ -1,7 +0,0 @@ -*** Variables *** -${filter_ok} callbackUri=http://172.22.1.7:9091/vnfpkgm/subscriptions -${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based -${callbackUri} http://172.22.1.7:9091/vnfpkgm/subscriptions -${total_polling_time} 2 min -${polling_interval} 10 sec -${SEPERATOR} = \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 80469cdfe..bb3a84bbe 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -14,7 +14,6 @@ ${apiName} vnfpkgm ${FIELD_USAGE} 1 ${NFVO_PLAIN} 1 ${NFVO_FIELDS} 1 -${onboardingStateVnfPkgId} 788106a2-d692-44f3-a86d-384f0ce35e42 # The VNF Package is in CREATED onboardingState ${testOptionalMethods} 0 @@ -31,7 +30,53 @@ ${polling_interval} 10 sec ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 -${response} +${response} ${notification_request} [] ${notification_response} [] + +${subscriptionId} f3ae6df7-07e1-47c9-8924-9ebe10343586 +${erroneousSubscriptionId} 442e3ee5-0499-4849-9b31-eb91ce1638f1 # Not existing ID on the subscriptions +${newSubscriptionId} newSubsciptionId +${origResponse} httpresponse + +${filter_ok} callbackUri=http://172.22.1.7:9091/vnfpkgm/subscriptions +${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based +${SEPERATOR} = + +${erroneousVnfPackageId} erroneousVnfPackageId # Given ID for vnfPkg not present in database +${disabledVnfPackageId} 87a2c9d3-00ea-4032-8c67-a5106d001868 +${vnfPackageId} 788106a2-d692-44f3-a86d-384f0ce35e42 +${instantiatedVnfPackageId} 0b79bab50daca910b000d4f1a2b675d604257e42 + +${ACCEPT_PLAIN} text/plain +${ACCEPT_ZIP} application/zip +${CONTENT_TYPE_PLAIN} text/plain +${CONTENT_TYPE_ZIP} application/zip +${NFVO_VNFD_PLAIN} 1 +${NFVO_VNFD_ZIP} 0 +${vnfPkgPlainVNFD} c26ad7fb-072b-48c4-a663-7d71646d9e98 # The VNF Pakcage contains a VNFD which is a Single Plain File +${vnfPkgZipVNFD} f5b220d4-6177-4ebb-a554-a43311e16075 # The VNF Package contains a VNFD composed by multiple files +${erroneousVnfPkgId} erroneousPkgId +${onboardingStateVnfPkgId} 788106a2-d692-44f3-a86d-384f0ce35e42 # The VNF Package is in CREATED onboardingState + +${artifactPath} artifactPath +${CONTENT_TYPE_OCTET} application/octet-stream +${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO +${range} bytes=0-1023 +${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes +${vnfPackageOctetStreamId} octetStreamPkgId +${vnfPkgId} 788106a2-d692-44f3-a86d-384f0ce35e42 +${length} 1024 +${creatingVnfPackageId} d246ccdd-71aa-402f-b256-6a80ee54be3d +${newVnfPackageId} d246ccdd-71aa-402f-b256-6a80ee54be3d + +${POS_FILTER} vnfdId=41fdd38a-3d4c-465c-83e0-f80e014425f8&vnfProvider=NXW # Positive case, suing compiant fields name for filtering get request +${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field +${CAN_FILTER} 1 # NFVO in able to use filters when retrieving VNF Packages +${fields} softwareImages,additionalArtifacts +${BAD_AUTHORIZATION} Bear sometoken +${VAR_SEPERATOR} & + +${vnfPkgViaUriId} 788106a2-d692-44f3-a86d-384f0ce35e42 +${creatingVnfPkgViaUriId} d246ccdd-71aa-402f-b256-6a80ee54be3d \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt deleted file mode 100644 index 4acfbd727..000000000 --- a/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt +++ /dev/null @@ -1,8 +0,0 @@ -*** Variables *** -${artifactPath} artifactPath -${CONTENT_TYPE_OCTET} application/octet-stream -${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO -${range} bytes=0-1023 -${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes -${erroneousVnfPkgId} erroneousPkgId -${vnfPackageOctetStreamId} octetStreamPkgId \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt deleted file mode 100644 index c775a126d..000000000 --- a/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt +++ /dev/null @@ -1,12 +0,0 @@ -*** Variables *** -${ACCEPT_ZIP} application/zip -${CONTENT_TYPE_ZIP} application/zip -${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO -${erroneousVnfPkgId} erroneousPkgId -${vnfPkgId} 788106a2-d692-44f3-a86d-384f0ce35e42 -${erroneousRange} bytes=100000-1000000 # Requesting a out of range number of bytes -${range} bytes=0-1023 -${length} 1024 -${creatingVnfPackageId} d246ccdd-71aa-402f-b256-6a80ee54be3d -${newVnfPackageId} d246ccdd-71aa-402f-b256-6a80ee54be3d - diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt deleted file mode 100644 index 9cb902861..000000000 --- a/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt +++ /dev/null @@ -1,4 +0,0 @@ -*** Variables *** -${vnfPkgViaUriId} 788106a2-d692-44f3-a86d-384f0ce35e42 -${creatingVnfPkgViaUriId} d246ccdd-71aa-402f-b256-6a80ee54be3d - diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackages.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackages.txt deleted file mode 100644 index 8f599ef60..000000000 --- a/SOL005/VNFPackageManagement-API/environment/vnfPackages.txt +++ /dev/null @@ -1,10 +0,0 @@ -*** Variables *** -${POS_FILTER} vnfdId=41fdd38a-3d4c-465c-83e0-f80e014425f8&vnfProvider=NXW # Positive case, suing compiant fields name for filtering get request -${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field -${CAN_FILTER} 1 # NFVO in able to use filters when retrieving VNF Packages -${fields} softwareImages,additionalArtifacts -${response} httpresponse -${NEG_AUTHORIZATION} Bearer negativetoken -${BAD_AUTHORIZATION} Bear sometoken -${SEPERATOR} = -${VAR_SEPERATOR} & diff --git a/SOL005/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt b/SOL005/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt deleted file mode 100644 index 8e228037e..000000000 --- a/SOL005/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt +++ /dev/null @@ -1,12 +0,0 @@ -*** Variables *** -${ACCEPT_PLAIN} text/plain -${ACCEPT_ZIP} application/zip -${CONTENT_TYPE_PLAIN} text/plain -${CONTENT_TYPE_ZIP} application/zip -${NFVO_VNFD_PLAIN} 1 -${NFVO_VNFD_ZIP} 0 -${vnfPkgPlainVNFD} c26ad7fb-072b-48c4-a663-7d71646d9e98 # The VNF Pakcage contains a VNFD which is a Single Plain File -${vnfPkgZipVNFD} f5b220d4-6177-4ebb-a554-a43311e16075 # The VNF Package contains a VNFD composed by multiple files -${erroneousVnfPkgId} erroneousPkgId -${onboardingStateVnfPkgId} 788106a2-d692-44f3-a86d-384f0ce35e42 # The VNF Package is in CREATED onboardingState -${vnfPackageId} 788106a2-d692-44f3-a86d-384f0ce35e42 -- GitLab From 9b3f09f998a230f2cce31df4037e09488e415ab3 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 3 Sep 2020 13:04:48 +0500 Subject: [PATCH 023/580] new test case added for SOL003 LCM Subscrption --- .../Subscriptions.robot | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index 4e05efb62..84cc91dbe 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -200,4 +200,17 @@ GET subscriptions - Bad Request Response too Big ... Post-Conditions: none Get subscriptions Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Create a new Subscription - Unprocessable Entity + [Documentation] Test ID: 7.3.1.17.16 + ... Test title: POST Create a new Subscription - Unprocessable Entity + ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. + ... re-conditions: none + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Create subscription + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file -- GitLab From 26d949d9b3e008a1a174ea0089d2f355716bfb28 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 3 Sep 2020 13:24:19 +0500 Subject: [PATCH 024/580] new test cases added for IndividualPmJob --- .../IndividualPmJob.robot | 38 ++++++++---- .../jsons/PmJobModifications.json | 3 + .../schemas/PmJobModifications.json | 62 +++++++++++++++++++ 3 files changed, 92 insertions(+), 11 deletions(-) create mode 100644 SOL003/VNFPerformanceManagement-API/jsons/PmJobModifications.json create mode 100644 SOL003/VNFPerformanceManagement-API/schemas/PmJobModifications.json diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index 60129e126..afa7685bc 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -1,4 +1,5 @@ *** Settings *** +Library OperatingSystem Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Library JSONLibrary @@ -76,7 +77,7 @@ PUT Individual VNF Performance Job - Method not implemented ... Test title: PUT Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance Monitoring Job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation @@ -84,19 +85,32 @@ PUT Individual VNF Performance Job - Method not implemented Check HTTP Response Status Code Is 405 Check Postcondition VNF Performance Job is Unmodified (Implicit) -PATCH Individual VNF Performance Job - Method not implemented +PATCH Individual VNF Performance Job [Documentation] Test ID: 7.3.4.2.7 - ... Test title: PATCH Individual VNF Performance Job - method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new VNF Performance Monitoring Job + ... Test title: PATCH Individual VNF Performance Job + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Performance Monitoring Job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Job is not modified by the operation + ... Post-Conditions: Send Patch request for individual VNF Performance Job - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Job is Unmodified (Implicit) + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PMJobModifications +PATCH Individual VNF Performance Job - Precondition failed + [Documentation] Test ID: 7.3.4.2.8 + ... Test title: PATCH Individual VNF Performance Job - Precondition failed + ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met. + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [2] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance Job is not modified by the operation + Send Patch request for individual VNF Performance Job + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails + Check Postcondition VNF Performance Job is Unmodified (Implicit) *** Keywords *** GET individual VNF Performance Job Log Trying to get a Pm Job present in the NFVO Catalogue @@ -150,10 +164,12 @@ Send Put request for individual VNF Performance Job Set Suite Variable ${response} ${output} Send Patch request for individual VNF Performance Job - 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}/${apiVersion}/pm_jobs/${pmJobId} + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/PMJobModifications.json + PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} ${body} + ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFPerformanceManagement-API/jsons/PmJobModifications.json b/SOL003/VNFPerformanceManagement-API/jsons/PmJobModifications.json new file mode 100644 index 000000000..799d664ba --- /dev/null +++ b/SOL003/VNFPerformanceManagement-API/jsons/PmJobModifications.json @@ -0,0 +1,3 @@ +{ + "callbackUri":"127.0.0.3" +} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/schemas/PmJobModifications.json b/SOL003/VNFPerformanceManagement-API/schemas/PmJobModifications.json new file mode 100644 index 000000000..8da79dfe0 --- /dev/null +++ b/SOL003/VNFPerformanceManagement-API/schemas/PmJobModifications.json @@ -0,0 +1,62 @@ +{ + "description": "This type represents modifications to a PM job. It shall comply with the provisions defined in table 6.5.2.12-1.\n", + "type": "object", + "properties": { + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "authentication": { + "type": "object", + "required": [ + "authType" + ], + "properties": { + "authType": { + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS", + "TLS_CERT" + ] + } + }, + "paramsBasic": { + "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "userName": { + "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + }, + "password": { + "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + } + } + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } \ No newline at end of file -- GitLab From 1df2ac74c7bda506e3ed14879e08edc34fe72c63 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 3 Sep 2020 14:59:18 +0500 Subject: [PATCH 025/580] new test cases added for IndividualThreshold --- .../IndividualPmJob.robot | 4 +- .../IndividualThreshold.robot | 34 ++++++---- .../jsons/ThresholdModifications.json | 3 + .../schemas/ThresholdModifications.json | 62 +++++++++++++++++++ 4 files changed, 90 insertions(+), 13 deletions(-) create mode 100644 SOL003/VNFPerformanceManagement-API/jsons/ThresholdModifications.json create mode 100644 SOL003/VNFPerformanceManagement-API/schemas/ThresholdModifications.json diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index afa7685bc..8c2fc2979 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -88,7 +88,7 @@ PUT Individual VNF Performance Job - Method not implemented PATCH Individual VNF Performance Job [Documentation] Test ID: 7.3.4.2.7 ... Test title: PATCH Individual VNF Performance Job - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Performance Monitoring Job + ... Test objective: The objective is to test that PATCH method allows to modify individual performace management job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM @@ -103,7 +103,7 @@ PATCH Individual VNF Performance Job - Precondition failed ... Test title: PATCH Individual VNF Performance Job - Precondition failed ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation diff --git a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot index 18988757a..fb40dd197 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -84,19 +84,32 @@ PUT Individual Threshold - Method not implemented Check HTTP Response Status Code Is 405 Check Postcondition VNF Performance Threshold is Unmodified (Implicit) -PATCH Individual Threshold - Method not implemented +PATCH Individual Threshold [Documentation] Test ID: 7.3.4.5.7 - ... Test title: PATCH Individual Threshold - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Performance threshold + ... Test title: PATCH Individual Threshold + ... Test objective: The objective is to test that PATCH method allows to modify an Individual threshold resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Threshold is not modified by the operation + ... Post-Conditions: Send Patch request for individual VNF Performance Threshold - Check HTTP Response Status Code Is 405 + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ThresholdModifications + +PATCH Individual Threshold - Precondition failed + [Documentation] Test ID: 7.3.4.5.8 + ... Test title: PATCH Individual Threshold - Preconition failed + ... Test objective: The objective is to attempt to modify an individual threshold resource, where the precondition was not met. + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance Job is not modified by the operation + Send Patch request for individual VNF Performance Threshold + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails Check Postcondition VNF Performance Threshold is Unmodified (Implicit) - *** Keywords *** GET Individual VNF Performance Threshold Log Trying to get a Threhsold present in the VNFM @@ -148,11 +161,10 @@ Send Put request for individual VNF Performance Threshold Send Patch 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} - ${origOutput}= Output response - Set Suite Variable ${origResponse} ${origOutput} + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/ThresholdModifications.json PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFPerformanceManagement-API/jsons/ThresholdModifications.json b/SOL003/VNFPerformanceManagement-API/jsons/ThresholdModifications.json new file mode 100644 index 000000000..b3f998b3f --- /dev/null +++ b/SOL003/VNFPerformanceManagement-API/jsons/ThresholdModifications.json @@ -0,0 +1,3 @@ + { + "callbackUri":"127.0.0.1" +} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/schemas/ThresholdModifications.json b/SOL003/VNFPerformanceManagement-API/schemas/ThresholdModifications.json new file mode 100644 index 000000000..688bbfe8a --- /dev/null +++ b/SOL003/VNFPerformanceManagement-API/schemas/ThresholdModifications.json @@ -0,0 +1,62 @@ +{ + "description": "This type represents modifications to a threshold. It shall comply with the provisions defined in table 6.5.2.11-1.\n", + "type": "object", + "properties": { + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "authentication": { + "type": "object", + "required": [ + "authType" + ], + "properties": { + "authType": { + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS", + "TLS_CERT" + ] + } + }, + "paramsBasic": { + "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "userName": { + "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + }, + "password": { + "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + } + } + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } \ No newline at end of file -- GitLab From e72e74eed247257d9ff36af30f7518028603d30a Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 3 Sep 2020 16:15:53 +0500 Subject: [PATCH 026/580] new test case and bug fix added for subsription --- .../Subscriptions.robot | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/Subscriptions.robot b/SOL003/VNFFaultManagement-API/Subscriptions.robot index 1d1f3d25b..f9dae5efd 100644 --- a/SOL003/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL003/VNFFaultManagement-API/Subscriptions.robot @@ -211,7 +211,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -225,7 +225,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -239,7 +239,7 @@ Get subscriptions with filter "filter.faultyResourceTypes" ... Test title: GET Subscription with attribute-based filter "filter.faultyResourceTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -253,7 +253,7 @@ Get subscriptions with filter "filter.perceivedSeverities" ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -267,7 +267,7 @@ Get subscriptions with filter "filter.eventTypes" ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -281,7 +281,7 @@ Get subscriptions with filter "filter.probableCauses" ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -289,3 +289,16 @@ Get subscriptions with filter "filter.probableCauses" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_probableCauses" + +POST Create a new Subscription - Unprocessable Entity + [Documentation] Test ID: 7.3.5.3.22 + ... Test title: POST Create a new Subscription - Unprocessable Entity + ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. + ... re-conditions: none + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Subscription + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails -- GitLab From aced8e070f904107609db8c9b8697d456629973f Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 3 Sep 2020 16:29:55 +0500 Subject: [PATCH 027/580] new test case added for SOL003 VNFIndicator Subsriptions --- SOL003/VNFIndicator-API/Subscriptions.robot | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/SOL003/VNFIndicator-API/Subscriptions.robot b/SOL003/VNFIndicator-API/Subscriptions.robot index e9eeed23f..628e3a19a 100644 --- a/SOL003/VNFIndicator-API/Subscriptions.robot +++ b/SOL003/VNFIndicator-API/Subscriptions.robot @@ -173,3 +173,16 @@ GET VNF Indicator Subscriptions - Bad Request Response too Big Get All VNF Indicators Subscriptions Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails + +POST Create a new Subscription - Unprocessable Entity + [Documentation] Test ID: 7.3.6.4.13 + ... Test title: POST Create a new Subscription - Unprocessable Entity + ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. + ... re-conditions: none + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Send Post Request for VNF Indicator Subscription + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails -- GitLab From aac818c233a18ffe05dfa77fafb22e3e4129d6c3 Mon Sep 17 00:00:00 2001 From: Frank Bryden Date: Thu, 3 Sep 2020 15:13:17 +0200 Subject: [PATCH 028/580] Added missing double quotes around Auhtorization header token Signed-off-by: Frank Bryden --- .../IndividualReport.robot | 12 +++---- .../IndividualThreshold.robot | 14 ++++---- .../Thresholds.robot | 16 +++++----- .../VNFPerformanceManagementKeywords.robot | 10 +++--- .../VNFPackageManagementKeywords.robot | 6 ++-- .../IndividualReport.robot | 12 +++---- .../IndividualThreshold.robot | 14 ++++---- .../Thresholds.robot | 16 +++++----- .../VNFPerformanceManagementKeywords.robot | 32 +++++++++---------- 9 files changed, 66 insertions(+), 66 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot index 9a8f99a2c..1148dffdc 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot @@ -87,7 +87,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}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -95,21 +95,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}/${apiVersion}/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}/${apiVersion}/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}/${apiVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -119,7 +119,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}/${apiVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -129,7 +129,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}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index 1a68cdce9..9df58168b 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -101,7 +101,7 @@ PATCH Individual Threshold - Method not implemented 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}/${apiVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -109,28 +109,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}/${apiVersion}/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}/${apiVersion}/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}/${apiVersion}/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}/${apiVersion}/thresholds/${newThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -138,7 +138,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}/${apiVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -149,7 +149,7 @@ Send Put request for individual VNF Performance Threshold Send Patch 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}/${apiVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index 50552ec4f..bcb6017f3 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -142,7 +142,7 @@ GET Performance Thresholds for 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}/${apiVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -150,7 +150,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}/${apiVersion}/thresholds?${FILTER_OK} ${output}= Output response Set Suite Variable ${response} ${output} @@ -158,7 +158,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}/${apiVersion}/thresholds?${FILTER_KO} ${output}= Output response Set Suite Variable ${response} ${output} @@ -166,14 +166,14 @@ 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}/${apiVersion}/threshold ${output}= Output response Set Suite Variable ${response} ${output} Send Post Request Create new Performance Threshold Log Creating a new THreshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${request}= Get File jsons/CreateThresholdRequest.json @@ -183,7 +183,7 @@ Send Post Request Create new Performance Threshold Send PUT Request for all Performance Thresholds Log PUT THresholds - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} PUT ${apiRoot}/${apiName}/${apiVersion}/thresholds @@ -192,7 +192,7 @@ Send PUT Request for all Performance Thresholds Send PATCH Request for all Performance Thresholds Log PUT THresholds - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds @@ -201,7 +201,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}/${apiVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index f131a7216..4599d7620 100644 --- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -19,7 +19,7 @@ Get all VNF Performance Subscriptions ... request and response data structures, and response codes. Set headers {"Accept": "application/json"} Set headers {"Content-Type": "application/json"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -38,7 +38,7 @@ Get all VNF Performance Subscriptions ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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}/${apiVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} @@ -58,7 +58,7 @@ Get VNF Performance Subscriptions with invalid attribute-based filters ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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}/${apiVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} @@ -77,7 +77,7 @@ Get VNF Performance Subscriptions with invalid resource endpoint ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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}/${apiVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -103,7 +103,7 @@ Send Post Request for VNF Performance Subscription ... the existing subscription resource with the same filter and callbackUri). Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} 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}"} ${body_request}= Get File jsons/subscriptions.json POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} ${output}= Output response diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 90d2c306c..a9004c957 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -712,13 +712,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}/${apiVersion}/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}/${apiVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -727,7 +727,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}/${apiVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} diff --git a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot index 6a4de49d0..f76c30ccb 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot @@ -87,7 +87,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}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -95,21 +95,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}/${apiVersion}/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}/${apiVersion}/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}/${apiVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -119,7 +119,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}/${apiVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -129,7 +129,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}/${apiVersion}/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 18988757a..fa6e6cd97 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -101,7 +101,7 @@ PATCH Individual Threshold - Method not implemented 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}/${apiVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -109,28 +109,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}/${apiVersion}/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}/${apiVersion}/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}/${apiVersion}/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}/${apiVersion}/thresholds/${newThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -138,7 +138,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}/${apiVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -149,7 +149,7 @@ Send Put request for individual VNF Performance Threshold Send Patch 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}/${apiVersion}/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 c1d7f0471..fcdf5a5b7 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}/${apiVersion}/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}/${apiVersion}/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}/${apiVersion}/thresholds?${FILTER_KO} ${output}= Output response Set Suite Variable ${response} ${output} @@ -164,14 +164,14 @@ 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}/${apiVersion}/threshold ${output}= Output response Set Suite Variable ${response} ${output} Send Post Request Create new Performance Threshold Log Creating a new THreshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${request}= Get File jsons/CreateThresholdRequest.json @@ -181,7 +181,7 @@ Send Post Request Create new Performance Threshold Send PUT Request for all Performance Thresholds Log PUT THresholds - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} PUT ${apiRoot}/${apiName}/${apiVersion}/thresholds @@ -190,7 +190,7 @@ Send PUT Request for all Performance Thresholds Send PATCH Request for all Performance Thresholds Log PUT THresholds - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds @@ -199,7 +199,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}/${apiVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index a7a2ac66e..01f72fce8 100644 --- a/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -19,7 +19,7 @@ Get all VNF Performance Subscriptions ... request and response data structures, and response codes. Set headers {"Accept": "application/json"} Set headers {"Content-Type": "application/json"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -38,7 +38,7 @@ Get all VNF Performance Subscriptions ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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}/${apiVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} @@ -58,7 +58,7 @@ Get VNF Performance Subscriptions with invalid attribute-based filters ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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}/${apiVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} @@ -77,7 +77,7 @@ Get VNF Performance Subscriptions with invalid resource endpoint ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. 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}/${apiVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -103,7 +103,7 @@ Send Post Request for VNF Performance Subscription ... the existing subscription resource with the same filter and callbackUri). Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} 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}"} ${body_request}= Get File jsons/subscriptions.json POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} ${output}= Output response @@ -134,7 +134,7 @@ Send Post Request for Duplicated VNF Performance Subscription ... the existing subscription resource with the same filter and callbackUri). Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} 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}"} ${body_request}= Get File jsons/subscriptions.json POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} ${output}= Output response @@ -155,7 +155,7 @@ Send Post Request for Duplicated VNF Performance Subscription Send Put Request for VNF Performance Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in Clause 6.4.7.3.3. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -165,7 +165,7 @@ Send Put Request for VNF Performance Subscriptions Send Patch Request for VNF Performance Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in Clause 6.4.7.3.4. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -175,7 +175,7 @@ Send Patch Request for VNF Performance Subscriptions Send Delete Request for VNF Performance Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in Clause 6.4.7.3.5. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -184,40 +184,40 @@ Send Delete Request for VNF Performance Subscriptions Get Individual VNF Performance Subscription 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}/${apiVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} GET individual VNF Performance Subscription with invalid resource identifier 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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual VNF Performance Subscription 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}"} DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual VNF Performance Subscription with invalid resource identifier Log Trying to delete a subscription 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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post request for individual VNF Performance Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Put request for individual VNF Performance Threshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -226,7 +226,7 @@ Send Put request for individual VNF Performance Threshold Set Suite Variable ${response} ${output} Send Patch request for individual VNF Performance Threshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} -- GitLab From e5bf7c12f28f4aaa3acaf2d7288f690426e3a830 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 4 Sep 2020 12:12:56 +0500 Subject: [PATCH 029/580] new test case added for SOL003 VRQN Subsriptions --- .../Subscriptions.robot | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot index 75c19e158..0c0a309e2 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot @@ -6,8 +6,6 @@ Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ - - *** Test Cases *** Create new Virtualised Resources Quota Available Notification subscription [Documentation] Test ID: 7.3.7.1.1 @@ -151,4 +149,17 @@ GET Virtualised Resources Quota Available Notification subscriptions - Bad Reque ... Post-Conditions: none GET Virtualised Resources Quota Available Notification Subscriptions Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +Create new Virtualised Resources Quota Available Notification Subscription - Unprocessable Entity + [Documentation] Test ID: 7.3.7.1.12 + ... Test title: Create new Virtualised Resources Quota Available Notification Subscription - Unprocessable Entity + ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. + ... re-conditions: none + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Send Post request for new Virtualised Resources Quota Available Notification subscription + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails -- GitLab From 6bd0756e09df4265ab5a0b330b13734af16fe2fb Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 7 Sep 2020 12:38:07 +0500 Subject: [PATCH 030/580] removed 406 Not Acceptable test cases --- .../VNFDInIndividualVNFPackage.robot | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index c8f945db6..2c1fa6b2b 100644 --- a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -59,19 +59,6 @@ Get multi file VNFD in Individual VNF Package in Plain or Zip Format Check HTTP Response Status Code Is 200 Check HTTP Response Header Content-Type Is application/zip -Get multi file VNFD in Individual VNF Package in Plain Format - [Documentation] Test ID: 7.3.3.4.5 - ... Test title: Get multi file VNFD in Individual VNF Package in Plain Format - ... Test objective: The objective is to test that the retrieval of the multi file VNFD for an individual VNF package fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The VNFD is implemented as a multi file - ... Post-Conditions: none - Get multi file VNFD in Individual VNF Package in Plain Format - Check HTTP Response Status Code Is 406 - Check HTTP Response Body Json Schema Is ProblemDetails - Get VNFD in Individual VNF Package with invalid resource identifier [Documentation] Test ID: 7.3.3.4.6 ... Test title: Get VNFD in Individual VNF Package with invalid resource identifier @@ -198,19 +185,6 @@ Get multi file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format Check HTTP Response Status Code Is 200 Check HTTP Response Header Content-Type Is application/zip -Get multi file VNFD in Individual OnBoarded VNF Package in Plain Format - [Documentation] Test ID: 7.3.3.4.16 - ... Test title: Get multi file VNFD in Individual OnBoarded VNF Package in Plain Format - ... Test objective: The objective is to test that the retrieval of the multi file VNFD for an individual OnBoarded VNF package fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The VNFD is implemented as a multi file - ... Post-Conditions: none - Get multi file VNFD in Individual OnBoarded VNF Package in Plain Format - Check HTTP Response Status Code Is 406 - Check HTTP Response Body Json Schema Is ProblemDetails - Get VNFD in Individual OnBoarded VNF Package with invalid resource identifier [Documentation] Test ID: 7.3.3.4.17 ... Test title: Get VNFD in Individual OnBoarded VNF Package with invalid resource identifier -- GitLab From 9105303ccaa1e776c9d38991edd4b7c00165a43f Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 7 Sep 2020 14:22:20 +0500 Subject: [PATCH 031/580] new test cases added in VNFDInIndividualVNFPackage --- .../VNFDInIndividualVNFPackage.robot | 26 +++++++++++++++++++ .../VNFPackageManagementKeywords.robot | 18 +++++++++++++ 2 files changed, 44 insertions(+) diff --git a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index 2c1fa6b2b..e53cb0514 100644 --- a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -258,3 +258,29 @@ DELETE VNFD in Individual OnBoarded VNF Package Content - Method not implemented Send DELETE Request for VNFD in individual OnBoarded VNF Package Check HTTP Response Status Code Is 405 Check Postcondition VNFD Exist + +Get multi file VNFD in Individual VNF Package with security information + [Documentation] Test ID: 7.3.3.4.23 + ... Test title: Get multi file VNFD in Individual VNF Package with security information + ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The VNFD is implemented as a multi file + ... Post-Conditions: none + Get multi file VNFD in Individual VNF Package with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get multi file VNFD in Individual OnBoarded VNF Package with security information + [Documentation] Test ID: 7.3.3.4.24 + ... Test title: Get multi file VNFD in Individual OnBoarded VNF Package with security information + ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual OnBoarded VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The VNFD is implemented as a multi file + ... Post-Conditions: none + Get multi file VNFD in Individual OnBoarded VNF Package with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 18bd70bcf..d802fe53a 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1148,3 +1148,21 @@ Check Postcondition OnBoarded VNF Package Artifact Exist Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} Check HTTP Response Status Code Is 200 + +Get multi file VNFD in Individual OnBoarded VNF Package with security information + Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/vnfd/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get multi file 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_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} -- GitLab From e76b8c9f61936bd8e6ba38002f0e89aeab4f03b3 Mon Sep 17 00:00:00 2001 From: Frank Bryden Date: Mon, 7 Sep 2020 18:14:18 +0200 Subject: [PATCH 032/580] Replayed some changes in reverse Signed-off-by: Frank Bryden --- .../environment/nsDescriptors.txt | 9 +++---- .../environment/pnfDescriptors.txt | 5 ++-- .../environment/variables.txt | 16 +++++------ .../NSDManagement-API/files/nsdContent.yaml | 16 ----------- SOL005/NSDManagement-API/files/nsdContent.zip | Bin 391 -> 0 bytes .../NSDManagement-API/files/pnfdContent.zip | Bin 0 -> 359 bytes .../environment/variables.txt | 4 +-- .../environment/variables.txt | 25 +++++++++--------- .../jsons/LccnSubscriptionRequest.json | 2 +- .../environment/IndividualPmJob.txt | 2 +- .../environment/notifications.txt | 4 +-- .../environment/reports.txt | 2 +- .../environment/variables.txt | 12 ++++----- .../environment/individualVnfPackage.txt | 6 ++--- .../environment/variables.txt | 14 +++++----- .../environment/vnfPackageArtifacts.txt | 4 +-- .../environment/vnfPackageContent.txt | 6 ++--- .../environment/vnfPackageContentViaUri.txt | 2 +- .../vnfdInIndividualVnfPackage.txt | 4 +-- .../VnfPackageChangeNotification.schema.json | 2 +- 20 files changed, 59 insertions(+), 76 deletions(-) delete mode 100644 SOL005/NSDManagement-API/files/nsdContent.yaml delete mode 100644 SOL005/NSDManagement-API/files/nsdContent.zip create mode 100644 SOL005/NSDManagement-API/files/pnfdContent.zip diff --git a/SOL005/NSDManagement-API/environment/nsDescriptors.txt b/SOL005/NSDManagement-API/environment/nsDescriptors.txt index 72804bd3a..b16e19ee9 100644 --- a/SOL005/NSDManagement-API/environment/nsDescriptors.txt +++ b/SOL005/NSDManagement-API/environment/nsDescriptors.txt @@ -1,10 +1,9 @@ *** Variables *** ${POS_FIELDS} name=nsdOnboardingState ${NEG_FIELDS} wrongName=any_value -${nsdInfoId} 9e708376-4f96-4972-89c2-243760626f20 -${nsdInfoIdPlain} 01872c48-3631-4060-afa8-ca7cbef8a4d8 -${nsdInfoIdZip} 01872c48-3631-4060-afa8-ca7cbef8a4d8 -${nsdDownloadableZip} cac6ac71-0fdf-45d1-a056-775cbb8157b5 +${nsdInfoId} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 +${nsdInfoIdPlain} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 +${nsdInfoIdZip} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 ${erroneous_nsdInfoId} erroneous_nsdInfoId ${disabledNsdInfoId} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 ${fields} _links @@ -20,7 +19,7 @@ ${NFVO_RANGE_OK} 1 ${range} bytes=0-1023 ${erroneousRange} bytes=100000-1000000 # Requesting a out of range number of bytes ${onboardingStateNsdInfoId} b992a851-08b1-45a8-9282-a5f7a7df04a6 -${contentZipFile} files/nsdContent.tar.gz +${contentZipFile} files/nsdContent.zip ${contentPlainFile} files/nsdContent.yaml ${creatingNsdInfoId} 71241932-994a-46e2-ad6c-1740674dda44 ${NEG_AUTHORIZATION} Bearer negativetoken diff --git a/SOL005/NSDManagement-API/environment/pnfDescriptors.txt b/SOL005/NSDManagement-API/environment/pnfDescriptors.txt index 57b78b807..c3bf1896b 100644 --- a/SOL005/NSDManagement-API/environment/pnfDescriptors.txt +++ b/SOL005/NSDManagement-API/environment/pnfDescriptors.txt @@ -1,8 +1,7 @@ *** Variables *** ${POS_FIELDS} name=pnfdOnboardingState ${NEG_FIELDS} wrongName=any_value -${pnfdInfoId} b227e618-cdb9-485b-8bfe-d4b8dee8e678 #used for testing downloads -${pnfdInfoUpld} dd7ff0f8-0e63-41b4-a572-568d0db30153 #used for testing uploads +${pnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 ${erroneous_pnfdInfoId} erroneous_pnfdInfoId ${enabledPnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 ${NFVO_FIELDS} 1 @@ -11,6 +10,6 @@ ${ACCEPT_PLAIN} text/plain ${CONTENT_TYPE_PLAIN} text/plain ${erroneous_pnfdId} erroneousPnfdId ${onboardingStatePnfdId} 8ed2bf1f-f6ae-4d18-b478-bfab02fd4cd2 -${contentFilePnfd} files/nsdContent.yaml +${contentFilePnfd} files/pnfdContent.zip ${creatingPnfdId} 2e4ce0ef-3ea8-49f9-92dd-8771866015bb ${userDefinedDataSet} some \ No newline at end of file diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index 547e487e3..2125c869c 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -1,23 +1,23 @@ *** Variables *** -${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO -${NFVO_PORT} 9999 # Listening port of the NFVO +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer u5JGp5D3k7m1VUlrCa39k8WX15em149q +${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json -${apiRoot} /osm/ +${apiRoot} / ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken ${apiVersion} v1 ${apiName} nsd ${FIELD_USAGE} 1 -${NFVO_AUTHENTICATION} Bearer isDGF7TiifGUgzeNb0Fls9aatfZRy4iX #never referenced -${NFVO_AUTH_USAGE} 1 #never refernced +${NFVO_AUTHENTICATION} Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 +${NFVO_AUTH_USAGE} 1 ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -${callback_port} 9091 -${callback_uri} http://172.22.1.7:${callback_port} +${callback_port} 9191 +${callback_uri} http://172.21.248.145 ${callback_endpoint} /nsd/subscriptions ${callback_endpoint_error} /subs_404 ${callback_endpoint_fwd} /endpoint/check diff --git a/SOL005/NSDManagement-API/files/nsdContent.yaml b/SOL005/NSDManagement-API/files/nsdContent.yaml deleted file mode 100644 index 94b9907be..000000000 --- a/SOL005/NSDManagement-API/files/nsdContent.yaml +++ /dev/null @@ -1,16 +0,0 @@ -nsd:nsd-catalog: - nsd: - - constituent-vnfd: [] - description: myNSD descriptor - id: myNSDRevisitedA - name: myNSDRevisitedA - short-name: myNSD - vendor: OSM Composer - version: '1.0' - vld: - - id: ns_vl_u5el - mgmt-network: 'true' - name: ns_vl_u5el - type: ELAN - vim-network-name: PUBLIC - vnfd-connection-point-ref: [] diff --git a/SOL005/NSDManagement-API/files/nsdContent.zip b/SOL005/NSDManagement-API/files/nsdContent.zip deleted file mode 100644 index 7518dd85af2450c67ce648cb1a80760070040652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmWIWW@Zs#U}4~35U;rv@T}Tj?;-;OLpUP?g8+jJLvE#Cu!}yJ)T>O)%?Sx z>T4X=yRUJj72FJrEQ&zoU?MeOqaU*&&)uI~`R1%s8&##Z@OUg;8&c}D!YcNTP~k@Z zPW=`2@$+vhu>^nl^X7Y;+|&mvS*~xr^sVMgIRn@73Ng?57 zk&KE_rN{ECWgm?nFZO_A95@~DYS>HM$XN}sXhjrpJyW+=WnOYU8I zujaLTMt+*=+FHMFy+7{$rkB;@_!2ga`*Zf&m`rltBlGIJ&YAt(mb|k*rvBWr%j?RF zJg)02X5an%skCnKR)OWbf@Q({c@I{YrrJb!rw4d5GRZOH3LFWbzZn>S;l!|{5yZj_ aDpp8Pp#@WbH!B-RJtGi?0cmNF5exwIxQKxO diff --git a/SOL005/NSDManagement-API/files/pnfdContent.zip b/SOL005/NSDManagement-API/files/pnfdContent.zip new file mode 100644 index 0000000000000000000000000000000000000000..16151601c098de41c91ba4301540a3bfb355cbdb GIT binary patch literal 359 zcmV-t0hsbM@Dobln&e6b}l*`#>A|eo2#lR5sJu<%taUL6gfW`UT8O zlcXKJVbLF0S(h6^BBQnYYTkGCG~|-YXKq47g(~?bBXL_HB+R0sq=qjtBAW-bXbUB` zg%PzAT7}sEYx_u>c7`asLi?n0$q%3Hi#CoPr)#cCZ8CB@yCGvOYi+sd3dXiu_2U8S zZ=-5|`mmL<^K~^pdmnDPgUhA#8*ulg&8uJM%!>EB(stWVD_m3i_-b-K-F>@|yEk-4 zy}Q4dT#pZ1<2$N&5&A%DEqq(sMm;|DA^-pY000000000000000004lW`T+B0f0zI$ F007z4rv?B3 literal 0 HcmV?d00001 diff --git a/SOL005/NSFaultManagement-API/environment/variables.txt b/SOL005/NSFaultManagement-API/environment/variables.txt index f1f00fbe7..87d59d8b2 100644 --- a/SOL005/NSFaultManagement-API/environment/variables.txt +++ b/SOL005/NSFaultManagement-API/environment/variables.txt @@ -51,8 +51,8 @@ ${response} {} ${req_mock} {} ${resp_mock} {} -${callback_port} 9091 -${callback_uri} http://172.22.1.7:${callback_port} +${callback_port} 9191 +${callback_uri} http://172.21.248.145 ${callback_endpoint} /endpoint ${callback_endpoint_fwd} /endpoint/check ${callback_endpoint_error} /endpoint_404 diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index b9a2ab988..d58f1074f 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -1,31 +1,32 @@ *** Variables *** ${VNFM_HOST} localhost # Hostname of the VNFM ${VNFM_PORT} 8080 # Listening port of the VNFM -${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO -${NFVO_PORT} 9999 # Listening port of the NFVO +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO ${VNFM_SCHEMA} https ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer v1qDEucqjIZSua6t4R40sraMZafJxEKb +${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== ${CONTENT_TYPE} application/json ${CONTENT_TYPE_PATCH} application/merge-patch+json ${ACCEPT_JSON} application/json ${ACCEPT} application/json -${apiRoot} /osm/ +${apiRoot} / ${apiName} nslcm ${apiVersion} v1 ${AUTH_USAGE} 1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX -${nsdId} 9e708376-4f96-4972-89c2-243760626f20 -${disabledNsdId} 9e708376-4f96-4972-89c2-243760626f20 -${nsInstanceId} bef2ab38-d117-4f29-bb07-0b02508575a9 +${nsInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${nsdId} 58a7beb6-aa89-405e-bd90-7d276b967c03 +${disabledNsdId} fca7c896-a7d0-4ff8-865e-f5c8ee2fd1c3 +${nonExistentNsId} nonExistent ${ConflictNsInstanceId} 007c111c-e602-4afa-8e13-962fb5a7d81d ${nsInstanceName} Test-nsInstance ${nsInstanceDescription} description ns ${nsInstanceDescription_Update} Updated description ns ${nsFlavourId} 0 ${nsDegreeHealing} HEAL_RESTORE -${vimAccountId} 46baa285-994b-4615-8fd1-84fff6e90832 +${vimAccountId} 931f6a4d-6a97-43f3-a6f0-13853ef577ea ${SINGLE_FILE_VNFD} 1 # If VNFD is PLAIN TEXT ${ACCEPT_PLAIN} text/plain ${ACCEPT_ZIP} application/zip @@ -33,7 +34,7 @@ ${nsPkgId_processing} 007c111c-38a1-42c0-a666-7475ecb1567c ${ARTIFACT_TYPE} application/octet-stream ${ARTIFACT_ID} artifactId ${WRONG_ACCEPT} application/json -${nsLcmOpOccId} 4f704476-6a4f-4473-be24-2868b94ac214 +${nsLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d ${CancelMode} GRACEFUL ${NFVO_DUPLICATION} 0 ${sub_filter} filter @@ -61,8 +62,8 @@ ${sleep_interval} 20s ${total_polling_time} 2 min ${polling_interval} 10 sec -${notification_request} [] -${notification_response} [] +${notification_request} {} +${notification_response} {} ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar @@ -73,4 +74,4 @@ ${Etag_modified}= a modified etag ${NEG_FILTER} attribute_not_exist=some_value ${NEG_SELECTOR} fields=wrong_field -${json} {} \ No newline at end of file +${json} {"notificationStatus": ""} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json b/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json index 4a6434f53..d655f7ff4 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json @@ -6,5 +6,5 @@ ] }} }}, - "callbackUri": "{callbackUri}{callbackEndpoint}" + "callbackUri": "{callbackUri}:{callbackPort}{callbackEndpoint}" }} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt b/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt index cde92cf92..99a00a748 100644 --- a/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt +++ b/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt @@ -1,5 +1,5 @@ *** Variables *** -${pmJobId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e ${erroneousPmJobId} erroneousPmJobId ${response}= httpresponse ${OrigResponse}= httpresponse diff --git a/SOL005/NSPerformanceManagement-API/environment/notifications.txt b/SOL005/NSPerformanceManagement-API/environment/notifications.txt index cd1193ae5..33ef78e1e 100644 --- a/SOL005/NSPerformanceManagement-API/environment/notifications.txt +++ b/SOL005/NSPerformanceManagement-API/environment/notifications.txt @@ -1,6 +1,6 @@ *** Variables *** -${callback_uri} http://localhost -${callback_port} 9091 +${callback_uri} http://172.21.248.145 +${callback_port} 9191 ${callback_endpoint} /endpoint ${callback_endpoint_fwd} /endpoint/check ${callback_endpoint_error} /endpoint_404 diff --git a/SOL005/NSPerformanceManagement-API/environment/reports.txt b/SOL005/NSPerformanceManagement-API/environment/reports.txt index 6ac5f7c0b..743cbcf1b 100644 --- a/SOL005/NSPerformanceManagement-API/environment/reports.txt +++ b/SOL005/NSPerformanceManagement-API/environment/reports.txt @@ -1,6 +1,6 @@ *** Variables *** ${pmJobId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 +${reportId} 177bc531-1fd0-4701-a3bb-8f54c3722e05 ${erroneousReportId} erroneousReportId ${newReportId} newReportId ${response}= httpresponse diff --git a/SOL005/NSPerformanceManagement-API/environment/variables.txt b/SOL005/NSPerformanceManagement-API/environment/variables.txt index 6b07f6ad8..c25496880 100644 --- a/SOL005/NSPerformanceManagement-API/environment/variables.txt +++ b/SOL005/NSPerformanceManagement-API/environment/variables.txt @@ -1,11 +1,11 @@ *** Variables *** -${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO -${NFVO_PORT} 9999 # Listening port of the NFVO +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer ivwDluws6XVhdFqGznZiw8cK1wP67S9b +${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json -${apiRoot} /osm +${apiRoot} / ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken ${apiVersion} v1 @@ -17,8 +17,8 @@ ${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_port} 9191 +${callback_uri} http://172.21.248.145 ${callback_endpoint} /nspm/subscriptions ${callback_endpoint_error} /subs_404 ${sleep_interval} 20s diff --git a/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt b/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt index 23b0dd07b..617d28b0f 100644 --- a/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt +++ b/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt @@ -1,5 +1,5 @@ *** Variables *** ${erroneousVnfPackageId} erroneousVnfPackageId # Given ID for vnfPkg not present in database -${disabledVnfPackageId} 87a2c9d3-00ea-4032-8c67-a5106d001868 -${vnfPackageId} 788106a2-d692-44f3-a86d-384f0ce35e42 -${instantiatedVnfPackageId} 0b79bab50daca910b000d4f1a2b675d604257e42 \ No newline at end of file +${disabledVnfPackageId} ed355ce0-6263-44d2-a4ba-bdc0f454c97d +${vnfPackageId} 75b51c1c-c723-44ba-86b0-d67c82bc1025 +${instantiatedVnfPackageId} 01fbfb86-0074-46e5-aa40-ef5b05f7650d \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 36cafcc88..01e17dede 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -1,12 +1,12 @@ *** Variables *** -${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO -${NFVO_PORT} 9999 # Listening port of the NFVO +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer Vr37Kbwr4eWZUNoSpWwy49mkxVmpmPWG +${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json -${apiRoot} /osm +${apiRoot} / ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken ${apiVersion} v1 @@ -14,14 +14,14 @@ ${apiName} vnfpkgm ${FIELD_USAGE} 1 ${NFVO_PLAIN} 1 ${NFVO_FIELDS} 1 -${onboardingStateVnfPkgId} 788106a2-d692-44f3-a86d-384f0ce35e42 # The VNF Package is in CREATED onboardingState +${onboardingStateVnfPkgId} fabe092e-5f61-48b7-8feb-aac1cb39da77 # The VNF Package is in CREATED onboardingState ${testOptionalMethods} 0 ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +${callback_uri} http://localhost ${callback_port} 9091 -${callback_uri} http://localhost:${callback_port} ${callback_endpoint} /endpoint ${callback_endpoint_fwd} /endpoint/check ${callback_endpoint_error} /endpoint_404 @@ -34,4 +34,4 @@ ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ${response} ${notification_request} [] -${notification_response} [] +${notification_response} {} diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt index 4acfbd727..9631042cc 100644 --- a/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt +++ b/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt @@ -1,8 +1,8 @@ *** Variables *** -${artifactPath} artifactPath +${artifactPath} icons/osm.png ${CONTENT_TYPE_OCTET} application/octet-stream ${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO ${range} bytes=0-1023 ${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes ${erroneousVnfPkgId} erroneousPkgId -${vnfPackageOctetStreamId} octetStreamPkgId \ No newline at end of file +${vnfPackageOctetStreamId} 01fbfb86-0074-46e5-aa40-ef5b05f7650d \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt index c775a126d..a91c6b3b2 100644 --- a/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt +++ b/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt @@ -3,10 +3,10 @@ ${ACCEPT_ZIP} application/zip ${CONTENT_TYPE_ZIP} application/zip ${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO ${erroneousVnfPkgId} erroneousPkgId -${vnfPkgId} 788106a2-d692-44f3-a86d-384f0ce35e42 +${vnfPkgId} 01fbfb86-0074-46e5-aa40-ef5b05f7650d ${erroneousRange} bytes=100000-1000000 # Requesting a out of range number of bytes ${range} bytes=0-1023 ${length} 1024 -${creatingVnfPackageId} d246ccdd-71aa-402f-b256-6a80ee54be3d -${newVnfPackageId} d246ccdd-71aa-402f-b256-6a80ee54be3d +${creatingVnfPackageId} 0bd11024-090e-4c4a-ab76-0119db925803 +${newVnfPackageId} 7f8cf59f-23d4-4f04-933e-eb33ef77246a diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt index 53981f953..5954dd43a 100644 --- a/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt +++ b/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt @@ -1,4 +1,4 @@ *** Variables *** -${vnfPkgViaUriId} 788106a2-d692-44f3-a86d-384f0ce35e42 +${vnfPkgViaUriId} b50f305e-69e8-488d-9531-eebcc3f848a2 ${creatingVnfPkgViaUriId} d246ccdd-71aa-402f-b256-6a80ee54be3d ${vnfPkgUri} http://localhost/content.zip diff --git a/SOL005/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt b/SOL005/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt index 8e228037e..493f8d89f 100644 --- a/SOL005/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt +++ b/SOL005/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt @@ -5,8 +5,8 @@ ${CONTENT_TYPE_PLAIN} text/plain ${CONTENT_TYPE_ZIP} application/zip ${NFVO_VNFD_PLAIN} 1 ${NFVO_VNFD_ZIP} 0 -${vnfPkgPlainVNFD} c26ad7fb-072b-48c4-a663-7d71646d9e98 # The VNF Pakcage contains a VNFD which is a Single Plain File -${vnfPkgZipVNFD} f5b220d4-6177-4ebb-a554-a43311e16075 # The VNF Package contains a VNFD composed by multiple files +${vnfPkgPlainVNFD} 7f8cf59f-23d4-4f04-933e-eb33ef77246a # The VNF Pakcage contains a VNFD which is a Single Plain File +${vnfPkgZipVNFD} b0e6425c-3e18-4d32-8b61-fb4fe34f438b # The VNF Package contains a VNFD composed by multiple files ${erroneousVnfPkgId} erroneousPkgId ${onboardingStateVnfPkgId} 788106a2-d692-44f3-a86d-384f0ce35e42 # The VNF Package is in CREATED onboardingState ${vnfPackageId} 788106a2-d692-44f3-a86d-384f0ce35e42 diff --git a/SOL005/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json b/SOL005/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json index 3ba43e8df..2932cf93f 100644 --- a/SOL005/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json +++ b/SOL005/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF package management notification, which informs the receiver of a change of the status in an on-boarded VNF package. Only changes in the \"operationalState\" attribute of an on-boarded VNF package and the deletion of the VNF package will be reported. Change in the \"usageState\" and \"onboardingState\" attributes are not reported. The notification shall comply with the provisions defined in Table 9.5.2.9-1. The support of this notification is mandatory. The notification shall be triggered by the NFVO when there is a change in the status of an onboarded VNF package, as follows. The \"operationalState\" attribute of a VNF package has changed, and the \"onboardingState\" attribute of the package has the value \"ONBOARDED\". � The on-boarded VNF package has been deleted.\n", + "description": "This type represents a VNF package management notification, which informs the receiver of a change of the status in an on-boarded VNF package. Only changes in the \"operationalState\" attribute of an on-boarded VNF package and the deletion of the VNF package will be reported. Change in the \"usageState\" and \"onboardingState\" attributes are not reported. The notification shall comply with the provisions defined in Table 9.5.2.9-1. The support of this notification is mandatory. The notification shall be triggered by the NFVO when there is a change in the status of an onboarded VNF package, as follows. The \"operationalState\" attribute of a VNF package has changed, and the \"onboardingState\" attribute of the package has the value \"ONBOARDED\". The on-boarded VNF package has been deleted.\n", "type": "object", "required": [ "id", -- GitLab From 0e6b06d691fb6b904cd989efc52f5cc0b76ce7f6 Mon Sep 17 00:00:00 2001 From: Frank Bryden Date: Mon, 7 Sep 2020 18:14:18 +0200 Subject: [PATCH 033/580] Replayed some changes in reverse Signed-off-by: Frank Bryden --- .../environment/nsDescriptors.txt | 9 +++---- .../environment/pnfDescriptors.txt | 5 ++-- .../environment/variables.txt | 14 +++++----- .../NSDManagement-API/files/nsdContent.yaml | 16 ----------- SOL005/NSDManagement-API/files/nsdContent.zip | Bin 391 -> 0 bytes .../NSDManagement-API/files/pnfdContent.zip | Bin 0 -> 359 bytes .../environment/variables.txt | 10 +++---- .../environment/variables.txt | 25 +++++++++--------- .../jsons/LccnSubscriptionRequest.json | 2 +- .../environment/IndividualPmJob.txt | 2 +- .../environment/notifications.txt | 4 +-- .../environment/reports.txt | 2 +- .../environment/variables.txt | 8 +++--- .../environment/individualVnfPackage.txt | 6 ++--- .../environment/variables.txt | 14 +++++----- .../environment/vnfPackageArtifacts.txt | 4 +-- .../environment/vnfPackageContent.txt | 2 +- .../environment/vnfPackageContentViaUri.txt | 2 +- .../VnfPackageChangeNotification.schema.json | 2 +- 19 files changed, 55 insertions(+), 72 deletions(-) delete mode 100644 SOL005/NSDManagement-API/files/nsdContent.yaml delete mode 100644 SOL005/NSDManagement-API/files/nsdContent.zip create mode 100644 SOL005/NSDManagement-API/files/pnfdContent.zip diff --git a/SOL005/NSDManagement-API/environment/nsDescriptors.txt b/SOL005/NSDManagement-API/environment/nsDescriptors.txt index 72804bd3a..b16e19ee9 100644 --- a/SOL005/NSDManagement-API/environment/nsDescriptors.txt +++ b/SOL005/NSDManagement-API/environment/nsDescriptors.txt @@ -1,10 +1,9 @@ *** Variables *** ${POS_FIELDS} name=nsdOnboardingState ${NEG_FIELDS} wrongName=any_value -${nsdInfoId} 9e708376-4f96-4972-89c2-243760626f20 -${nsdInfoIdPlain} 01872c48-3631-4060-afa8-ca7cbef8a4d8 -${nsdInfoIdZip} 01872c48-3631-4060-afa8-ca7cbef8a4d8 -${nsdDownloadableZip} cac6ac71-0fdf-45d1-a056-775cbb8157b5 +${nsdInfoId} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 +${nsdInfoIdPlain} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 +${nsdInfoIdZip} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 ${erroneous_nsdInfoId} erroneous_nsdInfoId ${disabledNsdInfoId} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 ${fields} _links @@ -20,7 +19,7 @@ ${NFVO_RANGE_OK} 1 ${range} bytes=0-1023 ${erroneousRange} bytes=100000-1000000 # Requesting a out of range number of bytes ${onboardingStateNsdInfoId} b992a851-08b1-45a8-9282-a5f7a7df04a6 -${contentZipFile} files/nsdContent.tar.gz +${contentZipFile} files/nsdContent.zip ${contentPlainFile} files/nsdContent.yaml ${creatingNsdInfoId} 71241932-994a-46e2-ad6c-1740674dda44 ${NEG_AUTHORIZATION} Bearer negativetoken diff --git a/SOL005/NSDManagement-API/environment/pnfDescriptors.txt b/SOL005/NSDManagement-API/environment/pnfDescriptors.txt index 57b78b807..c3bf1896b 100644 --- a/SOL005/NSDManagement-API/environment/pnfDescriptors.txt +++ b/SOL005/NSDManagement-API/environment/pnfDescriptors.txt @@ -1,8 +1,7 @@ *** Variables *** ${POS_FIELDS} name=pnfdOnboardingState ${NEG_FIELDS} wrongName=any_value -${pnfdInfoId} b227e618-cdb9-485b-8bfe-d4b8dee8e678 #used for testing downloads -${pnfdInfoUpld} dd7ff0f8-0e63-41b4-a572-568d0db30153 #used for testing uploads +${pnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 ${erroneous_pnfdInfoId} erroneous_pnfdInfoId ${enabledPnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 ${NFVO_FIELDS} 1 @@ -11,6 +10,6 @@ ${ACCEPT_PLAIN} text/plain ${CONTENT_TYPE_PLAIN} text/plain ${erroneous_pnfdId} erroneousPnfdId ${onboardingStatePnfdId} 8ed2bf1f-f6ae-4d18-b478-bfab02fd4cd2 -${contentFilePnfd} files/nsdContent.yaml +${contentFilePnfd} files/pnfdContent.zip ${creatingPnfdId} 2e4ce0ef-3ea8-49f9-92dd-8771866015bb ${userDefinedDataSet} some \ No newline at end of file diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index 547e487e3..fec623ced 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -1,23 +1,23 @@ *** Variables *** -${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO -${NFVO_PORT} 9999 # Listening port of the NFVO +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer u5JGp5D3k7m1VUlrCa39k8WX15em149q +${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json -${apiRoot} /osm/ +${apiRoot} / ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken ${apiVersion} v1 ${apiName} nsd ${FIELD_USAGE} 1 -${NFVO_AUTHENTICATION} Bearer isDGF7TiifGUgzeNb0Fls9aatfZRy4iX #never referenced -${NFVO_AUTH_USAGE} 1 #never refernced +${NFVO_AUTHENTICATION} Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 +${NFVO_AUTH_USAGE} 1 ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar ${callback_port} 9091 -${callback_uri} http://172.22.1.7:${callback_port} +${callback_uri} http://172.21.248.145 ${callback_endpoint} /nsd/subscriptions ${callback_endpoint_error} /subs_404 ${callback_endpoint_fwd} /endpoint/check diff --git a/SOL005/NSDManagement-API/files/nsdContent.yaml b/SOL005/NSDManagement-API/files/nsdContent.yaml deleted file mode 100644 index 94b9907be..000000000 --- a/SOL005/NSDManagement-API/files/nsdContent.yaml +++ /dev/null @@ -1,16 +0,0 @@ -nsd:nsd-catalog: - nsd: - - constituent-vnfd: [] - description: myNSD descriptor - id: myNSDRevisitedA - name: myNSDRevisitedA - short-name: myNSD - vendor: OSM Composer - version: '1.0' - vld: - - id: ns_vl_u5el - mgmt-network: 'true' - name: ns_vl_u5el - type: ELAN - vim-network-name: PUBLIC - vnfd-connection-point-ref: [] diff --git a/SOL005/NSDManagement-API/files/nsdContent.zip b/SOL005/NSDManagement-API/files/nsdContent.zip deleted file mode 100644 index 7518dd85af2450c67ce648cb1a80760070040652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmWIWW@Zs#U}4~35U;rv@T}Tj?;-;OLpUP?g8+jJLvE#Cu!}yJ)T>O)%?Sx z>T4X=yRUJj72FJrEQ&zoU?MeOqaU*&&)uI~`R1%s8&##Z@OUg;8&c}D!YcNTP~k@Z zPW=`2@$+vhu>^nl^X7Y;+|&mvS*~xr^sVMgIRn@73Ng?57 zk&KE_rN{ECWgm?nFZO_A95@~DYS>HM$XN}sXhjrpJyW+=WnOYU8I zujaLTMt+*=+FHMFy+7{$rkB;@_!2ga`*Zf&m`rltBlGIJ&YAt(mb|k*rvBWr%j?RF zJg)02X5an%skCnKR)OWbf@Q({c@I{YrrJb!rw4d5GRZOH3LFWbzZn>S;l!|{5yZj_ aDpp8Pp#@WbH!B-RJtGi?0cmNF5exwIxQKxO diff --git a/SOL005/NSDManagement-API/files/pnfdContent.zip b/SOL005/NSDManagement-API/files/pnfdContent.zip new file mode 100644 index 0000000000000000000000000000000000000000..16151601c098de41c91ba4301540a3bfb355cbdb GIT binary patch literal 359 zcmV-t0hsbM@Dobln&e6b}l*`#>A|eo2#lR5sJu<%taUL6gfW`UT8O zlcXKJVbLF0S(h6^BBQnYYTkGCG~|-YXKq47g(~?bBXL_HB+R0sq=qjtBAW-bXbUB` zg%PzAT7}sEYx_u>c7`asLi?n0$q%3Hi#CoPr)#cCZ8CB@yCGvOYi+sd3dXiu_2U8S zZ=-5|`mmL<^K~^pdmnDPgUhA#8*ulg&8uJM%!>EB(stWVD_m3i_-b-K-F>@|yEk-4 zy}Q4dT#pZ1<2$N&5&A%DEqq(sMm;|DA^-pY000000000000000004lW`T+B0f0zI$ F007z4rv?B3 literal 0 HcmV?d00001 diff --git a/SOL005/NSFaultManagement-API/environment/variables.txt b/SOL005/NSFaultManagement-API/environment/variables.txt index f1f00fbe7..7f86938c5 100644 --- a/SOL005/NSFaultManagement-API/environment/variables.txt +++ b/SOL005/NSFaultManagement-API/environment/variables.txt @@ -1,15 +1,15 @@ *** Variables *** -${NFVO_HOST} 172.21.248.145 # Hostname of the VNFM -${NFVO_PORT} 9999 # Listening port of the VNFM +${NFVO_HOST} localhost # Hostname of the VNFM +${NFVO_PORT} 8080 # Listening port of the VNFM ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer 7EiP8HbWqpAaWVcZojq5WGm8theaCiym +${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== ${ACCEPT} application/json ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 ${alarm_filter} nsInstanceId ${nsInstanceId} 007c111c-38a1-42c0-a666-7475ecb1567c ${invalid_alarm_filter} badFilter -${apiRoot} /osm +${apiRoot} / ${apiName} nsfm ${apiVersion} v1 ${CONTENT_TYPE} application/json @@ -51,8 +51,8 @@ ${response} {} ${req_mock} {} ${resp_mock} {} +${callback_uri} http://localhost ${callback_port} 9091 -${callback_uri} http://172.22.1.7:${callback_port} ${callback_endpoint} /endpoint ${callback_endpoint_fwd} /endpoint/check ${callback_endpoint_error} /endpoint_404 diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index b9a2ab988..d58f1074f 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -1,31 +1,32 @@ *** Variables *** ${VNFM_HOST} localhost # Hostname of the VNFM ${VNFM_PORT} 8080 # Listening port of the VNFM -${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO -${NFVO_PORT} 9999 # Listening port of the NFVO +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO ${VNFM_SCHEMA} https ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer v1qDEucqjIZSua6t4R40sraMZafJxEKb +${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== ${CONTENT_TYPE} application/json ${CONTENT_TYPE_PATCH} application/merge-patch+json ${ACCEPT_JSON} application/json ${ACCEPT} application/json -${apiRoot} /osm/ +${apiRoot} / ${apiName} nslcm ${apiVersion} v1 ${AUTH_USAGE} 1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX -${nsdId} 9e708376-4f96-4972-89c2-243760626f20 -${disabledNsdId} 9e708376-4f96-4972-89c2-243760626f20 -${nsInstanceId} bef2ab38-d117-4f29-bb07-0b02508575a9 +${nsInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${nsdId} 58a7beb6-aa89-405e-bd90-7d276b967c03 +${disabledNsdId} fca7c896-a7d0-4ff8-865e-f5c8ee2fd1c3 +${nonExistentNsId} nonExistent ${ConflictNsInstanceId} 007c111c-e602-4afa-8e13-962fb5a7d81d ${nsInstanceName} Test-nsInstance ${nsInstanceDescription} description ns ${nsInstanceDescription_Update} Updated description ns ${nsFlavourId} 0 ${nsDegreeHealing} HEAL_RESTORE -${vimAccountId} 46baa285-994b-4615-8fd1-84fff6e90832 +${vimAccountId} 931f6a4d-6a97-43f3-a6f0-13853ef577ea ${SINGLE_FILE_VNFD} 1 # If VNFD is PLAIN TEXT ${ACCEPT_PLAIN} text/plain ${ACCEPT_ZIP} application/zip @@ -33,7 +34,7 @@ ${nsPkgId_processing} 007c111c-38a1-42c0-a666-7475ecb1567c ${ARTIFACT_TYPE} application/octet-stream ${ARTIFACT_ID} artifactId ${WRONG_ACCEPT} application/json -${nsLcmOpOccId} 4f704476-6a4f-4473-be24-2868b94ac214 +${nsLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d ${CancelMode} GRACEFUL ${NFVO_DUPLICATION} 0 ${sub_filter} filter @@ -61,8 +62,8 @@ ${sleep_interval} 20s ${total_polling_time} 2 min ${polling_interval} 10 sec -${notification_request} [] -${notification_response} [] +${notification_request} {} +${notification_response} {} ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar @@ -73,4 +74,4 @@ ${Etag_modified}= a modified etag ${NEG_FILTER} attribute_not_exist=some_value ${NEG_SELECTOR} fields=wrong_field -${json} {} \ No newline at end of file +${json} {"notificationStatus": ""} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json b/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json index 4a6434f53..d655f7ff4 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json @@ -6,5 +6,5 @@ ] }} }}, - "callbackUri": "{callbackUri}{callbackEndpoint}" + "callbackUri": "{callbackUri}:{callbackPort}{callbackEndpoint}" }} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt b/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt index cde92cf92..99a00a748 100644 --- a/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt +++ b/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt @@ -1,5 +1,5 @@ *** Variables *** -${pmJobId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e ${erroneousPmJobId} erroneousPmJobId ${response}= httpresponse ${OrigResponse}= httpresponse diff --git a/SOL005/NSPerformanceManagement-API/environment/notifications.txt b/SOL005/NSPerformanceManagement-API/environment/notifications.txt index cd1193ae5..33ef78e1e 100644 --- a/SOL005/NSPerformanceManagement-API/environment/notifications.txt +++ b/SOL005/NSPerformanceManagement-API/environment/notifications.txt @@ -1,6 +1,6 @@ *** Variables *** -${callback_uri} http://localhost -${callback_port} 9091 +${callback_uri} http://172.21.248.145 +${callback_port} 9191 ${callback_endpoint} /endpoint ${callback_endpoint_fwd} /endpoint/check ${callback_endpoint_error} /endpoint_404 diff --git a/SOL005/NSPerformanceManagement-API/environment/reports.txt b/SOL005/NSPerformanceManagement-API/environment/reports.txt index 6ac5f7c0b..66d8761ae 100644 --- a/SOL005/NSPerformanceManagement-API/environment/reports.txt +++ b/SOL005/NSPerformanceManagement-API/environment/reports.txt @@ -1,6 +1,6 @@ *** Variables *** -${pmJobId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a ${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 +${reportId} 177bc531-1fd0-4701-a3bb-8f54c3722e05 ${erroneousReportId} erroneousReportId ${newReportId} newReportId ${response}= httpresponse diff --git a/SOL005/NSPerformanceManagement-API/environment/variables.txt b/SOL005/NSPerformanceManagement-API/environment/variables.txt index 6b07f6ad8..ca012fa80 100644 --- a/SOL005/NSPerformanceManagement-API/environment/variables.txt +++ b/SOL005/NSPerformanceManagement-API/environment/variables.txt @@ -1,11 +1,11 @@ *** Variables *** -${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO -${NFVO_PORT} 9999 # Listening port of the NFVO +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer ivwDluws6XVhdFqGznZiw8cK1wP67S9b +${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json -${apiRoot} /osm +${apiRoot} / ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken ${apiVersion} v1 diff --git a/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt b/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt index 23b0dd07b..617d28b0f 100644 --- a/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt +++ b/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt @@ -1,5 +1,5 @@ *** Variables *** ${erroneousVnfPackageId} erroneousVnfPackageId # Given ID for vnfPkg not present in database -${disabledVnfPackageId} 87a2c9d3-00ea-4032-8c67-a5106d001868 -${vnfPackageId} 788106a2-d692-44f3-a86d-384f0ce35e42 -${instantiatedVnfPackageId} 0b79bab50daca910b000d4f1a2b675d604257e42 \ No newline at end of file +${disabledVnfPackageId} ed355ce0-6263-44d2-a4ba-bdc0f454c97d +${vnfPackageId} 75b51c1c-c723-44ba-86b0-d67c82bc1025 +${instantiatedVnfPackageId} 01fbfb86-0074-46e5-aa40-ef5b05f7650d \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 36cafcc88..01e17dede 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -1,12 +1,12 @@ *** Variables *** -${NFVO_HOST} 172.21.248.145 # Hostname of the NFVO -${NFVO_PORT} 9999 # Listening port of the NFVO +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer Vr37Kbwr4eWZUNoSpWwy49mkxVmpmPWG +${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json -${apiRoot} /osm +${apiRoot} / ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken ${apiVersion} v1 @@ -14,14 +14,14 @@ ${apiName} vnfpkgm ${FIELD_USAGE} 1 ${NFVO_PLAIN} 1 ${NFVO_FIELDS} 1 -${onboardingStateVnfPkgId} 788106a2-d692-44f3-a86d-384f0ce35e42 # The VNF Package is in CREATED onboardingState +${onboardingStateVnfPkgId} fabe092e-5f61-48b7-8feb-aac1cb39da77 # The VNF Package is in CREATED onboardingState ${testOptionalMethods} 0 ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +${callback_uri} http://localhost ${callback_port} 9091 -${callback_uri} http://localhost:${callback_port} ${callback_endpoint} /endpoint ${callback_endpoint_fwd} /endpoint/check ${callback_endpoint_error} /endpoint_404 @@ -34,4 +34,4 @@ ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ${response} ${notification_request} [] -${notification_response} [] +${notification_response} {} diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt index 4acfbd727..9631042cc 100644 --- a/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt +++ b/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt @@ -1,8 +1,8 @@ *** Variables *** -${artifactPath} artifactPath +${artifactPath} icons/osm.png ${CONTENT_TYPE_OCTET} application/octet-stream ${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO ${range} bytes=0-1023 ${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes ${erroneousVnfPkgId} erroneousPkgId -${vnfPackageOctetStreamId} octetStreamPkgId \ No newline at end of file +${vnfPackageOctetStreamId} 01fbfb86-0074-46e5-aa40-ef5b05f7650d \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt index c775a126d..18bad0ece 100644 --- a/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt +++ b/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt @@ -3,7 +3,7 @@ ${ACCEPT_ZIP} application/zip ${CONTENT_TYPE_ZIP} application/zip ${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO ${erroneousVnfPkgId} erroneousPkgId -${vnfPkgId} 788106a2-d692-44f3-a86d-384f0ce35e42 +${vnfPkgId} 01fbfb86-0074-46e5-aa40-ef5b05f7650d ${erroneousRange} bytes=100000-1000000 # Requesting a out of range number of bytes ${range} bytes=0-1023 ${length} 1024 diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt index 53981f953..c0f12465d 100644 --- a/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt +++ b/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt @@ -1,4 +1,4 @@ *** Variables *** -${vnfPkgViaUriId} 788106a2-d692-44f3-a86d-384f0ce35e42 +${vnfPkgViaUriId} 788106a2-d692-44f3-a86d-384f0ce35e42 ${creatingVnfPkgViaUriId} d246ccdd-71aa-402f-b256-6a80ee54be3d ${vnfPkgUri} http://localhost/content.zip diff --git a/SOL005/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json b/SOL005/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json index 3ba43e8df..2932cf93f 100644 --- a/SOL005/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json +++ b/SOL005/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF package management notification, which informs the receiver of a change of the status in an on-boarded VNF package. Only changes in the \"operationalState\" attribute of an on-boarded VNF package and the deletion of the VNF package will be reported. Change in the \"usageState\" and \"onboardingState\" attributes are not reported. The notification shall comply with the provisions defined in Table 9.5.2.9-1. The support of this notification is mandatory. The notification shall be triggered by the NFVO when there is a change in the status of an onboarded VNF package, as follows. The \"operationalState\" attribute of a VNF package has changed, and the \"onboardingState\" attribute of the package has the value \"ONBOARDED\". � The on-boarded VNF package has been deleted.\n", + "description": "This type represents a VNF package management notification, which informs the receiver of a change of the status in an on-boarded VNF package. Only changes in the \"operationalState\" attribute of an on-boarded VNF package and the deletion of the VNF package will be reported. Change in the \"usageState\" and \"onboardingState\" attributes are not reported. The notification shall comply with the provisions defined in Table 9.5.2.9-1. The support of this notification is mandatory. The notification shall be triggered by the NFVO when there is a change in the status of an onboarded VNF package, as follows. The \"operationalState\" attribute of a VNF package has changed, and the \"onboardingState\" attribute of the package has the value \"ONBOARDED\". The on-boarded VNF package has been deleted.\n", "type": "object", "required": [ "id", -- GitLab From da3aeb89d4dfa097d50019c5b2f1b3da09e7032a Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 8 Sep 2020 12:29:33 +0500 Subject: [PATCH 034/580] new test cases added in VNFpackageArtifact --- .../VNFPackageArtifacts.robot | 77 +++++++++++++++++++ .../VNFPackageManagementKeywords.robot | 46 +++++++++++ .../environment/vnfPackageArtifacts.txt | 1 + 3 files changed, 124 insertions(+) diff --git a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot index d4b7ce998..b505314c8 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -281,3 +281,80 @@ DELETE Individual OnBoarded VNF Package Artifact - Method not implemented Check HTTP Response Status Code Is 405 Check Postcondition OnBoarded VNF Package Artifact Exist +GET Individual VNF Package Artifact with security information + [Documentation] Test ID: 7.3.3.5.23 + ... Test title: GET Individual VNF Package Artifact with security information + ... Test objective: The objective is to test the retrieval of an individual VNF package artifact shall include in the ZIP archive the security information when requested with "include_signature" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO cannot determine the content type of the artifact + ... Post-Conditions: none + GET Individual VNF Package Artifact with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +GET Individual OnBoarded VNF Package Artifact with security information + [Documentation] Test ID: 7.3.3.5.24 + ... Test title: GET Individual OnBoarded VNF Package Artifact with security information + ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact shall include in the ZIP archive the security information when requested with "include_signature" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO cannot determine the content type of the artifact + ... Post-Conditions: none + GET Individual OnBoarded VNF Package Artifact with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +GET Individual VNF Package Artifact with encrypted artifact + [Documentation] Test ID: 7.3.3.5.25 + ... Test title: GET Individual VNF Package Artifact with encrypted artifact + ... Test objective: The objective is to test the retrieval of an individual VNF package artifact shall include an encrypted artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO cannot determine the content type of the artifact + ... Post-Conditions: none + GET Individual VNF Package Artifact with encrypted artifact + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/cms + +GET Individual OnBoarded VNF Package Artifact with encrypted artifact + [Documentation] Test ID: 7.3.3.5.26 + ... Test title: GET Individual OnBoarded VNF Package Artifact with encrypted artifact + ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact shall include an encrypted artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO cannot determine the content type of the artifact + ... Post-Conditions: none + GET Individual OnBoarded VNF Package Artifact with encrypted artifact + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/cms + +GET Individual VNF Package Artifact - Not Acceptable + [Documentation] Test ID: 7.3.3.5.27 + ... Test title: GET Individual VNF Package Artifact with invalid Range Request + ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when related request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Package Artifact with incompatable header + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Individual OnBoarded VNF Package Artifact - Not Acceptable + [Documentation] Test ID: 7.3.3.5.28 + ... Test title: GET Individual OnBoarded VNF Package Artifact with invalid Range Request + ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact fails when related request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual OnBoarded VNF Package Artifact with incompatable header + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index d802fe53a..4c351fada 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1166,3 +1166,49 @@ Get multi file VNFD in Individual VNF Package with security information GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} + +GET Individual VNF Package Artifact with security information + Log Trying to get a VNF Package Artifact + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual OnBoarded VNF Package Artifact with security information + Log Trying to get a VNF Package Artifact + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual VNF Package Artifact with encrypted artifact + Log Trying to get a VNF Package Artifact + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vndEncryptedArtifactID}/artifacts/${artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual OnBoarded VNF Package Artifact with encrypted artifact + Log Trying to get a VNF Package Artifact + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndEncryptedArtifactID}/artifacts/${artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual VNF Package Artifact with incompatable header + Log Trying to get a VNF Package Artifact + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual OnBoarded VNF Package Artifact with incompatable header + Log Trying to get a VNF Package Artifact + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt b/SOL003/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt index d18ef5961..9560a81a2 100644 --- a/SOL003/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt +++ b/SOL003/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt @@ -7,3 +7,4 @@ ${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range nu ${erroneousVnfPkgId} erroneousPkgId ${vnfPackageOctetStreamId} octetStreamPkgId ${vnfdOctetStreamId} octetStreamVnfdId +${vndEncryptedArtifactID} encryptedId \ No newline at end of file -- GitLab From 08d342f011b7c884682651eec578afdba208a213 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 8 Sep 2020 12:34:34 +0500 Subject: [PATCH 035/580] new test case added for subscription --- SOL003/VNFPackageManagement-API/Subscriptions.robot | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/SOL003/VNFPackageManagement-API/Subscriptions.robot b/SOL003/VNFPackageManagement-API/Subscriptions.robot index bc60615dc..84f5e5242 100644 --- a/SOL003/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL003/VNFPackageManagement-API/Subscriptions.robot @@ -176,4 +176,17 @@ Get VNF Package Subscriptions - Bad Request Response too Big ... Post-Conditions: none Get all VNF Package Subscriptions Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get VNF Package Subscriptions - Unprocessable Entity + [Documentation] Test ID: 7.3.3.6.13 + ... Test title: Get VNF Package Subscriptions - Unprocessable Entity + ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed., and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one VNF package subscription is available in the NFVO. + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get all VNF Package Subscriptions + Check HTTP Response Status Code Is 422 Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file -- GitLab From e70762eead03e0e842f6d040135c0c185edc17eb Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 9 Sep 2020 16:21:18 +0500 Subject: [PATCH 036/580] added new resource ManifestInIndividualVNFPackage --- .../ManifestInIndividualVNFPackage.robot | 208 ++++++++++++++++++ .../VNFPackageManagementKeywords.robot | 118 +++++++++- 2 files changed, 325 insertions(+), 1 deletion(-) create mode 100644 SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot diff --git a/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot new file mode 100644 index 000000000..7651a8e81 --- /dev/null +++ b/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot @@ -0,0 +1,208 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false + +*** Test Cases *** +Get Manifest in Individual VNF Package + [Documentation] Test ID: 7.3.3.9.1 + ... Test title: Get Manifest in Individual VNF Package + ... Test objective: The objective is to test that the Get request read the content of manifest within a NVF Package and perform a validation that returned content is in plain text format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get Manifest in Individual VNF Package with security information + [Documentation] Test ID: 7.3.3.9.2 + ... Test title: Get Manifest in Individual VNF Package with security information + ... Test objective: The objective is to test the retrieval of manifest for an individual VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get Manifest in Individual VNF Package - Not acceptable + [Documentation] Test ID: 7.3.3.9.3 + ... Test title: Get Manifest in Individual VNF Package - Not acceptable + ... Test objective: The objective is to test that retriveal of the of manifest for an individual VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get Manifest in Individual VNF Package - Conflict + [Documentation] Test ID: 7.3.3.9.4 + ... Test title: Get Manifest in Individual VNF Package - Conflict + ... Test objective: The objective is to test that the retrieval of the manifest for an individual VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package with conflict due to onboarding state + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.9.5 + ... Test title: POST Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create new resource + ... Pre-conditions: none + ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + +PUT Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.9.6 + ... Test title: PUT Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify resource + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + +PATCH Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.9.7 + ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update resource + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + +DELETE Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.9.8 + ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete resource + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: Resource is not deleted by the failed operation + Send DELETE Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + + +Get Manifest in Individual OnBoarded VNF Package + [Documentation] Test ID: 7.3.3.9.9 + ... Test title: Get Manifest in Individual OnBoarded VNF Package + ... Test objective: The objective is to test that the Get request read the content of manifest within a OnBoarded NVF Package and perform a validation that returned content is in plain text format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual OnBoarded VNF Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get Manifest in Individual OnBoarded VNF Package with security information + [Documentation] Test ID: 7.3.3.9.10 + ... Test title: Get Manifest in Individual OnBoarded VNF Package with security information + ... Test objective: The objective is to test the retrieval of manifest for an individual OnBoarded VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual OnBoarded VNF Package with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get Manifest in Individual OnBoarded VNF Package - Not acceptable + [Documentation] Test ID: 7.3.3.9.11 + ... Test title: Get Manifest in Individual OnBoarded VNF Package - Not acceptable + ... Test objective: The objective is to test that retriveal of the of manifest for an individual OnBoarded VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual OnBoarded VNF Package + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get Manifest in Individual OnBoarded VNF Package - Conflict + [Documentation] Test ID: 7.3.3.9.12 + ... Test title: Get Manifest in Individual OnBoarded VNF Package - Conflict + ... Test objective: The objective is to test that the retrieval of the manifest for an individual OnBoarded VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual OnBoarded VNF Package with conflict due to onboarding state + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Manifest in Individual OnBoarded VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.9.13 + ... Test title: POST Manifest in Individual OnBoarded VNF Package - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create new resource + ... Pre-conditions: none + ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for Manifest in individual OnBoarded VNF Package + Check HTTP Response Status Code Is 405 + +PUT Manifest in Individual OnBoarded VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.9.14 + ... Test title: PUT Manifest in Individual OnBoarded VNF Package - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify resource + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for Manifest in individual OnBoarded VNF Package + Check HTTP Response Status Code Is 405 + +PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.9.15 + ... Test title: PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update resource + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for Manifest in individual OnBoarded VNF Package + Check HTTP Response Status Code Is 405 + +DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.9.16 + ... Test title: DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete resource + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: Resource is not deleted by the failed operation + Send DELETE Request for Manifest in individual OnBoarded VNF Package + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 4c351fada..b62728994 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1211,4 +1211,120 @@ GET Individual OnBoarded VNF Package Artifact with incompatable header Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures ${output}= Output response - Set Suite Variable ${response} ${output} \ No newline at end of file + Set Suite Variable ${response} ${output} + +Get Manifest in Individual VNF Package + Log Trying to get content of manifest file 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}/${apiVersion}/vnf_packages/${vnfPackageId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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 with security certificates + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/manifest/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Manifest in Individual VNF Package with conflict due to onboarding state + Log Trying to get a manifest from a given VNF Package present in the NFVO Catalogue + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + POST ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Manifest in Individual OnBoarded VNF Package + Log Trying to get content of manifest file from a given OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Manifest in Individual OnBoarded VNF Package with security information + Log Trying to get a manifest from a given OnBoarded VNF Package present in the NFVO Catalogue with security certificates + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndIdZipVnfd}/manifest/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Manifest in Individual OnBoarded VNF Package with conflict due to onboarding state + Log Trying to get a manifest from a given OnBoarded VNF Package present in the NFVO Catalogue + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send POST Request for Manifest in individual OnBoarded VNF Package + Log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + POST ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PUT Request for Manifest in individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PATCH Request for Manifest in individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send DELETE Request for Manifest in individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file -- GitLab From 9a3d00dca507226cc41eb6c9a26f7377952be789 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 21 Sep 2020 10:07:49 +0500 Subject: [PATCH 037/580] fix IDs conflict --- ...ot => IndividualVNFPackageArtifacts.robot} | 0 .../ManifestInIndividualVNFPackage.robot | 32 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) rename SOL003/VNFPackageManagement-API/{VNFPackageArtifacts.robot => IndividualVNFPackageArtifacts.robot} (100%) diff --git a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot similarity index 100% rename from SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot rename to SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot diff --git a/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot index 7651a8e81..9b7347bda 100644 --- a/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot @@ -7,7 +7,7 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_veri *** Test Cases *** Get Manifest in Individual VNF Package - [Documentation] Test ID: 7.3.3.9.1 + [Documentation] Test ID: 7.3.3.10.1 ... Test title: Get Manifest in Individual VNF Package ... Test objective: The objective is to test that the Get request read the content of manifest within a NVF Package and perform a validation that returned content is in plain text format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. @@ -20,7 +20,7 @@ Get Manifest in Individual VNF Package Check HTTP Response Header Content-Type Is text/plain Get Manifest in Individual VNF Package with security information - [Documentation] Test ID: 7.3.3.9.2 + [Documentation] Test ID: 7.3.3.10.2 ... Test title: Get Manifest in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of manifest for an individual VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. @@ -33,7 +33,7 @@ Get Manifest in Individual VNF Package with security information Check HTTP Response Header Content-Type Is application/zip Get Manifest in Individual VNF Package - Not acceptable - [Documentation] Test ID: 7.3.3.9.3 + [Documentation] Test ID: 7.3.3.10.3 ... Test title: Get Manifest in Individual VNF Package - Not acceptable ... Test objective: The objective is to test that retriveal of the of manifest for an individual VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. @@ -46,7 +46,7 @@ Get Manifest in Individual VNF Package - Not acceptable Check HTTP Response Body Json Schema Is ProblemDetails Get Manifest in Individual VNF Package - Conflict - [Documentation] Test ID: 7.3.3.9.4 + [Documentation] Test ID: 7.3.3.10.4 ... Test title: Get Manifest in Individual VNF Package - Conflict ... Test objective: The objective is to test that the retrieval of the manifest for an individual VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. @@ -59,7 +59,7 @@ Get Manifest in Individual VNF Package - Conflict Check HTTP Response Body Json Schema Is ProblemDetails POST Manifest in Individual VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.9.5 + [Documentation] Test ID: 7.3.3.10.5 ... Test title: POST Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new resource ... Pre-conditions: none @@ -71,7 +71,7 @@ POST Manifest in Individual VNF Package - Method not implemented Check HTTP Response Status Code Is 405 PUT Manifest in Individual VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.9.6 + [Documentation] Test ID: 7.3.3.10.6 ... Test title: PUT Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. @@ -83,7 +83,7 @@ PUT Manifest in Individual VNF Package - Method not implemented Check HTTP Response Status Code Is 405 PATCH Manifest in Individual VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.9.7 + [Documentation] Test ID: 7.3.3.10.7 ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. @@ -95,7 +95,7 @@ PATCH Manifest in Individual VNF Package - Method not implemented Check HTTP Response Status Code Is 405 DELETE Manifest in Individual VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.9.8 + [Documentation] Test ID: 7.3.3.10.8 ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. @@ -108,7 +108,7 @@ DELETE Manifest in Individual VNF Package - Method not implemented Get Manifest in Individual OnBoarded VNF Package - [Documentation] Test ID: 7.3.3.9.9 + [Documentation] Test ID: 7.3.3.10.9 ... Test title: Get Manifest in Individual OnBoarded VNF Package ... Test objective: The objective is to test that the Get request read the content of manifest within a OnBoarded NVF Package and perform a validation that returned content is in plain text format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. @@ -121,7 +121,7 @@ Get Manifest in Individual OnBoarded VNF Package Check HTTP Response Header Content-Type Is text/plain Get Manifest in Individual OnBoarded VNF Package with security information - [Documentation] Test ID: 7.3.3.9.10 + [Documentation] Test ID: 7.3.3.10.10 ... Test title: Get Manifest in Individual OnBoarded VNF Package with security information ... Test objective: The objective is to test the retrieval of manifest for an individual OnBoarded VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. @@ -134,7 +134,7 @@ Get Manifest in Individual OnBoarded VNF Package with security information Check HTTP Response Header Content-Type Is application/zip Get Manifest in Individual OnBoarded VNF Package - Not acceptable - [Documentation] Test ID: 7.3.3.9.11 + [Documentation] Test ID: 7.3.3.10.11 ... Test title: Get Manifest in Individual OnBoarded VNF Package - Not acceptable ... Test objective: The objective is to test that retriveal of the of manifest for an individual OnBoarded VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. @@ -147,7 +147,7 @@ Get Manifest in Individual OnBoarded VNF Package - Not acceptable Check HTTP Response Body Json Schema Is ProblemDetails Get Manifest in Individual OnBoarded VNF Package - Conflict - [Documentation] Test ID: 7.3.3.9.12 + [Documentation] Test ID: 7.3.3.10.12 ... Test title: Get Manifest in Individual OnBoarded VNF Package - Conflict ... Test objective: The objective is to test that the retrieval of the manifest for an individual OnBoarded VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. @@ -160,7 +160,7 @@ Get Manifest in Individual OnBoarded VNF Package - Conflict Check HTTP Response Body Json Schema Is ProblemDetails POST Manifest in Individual OnBoarded VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.9.13 + [Documentation] Test ID: 7.3.3.10.13 ... Test title: POST Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new resource ... Pre-conditions: none @@ -172,7 +172,7 @@ POST Manifest in Individual OnBoarded VNF Package - Method not implemented Check HTTP Response Status Code Is 405 PUT Manifest in Individual OnBoarded VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.9.14 + [Documentation] Test ID: 7.3.3.10.14 ... Test title: PUT Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. @@ -184,7 +184,7 @@ PUT Manifest in Individual OnBoarded VNF Package - Method not implemented Check HTTP Response Status Code Is 405 PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.9.15 + [Documentation] Test ID: 7.3.3.10.15 ... Test title: PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. @@ -196,7 +196,7 @@ PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented Check HTTP Response Status Code Is 405 DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.9.16 + [Documentation] Test ID: 7.3.3.10.16 ... Test title: DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. -- GitLab From 044e3aa0236113e6c83152620b7b81d35cb93b0e Mon Sep 17 00:00:00 2001 From: frankbryden Date: Fri, 18 Sep 2020 17:06:36 +0200 Subject: [PATCH 038/580] Fixed issues as per MR comments Signed-off-by: frankbryden --- SOL005/NSDManagement-API/IndividualNSDescriptor.robot | 1 - SOL005/NSDManagement-API/NSDManagementKeywords.robot | 1 + .../NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot | 4 ++-- .../NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot | 2 +- SOL005/NSLifecycleManagement-API/TerminateNSTask.robot | 1 - 5 files changed, 4 insertions(+), 5 deletions(-) diff --git a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot index 9fd77ae9b..47a1aa7a0 100644 --- a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot @@ -66,7 +66,6 @@ Enable Individual Network Service Descriptor Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsdInfoModification Check Postcondition Network Service Descriptor is in operational state ENABLED - Check PostCondition GET Individual Network Service Descriptor Information Check Postcondition Network Service Descriptor usage state is unmodified (Implicit) Enable Individual Network Service Descriptor with conflict due to operational state ENABLED diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 4172e6bed..eb27f2b78 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -223,6 +223,7 @@ Check Postcondition Network Service Descriptor is in operational state Check Postcondition Network Service Descriptor usage state is unmodified (Implicit) Log Checking postcondition use status + Check PostCondition GET Individual Network Service Descriptor Information Should Be Equal As Strings ${response['body']['nsdUsageState']} ${usageState} Send PATCH to enable Individual Network Service Descriptor diff --git a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot index 7a9e9e2e1..f2b9dad22 100644 --- a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot @@ -24,9 +24,9 @@ NS Instance Creation Check HTTP Response Body Json Schema Is NsInstance Check resource not_instantiated 1 -NS Instance Creation with DISABLED nsd +NS Instance Creation with DISABLED Network Service Descriptor [Documentation] Test ID: 5.3.2.18.2 - ... Test title: NS Instance Creation with DISABLED nsd + ... Test title: NS Instance Creation with DISABLED Network Service Descriptor ... Test objective: The objective is to test the workflow for Creating a NS instance with a disabled NSD ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in disabled operational state. ... Reference: Clauses 6.4.2.3.1 and 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 diff --git a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot index 915e8e041..21767cc17 100644 --- a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot @@ -19,4 +19,4 @@ NS Instance Deletion Check resource not_instantiated DELETE IndividualNSInstance Check HTTP Response Status Code Is 204 - Check Instance Deleted + Check Postcondition NS instance is deleted diff --git a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot index 20d927b2e..9e9870149 100644 --- a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot @@ -20,7 +20,6 @@ POST Terminate a NSInstance Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check resource not_instantiated - Sleep 15s POST Terminate a NSInstance Conflict [Documentation] Test ID: 5.3.2.7.2 -- GitLab From bc3466f5325923d59767ad2533f590e673b9c961 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 24 Sep 2020 11:13:57 +0500 Subject: [PATCH 039/580] test cases added for VNF Package Artifacts --- .../IndividualVNFPackageArtifacts.robot | 2 +- .../VNFPackageArtifacts.robot | 200 ++++++++++++++++++ .../VNFPackageManagementKeywords.robot | 126 ++++++++++- .../environment/variables.txt | 5 +- .../environment/vnfPackageContent.txt | 2 +- 5 files changed, 330 insertions(+), 5 deletions(-) create mode 100644 SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot index b505314c8..4339f3777 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot @@ -142,7 +142,7 @@ DELETE Individual VNF Package Artifact - Method not implemented ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation Send DELETE Request for individual VNF Package Artifact Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Artifact Exist + Check Postcondition Individual VNF Package Artifact Exist GET Individual OnBoarded VNF Package Artifact [Documentation] Test ID: 7.3.3.5.12 diff --git a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot new file mode 100644 index 000000000..8f2828904 --- /dev/null +++ b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -0,0 +1,200 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false + +*** Test Cases *** +Get VNF Package Artifact + [Documentation] Test ID: 7.3.3.11.1 + ... Test title: Get VNF Package Artifact + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter + [Documentation] Test ID: 7.3.3.11.2 + ... Test title: Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_mano_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter + [Documentation] Test ID: 7.3.3.11.3 + ... Test title: Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_non_mano_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter + [Documentation] Test ID: 7.3.3.11.4 + ... Test title: Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with select_non_mano_artifact_sets parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "include_signatures" parameter + [Documentation] Test ID: 7.3.3.11.5 + ... Test title: Get VNF Package Artifact with "include_signatures" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with include_signatures parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with Range Request and NFVO supporting Range Requests + [Documentation] Test ID: 7.3.3.11.6 + ... Test title: Get VNF Package Artifact with Range Request and NFVO supporting Range Requests + ... Test objective: The objective is to test the GET request read the whole content of the archive containing the artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + Get Artifact in VNF Package with Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Response Header Content-Range Is Present and Matches the requested range + Check HTTP Response Header Content-Length Is Present and Matches the requested range length + +Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" + [Documentation] Test ID: 7.3.3.11.7 + ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifacts" + [Documentation] Test ID: 7.3.3.11.8 + ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get VNF Package Artifact with invalid URI parameters undifend select_non_mano_artifact_sets + [Documentation] Test ID: 7.3.3.11.9 + ... Test title: Get VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with select_non_mano_artifact_sets parameter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get VNF Package Artifact with conflict due to onboarding state + [Documentation] Test ID: 7.3.3.11.10 + ... Test title: Get VNF Package Artifact with conflict due to onboarding state + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Artifact of VNF Package in onboarding state different from ONBOARDED + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET VNF Package Artifact with invalid Range Request + [Documentation] Test ID: 7.3.3.11.11 + ... Test title: GET VNF Package Artifact with invalid Range Request + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when using a range request that does not match any available byte range in the file. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + GET VNF Package Artifact with invalid Range Request + Check HTTP Response Status Code Is 416 + +POST VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.12 + ... Test title: POST VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact + ... Pre-conditions: none + ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PUT VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.13 + ... Test title: PUT VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PATCH VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.14 + ... Test title: PATCH VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + +DELETE VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.15 + ... Test title: DELETE VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation + Send DELETE Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + Check Postcondition VNF Package Artifact Exist + diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index b62728994..1038eebb2 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -607,7 +607,7 @@ Send DELETE Request for individual VNF Package Artifact ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition VNF Package Artifact Exist +Check Postcondition Individual VNF Package Artifact Exist Log Checking that vnf pacakge still exists Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -1327,4 +1327,126 @@ Send DELETE Request for Manifest in individual OnBoarded VNF Package Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response - Set Suite Variable ${response} ${output} \ No newline at end of file + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Artifact in VNF Package with select_non_mano_artifact_sets parameter + Log Trying to get Artifact in VNF Package with security certificates + 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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/select_non_mano_artifact_sets=${non_mano_artifact_sets} + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Artifact in VNF Package with Range Request + Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it + 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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets + 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}/${apiVersion}/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} + +Get Artifact in VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts + 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}/${apiVersion}/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}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET VNF Package Artifact with invalid Range Request + Log Trying to get a range of bytes of the limit of the VNF Package + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Range": "${erroneousRange}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition VNF Package Artifact Exist + Log Checking that vnf pacakge still exists + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + Check HTTP Response Status Code Is 200 \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 460aa79d1..3ee43c2d6 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -37,4 +37,7 @@ ${polling_interval} 10 sec ${notification_request} [] -${notification_response} [] \ No newline at end of file +${notification_response} [] + +${NFVO_non-MANO_OK} 1 # If 1 means that non-MANO artifacts are supported by the NFVO +${non_mano_artifact_sets} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/environment/vnfPackageContent.txt b/SOL003/VNFPackageManagement-API/environment/vnfPackageContent.txt index 1fd004bfd..a79a251ee 100644 --- a/SOL003/VNFPackageManagement-API/environment/vnfPackageContent.txt +++ b/SOL003/VNFPackageManagement-API/environment/vnfPackageContent.txt @@ -5,4 +5,4 @@ ${range} bytes=0-1023 ${length} 1024 ${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes ${erroneousVnfPkgId} erroneousPkgId -${CONTENT_TYPE_ZIP} application/zip +${CONTENT_TYPE_ZIP} application/zip \ No newline at end of file -- GitLab From 3c79b042b92619f0c5a04c0b992dd058895b46cb Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 25 Sep 2020 11:34:23 +0500 Subject: [PATCH 040/580] test cases added for OnBoarded VNF Package Artifacts --- .../IndividualVNFPackageArtifacts.robot | 2 +- .../VNFPackageArtifacts.robot | 191 ++++++++++++++++++ .../VNFPackageManagementKeywords.robot | 128 +++++++++++- 3 files changed, 319 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot index 4339f3777..323aa3c22 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot @@ -279,7 +279,7 @@ DELETE Individual OnBoarded VNF Package Artifact - Method not implemented ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation Send DELETE Request for individual OnBoarded VNF Package Artifact Check HTTP Response Status Code Is 405 - Check Postcondition OnBoarded VNF Package Artifact Exist + Check Postcondition Individual OnBoarded VNF Package Artifact Exist GET Individual VNF Package Artifact with security information [Documentation] Test ID: 7.3.3.5.23 diff --git a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot index 8f2828904..c4c3b9496 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -198,3 +198,194 @@ DELETE VNF Package Artifact - Method not implemented Check HTTP Response Status Code Is 405 Check Postcondition VNF Package Artifact Exist +Get OnBoarded VNF Package Artifact + [Documentation] Test ID: 7.3.3.11.16 + ... Test title: Get OnBoarded VNF Package Artifact + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package Artifact files successfully, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get OnBoarded VNF Package Artifact with "exclude_all_mano_artifacts" parameter + [Documentation] Test ID: 7.3.3.11.17 + ... Test title: Get OnBoarded VNF Package Artifact with "exclude_all_mano_artifacts" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package Artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with exclude_all_mano_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get OnBoarded VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter + [Documentation] Test ID: 7.3.3.11.18 + ... Test title: Get OnBoarded VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get OnBoarded VNF Package Artifact with "select_non_mano_artifact_sets" parameter + [Documentation] Test ID: 7.3.3.11.19 + ... Test title: Get OnBoarded VNF Package Artifact with "select_non_mano_artifact_sets" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with select_non_mano_artifact_sets parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get OnBoarded VNF Package Artifact with "include_signatures" parameter + [Documentation] Test ID: 7.3.3.11.20 + ... Test title: Get OnBoarded VNF Package Artifact with "include_signatures" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with include_signatures parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range Requests + [Documentation] Test ID: 7.3.3.11.21 + ... Test title: Get OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range Requests + ... Test objective: The objective is to test the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Response Header Content-Range Is Present and Matches the requested range + Check HTTP Response Header Content-Length Is Present and Matches the requested range length + +Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" + [Documentation] Test ID: 7.3.3.11.22 + ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifacts" + [Documentation] Test ID: 7.3.3.11.23 + ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get OnBoarded VNF Package Artifact with invalid URI parameters undifend select_non_mano_artifact_sets + [Documentation] Test ID: 7.3.3.11.24 + ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with select_non_mano_artifact_sets parameter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get OnBoarded VNF Package Artifact with conflict due to onboarding state + [Documentation] Test ID: 7.3.3.11.25 + ... Test title: Get OnBoarded VNF Package Artifact with conflict due to onboarding state + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Artifact of OnBoarded VNF Package in onboarding state different from ONBOARDED + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET OnBoarded VNF Package Artifact with invalid Range Request + [Documentation] Test ID: 7.3.3.11.26 + ... Test title: GET OnBoarded VNF Package Artifact with invalid Range Request + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when using a range request that does not match any available byte range in the file. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + GET OnBoarded VNF Package Artifact with invalid Range Request + Check HTTP Response Status Code Is 416 + +POST OnBoarded VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.27 + ... Test title: POST OnBoarded VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact + ... Pre-conditions: none + ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for OnBoarded VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PUT OnBoarded VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.28 + ... Test title: PUT OnBoarded VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for OnBoarded VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PATCH OnBoarded VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.29 + ... Test title: PATCH OnBoarded VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for OnBoarded VNF Package Artifact + Check HTTP Response Status Code Is 405 + +DELETE OnBoarded VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.30 + ... Test title: DELETE OnBoarded VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation + Send DELETE Request for OnBoarded VNF Package Artifact + Check HTTP Response Status Code Is 405 + Check Postcondition OnBoarded VNF Package Artifact Exist \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 1038eebb2..b11233ee0 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1142,7 +1142,7 @@ Send DELETE Request for individual OnBoarded VNF Package Artifact ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition OnBoarded VNF Package Artifact Exist +Check Postcondition Individual OnBoarded VNF Package Artifact Exist Log Checking that vnf pacakge still exists Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -1449,4 +1449,130 @@ Check Postcondition VNF Package Artifact Exist Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + Check HTTP Response Status Code Is 200 + + + + + +Get Artifact in OnBoarded VNF Package + Log Trying to get Artifact in OnBoarded VNF Package + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Artifact in OnBoarded VNF Package with exclude_all_mano_artifacts parameter + Log Trying to get Artifact in OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts parameter + Log Trying to get Artifact in OnBoarded VNF Package with security certificates + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Artifact in OnBoarded VNF Package with select_non_mano_artifact_sets parameter + Log Trying to get Artifact in OnBoarded VNF Package with security certificates + 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/select_non_mano_artifact_sets=${non_mano_artifact_sets} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Artifact in OnBoarded VNF Package with include_signatures parameter + Log Trying to get Artifact in OnBoarded VNF Package with security certificates + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Artifact in OnBoarded VNF Package with Range Request + Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it + 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets + Log Trying to get Artifact in OnBoarded VNF Package + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_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} + +Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts + Log Trying to get Artifact in OnBoarded VNF Package + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_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 OnBoarded VNF Package in onboarding state different from ONBOARDED + Log Trying to get a OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${onboardingStateVnfPkgId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET OnBoarded VNF Package Artifact with invalid Range Request + Log Trying to get a range of bytes of the limit of the OnBoarded VNF Package + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Range": "${erroneousRange}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send POST Request for OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PUT Request for OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PATCH Request for OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send DELETE Request for OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition OnBoarded VNF Package Artifact Exist + Log Checking that OnBoarded vnf pacakge still exists + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts Check HTTP Response Status Code Is 200 \ No newline at end of file -- GitLab From aa8b4dce7c4ea6f6bc59cd2808364befd456311e Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 25 Sep 2020 11:35:28 +0500 Subject: [PATCH 041/580] extra spaces removed --- .../VNFPackageManagementKeywords.robot | 4 ---- 1 file changed, 4 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index b11233ee0..5e8ec3024 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1451,10 +1451,6 @@ Check Postcondition VNF Package Artifact Exist GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts Check HTTP Response Status Code Is 200 - - - - Get Artifact in OnBoarded VNF Package Log Trying to get Artifact in OnBoarded VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} -- GitLab From a500c144e5087019a1cb0ff6f049fe7e785cb2a1 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 28 Sep 2020 13:36:10 +0500 Subject: [PATCH 042/580] reference updated --- .../ApiVersion.robot | 20 ++++++------ .../CancelOperationTask.robot | 14 ++++---- .../ChangeExternalVNFConnectivityTask.robot | 12 +++---- .../ChangeVNFFlavourTask.robot | 14 ++++---- .../FailOperationTask.robot | 14 ++++---- .../HealVNFTask.robot | 14 ++++---- .../IndividualSubscription.robot | 10 +++--- .../IndividualVNFInstance.robot | 16 +++++----- .../IndividualVnfLcmOperationOccurence.robot | 10 +++--- .../InstantiateVNFTask.robot | 12 +++---- .../NotificationEndpoint.robot | 8 ++--- .../OperateVNFTask.robot | 14 ++++---- .../RetryOperationTask.robot | 14 ++++---- .../RollbackOperationTask.robot | 14 ++++---- .../ScaleVNFTask.robot | 14 ++++---- .../ScaleVNFToLevelTask.robot | 14 ++++---- .../Subscriptions.robot | 32 +++++++++---------- .../TerminateVNFTask.robot | 12 +++---- .../VNFInstances.robot | 22 ++++++------- .../VnfLcmOperationOccurences.robot | 26 +++++++-------- 20 files changed, 153 insertions(+), 153 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/ApiVersion.robot b/SOL002/VNFLifecycleManagement-API/ApiVersion.robot index d3ea1bbe4..076343d82 100644 --- a/SOL002/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL002/VNFLifecycleManagement-API/ApiVersion.robot @@ -11,7 +11,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot index 2709d940c..2ca0d781f 100644 --- a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -14,7 +14,7 @@ Post Cancel operation task ... Test title: POST Cancel operation task ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. ... Pre-conditions: the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Post Cancel operation task Conflict ... Test title: POST Cancel operation task Conflict ... Test objective: The POST method is NOT cancelling an ongoing VNF lifecycle operation due to the fact that the VNF instance resource is not in STARTING, PROCESSING or ROLLING_BACK state ... Pre-conditions: operation is not in STARTING, PROCESSING or ROLLING_BACK state - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ Post Cancel operation task Not Found ... Test title: POST Cancel operation task ... Test objective: The objective is to test that POST method cannot cancel a VNF lifecycle operation because the resource is not found ... Pre-conditions: - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Cancel operation task - Method not implemented ... Test title: GET Cancel operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Cancel operation task - Method not implemented ... Test title: PUT Cancel operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Cancel operation task - Method not implemented ... Test title: PATCH Cancel operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Cancel operation task - Method not implemented ... Test title: DELETE Cancel operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index 54e8686ec..d8ad9fb08 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -13,7 +13,7 @@ POST Change external VNF connectivity ... Test title: POST Change external VNF connectivity ... Test objective: The objective is to test that POST method trigger a change in VNF external connectivity ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ GET Change external VNF connectivity - Method not implemented ... Test title: GET Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT Change external VNF connectivity - Method not implemented ... Test title: PUT Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH Change external VNF connectivity - Method not implemented ... Test title: PATCH Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE Change external VNF connectivity - Method not implemented ... Test title: DELETE Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: diff --git a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index f70393324..3d662724c 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -13,7 +13,7 @@ POST Change deployment flavour of a vnfInstance ... Test title: POST Change deployment flavour of a vnfInstance ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because of a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Change deployment flavour of a vnfInstance Not Found ... Test title: POST Change deployment flavour of a vnfInstance Not Found ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because the VNF instance resource is not found. ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Change deployment flavour VNFInstance - Method not implemented ... Test title: GET Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ PUT Change deployment flavour VNFInstance - Method not implemented ... Test title: PUT Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ PATCH Change deployment flavour VNFInstance - Method not implemented ... Test title: PATCH Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ DELETE Change deployment flavour VNFInstance - Method not implemented ... Test title: DELETE Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot index bbd7011d8..f1ebf86ce 100644 --- a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot @@ -12,7 +12,7 @@ POST Fail operation task ... Test title: POST Fail operation task ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Fail operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Fail operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ POST Fail operation task Not Found ... Test title: POST Fail operation task Not Found ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Fail operation task - Method not implemented ... Test title: GET Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -65,7 +65,7 @@ PUT Fail operation task - Method not implemented ... Test title: PUT Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -77,7 +77,7 @@ PATCH Fail operation task - Method not implemented ... Test title: PATCH Fail operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -89,7 +89,7 @@ DELETE Fail operation task - Method not implemented ... Test title: DELETE Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance not deleted diff --git a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot index 724573a8e..cddaa37ba 100644 --- a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot @@ -13,7 +13,7 @@ POST Heal a vnfInstance ... Test title: POST Heal a vnfInstance ... Test objective: The objective is to test that POST method heal a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -27,7 +27,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Heal a vnfInstance (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -41,7 +41,7 @@ POST Heal a vnfInstance Not Found ... Test title: POST Heal a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -54,7 +54,7 @@ GET Heal VNFInstance - Method not implemented ... Test title: GET Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -66,7 +66,7 @@ PUT Heal VNFInstance - Method not implemented ... Test title: PUT Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -78,7 +78,7 @@ PATCH Heal VNFInstance - Method not implemented ... Test title: PATCH Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -90,7 +90,7 @@ DELETE Heal VNFInstance - Method not implemented ... Test title: DELETE Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: diff --git a/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot index 887c31e3d..f5a3692d6 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the Get individual subscription ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE an individual subscription ... Test title: DELETE Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot index b4c84b814..bb34332ff 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -18,7 +18,7 @@ POST Individual VNFInstance - Method not implemented ... Test title: POST Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -30,7 +30,7 @@ GET Information about an individual VNF Instance ... Test title: GET Information about an individual VNF Instance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -43,7 +43,7 @@ PUT Individual VNFInstance - Method not implemented ... Test title: PUT Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: VNF instance not modified @@ -55,7 +55,7 @@ PATCH Individual VNFInstance ... Test title: PATCH Individual VNFInstance ... Test objective: This method modifies an individual VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: VNF instance modified @@ -68,7 +68,7 @@ PATCH Individual VNFInstance Precondition failed ... Test title: PATCH Individual VNFInstance Precondition failed ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: A precondition given in an HTTP request header is not fulfilled. Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: VNF instance not modified @@ -81,7 +81,7 @@ PATCH Individual VNFInstance Conflict ... Test title: PATCH Individual VNFInstance Conflict ... Test objective: The objective is to verify that modification operation cannot be executed currently, due to a conflict with the state of the VNF instance resource because another LCM Operation is ongoing. ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: VNF instance not modified @@ -94,7 +94,7 @@ DELETE Individual VNFInstance ... Test title: DELETE Individual VNFInstance ... Test objective: The objective is to delete a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: VNF instance deleted @@ -106,7 +106,7 @@ DELETE Individual VNFInstance Conflict ... Test title: DELETE Individual VNFInstance Conflict ... Test objective: The objective is to verify that The operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index f818c20e3..a083f949b 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -10,7 +10,7 @@ Post Individual VNF LCM OP occurrences - Method not implemented ... Test title: Post Individual VNF LCM OP occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -22,7 +22,7 @@ Get status information about multiple VNF instances ... Test title: Get status information about multiple VNF instances ... Test objective: The objective is to test that this method retrieve status information about a VNF lifecycle management operation occurrence ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -35,7 +35,7 @@ PUT status information about multiple VNF instances - Method not implemented ... Test title: PUT status information about multiple VNF instances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -47,7 +47,7 @@ PATCH status information about multiple VNF instances - Method not implemented ... Test title: PATCH status information about multiple VNF instances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -59,7 +59,7 @@ DELETE status information about multiple VNF instances - Method not implemented ... Test title: DELETE status information about multiple VNF instances - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot index d1b1078b7..01dd6a03e 100644 --- a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -15,7 +15,7 @@ POST Instantiate a vnfInstance ... Test title: POST Instantiate a vnfInstance ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -28,7 +28,7 @@ POST Instantiate a vnfInstance Conflict ... Test title: POST Instantiate a vnfInstance Conflict ... Test objective: The objective is to verify that the instantiation of the vnf cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -41,7 +41,7 @@ GET Instantiate VNFInstance - Method not implemented ... Test title: GET Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -53,7 +53,7 @@ PUT Instantiate VNFInstance - Method not implemented ... Test title: PUT Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: VNF instance not modified @@ -65,7 +65,7 @@ PATCH Instantiate VNFInstance - Method not implemented ... Test title: PATCH Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: VNF instance not modified @@ -77,7 +77,7 @@ DELETE Instantiate VNFInstance - Method not implemented ... Test title: DELETE Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: VNF instance not deleted diff --git a/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot index 9dcee2844..6a3ecfce5 100644 --- a/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF LCM Operation Occurrence Start Notification ... Test title: VNF LCM Operation Occurrence Start Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Start Notification when a new VNF LCM operation is started in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ VNF LCM Operation Occurrence Result Notification ... Test title: VNF LCM Operation Occurrence Result Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Result Notification when a VNF LCM operation is completed in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: An VNF LCM operation is in progress, and a subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Creation Notification when a new VNF instance resource is created in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Deletion Notification when a VNF instance resource is deleted in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance resource is created, and a subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot index 5fed39874..88aa95920 100644 --- a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -13,7 +13,7 @@ POST Operate a vnfInstance ... Test title: POST Operate a vnfInstance ... Test objective: The objective is to test that POST method operate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -26,7 +26,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -40,7 +40,7 @@ POST Operate a vnfInstance Not Found ... Test title: POST Operate a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed currently, because the resource is not existing ... Pre-conditions: the VNF instance resource is in not existing - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -53,7 +53,7 @@ GET Operate VNFInstance - Method not implemented ... Test title: GET Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -65,7 +65,7 @@ PUT Operate VNFInstance - Method not implemented ... Test title: PUT Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -77,7 +77,7 @@ PATCH Operate VNFInstance - Method not implemented ... Test title: PATCH Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -89,7 +89,7 @@ DELETE Operate VNFInstance - Method not implemented ... Test title: DELETE Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: diff --git a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot index 73415cd4e..d1e1aca15 100644 --- a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -14,7 +14,7 @@ POST Retry operation task ... Test title: POST Retry operation task ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ POST Retry operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Retry operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that the retry operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. (i.e. the VNF instance resource is not in FAILED_TEMP state) ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ POST Retry operation task Not Found ... Test title: POST Retry operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET Retry operation task - Method not implemented ... Test title: GET Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.14.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -67,7 +67,7 @@ PUT Retry operation task - Method not implemented ... Test title: PUT Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.14.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -79,7 +79,7 @@ PATCH Retry operation task - Method not implemented ... Test title: PATCH Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.14.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -91,7 +91,7 @@ DELETE Retry operation task - Method not implemented ... Test title: DELETE Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.14.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: diff --git a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot index 50e8a469c..d9513b7ff 100644 --- a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -14,7 +14,7 @@ POST Rollback operation task ... Test title: POST Rollback operation task ... Test objective: The objective is to test that POST method The POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method The POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ POST Rollback operation task Not Found ... Test title: POST Rollback operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET Rollback operation task - Method not implemented ... Test title: GET Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -67,7 +67,7 @@ PUT Rollback operation task - Method not implemented ... Test title: PUT Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -79,7 +79,7 @@ PATCH Rollback operation task - Method not implemented ... Test title: PATCH Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -91,7 +91,7 @@ DELETE Rollback operation task - Method not implemented ... Test title: DELETE Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot index b5fac239a..b9d984193 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -13,7 +13,7 @@ POST Scale a vnfInstance ... Test title: POST Scale a vnfInstance ... Test objective: The objective is to scale a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -26,7 +26,7 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -40,7 +40,7 @@ POST Scale a vnfInstance Not Found ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -53,7 +53,7 @@ GET Scale VNFInstance - Method not implemented ... Test title: GET Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -65,7 +65,7 @@ PUT Scale VNFInstance - Method not implemented ... Test title: PUT Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -77,7 +77,7 @@ PATCH Scale VNFInstance - Method not implemented ... Test title: PATCH Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -89,7 +89,7 @@ DELETE Scale VNFInstance - Method not implemented ... Test title: DELETE Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 920eb313c..be72af268 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -12,7 +12,7 @@ POST Scale a vnfInstance to level ... Test title: POST Scale a vnfInstance to level ... Test objective: The objective is to scale a VNF instance to a target level. ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -25,7 +25,7 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -39,7 +39,7 @@ POST Scale a vnfInstance Not Found ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the VNF Scale operation fails when the VNF instance resource is not present ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -53,7 +53,7 @@ GET Scale to level VNFInstance - Method not implemented ... Test title: GET Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -65,7 +65,7 @@ PUT Scale to level VNFInstance - Method not implemented ... Test title: PUT Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -77,7 +77,7 @@ PATCH Scale to level VNFInstance - Method not implemented ... Test title: PATCH Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -89,7 +89,7 @@ DELETE Scale to level VNFInstance - Method not implemented ... Test title: DELETE Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: diff --git a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot index a2b2e6303..3f14d231b 100644 --- a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot @@ -12,7 +12,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The POST method creates a new subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -25,7 +25,7 @@ POST Create a new Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: SUT should support duplication of subscription creation ... Post-Conditions: in response header Location shall not be null @@ -38,7 +38,7 @@ POST Create a new Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: SUT should not support duplication of subscription creation ... Post-Conditions: in response header Location shall not be null @@ -51,7 +51,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ GET Subscription - Filter ... Test title: GET Subscriptions - Filter ... Test objective: The objective is Get the list of active subscriptions using a "filter" ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is Get the list of active subscriptions using a filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions with all_fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ GET subscriptions with exclude_default attribute selector ... Test title: GET subscriptions with exclude_default attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ GET subscriptions with fields attribute selector ... Test title: GET subscriptions with fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ GET subscriptions with exclude_fields attribute selector ... Test title: GET subscriptions with exclude_fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: check that resources are not deleted @@ -178,7 +178,7 @@ POST Create a new Subscription - Unprocessable Entity ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -191,7 +191,7 @@ GET information about multiple subscriptions to get Paged Response ... Test title: GET information about multiple subscriptions to get Paged Response ... Test objective: The objective is to retrieve information about the subscriptions to get paged response ... Pre-conditions: - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -204,7 +204,7 @@ GET information about multiple subscriptions for Bad Request Response too big ... Test title: GET information about multiple subscriptions for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about subscriptions when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: diff --git a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot index 62f4f8f10..643737789 100644 --- a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -13,7 +13,7 @@ POST Terminate a vnfInstance ... Test title: POST Terminate a vnfInstance ... Test objective: The objective is to test that POST method terminate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -26,7 +26,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: @@ -40,7 +40,7 @@ GET Terminate VNFInstance - Method not implemented ... Test title: GET Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Terminate VNFInstance - Method not implemented ... Test title: PUT Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Terminate VNFInstance - Method not implemented ... Test title: PATCH Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Terminate VNFInstance - Method not implemented ... Test title: DELETE Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index 4307c4fee..23b5dbea7 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -12,7 +12,7 @@ POST Create a new vnfInstance ... Test title: POST Create a new vnfInstance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: VNF instance created @@ -25,7 +25,7 @@ GET information about multiple VNF instances ... Test title: GET information about multiple VNF instances ... Test objective: The objective is to get information about multiples VNF instances ... Pre-conditions: - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -39,7 +39,7 @@ GET information about multiple VNF instances Bad Request Invalid attribute-based ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF instances with Invalid attribute-based filtering parameters ... Pre-conditions: - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -52,7 +52,7 @@ GET information about multiple VNF instances Bad Request Invalid attribute selec ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF instances with Invalid attribute-based filtering parameters ... Pre-conditions: - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -65,7 +65,7 @@ GET information about multiple VNF instances with "all_fields" attribute selecto ... Test title: GET information about multiple VNF instances with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -78,7 +78,7 @@ GET information about multiple VNF instances with "exclude_default" attribute se ... Test title: GET information about multiple VNF instances with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -91,7 +91,7 @@ GET information about multiple VNF instances with "fields" attribute selector ... Test title: GET information about multiple VNF instances with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -104,7 +104,7 @@ GET information about multiple VNF instances with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF instances with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -117,7 +117,7 @@ PUT VNFInstances - Method not implemented ... Test title: PUT VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -129,7 +129,7 @@ PATCH VNFInstances - Method not implemented ... Test title: PATCH VNFInstances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -141,7 +141,7 @@ DELETE VNFInstances - Method not implemented ... Test title: DELETE VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: - ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: VNF instance not deleted diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index 441bb3cf3..cfd78c66d 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -13,7 +13,7 @@ POST VNF LCM operation occurrences - Method not implemented ... Test title: POST VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET status information about multiple VNF LCM operation occurrences ... Test title: GET status information about multiple VNF LCM operation occurrences ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET status information about multiple VNF LCM operation occurrences Bad Request ... Test title: GET status information about multiple VNF LCM operation occurrences Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET status information about multiple VNF LCM Operation occurrences Bad Request ... Test title: GET status information about multiple VNF LCM Operation occurrences Bad Request Invalid attribute selector ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test title: GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ GET status information about multiple VNF LCM Operation OCC with "exlude_default ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ GET status information about multiple VNF LCM Operation OCC with "fields" ... Test title: GET status information about multiple VNF LCM Operation OCC with "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_fields ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ PUT status information about multiple VNF LCM operation occurrences - Method not ... Test title: PUT status information about multiple VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ PATCH status information about multiple VNF LCM operation occurrences - Method n ... Test title: PATCH status information about multiple VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -140,7 +140,7 @@ DELETE status information about multiple VNF LCM operation occurrences - Method ... Test title: DELETE status information about multiple VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -152,7 +152,7 @@ GET status information about multiple VNF LCM operation occurances to get Paged ... Test title: GET status information about multiple VNF LCM operation occurances to get Paged Response ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences to get paged response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ GET status information about multiple VNF LCM Operation occurrences Bad Request ... Test title: GET status information about multiple VNF LCM Operation occurrences Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because Response is too big. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none -- GitLab From ee694009bb4099059d8069f88604e8841fb45ae2 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 28 Sep 2020 13:56:09 +0500 Subject: [PATCH 043/580] reference updated --- .../ApiVersion.robot | 20 ++++++------- .../IndividualPmJob.robot | 16 +++++------ .../IndividualReport.robot | 12 ++++---- .../IndividualSubscription.robot | 14 +++++----- .../IndividualThreshold.robot | 16 +++++------ .../VNFPerformanceManagement-API/PMJobs.robot | 28 +++++++++---------- .../Subscriptions.robot | 24 ++++++++-------- .../Thresholds.robot | 20 ++++++------- .../PerformanceManagementNotification.robot | 4 +-- 9 files changed, 77 insertions(+), 77 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot index 4e36c2637..bb484bf34 100644 --- a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot @@ -11,7 +11,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index 3729a715b..7e39e348e 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -14,7 +14,7 @@ GET individual VNF Performance Job ... Test title: Get individual VNF Performance Job ... Test objective: The objective is to test the retrieval of an individual VNF performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET individual VNF Performance Job with invalid resource identifier ... Test title: Get individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ DELETE Individual VNF Performance Job ... Test title: Delete Individual VNF Performance Job ... Test objective: The objective is to test the deletion of an individual VNF performance monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is no more available in the VNFM @@ -54,7 +54,7 @@ DELETE Individual VNF Performance Job with invalid resource identifier ... Test title: Delete individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ POST Individual VNF Performance Job - Method not implemented ... Test title: POST Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Monitoring Job ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not created on the VNFM @@ -80,7 +80,7 @@ PUT Individual VNF Performance Job - Method not implemented ... Test title: PUT Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance Monitoring Job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation @@ -93,7 +93,7 @@ PATCH Individual VNF Performance Job ... Test title: PATCH Individual VNF Performance Job ... Test objective: The objective is to test that PATCH method allows to modify an exsisting individual PM job resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -106,7 +106,7 @@ PATCH Individual VNF Performance Job - Precondition failed ... Test title: PATCH Individual VNF Performance Job - Precondition failed ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot index 9a8f99a2c..d6ba168b3 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot @@ -11,7 +11,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual VNF performance report associated to a monitoring job fails when using an invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ POST Individual Performance Report - Method not implemented ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF performance report is not created on the VNFM @@ -49,7 +49,7 @@ PUT Individual Performance Report - Method not implemented ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF performance report is not modified by the operation @@ -62,7 +62,7 @@ PATCH Individual Performance Report - Method not implemented ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF performance report is not modified by the operation @@ -75,7 +75,7 @@ DELETE Individual Performance Report - Method not implemented ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF performance report is not deleted by the operation diff --git a/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot b/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot index 39acdca29..4f34fd5c0 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot @@ -13,7 +13,7 @@ GET Individual VNF Performance Subscription ... Test title: GET Individual VNF Performance Subscription ... Test objective: The objective is to test the retrieval of individual VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual VNF Performance Subscription with invalid resource identifier ... Test title: GET Individual VNF Performance Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance subscription fails when using an invalid resource identifier ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ DELETE Individual VNF Performance Subscription ... Test title: DELETE Individual VNF Performance Subscription ... Test objective: The objective is to test the deletion of an individual VNF performance subscription ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Subscription is not available anymore in the VNFM @@ -52,7 +52,7 @@ DELETE Individual VNF Performance Subscription with invalid resource identifier ... Test title: DELETE Individual VNF Performance Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF performance subscription fails when using an invalid resource identifier ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ POST Individual VNF Performance Subscription - Method not implemented ... Test title: POST Individual VNF Performance Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Subscription ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Subscription is not created on the VNFM @@ -77,7 +77,7 @@ PUT Individual VNF Performance Subscription - Method not implemented ... Test title: PUT Individual VNF Performance Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance subscription ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance subscription is not modified by the operation @@ -90,7 +90,7 @@ PATCH Individual VNF Performance Subscription - Method not implemented ... Test title: PATCH Individual VNF Performance Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Performance subscription ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance subscription is not modified by the operation diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index 9bb807520..7520167c4 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -12,7 +12,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance threshold fails when using an invalid resource identifier ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ DELETE Individual Threshold ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not available anymore in the VNFM @@ -51,7 +51,7 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ POST Individual Threshold - Method not implemented ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Threshold ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not created on the VNFM @@ -76,7 +76,7 @@ PUT Individual Threshold - Method not implemented ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not modified by the operation @@ -89,7 +89,7 @@ PATCH Individual Threshold ... Test title: PATCH Individual Threshold ... Test objective: The objective is to test that PATCH method allows to modify an Individual threshold resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not modified by the operation @@ -103,7 +103,7 @@ PATCH Individual Threshold - Precondition failed ... Test title: PATCH Individual Threshold - Preconition failed ... Test objective: The objective is to attempt to modify an individual threshold resource, where the precondition was not met. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 577623b15..4552d9ef1 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -13,7 +13,7 @@ GET all VNF Performance Monitoring Jobs ... Test title: GET all VNF Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET VNF Performance Monitoring Jobs with attribute-based filter ... Test title: GET all VNF Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs all_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued all_fileds selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_default selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -83,7 +83,7 @@ GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -97,7 +97,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test title: GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ Create new VNF Performance Monitoring Job ... Test title: Create a new VNF Performance Monitoring Job ... Test objective: The objective is to test the creation of a new VNF performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is successfully created on the VNFM @@ -137,7 +137,7 @@ PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test title: PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Monitoring Jobs ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -149,7 +149,7 @@ PATCH all VNF Performance Monitoring Jobs - (Method not implemented) ... Test title: PATCH all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -161,7 +161,7 @@ DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test title: DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ GET VNF Performance Monitoring Jobs to get Paged Response ... Test title: GET VNF Performance Monitoring Jobs to get Paged Response ... Test objective: The objective is to test the retrieval of VNF performance monitoring jobs to get Paged response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -187,7 +187,7 @@ GET VNF Performance Monitoring Jobs for Bad Request Response too big ... Test title: GET VNF Performance Monitoring Jobs for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about VNF Performance Monitoring when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/Subscriptions.robot b/SOL002/VNFPerformanceManagement-API/Subscriptions.robot index 11c7f53ad..2ba4751cb 100644 --- a/SOL002/VNFPerformanceManagement-API/Subscriptions.robot +++ b/SOL002/VNFPerformanceManagement-API/Subscriptions.robot @@ -17,7 +17,7 @@ GET all VNF Performance Subscriptions ... Test title: GET all VNF Performance Subscriptions ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET VNF Performance Subscriptions with attribute-based filter ... Test title: GET VNF Performance Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF performance subscriptions using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ GET VNF Performance Management Subscriptions with invalid attribute-based filter ... Test title: GET VNF Performance Management Subscriptions with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ GET VNF Performance Subscriptions with invalid resource endpoint ... Test title: GET VNF Performance Subscriptions with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF performance subscriptions fails when using invalid resource endpoint. ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ Create new VNF Performance subscription ... Test title: Create new VNF Performance subscription ... Test objective: The objective is to test the creation of a new VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF performance subscription is successfully set and it matches the issued subscription @@ -86,7 +86,7 @@ Create duplicated VNF Performance subscription with VNFM not creating duplicated ... Test title: Create duplicated VNF Performance subscription with VNFM not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF performance subscription and check that no new subscription is created by the VNFM and a link to the original subscription is returned ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM does not support the creation of duplicated subscriptions ... Post-Conditions: The existing VNF performance subscription returned is available in the VNFM @@ -102,7 +102,7 @@ Create duplicated VNF Performance subscription with VNFM creating duplicated sub ... Test title: Create duplicated VNF Performance subscription with VNFM creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated VNF performance subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated VNF performance subscription is successfully set and it matches the issued subscription @@ -117,7 +117,7 @@ PUT VNF Performance Subscriptions - Method not implemented ... Test title: PUT VNF Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF performance subscriptions ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH VNF Performance Subscriptions - Method not implemented ... Test title: PATCH VNF Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF performance subscriptions ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE VNF Performance Subscriptions - Method not implemented ... Test title: DELETE VNF Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF performance subscriptions ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF performance subscriptions are not deleted by the failed operation @@ -154,7 +154,7 @@ GET VNF Performance Subscriptions to get Paged Response ... Test title: GET VNF Performance Subscriptions to get Paged Response ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions to get Paged Response ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -167,7 +167,7 @@ GET VNF Performance Management Subscriptions for Bad Request Response too big ... Test title: GET VNF Performance Management Subscriptions for Bad Request Response too big ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index 50552ec4f..e3be8ce01 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -13,7 +13,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds and perform a JSON schema validation of the collected thresholds data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Performance Thresholds with invalid attribute-based filter ... Test title: GET Performance Thresholds with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Performance Thresholds with invalid resource endpoint ... Test title: GET Performance Thresholds with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ Create new Performance Threshold ... Test title: Create new Performance Threshold ... Test objective: The objective is to test the creation of a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is successfully created on the VNFM @@ -80,7 +80,7 @@ PUT Performance Thresholds - Method not implemented ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNF. - ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ PATCH Performance Thresholds - Method not implemented ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ DELETE Performance Thresholds - Method not implemented ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Thresholds ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF performance thresholds are not deleted by the failed operation @@ -117,7 +117,7 @@ GET Performance Thresholds with Paged Response ... Test title: GET Performance Thresholds with Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds with Paged response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ GET Performance Thresholds for Bad Request Response too big ... Test title: GET Performance Thresholds for Bad Request Response too big ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot b/SOL002/VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot index bc0e9702f..58a7d9039 100644 --- a/SOL002/VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot +++ b/SOL002/VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot @@ -17,7 +17,7 @@ VNF Performance Information Availability Notification ... Test title: VNF Performance Information Availability Notification ... Test objective: The objective is to test the dispatch of VNF Performance Information Availability Notification when new VNF performance information is available in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ VNF Threshold Crossed Notification ... Test title: VNF Threshold Crossed Notification ... Test objective: The objective is to test the dispatch of VNF Threshold Crossed Notification when a previously set VNF performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a threshold subscription is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 47c239360f356e320a7b7f2cd9ab144910c117c4 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 28 Sep 2020 15:38:42 +0500 Subject: [PATCH 044/580] reference updated --- SOL002/VNFFaultManagement-API/Alarms.robot | 38 ++++++++-------- .../VNFFaultManagement-API/ApiVersion.robot | 20 ++++----- .../EscalatePerceivedSeverityTask.robot | 10 ++--- .../IndividualAlarm.robot | 14 +++--- .../IndividualSubscription.robot | 10 ++--- .../NotificationEndpoint.robot | 6 +-- .../Subscriptions.robot | 44 +++++++++---------- 7 files changed, 71 insertions(+), 71 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/Alarms.robot b/SOL002/VNFFaultManagement-API/Alarms.robot index c7ef62b0f..c25094178 100644 --- a/SOL002/VNFFaultManagement-API/Alarms.robot +++ b/SOL002/VNFFaultManagement-API/Alarms.robot @@ -13,7 +13,7 @@ POST Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: none @@ -25,7 +25,7 @@ GET information about multiple alarms ... Test title: GET information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -38,7 +38,7 @@ GET information about multiple alarms with attribute-based filter ... Test title: GET information about multiple alarms with attribute-based filter ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -51,7 +51,7 @@ GET information about multiple alarms with invalid attribute-based filter ... Test title: GET information about multiple alarms with invalid attribute-based filter ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -64,7 +64,7 @@ GET information about multiple alarms with "all_fields" attribute selector ... Test title: GET information about multiple alarms with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -77,7 +77,7 @@ GET information about multiple alarms with exclude_default attribute selector ... Test title: GET information about multiple alarms with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -91,7 +91,7 @@ GET information about multiple alarms with fields attribute selector ... Test title: GET information about multiple alarms with fields attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -104,7 +104,7 @@ GET information about multiple alarms with "exclude_fields" attribute selector ... Test title: GET information about multiple alarms with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: none @@ -117,7 +117,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE Alarms - Method not implemented ... Test title: DELETE Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.2.3.6 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.6 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: the alarm is not deleted @@ -153,7 +153,7 @@ GET information about multiple alarms to get Paged Response ... Test title: GET information about multiple alarms to get Paged Response ... Test objective: The objective is to retrieve information about the alarms to get paged response ... Pre-conditions: - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -166,7 +166,7 @@ GET information about multiple alarms for Bad Request Response too big ... Test title: GET information about multiple alarms for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about Alarms when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -179,7 +179,7 @@ GET information about alarms with attribute-based filter "id" ... Test title: GET information about alarms with attribute-based filter "id" ... Test objective: The objective is to retrieve information about the alarm list with alarm filter "id" ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -193,7 +193,7 @@ GET information about multiple alarms with attribute-based filter "vnfcInstanceI ... Test title: GET information about multiple alarms with attribute-based filter "vnfcInstanceIds" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "vnfcInstanceIds" ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -207,7 +207,7 @@ GET information about multiple alarms with attribute-based filter "rootCauseFaul ... Test title: GET information about multiple alarms with attribute-based filter "rootCauseFaultyResource.faultyResourceType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "rootCauseFaultyResource.faultyResourceType" ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -221,7 +221,7 @@ GET information about multiple alarms with attribute-based filter "eventType" ... Test title: GET information about multiple alarms with attribute-based filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "eventType" ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -235,7 +235,7 @@ GET information about multiple alarms with attribute-based filter "perceivedSeve ... Test title: GET information about multiple alarms with attribute-based filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "perceivedSeverity" ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -249,7 +249,7 @@ GET information about multiple alarms with attribute-based filter "probableCause ... Test title: GET information about multiple alarms with attribute-based filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "probableCause" ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: diff --git a/SOL002/VNFFaultManagement-API/ApiVersion.robot b/SOL002/VNFFaultManagement-API/ApiVersion.robot index f8e2fea9d..ae7bb77b0 100644 --- a/SOL002/VNFFaultManagement-API/ApiVersion.robot +++ b/SOL002/VNFFaultManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot index 89822d2b5..7f6e2706d 100644 --- a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot +++ b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot @@ -10,7 +10,7 @@ Escalate the perceived severity ... Test title: Escalate the perceived severity ... Test objective: To enable the consumer to escalate the perceived severity of an alarm that is represented by an individual alarm resource. ... Pre-conditions: The resource representing the individual alarm has been created - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -22,7 +22,7 @@ GET Escalate the perceived severity - Method not implemented ... Test title: GET Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the GET HTTP method not implemented for escalate perceived severity ... Pre-conditions: - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -34,7 +34,7 @@ PUT Escalate the perceived severity - Method not implemented ... Test title: PUT Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the PUT HTTP method not implemented for escalate perceived severity ... Pre-conditions: - ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -46,7 +46,7 @@ PATCH Escalate the perceived severity - Method not implemented ... Test title: PATCH Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the PATCH HTTP method not implemented for escalate perceived severity ... Pre-conditions: - ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -59,7 +59,7 @@ DELETE Escalate the perceived severity - Method not implemented ... Test title: DELETE Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the DELETE HTTP method not implemented for escalate perceived severity ... Pre-conditions: - ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: diff --git a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot index d6c9454f3..da15e6b9d 100644 --- a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot @@ -18,7 +18,7 @@ POST Alarm - Method not implemented ... Test title: POST Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: none @@ -31,7 +31,7 @@ GET information about an individual alarm ... Test title: GET information about an individual alarm ... Test objective: The objective is to read an individual alarm. ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -46,7 +46,7 @@ PUT Individual Alarm - Method not implemented ... Test title: PUT Individual Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: none @@ -59,7 +59,7 @@ PATCH Individual Alarm ... Test title: PATCH Individual Alarm ... Test objective: The objective is to Modify an individual alarm resource ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: none @@ -72,7 +72,7 @@ PATCH Individual Alarm - Precondition failed ... Test title: PATCH Individual Alarm - Precondition failed ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: The alarm resource is not modified @@ -85,7 +85,7 @@ PATCH Individual Alarm - Conflict ... Test title: PATCH Individual Alarm - Conflict ... Test objective: The objective is to Modify an individual alarm resource ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: The alarm resource is not modified @@ -99,7 +99,7 @@ DELETE Individual Alarm - Method not implemented ... Test title: DELETE Individual Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: alarm not deleted diff --git a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot index db5d06baf..36b8f8641 100644 --- a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot @@ -13,7 +13,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -25,7 +25,7 @@ GET Information about an individual subscription ... Test title: GET Information about an individual subscription ... Test objective: The objective is to read an individual subscription for VNF alarms subscribed by the client ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -38,7 +38,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -51,7 +51,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -64,7 +64,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that the deletion of a subscription ... Pre-conditions: an existing subscription - ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: the subscription is deleted diff --git a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot index 0b8e28eda..d5795f5c0 100644 --- a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot @@ -15,7 +15,7 @@ VNF Fault Alarm Notification ... Test title: VNF Fault Alarm Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Notification when a virtualised resource within an VNF instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ VNF Fault Alarm Cleared Notification ... Test title: VNF Fault Alarm Cleared Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Cleared Notification when a faulty virtualised resource within an VNF instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Fault Alarm List Rebuilt Notification ... Test title: VNF Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm List Rebuilt Notification when the VNFM decides to rebuild the list of its VNF alarms, e.g. due to a corruption in the alarm storage, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, one or more virtualised resource are in faulty state, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index b77885650..209997b2a 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -11,7 +11,7 @@ Create a new subscription ... Test title: Create a new subscription ... Test objective: The objective is to create a new subscription. ... Pre-conditions: no subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: Resource created successfully @@ -25,7 +25,7 @@ Create a new Subscription - DUPLICATION ... 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.6.1 + ... 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 @@ -38,7 +38,7 @@ Create a new Subscription - NO-DUPLICATION ... 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.6.1 + ... 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 @@ -50,7 +50,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: subscription is not deleted @@ -63,7 +63,7 @@ GET Subscription - Filter ... Test title: GET Subscription - Filter ... Test objective: The objective is to retrieve the list of active subscriptions with filter ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -76,7 +76,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -89,7 +89,7 @@ GET subscriptions with "all_fields" attribute selector ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -102,7 +102,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -115,7 +115,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -128,7 +128,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -143,7 +143,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -155,7 +155,7 @@ PATCH subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -167,7 +167,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: subscription not deleted @@ -179,7 +179,7 @@ GET Subscriptions to get Paged Response ... Test title: GET Subscriptions to get Paged Response ... Test objective: The objective is to retrieve the list of active subscriptions to get paged response ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: subscription is not deleted @@ -192,7 +192,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that GET method fail retrieving list of active subscription because Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -205,7 +205,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -220,7 +220,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -234,7 +234,7 @@ Get subscriptions with filter "filter.faultyResourceTypes" ... Test title: GET Subscription with attribute-based filter "filter.faultyResourceTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -248,7 +248,7 @@ Get subscriptions with filter "filter.perceivedSeverities" ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -262,7 +262,7 @@ Get subscriptions with filter "filter.eventTypes" ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -276,7 +276,7 @@ Get subscriptions with filter "filter.probableCauses" ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -290,7 +290,7 @@ POST Create a new Subscription - Unprocessable Entity ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From da1ef090fecdbd2b35687c210246a41c053383eb Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 28 Sep 2020 16:24:08 +0500 Subject: [PATCH 045/580] reference updated --- SOL002/VNFIndicator-API/ApiVersion.robot | 20 +++++++------- .../IndividualSubscription.robot | 14 +++++----- .../IndividualVNFindicator.robot | 24 ++++++++--------- SOL002/VNFIndicator-API/Subscriptions.robot | 26 +++++++++---------- SOL002/VNFIndicator-API/VNFIndicators.robot | 26 +++++++++---------- .../VnfIndicatorsInVnfInstanceId.robot | 20 +++++++------- .../VnfIndicatorNotification.robot | 2 +- 7 files changed, 66 insertions(+), 66 deletions(-) diff --git a/SOL002/VNFIndicator-API/ApiVersion.robot b/SOL002/VNFIndicator-API/ApiVersion.robot index fce69405c..25aa1403f 100644 --- a/SOL002/VNFIndicator-API/ApiVersion.robot +++ b/SOL002/VNFIndicator-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/IndividualSubscription.robot b/SOL002/VNFIndicator-API/IndividualSubscription.robot index 16de0847e..d8a8eb5a0 100644 --- a/SOL002/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL002/VNFIndicator-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ GET Individual VNF Indicator Subscription ... Test title: Get individual subscription to VNF performance indicators ... Test objective: The objective is to test the retrieval of individual VNF performance indicator subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Individual VNF Indicator Subscription with invalid resource identifier ... Test title: Get individual subscription to VNF performance indicators ... Test objective: The objective is to test that the retrieval of individual VNF performance indicator subscription fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -37,7 +37,7 @@ DELETE Individual VNF Indicator Subscription ... Test title: Delete individual subscription to VNF performance indicators ... Test objective: The objective is to test the deletion of an individual VNF performance indicator subscription. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: The subscription to VNF performance indicators is deleted @@ -50,7 +50,7 @@ DELETE Individual VNF Indicator Subscription with invalid resource identifier ... Test title: Delete individual subscription to VNF performance indicators ... Test objective: The objective is to test that the deletion of an individual VNF performance indicator subscription fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an individual VNF performance indicator subscription ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: The individual VNF indicator subscription is not modified by the operation @@ -76,7 +76,7 @@ PATCH Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an individual VNF performance indicator subscription ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: The individual VNF indicator subscription is not modified by the operation @@ -89,7 +89,7 @@ POST Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an individual VNF performance indicator subscription ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: The individual VNF indicator subscription is not created by the operation diff --git a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot index f4cecd713..08a04f106 100644 --- a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot @@ -10,7 +10,7 @@ Get Individual Indicator for VNF Instance ... Test title: Get individual performance indicator for a VNF instance ... Test objective: The objective is to test the retrieval of a performance indicator for a given VNF instance and perform a JSON schema validation of the returned indicator data structure ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -25,7 +25,7 @@ Get Individual Indicator for VNF Instance with invalid indicator identifier ... Test title: Get individual performance indicator for a VNF instance with invalid indicator identifier ... Test objective: The objective is to test that the retrieval of a performance indicator for a given VNF instance fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -38,7 +38,7 @@ POST Individual VNF Indicator - Method not implemented ... Test title: POST individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new performance indicator for a VNF instance ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual VNF Indicator - Method not implemented ... Test title: PUT individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing performance indicator for a VNF instance ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual VNF Indicator - Method not implemented ... Test title: PATCH individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an existing performance indicator for a VNF instance ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual VNF Indicator - Method not implemented ... Test title: DELETE individual performance indicator indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing performance indicator for a VNF instance ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: The individual performance indicator for the VNF instance is not deleted by the unsuccessful operation @@ -87,7 +87,7 @@ Get Individual Performance Indicator ... Test title: Get Individual Performance Indicator ... Test objective: The objective is to test the retrieval of a performance indicator and perform a JSON schema validation of the returned indicator data structure ... Pre-conditions: At least one measure of performance indicator is available.. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -101,7 +101,7 @@ Get Individual Performance Indicator with invalid indicator identifier ... Test title: Get Individual Performance Indicator with invalid indicator identifier ... Test objective: The objective is to test that the retrieval of a performance indicator fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: At least one measure of performance indicator is available. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -114,7 +114,7 @@ POST Individual Performance Indicator - Method not implemented ... Test title: POST Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new performance indicator. ... Pre-conditions: - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -126,7 +126,7 @@ PUT Individual Performance Indicator - Method not implemented ... Test title: PUT Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing performance indicator. ... Pre-conditions: At least one measure of performance indicator is available. - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -138,7 +138,7 @@ PATCH Individual Performance Indicator - Method not implemented ... Test title: PATCH Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an existing performance indicator. ... Pre-conditions: At least one measure of performance indicator is available. - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -150,7 +150,7 @@ DELETE Individual Performance Indicator - Method not implemented ... Test title: DELETE Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing performance indicator. ... Pre-conditions: At least one measure of performance indicator is available. - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index 1d54a66d2..b0aadf74d 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -17,7 +17,7 @@ GET VNF Indicators Subscriptions ... Test title: GET VNF Indicators Subscriptions ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -30,7 +30,7 @@ GET VNF Indicators Subscriptions with attribute-based filter ... Test title: GET VNF Indicators Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions using attribute-based filter and perform a JSON schema and content validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -44,7 +44,7 @@ GET VNF Indicators Subscriptions with invalid attribute-based filter ... Test title: GET VNF Indicators Subscriptions with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of all VNF indicators subscriptions fails when using invalid attribute-based filter. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -57,7 +57,7 @@ GET VNF Indicators Subscriptions with invalid resource endpoint ... Test title: GET VNF Indicators Subscriptions with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF indicators subscriptions fails when using invalid resource endpoint. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -69,7 +69,7 @@ Create new VNF indicator subscription ... Test title: Create new VNF indicator subscription ... Test objective: The objective is to test the creation of a new VNF indicator subscription perform a JSON schema and content validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: The VNF indicator subscription is successfully set and it matches the issued subscription @@ -84,7 +84,7 @@ PUT VNF Indicator Subscriptions - Method not implemented ... Test title: PUT VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicator subscriptions ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -96,7 +96,7 @@ PATCH VNF Indicator Subscriptions - Method not implemented ... Test title: PATCH VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicator subscriptions ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -108,7 +108,7 @@ DELETE VNF Indicator Subscriptions - Method not implemented ... Test title: DELETE VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicator subscriptions ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -120,7 +120,7 @@ GET VNF Indicators Subscriptions to get Paged Response ... Test title: GET VNF Indicators Subscriptions to get Paged Response ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions to get Paged Response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -133,7 +133,7 @@ GET VNF Indicators Subscriptions - Bad Request Response too Big ... Test title: GET VNF Indicators Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of all VNF indicators subscriptions fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -146,7 +146,7 @@ POST Create a new Subscription - Unprocessable Entity ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -159,7 +159,7 @@ Create new VNF indicator Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: SUT should support duplication of subscription creation ... Post-Conditions: in response header Location shall not be null @@ -172,7 +172,7 @@ Create new VNF indicator Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: SUT should not support duplication of subscription creation ... Post-Conditions: in response header Location shall not be null diff --git a/SOL002/VNFIndicator-API/VNFIndicators.robot b/SOL002/VNFIndicator-API/VNFIndicators.robot index bc6dbd9c9..a4e5e7b46 100644 --- a/SOL002/VNFIndicator-API/VNFIndicators.robot +++ b/SOL002/VNFIndicator-API/VNFIndicators.robot @@ -13,7 +13,7 @@ Get all VNF Indicators ... Test title: Get all VNF Indicators ... Test objective: The objective is to test the retrieval of all the available VNF indicators and perform a JSON schema validation of the collected indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -26,7 +26,7 @@ Get VNF Indicators with attribute-based filter ... Test title: Get VNF Indicators with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF indicators using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -40,7 +40,7 @@ Get VNF Indicators with invalid attribute-based filter ... Test title: Get VNF Indicators with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -53,7 +53,7 @@ Get all VNF Indicators with malformed authorization token ... Test title: GET all VNF Indicators with malformed authrization token. ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using malformed authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -65,7 +65,7 @@ Get all VNF Indicators without authorization token ... Test title: GET all VNF Indicators without authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when omitting the authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -77,7 +77,7 @@ GET all VNF Indicators with expired or revoked authorization token ... Test title: GET all VNF Indicators with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using expired or revoked authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -89,7 +89,7 @@ Get all VNF Indicators with invalid resource endpoint ... Test title: GET all VNF Indicators with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -101,7 +101,7 @@ POST all VNF Indicators - Method not implemented ... Test title: POST all VNF Indicators - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF - ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -113,7 +113,7 @@ PUT all VNF Indicators - Method not implemented ... Test title: PUT all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -125,7 +125,7 @@ PATCH all VNF Indicators - Method not implemented ... Test title: PATCH all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF - ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -137,7 +137,7 @@ DELETE all VNF Indicators - Method not implemented ... Test title: DELETE all VNF Indicators - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF - ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -150,7 +150,7 @@ Get VNF Indicators to get Paged Response ... Test title: Get VNF Indicators to get Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF indicators with Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -163,7 +163,7 @@ Get VNF Indicators - Bad Request Response too Big ... Test title: Get VNF Indicators - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF indicators fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index 11f83e45b..1ab37fc66 100644 --- a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -13,7 +13,7 @@ Get Indicators for VNF Instance ... Test title: Get all performance indicators for a VNF instance ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Indicators for VNF Instance with attribute-based filter ... Test title: Get all performance indicators for a VNF instance with attribute-based filter ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance using attribute-based filter and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -41,7 +41,7 @@ Get Indicators for VNF Instance with invalid attribute-based filter ... Test title: Get all performance indicators for a VNF instance with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of all performance indicators for a given VNF instance fails using invalid attribute-based filter. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -54,7 +54,7 @@ Get Indicators for VNF Instance with invalid resource identifier ... Test title: Get all performance indicators for a VNF instance with invalid resource identifier ... Test objective: The objective is to test that the retrieval of all performance indicators for a given VNF instance fails when using invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -67,7 +67,7 @@ POST Indicators for VNF instance - Method not implemented ... Test title: POST performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new performance indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -79,7 +79,7 @@ PUT Indicators for VNF instance - Method not implemented ... Test title: PUT performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing performance indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -91,7 +91,7 @@ PATCH Indicators for VNF instance - Method not implemented ... Test title: PATCH performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing performance indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -103,7 +103,7 @@ DELETE Indicators for VNF instance - Method not implemented ... Test title: DELETE performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete performance indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: The indicators for the VNF instance are not deleted by the unsuccessful operation @@ -116,7 +116,7 @@ Get Indicators for VNF Instance to get Paged Response ... Test title: Get Indicators for VNF Instance to get Paged Response ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance to get paged response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -129,7 +129,7 @@ Get Indicators for VNF Instance - Bad Request Response too Big ... Test title: Get Indicators for VNF Instance - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of all performance indicators for a given VNF instance fails when response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none diff --git a/SOL002/VNFIndicatorNotification-API/VnfIndicatorNotification.robot b/SOL002/VNFIndicatorNotification-API/VnfIndicatorNotification.robot index 27087d238..c58a979a1 100644 --- a/SOL002/VNFIndicatorNotification-API/VnfIndicatorNotification.robot +++ b/SOL002/VNFIndicatorNotification-API/VnfIndicatorNotification.robot @@ -16,7 +16,7 @@ VNF Indicator Value Change Notification ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test the dispatch of VNF Indicator Value Change Notification when new indicator values are available in the VNF, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNF. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.4.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNF ... Applicability: none ... Post-Conditions: none -- GitLab From 45e8c618e3ff07b24c9bf77e74077749ea930bea Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 28 Sep 2020 16:25:23 +0500 Subject: [PATCH 046/580] reference updated --- SOL002/VNFConfiguration-API/ApiVersion.robot | 20 +++++++++---------- .../VNFConfiguration-API/Configuration.robot | 14 ++++++------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/SOL002/VNFConfiguration-API/ApiVersion.robot b/SOL002/VNFConfiguration-API/ApiVersion.robot index 68b95d747..f0e1fe455 100644 --- a/SOL002/VNFConfiguration-API/ApiVersion.robot +++ b/SOL002/VNFConfiguration-API/ApiVersion.robot @@ -11,7 +11,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFConfiguration-API/Configuration.robot b/SOL002/VNFConfiguration-API/Configuration.robot index 813e17ace..13dda5c88 100644 --- a/SOL002/VNFConfiguration-API/Configuration.robot +++ b/SOL002/VNFConfiguration-API/Configuration.robot @@ -12,7 +12,7 @@ Set new VNF Configuration ... Test title: Set a new VNF Configuration ... Test objective: The objective is to test the creation of a new VNF configuration and perform a JSON schema validation of the returned configuration data structure ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: The configuration is successfully set in the VNF and it matches the issued configuration @@ -28,7 +28,7 @@ Get information about a VNF configuration ... Test title: Get information about a VNF configuration ... Test objective: The objective is to test the retrieval of an existing VNF instance configuration and perform a JSON schema validation of the collected configuration data structure ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ Get information about a VNF configuration with HTTP Etag ... Test title: Get information about a VNF configuration with HTTP Etag ... Test objective: The objective is to test the retrieval of an existing VNF instance configuration, check the generation by the VNF of an HTTP Etag opaque identifier, and perform a JSON schema validation of the collected configuration data structure ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: none @@ -57,7 +57,7 @@ Set new VNF Configuration - HTTP Etag precondition unsuccessful ... Test title: Set a new VNF Configuration - HTTP Etag precondition unsuccessful ... Test objective: The objective is to test the unsuccess in setting a duplication of VNF configuration identified by an already used HTTP Etag identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured (Test ID 6.3.1.1.1) with a given HTTP Etag identifier. - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: The VNF configuration is not modified by the unsuccessful operation and it matches the configuration issued in Test ID 6.3.1.1.1 @@ -71,7 +71,7 @@ POST VNF Configuration - Method not implemented ... Test title: POST VNF Configuration - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF configuration ... Pre-conditions: A VNF instance is instantiated. The VNF instance is alrseady configured - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ PUT VNF Configuration - Method not implemented ... Test title: PUT VNF Configuration - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing VNF configuration ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured - ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ DELETE VNF Configuration - Method not implemented ... Test title: Delete VNF Configuration - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF configuration ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured - ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: The VNF configuration is not deleted by the unsuccessful operation -- GitLab From 7ec0d18d048372abe5d9d8db995d3656c1c23a45 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 1 Oct 2020 12:59:05 +0500 Subject: [PATCH 047/580] templating, minor fix and new testcases added --- .../HealVNFTask.robot | 14 ++-- .../IndividualVNFInstance.robot | 22 +++--- .../InstantiateVNFTask.robot | 26 +++---- .../OperateVNFTask.robot | 14 ++-- .../ScaleVNFTask.robot | 40 +++++----- .../ScaleVNFToLevelTask.robot | 36 ++++----- .../Subscriptions.robot | 1 + .../TerminateVNFTask.robot | 4 +- .../VNFInstances.robot | 77 +++++++++++-------- .../VnfLcmOperationKeywords.robot | 50 +++++++++--- .../VnfLcmOperationOccurences.robot | 15 +++- .../environment/variables.txt | 16 +++- .../jsons/changeVnfFlavourRequest.json | 6 +- .../jsons/createVnfRequest.json | 9 +-- .../jsons/healVnfRequest.json | 6 +- .../jsons/instantiateVnfRequest.json | 7 +- .../jsons/lccnSubscriptionRequest.json | 14 ++-- .../jsons/operateVnfRequest.json | 6 +- .../jsons/scaleVnfRequest.json | 8 +- .../jsons/scaleVnfToLevelRequest.json | 6 +- .../jsons/terminateVnfRequest.json | 6 +- 21 files changed, 224 insertions(+), 159 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot index cddaa37ba..c62f11df1 100644 --- a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot @@ -16,7 +16,7 @@ POST Heal a vnfInstance ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Heal VNF Check HTTP Response Status Code Is 202 Check Operation Occurrence Id @@ -30,7 +30,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Heal VNF Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -44,7 +44,7 @@ POST Heal a vnfInstance Not Found ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Heal VNF Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails @@ -57,7 +57,7 @@ GET Heal VNFInstance - Method not implemented ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none GET Heal VNF Check HTTP Response Status Code Is 405 @@ -69,7 +69,7 @@ PUT Heal VNFInstance - Method not implemented ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none PUT Heal VNF Check HTTP Response Status Code Is 405 @@ -81,7 +81,7 @@ PATCH Heal VNFInstance - Method not implemented ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none PATCH Heal VNF Check HTTP Response Status Code Is 405 @@ -93,7 +93,7 @@ DELETE Heal VNFInstance - Method not implemented ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none DELETE Heal VNF Check HTTP Response Status Code Is 405 diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot index bb34332ff..84f826b94 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -20,8 +20,8 @@ POST Individual VNFInstance - Method not implemented ... Pre-conditions: none ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST individual vnfInstance Check HTTP Response Status Code Is 405 @@ -32,8 +32,8 @@ GET Information about an individual VNF Instance ... Pre-conditions: none ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET individual vnfInstance Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstance @@ -45,7 +45,7 @@ PUT Individual VNFInstance - Method not implemented ... Pre-conditions: none ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: + ... Applicability: none ... Post-Conditions: VNF instance not modified PUT individual vnfInstance Check HTTP Response Status Code Is 405 @@ -57,7 +57,7 @@ PATCH Individual VNFInstance ... Pre-conditions: none ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: + ... Applicability: none ... Post-Conditions: VNF instance modified PATCH individual vnfInstance Check HTTP Response Status Code Is 202 @@ -70,7 +70,7 @@ PATCH Individual VNFInstance Precondition failed ... Pre-conditions: A precondition given in an HTTP request header is not fulfilled. Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: + ... Applicability: none ... Post-Conditions: VNF instance not modified PATCH individual vnfInstance Check HTTP Response Status Code Is 412 @@ -83,7 +83,7 @@ PATCH Individual VNFInstance Conflict ... Pre-conditions: none ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: + ... Applicability: none ... Post-Conditions: VNF instance not modified PATCH individual vnfInstance Check HTTP Response Status Code Is 409 @@ -96,7 +96,7 @@ DELETE Individual VNFInstance ... Pre-conditions: none ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: + ... Applicability: none ... Post-Conditions: VNF instance deleted DELETE individual vnfInstance Check HTTP Response Status Code Is 204 @@ -108,8 +108,8 @@ DELETE Individual VNFInstance Conflict ... Pre-conditions: VNF instance resource is in INSTANTIATED state ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none DELETE individual vnfInstance Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 01dd6a03e..93855de0a 100644 --- a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -17,8 +17,8 @@ POST Instantiate a vnfInstance ... Pre-conditions: none ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST instantiate individual vnfInstance Check HTTP Response Status Code Is 202 Check Operation Occurrence Id @@ -30,8 +30,8 @@ POST Instantiate a vnfInstance Conflict ... Pre-conditions: VNF instance resource is in INSTANTIATED state ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST instantiate individual vnfInstance Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -40,11 +40,11 @@ GET Instantiate VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.3.3 ... Test title: GET Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET instantiate individual vnfInstance Check HTTP Response Status Code Is 405 @@ -52,10 +52,10 @@ PUT Instantiate VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.3.4 ... Test title: PUT Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: + ... Applicability: none ... Post-Conditions: VNF instance not modified PUT instantiate individual vnfInstance Check HTTP Response Status Code Is 405 @@ -64,10 +64,10 @@ PATCH Instantiate VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.3.5 ... Test title: PATCH Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: + ... Applicability: none ... Post-Conditions: VNF instance not modified PATCH instantiate individual vnfInstance Check HTTP Response Status Code Is 405 @@ -76,10 +76,10 @@ DELETE Instantiate VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.3.6 ... Test title: DELETE Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: + ... Applicability: none ... Post-Conditions: VNF instance not deleted DELETE instantiate individual vnfInstance Check HTTP Response Status Code Is 405 diff --git a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot index 88aa95920..c450c897e 100644 --- a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -16,7 +16,7 @@ POST Operate a vnfInstance ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Operate VNF Check HTTP Response Status Code Is 202 Check Operation Occurrence Id @@ -29,7 +29,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Operate VNF Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -43,7 +43,7 @@ POST Operate a vnfInstance Not Found ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Operate VNF Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails @@ -56,7 +56,7 @@ GET Operate VNFInstance - Method not implemented ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none GET Operate VNF Check HTTP Response Status Code Is 405 @@ -68,7 +68,7 @@ PUT Operate VNFInstance - Method not implemented ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none PUT Operate VNF Check HTTP Response Status Code Is 405 @@ -80,7 +80,7 @@ PATCH Operate VNFInstance - Method not implemented ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none PATCH Operate VNF Check HTTP Response Status Code Is 405 @@ -92,7 +92,7 @@ DELETE Operate VNFInstance - Method not implemented ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none DELETE Operate VNF Check HTTP Response Status Code Is 405 diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot index b9d984193..6a5e732a1 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -15,8 +15,8 @@ POST Scale a vnfInstance ... Pre-conditions: none ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST Scale vnfInstance Check HTTP Response Status Code Is 202 Check Operation Occurrence Id @@ -28,8 +28,8 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST Scale vnfInstance Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -39,12 +39,12 @@ POST Scale a vnfInstance Not Found [Documentation] Test ID: 6.3.5.4.3 ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: - POST Scale vnfInstance + ... Applicability: none + ... Post-Conditions: none + POST Scale vnfInstance Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails @@ -52,11 +52,11 @@ GET Scale VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.4.4 ... Test title: GET Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Scale vnfInstance Check HTTP Response Status Code Is 405 @@ -64,11 +64,11 @@ PUT Scale VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.4.5 ... Test title: PUT Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PUT Scale vnfInstance Check HTTP Response Status Code Is 405 @@ -76,11 +76,11 @@ PATCH Scale VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.4.6 ... Test title: PATCH Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PATCH Scale vnfInstance Check HTTP Response Status Code Is 405 @@ -88,11 +88,11 @@ DELETE Scale VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.4.7 ... Test title: DELETE Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none DELETE Scale vnfInstance Check HTTP Response Status Code Is 405 diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index be72af268..7648c3756 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -14,8 +14,8 @@ POST Scale a vnfInstance to level ... Pre-conditions: none ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST Scale vnfInstance to level Check HTTP Response Status Code Is 202 Check Operation Occurrence Id @@ -27,8 +27,8 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST Scale vnfInstance to level Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -41,8 +41,8 @@ POST Scale a vnfInstance Not Found ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST Scale vnfInstance to level Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails @@ -52,11 +52,11 @@ GET Scale to level VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.5.4 ... Test title: GET Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Scale vnfInstance to level Check HTTP Response Status Code Is 405 @@ -64,11 +64,11 @@ PUT Scale to level VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.5.5 ... Test title: PUT Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PUT Scale vnfInstance to level Check HTTP Response Status Code Is 405 @@ -76,11 +76,11 @@ PATCH Scale to level VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.5.6 ... Test title: PATCH Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PATCH Scale vnfInstance to level Check HTTP Response Status Code Is 405 @@ -88,11 +88,11 @@ DELETE Scale to level VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.5.7 ... Test title: DELETE Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none DELETE Scale vnfInstance to level Check HTTP Response Status Code Is 405 diff --git a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot index 3f14d231b..ad77de443 100644 --- a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot @@ -84,6 +84,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters Get subscriptions - invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails + GET subscriptions with all_fields attribute selector [Documentation] Test ID: 6.3.5.17.7 ... Test title: GET subscriptions with all_fields attribute selector diff --git a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot index 643737789..914af7811 100644 --- a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -16,7 +16,7 @@ POST Terminate a vnfInstance ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Terminate VNF Check HTTP Response Status Code Is 202 Check Operation Occurrence Id @@ -29,7 +29,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Terminate VNF Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index 23b5dbea7..9f2f09c01 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -11,10 +11,10 @@ POST Create a new vnfInstance [Documentation] Test ID: 6.3.5.1.1 ... Test title: POST Create a new vnfInstance ... Test objective: The objective is to create a new VNF instance resource - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: + ... Applicability: none ... Post-Conditions: VNF instance created POST Create a new vnfInstance Check HTTP Response Status Code Is 201 @@ -24,11 +24,11 @@ GET information about multiple VNF instances [Documentation] Test ID: 6.3.5.1.2 ... Test title: GET information about multiple VNF instances ... Test objective: The objective is to get information about multiples VNF instances - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstances @@ -38,11 +38,11 @@ GET information about multiple VNF instances Bad Request Invalid attribute-based [Documentation] Test ID: 6.3.5.1.3 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF instances with Invalid attribute-based filtering parameters - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances with bad attribute Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -51,11 +51,11 @@ GET information about multiple VNF instances Bad Request Invalid attribute selec [Documentation] Test ID: 6.3.5.1.4 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF instances with Invalid attribute-based filtering parameters - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances with bad filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -64,11 +64,11 @@ GET information about multiple VNF instances with "all_fields" attribute selecto [Documentation] Test ID: 6.3.5.1.5 ... Test title: GET information about multiple VNF instances with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstances @@ -77,11 +77,11 @@ GET information about multiple VNF instances with "exclude_default" attribute se [Documentation] Test ID: 6.3.5.1.6 ... Test title: GET information about multiple VNF instances with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF instances - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances with exclude_default attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstances @@ -90,11 +90,11 @@ GET information about multiple VNF instances with "fields" attribute selector [Documentation] Test ID: 6.3.5.1.7 ... Test title: GET information about multiple VNF instances with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstances @@ -103,11 +103,11 @@ GET information about multiple VNF instances with "exclude_fields" attribute sel [Documentation] Test ID: 6.3.5.1.8 ... Test title: GET information about multiple VNF instances with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances with exclude_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstances @@ -116,11 +116,11 @@ PUT VNFInstances - Method not implemented [Documentation] Test ID: 6.3.5.1.9 ... Test title: PUT VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PUT multiple vnfInstances Check HTTP Response Status Code Is 405 @@ -128,11 +128,11 @@ PATCH VNFInstances - Method not implemented [Documentation] Test ID: 6.3.5.1.10 ... Test title: PATCH VNFInstances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PATCH multiple vnfInstances Check HTTP Response Status Code Is 405 @@ -140,10 +140,23 @@ DELETE VNFInstances - Method not implemented [Documentation] Test ID: 6.3.5.1.11 ... Test title: DELETE VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE - ... Applicability: + ... Applicability: none ... Post-Conditions: VNF instance not deleted DELETE multiple vnfInstances - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +GET information about multiple VNF instances with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 6.3.5.1.12 + ... Test title: GET information about multiple VNF instances with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF instances + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET multiple vnfInstances with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is vnfInstances \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 6daa361da..ceef45a66 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -9,6 +9,7 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ +Library String *** Keywords *** @@ -78,7 +79,8 @@ POST Create a new vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/createVnfRequest.json + ${template} = Get File jsons/createVnfRequest.json + ${body}= Format String ${template} vnfdId=${vnfdId} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -129,7 +131,14 @@ GET multiple vnfInstances with fields attribute selector Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?fields=${fields} ${output}= Output response - Set Suite Variable ${response} ${output} + Set Suite Variable ${response} ${output} +GET multiple vnfInstances with exclude_default and fields attribute selector + Log Query status information about multiple VNF instances, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -209,7 +218,8 @@ POST instantiate individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/instantiateVnfRequest.json + ${template}= Get File jsons/instantiateVnfRequest.json + ${body}= Format String ${template} flavourId=${flavourId} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -247,7 +257,8 @@ POST Scale vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json + ${template}= Get File jsons/scaleVnfRequest.json + ${body}= Format String ${template} type=${scaleVnfRequesttype} aspectId=${scaleVnfRequestAspect} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -293,7 +304,8 @@ POST Scale vnfInstance to level Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfToLevelRequest.json + ${template}= Get File jsons/scaleVnfToLevelRequest.json + ${body}= Format String ${template} newFlavourId=${newFlavourId} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -330,7 +342,8 @@ 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}"} - ${body}= Get File jsons/changeVnfFlavourRequest.json + ${template}= Get File jsons/changeVnfFlavourRequest.json + ${body}= Format String ${template} newFlavourId=${newFlavourId} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -367,7 +380,8 @@ POST Terminate VNF Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/terminateVnfRequest.json + ${template}= Get File jsons/terminateVnfRequest.json + ${body}= Format String ${template} terminationType=${terminationType} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -405,7 +419,8 @@ POST Heal VNF Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/healVnfRequest.json + ${template}= Get File jsons/healVnfRequest.json + ${body}= Format String ${template} cause=${healingCause} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -481,7 +496,8 @@ POST Operate VNF Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/operateVnfRequest.json + ${template}= Get File jsons/operateVnfRequest.json + ${body}= Format String ${template} changeStateTo=${changeStateTo} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -723,7 +739,8 @@ Post Create subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/lccnSubscriptionRequest.json + ${template}= Get File jsons/lccnSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -733,7 +750,8 @@ Post Create subscription - DUPLICATION Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/lccnSubscriptionRequest.json + ${template}= Get File jsons/lccnSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -743,7 +761,8 @@ Post Create subscription - NO-DUPLICATION Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/lccnSubscriptionRequest.json + ${template}= Get File jsons/lccnSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -956,6 +975,13 @@ Get VNF LCM Operation occurrences with fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} +Get VNF LCM Operation occurrences with exclude_default and fields attribute selector + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + Get VNF LCM Operation occurrences with exclude_fields attribute selector Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index cfd78c66d..1af91b51a 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -171,4 +171,17 @@ GET status information about multiple VNF LCM Operation occurrences Bad Request ... Post-Conditions: none GET VNF LCM OP occurrences Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +GET status information about multiple VNF LCM Operation OCC with "exlude_default" and "fields" + [Documentation] Test ID: 6.3.5.11.14 + ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" and "fields" + ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. + ... Pre-conditions: none + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + Get VNF LCM Operation occurrences with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 202 + Check HTTP Response Body Json Schema Is VnfLcmOpOccs \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index af716e9c4..ef3d9d5ae 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -59,4 +59,18 @@ ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies. ${fields} -${original_etag} some_etag \ No newline at end of file +${original_etag} some_etag + +${vnfdId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${flavourId} vnf flavour + +${scaleVnfRequesttype} SCALE_OUT +${scaleVnfRequestAspect} Aspect + +${newFlavourId} 5a7d81f-e602-4afa-8e13-962fb5a7d81f + +${terminationType} GRACEFUL + +${healingCause} healingCause + +${changeStateTo} STOPPED \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/changeVnfFlavourRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/changeVnfFlavourRequest.json index 5b52927e9..50d5eb5db 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/changeVnfFlavourRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/changeVnfFlavourRequest.json @@ -1,3 +1,3 @@ -{ - "newFlavourId": "myFlavour_new" -} \ No newline at end of file +{{ + "newFlavourId": "{newFlavourId}" +}} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 290151ae0..5c9c30a25 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -1,6 +1,5 @@ -{ - "vnfdId": "6fc3539c-e602-4afa-8e13-962fb5a7d81f", +{{ + "vnfdId": "${vnfdId}", "vnfInstanceName": "string", - "vnfInstanceDescription": "string", - "metadata":{} -} \ No newline at end of file + "vnfInstanceDescription": "string" +}} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/healVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/healVnfRequest.json index 8981fa942..8e57871a5 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/healVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/healVnfRequest.json @@ -1,4 +1,4 @@ -{ - "cause": "a specific cause", +{{ + "cause": "{healingCause}", "additionalParams": {} -} \ No newline at end of file +}} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/instantiateVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/instantiateVnfRequest.json index bb96e19dd..c8a0ed85c 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/instantiateVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/instantiateVnfRequest.json @@ -1,6 +1,5 @@ -{ - "flavourId": "myFlavour", - "instantiationLevelId": "string", +{{ + "flavourId": "{flavourId}", "extVirtualLinks": [ { "id": "string", @@ -75,4 +74,4 @@ "localizationLanguage": "English", "extensions": {}, "additionalParams": {} -} \ No newline at end of file +}} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json index e44916f8d..1411fe3b4 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json @@ -1,10 +1,10 @@ -{ - "filter": { - "vnfInstanceSubscriptionFilter": { +{{ + "filter": {{ + "vnfInstanceSubscriptionFilter": {{ "vnfdIds": [ "6fc3539c-e602-4afa-8e13-962fb5a7d81f" ] - } - }, - "callbackUri": "http://127.0.0.1/subscribe" -} \ No newline at end of file + }} + }}, + "callbackUri": "{callback_uri}{callback_endpoint}" +}} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/operateVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/operateVnfRequest.json index 2ead53e19..c32dd2c4e 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/operateVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/operateVnfRequest.json @@ -1,5 +1,5 @@ -{ - "changeStateTo": "STOPPED", +{{ + "changeStateTo": "{changeStateTo}", "stopType": "FORCEFUL", "additionalParams": {} -} \ No newline at end of file +}} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/scaleVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/scaleVnfRequest.json index 09dc7dffb..58964bb56 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/scaleVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/scaleVnfRequest.json @@ -1,4 +1,4 @@ -{ - "type": "SCALE_OUT", - "aspectId": "myAspect" -} \ No newline at end of file +{{ + "type": "{scaleVnfRequesttype}", + "aspectId": "{scaleVnfRequestAspect}" +}} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequest.json index eeccec1d2..448dc4c27 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequest.json @@ -1,3 +1,3 @@ -{ - "newFlavourId" : "" -} \ No newline at end of file +{{ + "newFlavourId" : "{newFlavourId}" +}} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/terminateVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/terminateVnfRequest.json index 0a4f9592d..b317c4de9 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/terminateVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/terminateVnfRequest.json @@ -1,4 +1,4 @@ -{ - "terminationType": "GRACEFUL", +{{ + "terminationType": "{terminationType}", "additionalParams": {} -} \ No newline at end of file +}} \ No newline at end of file -- GitLab From e9893c5f613ebb7175a282c72aac9a4536702410 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 1 Oct 2020 14:06:08 +0500 Subject: [PATCH 048/580] templating, minor fix and new testcases added --- .../IndividualPmJob.robot | 3 +- .../IndividualThreshold.robot | 3 +- .../VNFPerformanceManagement-API/PMJobs.robot | 28 +++++++++++++++---- .../Thresholds.robot | 5 ++-- .../environment/pmJobs.txt | 4 ++- .../environment/variables.txt | 4 ++- .../jsons/CreatePmJobRequest.json | 12 ++++---- .../jsons/CreateThresholdRequest.json | 16 +++++------ 8 files changed, 48 insertions(+), 27 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index 7e39e348e..5a84a1747 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -7,7 +7,6 @@ Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=fal Library OperatingSystem Library DependencyLibrary - *** Test Cases *** GET individual VNF Performance Job [Documentation] Test ID: 6.3.3.2.1 @@ -96,7 +95,7 @@ PATCH Individual VNF Performance Job ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Patch request for individual VNF Performance Job Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PMJobModifications diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index 7520167c4..d68f09617 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -96,8 +96,7 @@ PATCH Individual Threshold Send Patch request for individual VNF Performance Threshold Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ThresholdModifications - - + PATCH Individual Threshold - Precondition failed [Documentation] Test ID: 6.3.3.5.8 ... Test title: PATCH Individual Threshold - Preconition failed diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 4552d9ef1..78883d757 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -195,7 +195,18 @@ GET VNF Performance Monitoring Jobs for Bad Request Response too big Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails - +GET all VNF Performance Monitoring Jobs with exclude_default and fields attribute selector + [Documentation] Test ID: 6.3.3.1.15 + ... Test title: GET all VNF Performance Monitoring Jobs with exclude_default and fields attribute selector + ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs with exclude_default and fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_default selector + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET VNF Performance Monitoring Jobs with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJobs *** Keywords *** GET all VNF Performance Monitoring Jobs Log Trying to get all PM Jobs present in the VNFM @@ -237,6 +248,14 @@ GET VNF Performance Monitoring Jobs with fields attribute selector GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} + +GET VNF Performance Monitoring Jobs with exclude_default and fields attribute selector + Log Trying to get all VNF Packages present in the VNFM, using filter params + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} GET VNF Performance Monitoring Jobs with exclude_fields attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params @@ -268,7 +287,8 @@ Send Post Request Create new VNF Performance Monitoring Job Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/CreatePmJobRequest.json + ${template}= Get File jsons/CreatePmJobRequest.json + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callbackuri=${callback_uri} POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -384,6 +404,4 @@ Check HTTP Response Body Json Schema Is Check LINK in Header ${linkURL}= Get Value From Json ${response['headers']} $..Link - Should Not Be Empty ${linkURL} - - + Should Not Be Empty ${linkURL} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index e3be8ce01..a0fb710e9 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -176,8 +176,9 @@ Send Post Request Create new Performance Threshold Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${request}= Get File jsons/CreateThresholdRequest.json - POST ${apiRoot}/${apiName}/${apiVersion}/thresholds ${request} + ${template}= Get File jsons/CreateThresholdRequest.json + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${callback_uri} + POST ${apiRoot}/${apiName}/${apiVersion}/thresholds ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/environment/pmJobs.txt b/SOL002/VNFPerformanceManagement-API/environment/pmJobs.txt index f1675679e..7d16002b3 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/pmJobs.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/pmJobs.txt @@ -1,5 +1,7 @@ +*** Settings *** +Resource variables.txt # Generic Parameters *** Variables *** -${POS_FILTER} objectInstanceIds=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${POS_FILTER} objectInstanceIds=${objectInstanceIds} ${NEG_FILTER} criteriaPmJob=erroneousAttributeName ${fields} criteria,reports ${response}= httpresponse diff --git a/SOL002/VNFPerformanceManagement-API/environment/variables.txt b/SOL002/VNFPerformanceManagement-API/environment/variables.txt index 1b6fb6dbc..debf7b6a0 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/variables.txt @@ -23,4 +23,6 @@ ${callback_endpoint_error} /endpoint_404 ${sleep_interval} 20s ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -${response} http-response \ No newline at end of file +${response} http-response + +${objectInstanceIds} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json b/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json index 1f34fa20d..587c3fba7 100644 --- a/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json +++ b/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json @@ -1,10 +1,10 @@ -{ - "objectInstanceIds" : ["1f50d68b-82e8-4deb-bd40-c934d4d1ac0a"], - "criteria" : { +{{ + "objectInstanceIds" : ["{objectInstanceIds}"], + "criteria" : {{ "performanceMetric": [], "performanceMetricGroup": [], "collectionPeriod": 10, "reportingPeriod": 30 - }, - "callbackuri": "127.0.0.1" -} \ No newline at end of file + }}, + "callbackuri": "{callback_uri}" +}} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json b/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json index c42c3773f..9f7640468 100644 --- a/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json +++ b/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json @@ -1,13 +1,13 @@ -{ - "objectInstanceIds" : "1f50d68b-82e8-4deb-bd40-c934d4d1ac0a", - "criteria" : { +{{ + "objectInstanceIds" : "{objectInstanceIds}", + "criteria" : {{ "performanceMetric": "cpu_util", "thresholdType": "SIMPLE", - "simpleThresholdDetails": { + "simpleThresholdDetails": {{ "thresholdValue": 10, "hysteresis": 50 - } + }} - }, - "callbackuri": "127.0.0.1" -} \ No newline at end of file + }}, + "callbackuri": "{callback_uri}" +}} \ No newline at end of file -- GitLab From 34a83b2890bc4647fcf88b5e808f684f0e9f3316 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 1 Oct 2020 15:37:34 +0500 Subject: [PATCH 049/580] templating, minor fix and new testcases added --- SOL002/VNFFaultManagement-API/Alarms.robot | 25 ++-- .../EscalatePerceivedSeverityTask.robot | 29 +++-- .../IndividualAlarm.robot | 35 +++--- .../IndividualSubscription.robot | 40 +++--- .../Subscriptions.robot | 117 +++++++++--------- .../jsons/fmSubscriptionRequest.json | 14 +-- 6 files changed, 137 insertions(+), 123 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/Alarms.robot b/SOL002/VNFFaultManagement-API/Alarms.robot index c25094178..6bc714a21 100644 --- a/SOL002/VNFFaultManagement-API/Alarms.robot +++ b/SOL002/VNFFaultManagement-API/Alarms.robot @@ -38,7 +38,7 @@ GET information about multiple alarms with attribute-based filter ... Test title: GET information about multiple alarms with attribute-based filter ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -51,7 +51,7 @@ GET information about multiple alarms with invalid attribute-based filter ... Test title: GET information about multiple alarms with invalid attribute-based filter ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -85,7 +85,6 @@ GET information about multiple alarms with exclude_default attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms - GET information about multiple alarms with fields attribute selector [Documentation] Test ID: 6.3.4.1.7 ... Test title: GET information about multiple alarms with fields attribute selector @@ -117,7 +116,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: none @@ -129,7 +128,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: none @@ -141,7 +140,7 @@ DELETE Alarms - Method not implemented ... Test title: DELETE Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: - ... Reference: Clause 7.4.2.3.6 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: the alarm is not deleted @@ -166,7 +165,7 @@ GET information about multiple alarms for Bad Request Response too big ... Test title: GET information about multiple alarms for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about Alarms when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -179,7 +178,7 @@ GET information about alarms with attribute-based filter "id" ... Test title: GET information about alarms with attribute-based filter "id" ... Test objective: The objective is to retrieve information about the alarm list with alarm filter "id" ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -193,7 +192,7 @@ GET information about multiple alarms with attribute-based filter "vnfcInstanceI ... Test title: GET information about multiple alarms with attribute-based filter "vnfcInstanceIds" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "vnfcInstanceIds" ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -207,7 +206,7 @@ GET information about multiple alarms with attribute-based filter "rootCauseFaul ... Test title: GET information about multiple alarms with attribute-based filter "rootCauseFaultyResource.faultyResourceType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "rootCauseFaultyResource.faultyResourceType" ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -221,7 +220,7 @@ GET information about multiple alarms with attribute-based filter "eventType" ... Test title: GET information about multiple alarms with attribute-based filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "eventType" ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -235,7 +234,7 @@ GET information about multiple alarms with attribute-based filter "perceivedSeve ... Test title: GET information about multiple alarms with attribute-based filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "perceivedSeverity" ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -249,7 +248,7 @@ GET information about multiple alarms with attribute-based filter "probableCause ... Test title: GET information about multiple alarms with attribute-based filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "probableCause" ... Pre-conditions: - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: diff --git a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot index 7f6e2706d..394a9c789 100644 --- a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot +++ b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot @@ -12,8 +12,8 @@ Escalate the perceived severity ... Pre-conditions: The resource representing the individual alarm has been created ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Post escalate severity Check HTTP Response Status Code Is 204 @@ -21,11 +21,11 @@ GET Escalate the perceived severity - Method not implemented [Documentation] Test ID: 6.3.4.3.2 ... Test title: GET Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the GET HTTP method not implemented for escalate perceived severity - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get escalate severity Check HTTP Response Status Code Is 405 @@ -33,11 +33,11 @@ PUT Escalate the perceived severity - Method not implemented [Documentation] Test ID: 6.3.4.3.3 ... Test title: PUT Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the PUT HTTP method not implemented for escalate perceived severity - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Put escalate severity Check HTTP Response Status Code Is 405 @@ -45,24 +45,23 @@ PATCH Escalate the perceived severity - Method not implemented [Documentation] Test ID: 6.3.4.3.4 ... Test title: PATCH Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the PATCH HTTP method not implemented for escalate perceived severity - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PATCH escalate severity Check HTTP Response Status Code Is 405 - DELETE Escalate the perceived severity - Method not implemented [Documentation] Test ID: 6.3.4.3.5 ... Test title: DELETE Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the DELETE HTTP method not implemented for escalate perceived severity - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Delete escalate severity Check HTTP Response Status Code Is 405 diff --git a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot index da15e6b9d..ada7690ea 100644 --- a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot @@ -7,11 +7,9 @@ Library JSONLibrary Library JSONSchemaLibrary schemas/ Library DependencyLibrary - *** Variables ** ${original_etag} 1234 - *** Test Cases *** POST Alarm - Method not implemented [Documentation] Test ID: 6.3.4.2.1 @@ -20,12 +18,11 @@ POST Alarm - Method not implemented ... Pre-conditions: ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: none POST Alarm Task Check HTTP Response Status Code Is 405 - GET information about an individual alarm [Documentation] Test ID: 6.3.4.2.2 ... Test title: GET information about an individual alarm @@ -33,14 +30,12 @@ GET information about an individual alarm ... Pre-conditions: The related alarm exists ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarm Task Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarm - - PUT Individual Alarm - Method not implemented [Documentation] Test ID: 6.3.4.2.3 ... Test title: PUT Individual Alarm - Method not implemented @@ -48,12 +43,11 @@ PUT Individual Alarm - Method not implemented ... Pre-conditions: ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: none PUT Alarm Task Check HTTP Response Status Code Is 405 - PATCH Individual Alarm [Documentation] Test ID: 6.3.4.2.4 ... Test title: PATCH Individual Alarm @@ -61,7 +55,7 @@ PATCH Individual Alarm ... Pre-conditions: The related alarm exists ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: none PATCH Alarm Task Check HTTP Response Status Code Is 200 @@ -74,7 +68,7 @@ PATCH Individual Alarm - Precondition failed ... Pre-conditions: The related alarm exists ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: The alarm resource is not modified PATCH Alarm Task with wrong precondition Check HTTP Response Status Code Is 412 @@ -87,13 +81,12 @@ PATCH Individual Alarm - Conflict ... Pre-conditions: The related alarm exists ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: The alarm resource is not modified PATCH Alarm Task Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - DELETE Individual Alarm - Method not implemented [Documentation] Test ID: 6.3.4.2.7 ... Test title: DELETE Individual Alarm - Method not implemented @@ -101,10 +94,22 @@ DELETE Individual Alarm - Method not implemented ... Pre-conditions: ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: alarm not deleted DELETE Alarm Task Check HTTP Response Status Code Is 405 + +GET information about an individual alarm - Not Found + [Documentation] Test ID: 6.3.4.2.8 + ... Test title: GET information about an individual alarm - Not Found + ... Test objective: The objective is to test that GET method fail retrieving status information about individaual Alarms when alarm is not present. + ... Pre-conditions: The related alarm doesnot exists + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET Alarm Task + Check HTTP Response Status Code Is 404 *** Keywords *** POST Alarm Task diff --git a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot index 36b8f8641..274b83385 100644 --- a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot @@ -12,11 +12,11 @@ POST Individual Subscription - Method not implemented [Documentation] Test ID: 6.3.4.5.1 ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Post Create individual subscription Check HTTP Response Status Code Is 405 @@ -27,8 +27,8 @@ GET Information about an individual subscription ... Pre-conditions: The subscription with the given id exists ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get individual subscription Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscription @@ -37,28 +37,26 @@ PUT an individual subscription - Method not implemented [Documentation] Test ID: 6.3.4.5.3 ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Put individual subscription Check HTTP Response Status Code Is 405 - - + PATCH an individual subscription - Method not implemented [Documentation] Test ID: 6.3.4.5.4 ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Patch individual subscription Check HTTP Response Status Code Is 405 - DELETE an individual subscription [Documentation] Test ID: 6.3.4.5.5 ... Test title: DELETE an individual subscription @@ -66,11 +64,23 @@ DELETE an individual subscription ... Pre-conditions: an existing subscription ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: the subscription is deleted Delete individual subscription Check HTTP Response Status Code Is 204 +GET Information about an individual subscription - Not Found + [Documentation] Test ID: 6.3.4.5.6 + ... Test title: GET Information about an individual subscription - Not Found + ... Test objective: The objective is to test that GET method fail retrieving individual subscription for VNF alarms subscribed by the client because it is not present. + ... Pre-conditions: The subscription with the given id donot exists + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get individual subscription + Check HTTP Response Status Code Is 404 + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index 209997b2a..bc3bbb182 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -4,6 +4,7 @@ Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=fal Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Library String *** Test Cases *** Create a new subscription @@ -13,7 +14,7 @@ Create a new subscription ... Pre-conditions: no 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: + ... Applicability: none ... Post-Conditions: Resource created successfully Post Create subscription Check HTTP Response Status Code Is 201 @@ -49,10 +50,10 @@ GET Subscriptions [Documentation] Test ID: 6.3.4.4.4 ... Test title: GET Subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: subscription is not deleted Get subscriptions Check HTTP Response Status Code Is 200 @@ -62,11 +63,11 @@ GET Subscription - Filter [Documentation] Test ID: 6.3.4.4.5 ... Test title: GET Subscription - Filter ... Test objective: The objective is to retrieve the list of active subscriptions with filter - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions - filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -75,11 +76,11 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters [Documentation] Test ID: 6.3.4.4.6 ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions - invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -88,11 +89,11 @@ GET subscriptions with "all_fields" attribute selector [Documentation] Test ID: 6.3.4.4.7 ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -101,11 +102,11 @@ GET subscriptions with "exclude_default" attribute selector [Documentation] Test ID: 6.3.4.4.8 ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with exclude_default attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -114,11 +115,11 @@ GET subscriptions with "fields" attribute selector [Documentation] Test ID: 6.3.4.4.9 ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -127,26 +128,24 @@ GET subscriptions with "exclude_fields" attribute selector [Documentation] Test ID: 6.3.4.4.10 ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with exclude_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions - - PUT subscriptions - Method not implemented [Documentation] Test ID: 6.3.4.4.11 ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PUT subscriptions Check HTTP Response Status Code Is 405 @@ -154,11 +153,11 @@ PATCH subscriptions - Method not implemented [Documentation] Test ID: 6.3.4.4.12 ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PATCH subscriptions Check HTTP Response Status Code Is 405 @@ -166,10 +165,10 @@ DELETE subscriptions - Method not implemented [Documentation] Test ID: 6.3.4.4.13 ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: subscription not deleted DELETE subscriptions Check HTTP Response Status Code Is 405 @@ -178,10 +177,10 @@ GET Subscriptions to get Paged Response [Documentation] Test ID: 6.3.4.4.14 ... Test title: GET Subscriptions to get Paged Response ... Test objective: The objective is to retrieve the list of active subscriptions to get paged response - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: subscription is not deleted Get subscriptions Check HTTP Response Status Code Is 200 @@ -191,11 +190,11 @@ GET subscriptions - Bad Request Response too Big [Documentation] Test ID: 6.3.4.4.15 ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that GET method fail retrieving list of active subscription because Response is too big, and perform the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions - invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -204,26 +203,25 @@ GET Subscription with attribute-based filter "id" [Documentation] Test ID: 6.3.4.4.16 ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with filter "id" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscription Check PostCondition HTTP Response Body Subscription Matches the requested attribute-based filter "id" - Get subscriptions with filter "filter.notificationTypes" [Documentation] Test ID: 6.3.4.4.17 ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with filter "filter_notificationTypes" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -233,11 +231,11 @@ Get subscriptions with filter "filter.faultyResourceTypes" [Documentation] Test ID: 6.3.4.4.18 ... Test title: GET Subscription with attribute-based filter "filter.faultyResourceTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with filter "filter_faultyResourceTypes" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -247,11 +245,11 @@ Get subscriptions with filter "filter.perceivedSeverities" [Documentation] Test ID: 6.3.4.4.19 ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with filter "filter_perceivedSeverities" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -261,11 +259,11 @@ Get subscriptions with filter "filter.eventTypes" [Documentation] Test ID: 6.3.4.4.20 ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with filter "filter_eventTypes" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -275,11 +273,11 @@ Get subscriptions with filter "filter.probableCauses" [Documentation] Test ID: 6.3.4.4.21 ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with filter "filter_probableCauses" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -304,7 +302,8 @@ Post Create subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/fmSubscriptionRequest.json + ${template}= Get File jsons/fmSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -314,7 +313,8 @@ Post Create subscription - DUPLICATION Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/fmSubscriptionRequest.json + ${template}= Get File jsons/fmSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -324,7 +324,8 @@ Post Create subscription - NO-DUPLICATION Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/fmSubscriptionRequest.json + ${template}= Get File jsons/fmSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFFaultManagement-API/jsons/fmSubscriptionRequest.json b/SOL002/VNFFaultManagement-API/jsons/fmSubscriptionRequest.json index e44916f8d..1411fe3b4 100644 --- a/SOL002/VNFFaultManagement-API/jsons/fmSubscriptionRequest.json +++ b/SOL002/VNFFaultManagement-API/jsons/fmSubscriptionRequest.json @@ -1,10 +1,10 @@ -{ - "filter": { - "vnfInstanceSubscriptionFilter": { +{{ + "filter": {{ + "vnfInstanceSubscriptionFilter": {{ "vnfdIds": [ "6fc3539c-e602-4afa-8e13-962fb5a7d81f" ] - } - }, - "callbackUri": "http://127.0.0.1/subscribe" -} \ No newline at end of file + }} + }}, + "callbackUri": "{callback_uri}{callback_endpoint}" +}} \ No newline at end of file -- GitLab From 7d24d2cb7834d46d6bf7e89b1aa0b3cb89cef124 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 2 Oct 2020 10:51:30 +0500 Subject: [PATCH 050/580] templating added --- SOL002/VNFIndicator-API/Subscriptions.robot | 3 ++- SOL002/VNFIndicator-API/jsons/subscriptions.json | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index b0aadf74d..65cfcde57 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -217,7 +217,8 @@ Send Post Request for VNF Indicator Subscription Log Trying to create a new subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${output}= Output response diff --git a/SOL002/VNFIndicator-API/jsons/subscriptions.json b/SOL002/VNFIndicator-API/jsons/subscriptions.json index ccf9f514c..8274dac3f 100644 --- a/SOL002/VNFIndicator-API/jsons/subscriptions.json +++ b/SOL002/VNFIndicator-API/jsons/subscriptions.json @@ -1,3 +1,3 @@ -{ - "callbackUri": "http://127.0.0.1/subscribe" -} \ No newline at end of file +{{ + "callbackUri": "{callback_uri}{callback_endpoint}" +}} \ No newline at end of file -- GitLab From a733b78f9cb7f0bf4c2b29ae36e36d15e8ff4158 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 6 Oct 2020 16:38:49 +0500 Subject: [PATCH 051/580] templating, minor fix and new testcases added --- .../ChangeVNFFlavourTask.robot | 4 +- .../HealVNFTask.robot | 14 +-- .../IndividualSubscription.robot | 12 +++ .../IndividualVNFInstance.robot | 34 +++++--- .../IndividualVnfLcmOperationOccurence.robot | 26 +++--- .../InstantiateVNFTask.robot | 32 +++---- .../OperateVNFTask.robot | 17 ++-- .../RetryOperationTask.robot | 1 - .../RollbackOperationTask.robot | 1 - .../ScaleVNFTask.robot | 36 ++++---- .../ScaleVNFToLevelTask.robot | 34 ++++---- .../TerminateVNFTask.robot | 4 +- .../VNFInstances.robot | 87 +++++++++++-------- .../VnfLcmMntOperationKeywords.robot | 75 +++++++++++----- .../VnfLcmOperationOccurences.robot | 15 +++- .../environment/variables.txt | 17 ++++ .../jsons/changeVnfFlavourRequest.json | 6 +- .../jsons/createVnfRequest.json | 8 +- .../jsons/healVnfRequest.json | 8 +- .../jsons/lccnSubscriptionRequest.json | 2 +- .../jsons/operateVnfRequest.json | 10 +-- .../jsons/scaleVnfRequest.json | 8 +- .../jsons/scaleVnfToLevelRequest.json | 6 +- .../jsons/terminateVnfRequest.json | 8 +- 24 files changed, 280 insertions(+), 185 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 8ef6b52dd..26326b039 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -33,7 +33,6 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) POST Change VNF deployment flavour Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - POST Change deployment flavour of a vnfInstance Not Found # TODO: Need to create a vnfInstance which's instantiatedVnfInfo.scaleStatus is absent @@ -48,8 +47,7 @@ POST Change deployment flavour of a vnfInstance Not Found POST Change VNF deployment flavour Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails - - + GET Change deployment flavour VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.6.4 ... Test title: GET Change deployment flavour VNFInstance - Method not implemented diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index f3c586a63..dadd2ea47 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -16,7 +16,7 @@ POST Heal a vnfInstance ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Heal VNF Check HTTP Response Status Code Is 202 Check Operation Occurrence Id existence @@ -30,7 +30,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Heal VNF Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -45,7 +45,7 @@ POST Heal a vnfInstance Not Found ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Heal VNF Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails @@ -59,7 +59,7 @@ GET Heal VNFInstance - Method not implemented ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none GET Heal VNF Check HTTP Response Status Code Is 405 @@ -71,7 +71,7 @@ PUT Heal VNFInstance - Method not implemented ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none PUT Heal VNF Check HTTP Response Status Code Is 405 @@ -83,7 +83,7 @@ PATCH Heal VNFInstance - Method not implemented ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none PATCH Heal VNF Check HTTP Response Status Code Is 405 @@ -95,7 +95,7 @@ DELETE Heal VNFInstance - Method not implemented ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none DELETE Heal VNF Check HTTP Response Status Code Is 405 diff --git a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot index d41331c9f..8088c0856 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -67,6 +67,18 @@ DELETE an individual subscription ... Post-Conditions: subscription deleted from VNFM Delete Individual subscription Check HTTP Response Status Code Is 405 + +GET Individual Subscription - Not Found + [Documentation] Test ID: 7.3.1.18.6 + ... Test title: GET Individual Subscription - Not Found + ... Test objective: The objective is to test the retrieval of individual subscription fails when subscription is not present + ... Pre-conditions: none + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual Subscription + Check HTTP Response Status Code Is 404 *** Keywords *** Check resource existence diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 4d5a7fda1..da668687a 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -20,8 +20,8 @@ Post Individual VNFInstance - Method not implemented ... Pre-conditions: none ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST individual vnfInstance Check HTTP Response Status Code Is 405 @@ -32,8 +32,8 @@ Get Information about an individual VNF Instance ... Pre-conditions: none ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET individual vnfInstance Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstance @@ -45,8 +45,8 @@ PUT Individual VNFInstance - Method not implemented ... Pre-conditions: none ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PUT individual vnfInstance Check HTTP Response Status Code Is 405 @@ -57,7 +57,7 @@ PATCH Individual VNFInstance ... Pre-conditions: an existing VNF instance resource ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: VNFInstance modified PATCH individual vnfInstance Check HTTP Response Status Code Is 202 @@ -70,7 +70,7 @@ PATCH Individual VNFInstance Precondition failed ... Pre-conditions: ETag mismatch ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: VNFInstance not modified PATCH individual vnfInstance Check HTTP Response Status Code Is 412 @@ -83,7 +83,7 @@ PATCH Individual VNFInstance Conflict ... Pre-conditions: another LCM operation is ongoing ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: VNFInstance not modified PATCH individual vnfInstance Check HTTP Response Status Code Is 409 @@ -96,7 +96,7 @@ DELETE Individual VNFInstance ... Pre-conditions: the VNF instance resource is existing ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: VNFInstance deleted DELETE individual vnfInstance Check HTTP Response Status Code Is 204 @@ -108,13 +108,25 @@ DELETE Individual VNFInstance Conflict ... Pre-conditions: VNF instance resource is in INSTANTIATED state ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: Resources are not deleted DELETE individual vnfInstance Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails Check resource existence +Get Information about an individual VNF Instance - Not Found + [Documentation] Test ID: 7.3.1.2.9 + ... Test title: Get Information about an individual VNF Instance - Not Found + ... Test objective: The objective is to test that the retrieval of an individual VNF Instance fails when instance is not present. + ... Pre-conditions: none + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual vnfInstance + Check HTTP Response Status Code Is 404 + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index fbe80d6ad..6dce74a23 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -19,16 +19,16 @@ Post Individual VNF LCM Operation occurrences - Method not implemented Post Individual VNF LCM Operation occurrences Check HTTP Response Status Code Is 405 -Get information about multiple VNF instances +Get Individual VNF LCM Operation occurrences [Documentation] Test ID: 7.3.1.12.2 - ... Test title: Get information about multiple VNF instances + ... Test title: Get Individual VNF LCM Operation occurrences ... Test objective: The objective is to test that this method retrieve information about a VNF lifecycle management operation occurrence ... Pre-conditions: none ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Get multiple VNF instances + Get Individual VNF LCM Operation occurrences Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOcc @@ -68,12 +68,14 @@ PATCH Individual VNF LCM Operation occurrences - Method not implemented Delete multiple VNF instances Check HTTP Response Status Code Is 405 -*** Keywords *** -Get multiple VNF instances - Log Query status information about multiple VNF lifecycle management operation occurrences. - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file +Get Individual VNF LCM Operation occurrences - Not Found + [Documentation] Test ID: 7.3.1.12.6 + ... Test title: Get Individual VNF LCM Operation occurrences - Not Found + ... Test objective: The objective is to test that the retrieval of VNF lifecycle management operation occurrence fails when instance is not present. + ... Pre-conditions: none + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual VNF LCM Operation occurrences + Check HTTP Response Status Code Is 404 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 97f4aaf8e..1990c4dc4 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -17,8 +17,8 @@ Instantiate a vnfInstance ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST instantiate individual vnfInstance Check HTTP Response Status Code Is 202 Check Operation Occurrence Id existence @@ -31,8 +31,8 @@ Instantiate a vnfInstance Conflict ... Pre-conditions: VNF instance resource is in INSTANTIATED state ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST instantiate individual vnfInstance Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -41,11 +41,11 @@ GET Instantiate VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.3.3 ... Test title: GET Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET instantiate individual vnfInstance Check HTTP Response Status Code Is 405 @@ -53,11 +53,11 @@ PUT Instantiate VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.3.4 ... Test title: PUT Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PUT instantiate individual vnfInstance Check HTTP Response Status Code Is 405 @@ -65,11 +65,11 @@ PATCH Instantiate VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.3.5 ... Test title: PATCH Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PATCH instantiate individual vnfInstance Check HTTP Response Status Code Is 405 @@ -77,11 +77,11 @@ DELETE Instantiate VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.3.6 ... Test title: DELETE Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none DELETE instantiate individual vnfInstance Check HTTP Response Status Code Is 405 diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index 3666b24b3..c5dba8677 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -18,7 +18,7 @@ POST Operate a vnfInstance ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Operate VNF Check HTTP Response Status Code Is 202 Check Operation Occurrence Id existence @@ -31,12 +31,11 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Operate VNF Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - - + POST Operate a vnfInstance Not Found [Documentation] Test ID: 7.3.1.9.3 ... Test title: POST Operate a vnfInstance Not Found @@ -45,7 +44,7 @@ POST Operate a vnfInstance Not Found ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Operate VNF Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -58,7 +57,7 @@ GET Operate VNFInstance - Method not implemented ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none GET Operate VNF Check HTTP Response Status Code Is 405 @@ -70,7 +69,7 @@ PUT Operate VNFInstance - Method not implemented ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none PUT Operate VNF Check HTTP Response Status Code Is 405 @@ -82,7 +81,7 @@ PATCH Operate VNFInstance - Method not implemented ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none PATCH Operate VNF Check HTTP Response Status Code Is 405 @@ -94,7 +93,7 @@ DELETE Operate VNFInstance - Method not implemented ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none DELETE Operate VNF Check HTTP Response Status Code Is 405 diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index a6610845e..ff057a941 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -37,7 +37,6 @@ Post Retry operation task Conflict (Not-FAILED_TEMP) Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - Post Retry operation task Not Found [Documentation] Test ID: 7.3.1.13.3 ... Test title: Post Retry operation task Not Found diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index acf2f998b..4f5fc7688 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -37,7 +37,6 @@ POST Rollback operation task Conflict (Not-FAILED_TEMP) Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - POST Rollback operation task Not Found [Documentation] Test ID: 7.3.1.14.3 ... Test title: POST Rollback operation task Not Found diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index 3f0703386..d5f81b268 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -16,8 +16,8 @@ POST Scale a vnfInstance ... Pre-conditions: none ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST Scale vnfInstance Check HTTP Response Status Code Is 202 Check Operation Occurrence Id existence @@ -30,8 +30,8 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST Scale vnfInstance Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -41,11 +41,11 @@ POST Scale a vnfInstance Not Found [Documentation] Test ID: 7.3.1.4.3 ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed currently, because the VNF instance resource is not found. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST Scale vnfInstance Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails @@ -54,11 +54,11 @@ GET Scale VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.4.4 ... Test title: GET Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Scale vnfInstance Check HTTP Response Status Code Is 405 @@ -66,11 +66,11 @@ PUT Scale VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.4.5 ... Test title: PUT Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PUT Scale vnfInstance Check HTTP Response Status Code Is 405 @@ -78,11 +78,11 @@ PATCH Scale VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.4.6 ... Test title: PATCH Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PATCH Scale vnfInstance Check HTTP Response Status Code Is 405 @@ -90,10 +90,10 @@ DELETE Scale VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.4.7 ... Test title: DELETE Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: Resource are not deleted DELETE Scale vnfInstance Check HTTP Response Status Code Is 405 diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 56f1c4c05..b57e54726 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -15,8 +15,8 @@ POST Scale a vnfInstance to level ... Pre-conditions: none ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST Scale vnfInstance to level Check HTTP Response Status Code Is 202 Check Operation Occurrence Id existence @@ -29,8 +29,8 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST Scale vnfInstance to level Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -44,8 +44,8 @@ Scale a vnfInstance Not Found ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none POST Scale vnfInstance to level Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -55,11 +55,11 @@ GET Scale to level VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.5.4 ... Test title: GET Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Scale vnfInstance to level Check HTTP Response Status Code Is 405 @@ -67,11 +67,11 @@ PUT Scale to level VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.5.5 ... Test title: PUT Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PUT Scale vnfInstance to level Check HTTP Response Status Code Is 405 @@ -79,11 +79,11 @@ PATCH Scale to level VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.5.6 ... Test title: PATCH Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none PATCH Scale vnfInstance to level Check HTTP Response Status Code Is 405 @@ -91,10 +91,10 @@ DELETE Scale to level VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.5.7 ... Test title: DELETE Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: Resources are not deleted DELETE Scale vnfInstance to level Check HTTP Response Status Code Is 405 diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index d61927bee..94fa1a7f3 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -17,7 +17,7 @@ POST Terminate a vnfInstance ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Terminate VNF Check HTTP Response Status Code Is 202 Check Operation Occurrence Id existence @@ -30,7 +30,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none POST Terminate VNF Check HTTP Response Status Code Is 202 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index 8b817204b..af57f75f0 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -16,7 +16,7 @@ POST Create a new vnfInstance ... Pre-conditions: none ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: VNF instance created POST Create a new vnfInstance Check HTTP Response Status Code Is 201 @@ -26,11 +26,11 @@ GET information about multiple VNF instances [Documentation] Test ID: 7.3.1.1.2 ... Test title: GET information about multiple VNF instances ... Test objective: The objective is to query information about multiple VNF instances - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstances @@ -42,8 +42,8 @@ GET information about multiple VNF instances Bad Request Invalid attribute-based ... Pre-conditions: A VNF is instantiated, a bad filter selector (filter selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v2.6.1). ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances with bad attribute Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -56,8 +56,8 @@ GET information about multiple VNF instances Bad Request Invalid attribute selec ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v2.6.1). ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances with bad filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -66,11 +66,11 @@ GET information about multiple VNF instances with "all_fields" attribute selecto [Documentation] Test ID: 7.3.1.1.5 ... Test title: GET information about multiple VNF instances with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstances @@ -79,11 +79,11 @@ GET information about multiple VNF instances with "exclude_default" attribute se [Documentation] Test ID: 7.3.1.1.6 ... Test title: GET information about multiple VNF instances with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF instances - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances with exclude_default attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstances @@ -92,11 +92,11 @@ GET information about multiple VNF instances with "fields" attribute selector [Documentation] Test ID: 7.3.1.1.7 ... Test title: GET information about multiple VNF instances with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstances @@ -105,11 +105,11 @@ GET information about multiple VNF instances with "exclude_fields" attribute sel [Documentation] Test ID: 7.3.1.1.8 ... Test title: GET information about multiple VNF instances with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances with exclude_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstances @@ -118,47 +118,47 @@ PUT multiples VNFInstances - Method not implemented [Documentation] Test ID: 7.3.1.1.9 ... Test title: PUT multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: - PUT multiple vnfInstances + ... Applicability: none + ... Post-Conditions: none + PUT VNFInstances Check HTTP Response Status Code Is 405 PATCH multiples VNFInstances - Method not implemented [Documentation] Test ID: 7.3.1.1.10 ... Test title: PATCH multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: - PATCH multiple vnfInstances + ... Applicability: none + ... Post-Conditions: none + PATCH VNFInstances Check HTTP Response Status Code Is 405 DELETE VNFInstances - Method not implemented [Documentation] Test ID: 7.3.1.1.11 ... Test title: DELETE multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: resources are not deleted - DELETE multiple vnfInstances + DELETE VNFInstances Check HTTP Response Status Code Is 405 GET information about multiple VNF instances to get Paged Response [Documentation] Test ID: 7.3.1.1.12 ... Test title: GET information about multiple VNF instances to get Paged Response ... Test objective: The objective is to query information about multiple VNF instances to get Paged Response. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances Check HTTP Response Status Code Is 200 Check LINK in Header @@ -170,8 +170,21 @@ GET information about multiple VNF instances - Bad Request Response too Big ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v2.6.1). ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET multiple vnfInstances Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF instances with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 7.3.1.1.14 + ... Test title: GET information about multiple VNF instances with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF instances + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple vnfInstances with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is vnfInstances \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index bc4b649a6..8fde64a7e 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1,4 +1,5 @@ *** Settings *** +Library String Resource environment/configuration.txt Resource environment/variables.txt Resource environment/scaleVariables.txt @@ -324,7 +325,8 @@ 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}"} - ${body}= Get File jsons/changeVnfFlavourRequest.json + ${template}= Get File jsons/changeVnfFlavourRequest.json + ${body}= Format String ${template} newFlavourId=${newFlavourId} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -361,7 +363,8 @@ 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}"} - ${body}= Get File jsons/createVnfRequest.json + ${template}= Get File jsons/createVnfRequest.json + ${body}= Format String ${template} vnfdId=${vnfdId} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -417,6 +420,13 @@ GET multiple vnfInstances with fields attribute selector GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} +GET multiple vnfInstances with exclude_default and fields attribute selector + Log Query status information about multiple VNF instances, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -424,33 +434,33 @@ GET multiple vnfInstances with exclude_fields attribute selector GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} - -PUT VNFInstances - Method not implemented + +PUT VNFInstances log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances - Log Validate Status code - Integer response status 405 + ${output}= Output response + Set Suite Variable ${response} ${output} -PATCH VNFInstances - Method not implemented +PATCH VNFInstances log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances - Log Validate Status code - Integer response status 405 + ${output}= Output response + Set Suite Variable ${response} ${output} -DELETE VNFInstances - Method not implemented +DELETE VNFInstances log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances - Log Validate Status code - Integer response status 405 + ${output}= Output response + Set Suite Variable ${response} ${output} POST individual vnfInstance log Trying to perform a POST. This method should not be implemented @@ -494,7 +504,6 @@ DELETE individual vnfInstance Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - POST instantiate individual vnfInstance Log Trying to Instantiate a vnf Instance Set Headers {"Accept":"${ACCEPT}"} @@ -537,7 +546,8 @@ POST Scale vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json + ${template}= Get File jsons/scaleVnfRequest.json + ${body}= Format String ${template} scaletype=${scaletype} scaleAspectId=${scaleAspectId} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -582,7 +592,8 @@ POST Scale vnfInstance to level Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfToLevelRequest.json + ${template}= Get File jsons/scaleVnfToLevelRequest.json + ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -619,7 +630,8 @@ POST Terminate VNF Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/terminateVnfRequest.json + ${template}= Get File jsons/terminateVnfRequest.json + ${body}= Format String ${template} terminationType=${terminationType} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -657,7 +669,8 @@ POST Heal VNF Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/healVnfRequest.json + ${template}= Get File jsons/healVnfRequest.json + ${body}= Format String ${template} healingCause=${healingCause} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -695,7 +708,8 @@ POST Operate VNF Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/operateVnfRequest.json + ${template}= Get File jsons/operateVnfRequest.json + ${body}= Format String ${template} changeStateTo=${changeStateTo} stopType=${stopType} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -764,6 +778,13 @@ Get VNF LCM Operation occurrences with all_fields attribute selector GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} +Get VNF LCM Operation occurrences with exclude_default and fields attribute selector + Log Query status information about multiple VNF lifecycle management operation occurrences, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_default attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences using fields Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -813,7 +834,14 @@ Post Individual VNF LCM Operation occurrences Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - +Get Individual VNF LCM Operation occurrences + Log Query status information about multiple VNF lifecycle management operation occurrences. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Put multiple VNF instances log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -948,7 +976,8 @@ Post Create subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/lccnSubscriptionRequest.json + ${template}= Get File jsons/lccnSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_notification=${callback_notification} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -958,7 +987,8 @@ Post Create subscription - DUPLICATION Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/lccnSubscriptionRequest.json + ${template}= Get File jsons/lccnSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_notification=${callback_notification} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -968,7 +998,8 @@ Post Create subscription - NO-DUPLICATION Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/lccnSubscriptionRequest.json + ${template}= Get File jsons/lccnSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_notification=${callback_notification} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index dcdc287d2..4566da857 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -170,4 +170,17 @@ GET status information about multiple VNF LCM Operation OCC - Bad Request Respon ... Post-Conditions: none GET VNF LCM Operation occurrences Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +GET status information about multiple VNF LCM Operation OCC with "exclude_default" and "fields" + [Documentation] Test ID: 7.3.1.11.13 + ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" and "fields" + ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. + ... Pre-conditions: none + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get VNF LCM Operation occurrences with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 202 + Check HTTP Response Body Json Schema Is VnfLcmOpOccs \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 75ef919b5..2697018f6 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -31,6 +31,7 @@ ${patchBodyRequest} {} ${callback_uri} http://localhost ${callback_port} 9091 +${callback_notification} /notification ${callback_endpoint} /endpoint ${callback_endpoint_fwd} /endpoint/check ${callback_endpoint_error} /endpoint_404 @@ -42,3 +43,19 @@ ${notification_request} [] ${notification_response} [] ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +${vnfdId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f + +${scaletype} SCALE_OUT +${scaleAspectId} myAspect + +${instantiationLevelId} myNextLevel + +${newFlavourId} myFlavour_new + +${healingCause} a new cause + +${changeStateTo} STOPPED +${stopType} FORCEFUL + +${terminationType} GRACEFUL \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/changeVnfFlavourRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/changeVnfFlavourRequest.json index 5b52927e9..50d5eb5db 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/changeVnfFlavourRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/changeVnfFlavourRequest.json @@ -1,3 +1,3 @@ -{ - "newFlavourId": "myFlavour_new" -} \ No newline at end of file +{{ + "newFlavourId": "{newFlavourId}" +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 290151ae0..64ab8e55c 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -1,6 +1,6 @@ -{ - "vnfdId": "6fc3539c-e602-4afa-8e13-962fb5a7d81f", +{{ + "vnfdId": "{vnfdId}", "vnfInstanceName": "string", "vnfInstanceDescription": "string", - "metadata":{} -} \ No newline at end of file + "metadata":{{}} +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/healVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/healVnfRequest.json index 8981fa942..640cd60d9 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/healVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/healVnfRequest.json @@ -1,4 +1,4 @@ -{ - "cause": "a specific cause", - "additionalParams": {} -} \ No newline at end of file +{{ + "cause": "{healingCause}", + "additionalParams": {{}} +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json index f44d3cec5..3f094a639 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json @@ -6,5 +6,5 @@ ] } }, - "callbackUri": "http://localhost:9091/notification" + "callbackUri": "{callback_uri}{callback_notification}" } diff --git a/SOL003/VNFLifecycleManagement-API/jsons/operateVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/operateVnfRequest.json index 8f7b4a192..b878c437d 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/operateVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/operateVnfRequest.json @@ -1,5 +1,5 @@ -{ - "changeStateTo": "STOPPED", - "stopType": "FORCEFUL", - "additionalParams": {} -} +{{ + "changeStateTo": "{changeStateTo}", + "stopType": "{stopType}", + "additionalParams": {{}} +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfRequest.json index 09dc7dffb..142fad5a0 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfRequest.json @@ -1,4 +1,4 @@ -{ - "type": "SCALE_OUT", - "aspectId": "myAspect" -} \ No newline at end of file +{{ + "type": "{scaletype}", + "aspectId": "{scaleAspectId}" +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequest.json index 1c39a7bb5..ca0ea8d3f 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequest.json @@ -1,3 +1,3 @@ -{ - "instantiationLevelId": "myNextLevel" -} \ No newline at end of file +{{ + "instantiationLevelId": "{instantiationLevelId}" +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/terminateVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/terminateVnfRequest.json index 0a4f9592d..bc9553a2e 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/terminateVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/terminateVnfRequest.json @@ -1,4 +1,4 @@ -{ - "terminationType": "GRACEFUL", - "additionalParams": {} -} \ No newline at end of file +{{ + "terminationType": "{terminationType}", + "additionalParams": {{}} +}} \ No newline at end of file -- GitLab From ccdf4d58b1bf91b2ba8ef5f7f8f051f04dac3e05 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 6 Oct 2020 16:44:26 +0500 Subject: [PATCH 052/580] fix added --- .../jsons/lccnSubscriptionRequest.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json index 3f094a639..7624e81f2 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json @@ -1,10 +1,10 @@ -{ - "filter": { - "vnfInstanceSubscriptionFilter": { +{{ + "filter": {{ + "vnfInstanceSubscriptionFilter": {{ "vnfdIds": [ "6fc3539c-e602-4afa-8e13-962fb5a7d81f" ] - } - }, + }} + }}, "callbackUri": "{callback_uri}{callback_notification}" -} +}} -- GitLab From 4524d91508aadaea88b0bad4e0fa9114d54165ca Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 7 Oct 2020 15:05:28 +0500 Subject: [PATCH 053/580] template fix added --- .../VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index ceef45a66..d6f9a33d4 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -258,7 +258,7 @@ POST Scale vnfInstance 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} type=${scaleVnfRequesttype} aspectId=${scaleVnfRequestAspect} + ${body}= Format String ${template} scaleVnfRequesttype=${scaleVnfRequesttype} scaleVnfRequestAspect=${scaleVnfRequestAspect} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -420,7 +420,7 @@ POST Heal VNF Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/healVnfRequest.json - ${body}= Format String ${template} cause=${healingCause} + ${body}= Format String ${template} healingCause=${healingCause} Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -- GitLab From 9a2e5b95ae5094fc08c9d50e91a3980f6e9107ad Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 7 Oct 2020 16:09:06 +0500 Subject: [PATCH 054/580] template fix added --- SOL002/VNFPerformanceManagement-API/PMJobs.robot | 2 +- .../VNFPerformanceManagementKeywords.robot | 7 +++++-- .../environment/variables.txt | 4 +++- .../jsons/subscriptions.json | 10 +++++----- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 78883d757..27a851129 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -288,7 +288,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} callbackuri=${callback_uri} + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${callback_uri} POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index f131a7216..80ac22c2d 100644 --- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -1,4 +1,5 @@ *** Settings *** +Library String Resource environment/variables.txt Resource environment/subscriptions.txt Resource environment/individualSubscription.txt @@ -104,7 +105,8 @@ Send Post Request for VNF Performance Subscription Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - ${body_request}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body_request}= Format String ${template} callback_uri=${callback_uri} subscribe=${subscribe} POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} ${output}= Output response Set Suite Variable ${response} ${output} @@ -135,7 +137,8 @@ Send Post Request for Duplicated VNF Performance Subscription Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body_request}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body_request}= Format String ${template} callback_uri=${callback_uri} subscribe=${subscribe} POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/environment/variables.txt b/SOL002/VNFPerformanceManagement-API/environment/variables.txt index debf7b6a0..65cab3fbe 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/variables.txt @@ -25,4 +25,6 @@ ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies. ${response} http-response -${objectInstanceIds} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a \ No newline at end of file +${objectInstanceIds} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a + +${subscribe} /subscribe \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/jsons/subscriptions.json b/SOL002/VNFPerformanceManagement-API/jsons/subscriptions.json index 3fcc4e59b..7072ba326 100644 --- a/SOL002/VNFPerformanceManagement-API/jsons/subscriptions.json +++ b/SOL002/VNFPerformanceManagement-API/jsons/subscriptions.json @@ -1,6 +1,6 @@ -{ - "callbackUri": "http://127.0.0.1/subscribe", - "filter": { +{{ + "callbackUri": "{callback_uri}{subscribe}", + "filter": {{ "notificationTypes": ["ThresholdCrossedNotification"] - } -} \ No newline at end of file + }} +}} \ No newline at end of file -- GitLab From d223bac961cce30a0ace99bf44c338bcc67f1cd3 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 7 Oct 2020 17:57:55 +0500 Subject: [PATCH 055/580] fixx typos, issues and minor bugs --- .../CancelOperationTask.robot | 21 ++------- .../ChangeExternalVNFConnectivityTask.robot | 20 +++----- .../ChangeVNFFlavourTask.robot | 29 +----------- .../FailOperationTask.robot | 41 ++++------------- .../HealVNFTask.robot | 26 +---------- .../IndividualSubscription.robot | 14 ++---- .../IndividualVNFInstance.robot | 33 ++----------- .../IndividualVnfLcmOperationOccurence.robot | 8 ++-- .../InstantiateVNFTask.robot | 15 ++---- .../OperateVNFTask.robot | 28 +---------- .../RetryOperationTask.robot | 29 +++--------- .../RollbackOperationTask.robot | 33 ++++--------- .../ScaleVNFTask.robot | 26 +---------- .../ScaleVNFToLevelTask.robot | 29 +----------- .../Subscriptions.robot | 9 ++-- .../TerminateVNFTask.robot | 30 ++---------- .../VnfLcmOperationKeywords.robot | 46 +++++++++++++++---- .../VnfLcmOperationOccurences.robot | 12 ++--- .../environment/variables.txt | 4 +- .../jsons/lccnSubscriptionRequest.json | 2 +- 20 files changed, 110 insertions(+), 345 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot index 2ca0d781f..326819aa0 100644 --- a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -17,7 +17,7 @@ Post Cancel operation task ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: none + ... Post-Conditions: the resource is in FAILED_TEMP state POST Cancel operation task Check HTTP Response Status Code Is 202 Check operation resource state is FAILED_TEMP @@ -47,6 +47,7 @@ Post Cancel operation task Not Found ... Post-Conditions: none POST Cancel operation task Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Cancel operation task - Method not implemented [Documentation] Test ID: 6.3.5.16.4 @@ -101,20 +102,4 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - Integer response status 200 - -Launch another error handling action - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry - Integer response status 202 - -Check Fail not supported - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - # how to check if Fail is not supported? - - -Check resource FAILED_TEMP - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - String response body operationState FAILED_TEMP \ No newline at end of file + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index d8ad9fb08..48589116c 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -11,7 +11,7 @@ Suite Setup Check resource existence POST Change external VNF connectivity [Documentation] Test ID: 6.3.5.10.1 ... Test title: POST Change external VNF connectivity - ... Test objective: The objective is to test that POST method trigger a change in VNF external connectivity + ... Test objective: The objective is to test that POST method triggers a change in VNF external connectivity ... Pre-conditions: none ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE @@ -69,16 +69,16 @@ DELETE Change external VNF connectivity - Method not implemented DELETE Change External VNF Connectivity Check HTTP Response Status Code Is 405 -POST Operate a vnfInstance Conflict (Not-Instantiated) +POST Change external VNF connectivity Conflict [Documentation] Test ID: 6.3.5.10.6 - ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) + ... Test title: POST Change external VNF connectivity Conflict ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: none ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: - POST Operate VNF + ... Post-Conditions: none + POST Change External VNF Connectivity Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -88,12 +88,4 @@ Check resource existence Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} - Integer response status 202 \ No newline at end of file + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 3d662724c..d1a7d8634 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -34,7 +34,6 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - POST Change deployment flavour of a vnfInstance Not Found [Documentation] Test ID: 6.3.5.6.3 ... Test title: POST Change deployment flavour of a vnfInstance Not Found @@ -47,8 +46,7 @@ POST Change deployment flavour of a vnfInstance Not Found POST Change VNF deployment flavour Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails - - + GET Change deployment flavour VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.6.4 ... Test title: GET Change deployment flavour VNFInstance - Method not implemented @@ -103,27 +101,4 @@ Check resource existence Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource not instantiated - [Arguments] ${instanceId} - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${instanceId} - String response body instantiationState NOT_INSTANTIATED - -Check change flavour not supported - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - # how to check if change floavour is not supported? "flavourId" doesn't exist? - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} - Integer response status 202 \ No newline at end of file + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot index f1ebf86ce..071e57c71 100644 --- a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot @@ -10,7 +10,7 @@ Library JSONSchemaLibrary schemas/ POST Fail operation task [Documentation] Test ID: 6.3.5.15.1 ... Test title: POST Fail operation task - ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation if that operation has experienced a temporary failure + ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation if that operation has experienced a failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE @@ -22,10 +22,9 @@ POST Fail operation task Check operation resource state is FINALLY_FAILED POST Fail operation task Conflict (Not-FAILED_TEMP) - # TODO: Need to set the pre-condition of the test. VNF instance shall be in INSTANTIATED state [Documentation] Test ID: 6.3.5.15.2 ... Test title: POST Fail operation task Conflict (Not-FAILED_TEMP) - ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation if that operation has experienced a temporary failure + ... Test objective: The objective is to test that POST method cannot mark as "finally failed" due to confilct with the state of LCM Operation Occurrence ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE @@ -36,17 +35,17 @@ POST Fail operation task Conflict (Not-FAILED_TEMP) Check HTTP Response Body Json Schema Is ProblemDetails POST Fail operation task Not Found - # TODO: Need to create a vnfInstance which's instantiatedVnfInfo.scaleStatus is absent [Documentation] Test ID: 6.3.5.15.3 ... Test title: POST Fail operation task Not Found ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation because the operation is not supported - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none Post Fail operation Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Fail operation task - Method not implemented [Documentation] Test ID: 6.3.5.15.4 @@ -56,7 +55,7 @@ GET Fail operation task - Method not implemented ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Get Fail operation Check HTTP Response Status Code Is 405 @@ -68,7 +67,7 @@ PUT Fail operation task - Method not implemented ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Put Fail operation Check HTTP Response Status Code Is 405 @@ -80,7 +79,7 @@ PATCH Fail operation task - Method not implemented ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Patch Fail operation Check HTTP Response Status Code Is 405 @@ -92,28 +91,6 @@ DELETE Fail operation task - Method not implemented ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: VNF instance not deleted + ... Post-Conditions: none Delete Fail operation - Check HTTP Response Status Code Is 405 - -*** Keywords *** -Check resource existence - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - Integer response status 200 - -Launch another error handling action - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry - Integer response status 202 - -Check Fail not supported - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - # how to check if Fail is not supported? - -Check resource FAILED_TEMP - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - String response body operationState FAILED_TEMP \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot index c62f11df1..68b5014f6 100644 --- a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot @@ -22,7 +22,6 @@ POST Heal a vnfInstance Check Operation Occurrence Id POST Heal a vnfInstance Conflict (Not-Instantiated) - # TODO: Need to set the pre-condition of the test. VNF instance shall be in INSTANTIATED state [Documentation] Test ID: 6.3.5.8.2 ... Test title: POST Heal a vnfInstance (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. @@ -103,27 +102,4 @@ Check resource existence Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource not instantiated - [Arguments] ${instanceId} - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${instanceId} - String response body instantiationState NOT_INSTANTIATED - -Check heal not supported - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - # how to check if heal is not supported? "flavourId" doesn't exist? - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} - Integer response status 202 \ No newline at end of file + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot index f5a3692d6..03e5e173b 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -57,20 +57,12 @@ PATCH an individual subscription - Method not implemented DELETE an individual subscription [Documentation] Test ID: 6.3.5.18.5 - ... Test title: DELETE Individual Subscription - Method not implemented - ... Test objective: The objective is to test that the method is not implemented + ... Test title: DELETE Individual Subscription + ... Test objective: The objective is to test that the DELETE method removes an individual subscription ... Pre-conditions: none ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none Delete Individual subscription - Check HTTP Response Status Code Is 405 - -*** Keywords *** -Check resource existence - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} - Integer response status 200 \ No newline at end of file + Check HTTP Response Status Code Is 204 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 84f826b94..826228e15 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -66,12 +66,12 @@ PATCH Individual VNFInstance PATCH Individual VNFInstance Precondition failed [Documentation] Test ID: 6.3.5.2.5 ... Test title: PATCH Individual VNFInstance Precondition failed - ... Test objective: The objective is to create a new VNF instance resource - ... Pre-conditions: A precondition given in an HTTP request header is not fulfilled. Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity + ... Test objective: The objective is to that the modification of individual VNFInstance fails because precondition given in an HTTP request header is not fulfilled. Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. + ... Pre-conditions: none ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: VNF instance not modified + ... Post-Conditions: none PATCH individual vnfInstance Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails @@ -84,7 +84,7 @@ PATCH Individual VNFInstance Conflict ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: VNF instance not modified + ... Post-Conditions: none PATCH individual vnfInstance Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -112,27 +112,4 @@ DELETE Individual VNFInstance Conflict ... Post-Conditions: none DELETE individual vnfInstance Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -*** Keywords *** -Check resource existence - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource instantiated - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - String response body instantiationState INSTANTIATED - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfToLevelRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} - Integer response status 202 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index a083f949b..82ecf4c76 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -26,7 +26,7 @@ Get status information about multiple VNF instances ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none - Get multiple VNF instances + Get Individual VNF LCM OP occurrences Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOcc @@ -39,7 +39,7 @@ PUT status information about multiple VNF instances - Method not implemented ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none - PUT multiple vnfInstances + PUT Individual VNF LCM OP occurrences Check HTTP Response Status Code Is 405 PATCH status information about multiple VNF instances - Method not implemented @@ -51,7 +51,7 @@ PATCH status information about multiple VNF instances - Method not implemented ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none - PATCH multiple vnfInstances + PATCH Individual VNF LCM OP occurrences Check HTTP Response Status Code Is 405 DELETE status information about multiple VNF instances - Method not implemented @@ -63,5 +63,5 @@ DELETE status information about multiple VNF instances - Method not implemented ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none - DELETE multiple vnfInstances + DELETE Individual VNF LCM OP occurrences Check HTTP Response Status Code Is 405 diff --git a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 93855de0a..200f0c387 100644 --- a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -56,7 +56,7 @@ PUT Instantiate VNFInstance - Method not implemented ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: VNF instance not modified + ... Post-Conditions: none PUT instantiate individual vnfInstance Check HTTP Response Status Code Is 405 @@ -68,7 +68,7 @@ PATCH Instantiate VNFInstance - Method not implemented ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: VNF instance not modified + ... Post-Conditions: none PATCH instantiate individual vnfInstance Check HTTP Response Status Code Is 405 @@ -80,7 +80,7 @@ DELETE Instantiate VNFInstance - Method not implemented ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: VNF instance not deleted + ... Post-Conditions: none DELETE instantiate individual vnfInstance Check HTTP Response Status Code Is 405 @@ -90,11 +90,4 @@ Check resource existence Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource instantiated - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - String response body instantiationState INSTANTIATED \ No newline at end of file + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot index c450c897e..a27748bc1 100644 --- a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -25,7 +25,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) [Documentation] Test ID: 6.3.5.9.2 ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. - ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state + ... Pre-conditions: the VNF instance resource is in NOT_INSTANTIATED state ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none @@ -34,7 +34,6 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - POST Operate a vnfInstance Not Found [Documentation] Test ID: 6.3.5.9.3 ... Test title: POST Operate a vnfInstance Not Found @@ -102,27 +101,4 @@ Check resource existence Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource not instantiated - [Arguments] ${instanceId} - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${instanceId} - String response body instantiationState NOT_INSTANTIATED - -Check operate not supported - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - # how to check if operate is not supported? "flavourId" doesn't exist? - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} - Integer response status 202 \ No newline at end of file + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot index d1e1aca15..fff8c4816 100644 --- a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -23,7 +23,6 @@ POST Retry operation task Check Operation Occurrence Id POST Retry operation task Conflict (Not-FAILED_TEMP) - # TODO: Need to set the pre-condition of the test. VNF instance shall be in INSTANTIATED state [Documentation] Test ID: 6.3.5.13.2 ... Test title: POST Retry operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that the retry operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. (i.e. the VNF instance resource is not in FAILED_TEMP state) @@ -36,9 +35,7 @@ POST Retry operation task Conflict (Not-FAILED_TEMP) Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - POST Retry operation task Not Found - # TODO: Need to create a vnfInstance which's instantiatedVnfInfo.scaleStatus is absent [Documentation] Test ID: 6.3.5.13.3 ... Test title: POST Retry operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported @@ -49,6 +46,7 @@ POST Retry operation task Not Found ... Post-Conditions: none Post Retry operation Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Retry operation task - Method not implemented [Documentation] Test ID: 6.3.5.13.4 @@ -58,7 +56,7 @@ GET Retry operation task - Method not implemented ... Reference: Clause 5.4.14.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Get Retry operation Check HTTP Response Status Code Is 405 @@ -70,7 +68,7 @@ PUT Retry operation task - Method not implemented ... Reference: Clause 5.4.14.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Put Retry operation Check HTTP Response Status Code Is 405 @@ -82,7 +80,7 @@ PATCH Retry operation task - Method not implemented ... Reference: Clause 5.4.14.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Patch Retry operation Check HTTP Response Status Code Is 405 @@ -94,7 +92,7 @@ DELETE Retry operation task - Method not implemented ... Reference: Clause 5.4.14.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Delete Retry operation Check HTTP Response Status Code Is 405 *** Keywords *** @@ -102,19 +100,4 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - Integer response status 200 - -Launch another error handling action - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback - Integer response status 202 - -Check retry not supported - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - # how to check if retry is not supported? - -Check resource FAILED_TEMP - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - String response body operationState FAILED_TEMP \ No newline at end of file + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot index d9513b7ff..c92083878 100644 --- a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -12,7 +12,7 @@ Suite Setup Check resource existence POST Rollback operation task [Documentation] Test ID: 6.3.5.14.1 ... Test title: POST Rollback operation task - ... Test objective: The objective is to test that POST method The POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure + ... Test objective: The objective is to test that POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE @@ -23,7 +23,6 @@ POST Rollback operation task Check Operation Occurrence Id POST Rollback operation task Conflict (Not-FAILED_TEMP) - # TODO: Need to set the pre-condition of the test. VNF instance shall be in INSTANTIATED state [Documentation] Test ID: 6.3.5.14.2 ... Test title: POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method The POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure @@ -36,19 +35,18 @@ POST Rollback operation task Conflict (Not-FAILED_TEMP) Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - POST Rollback operation task Not Found - # TODO: Need to create a vnfInstance which's instantiatedVnfInfo.scaleStatus is absent [Documentation] Test ID: 6.3.5.14.3 ... Test title: POST Rollback operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none Post Rollback operation Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Rollback operation task - Method not implemented [Documentation] Test ID: 6.3.5.14.4 @@ -58,7 +56,7 @@ GET Rollback operation task - Method not implemented ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Get Rollback operation Check HTTP Response Status Code Is 405 @@ -70,7 +68,7 @@ PUT Rollback operation task - Method not implemented ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Put Rollback operation Check HTTP Response Status Code Is 405 @@ -82,7 +80,7 @@ PATCH Rollback operation task - Method not implemented ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Patch Rollback operation Check HTTP Response Status Code Is 405 @@ -94,7 +92,7 @@ DELETE Rollback operation task - Method not implemented ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Delete Rollback operation Check HTTP Response Status Code Is 405 @@ -103,19 +101,4 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - Integer response status 200 - -Launch another error handling action - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry - Integer response status 202 - -Check Rollback not supported - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - # how to check if Rollback is not supported? - -Check resource FAILED_TEMP - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - String response body operationState FAILED_TEMP \ No newline at end of file + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot index 6a5e732a1..4b9ebed98 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -34,7 +34,6 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - POST Scale a vnfInstance Not Found [Documentation] Test ID: 6.3.5.4.3 ... Test title: POST Scale a vnfInstance Not Found @@ -102,27 +101,4 @@ Check resource existence Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource not instantiated - [Arguments] ${instanceId} - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${instanceId} - String response body instantiationState NOT_INSTANTIATED - -Check scale not supported - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - Missing response body instantiatedVnfInfo scaleStatus - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfToLevelRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} - Integer response status 202 \ No newline at end of file + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 7648c3756..75efe34bf 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -33,7 +33,6 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - POST Scale a vnfInstance Not Found [Documentation] Test ID: 6.3.5.5.3 ... Test title: POST Scale a vnfInstance Not Found @@ -46,8 +45,7 @@ POST Scale a vnfInstance Not Found POST Scale vnfInstance to level Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails - - + GET Scale to level VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.5.4 ... Test title: GET Scale to level VNFInstance - Method not implemented @@ -102,27 +100,4 @@ Check resource existence Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource not instantiated - [Arguments] ${instanceId} - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${instanceId} - String response body instantiationState NOT_INSTANTIATED - - Check scale to level not supported - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - Missing response body instantiatedVnfInfo scaleStatus - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} - Integer response status 202 + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot index ad77de443..6f8cbd6ed 100644 --- a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot @@ -18,7 +18,7 @@ POST Create a new subscription ... Post-Conditions: in response header Location shall not be null Post Create subscription Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is Subscription + Check HTTP Response Body Json Schema Is subscription POST Create a new Subscription - DUPLICATION [Documentation] Test ID: 6.3.5.17.2 @@ -31,7 +31,7 @@ POST Create a new Subscription - DUPLICATION ... Post-Conditions: in response header Location shall not be null Post Create subscription - DUPLICATION Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is Subscription + Check HTTP Response Body Json Schema Is subscription POST Create a new Subscription - NO-DUPLICATION [Documentation] Test ID: 6.3.5.17.3 @@ -198,7 +198,7 @@ GET information about multiple subscriptions to get Paged Response ... Post-Conditions: Get subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET information about multiple subscriptions for Bad Request Response too big [Documentation] Test ID: 6.3.5.17.16 @@ -211,5 +211,4 @@ GET information about multiple subscriptions for Bad Request Response too big ... Post-Conditions: Get subscriptions Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot index 914af7811..72690a90b 100644 --- a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -25,7 +25,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) [Documentation] Test ID: 6.3.5.7.2 ... Test title: POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. - ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state + ... Pre-conditions: VNF instance resource is in NOT_INSTANTIATED state ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none @@ -33,8 +33,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) POST Terminate VNF Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - - + GET Terminate VNFInstance - Method not implemented [Documentation] Test ID: 6.3.5.7.3 ... Test title: GET Terminate VNFInstance - Method not implemented @@ -89,27 +88,4 @@ Check resource existence Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource not instantiated - [Arguments] ${instanceId} - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${instanceId} - String response body instantiationState NOT_INSTANTIATED - -Check change flavour not supported - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} - # how to check if change floavour is not supported? "flavourId" doesn't exist? - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} - Integer response status 202 \ No newline at end of file + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index d6f9a33d4..8b5b5d7de 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -587,7 +587,34 @@ Post Individual VNF LCM OP occurrences Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - +Get Individual VNF LCM OP occurrences + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Put Individual VNF LCM OP occurrences + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Patch Individual VNF LCM OP occurrences + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Delete Individual VNF LCM OP occurrences + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Post Retry operation Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -661,7 +688,7 @@ Delete Rollback operation ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Fail operation - Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Log mark as Failed a VNF lifecycle operation if that operation has experienced a failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail @@ -740,7 +767,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_endpoint=${callback_endpoint} + ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -751,7 +778,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_endpoint=${callback_endpoint} + ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -762,7 +789,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_endpoint=${callback_endpoint} + ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -942,10 +969,7 @@ GET test endpoint Sleep ${sleep_interval} Verify Mock Expectation ${req} Clear Requests ${callback_endpoint} -Check LINK in Header - ${linkURL}= Get Value From Json ${response['headers']} $..Link - Should Not Be Empty ${linkURL} - + Check Subscription resource exist Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -988,4 +1012,8 @@ Get VNF LCM Operation occurrences with exclude_fields attribute selector GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} + +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 diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index 1af91b51a..687c6f711 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -59,7 +59,7 @@ GET status information about multiple VNF LCM Operation occurrences Bad Request Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET status information about multiple VNF LCM Operation OCC with "all_fields" +GET status information about multiple VNF LCM Operation occurrences with "all_fields" [Documentation] Test ID: 6.3.5.11.5 ... Test title: GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. @@ -72,7 +72,7 @@ GET status information about multiple VNF LCM Operation OCC with "all_fields" Check HTTP Response Status Code Is 202 Check HTTP Response Body Json Schema Is VnfLcmOpOccs -GET status information about multiple VNF LCM Operation OCC with "exlude_default" +GET status information about multiple VNF LCM Operation occurrences with "exlude_default" [Documentation] Test ID: 6.3.5.11.6 ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. @@ -85,7 +85,7 @@ GET status information about multiple VNF LCM Operation OCC with "exlude_default Check HTTP Response Status Code Is 202 Check HTTP Response Body Json Schema Is VnfLcmOpOccs -GET status information about multiple VNF LCM Operation OCC with "fields" +GET status information about multiple VNF LCM Operation occurrences with "fields" [Documentation] Test ID: 6.3.5.11.7 ... Test title: GET status information about multiple VNF LCM Operation OCC with "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. @@ -98,7 +98,7 @@ GET status information about multiple VNF LCM Operation OCC with "fields" Check HTTP Response Status Code Is 202 Check HTTP Response Body Json Schema Is VnfLcmOpOccs -GET status information about multiple VNF LCM Operation OCC with "exclude_fields" +GET status information about multiple VNF LCM Operation occurrences with "exclude_fields" [Documentation] Test ID: 6.3.5.11.8 ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. @@ -158,7 +158,7 @@ GET status information about multiple VNF LCM operation occurances to get Paged ... Post-Conditions: none GET VNF LCM OP occurrences Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET status information about multiple VNF LCM Operation occurrences Bad Request Response too big [Documentation] Test ID: 6.3.5.11.13 @@ -173,7 +173,7 @@ GET status information about multiple VNF LCM Operation occurrences Bad Request Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET status information about multiple VNF LCM Operation OCC with "exlude_default" and "fields" +GET status information about multiple VNF LCM Operation occurrences with "exlude_default" and "fields" [Documentation] Test ID: 6.3.5.11.14 ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" and "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index ef3d9d5ae..71e5445a3 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -73,4 +73,6 @@ ${terminationType} GRACEFUL ${healingCause} healingCause -${changeStateTo} STOPPED \ No newline at end of file +${changeStateTo} STOPPED + +${vnfdIds} 6fc3539c-e602-4afa-8e13-962fb5a7d81f \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json index 1411fe3b4..b28685555 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json @@ -2,7 +2,7 @@ "filter": {{ "vnfInstanceSubscriptionFilter": {{ "vnfdIds": [ - "6fc3539c-e602-4afa-8e13-962fb5a7d81f" + "{vnfdIds}" ] }} }}, -- GitLab From 2135fca55e114edfc5862f9ab22c2ebaff0d75ff Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 8 Oct 2020 12:57:59 +0500 Subject: [PATCH 056/580] templating and minor bugs fix added --- .../IndividualPmJob.robot | 7 +- .../IndividualReport.robot | 33 +--- .../IndividualSubscription.robot | 100 ---------- .../IndividualThreshold.robot | 17 +- .../VNFPerformanceManagement-API/PMJobs.robot | 26 ++- .../Subscriptions.robot | 176 ------------------ .../Thresholds.robot | 4 +- .../environment/individualSubscription.txt | 6 - .../environment/pmJobs.txt | 4 +- .../environment/subscriptions.txt | 7 - .../environment/thresholds.txt | 4 +- .../environment/variables.txt | 4 +- .../jsons/CreatePmJobRequest.json | 10 +- .../jsons/CreateThresholdRequest.json | 14 +- .../jsons/subscriptions.json | 6 - .../schemas/Subscriptions.schema.json | 1 - 16 files changed, 61 insertions(+), 358 deletions(-) delete mode 100644 SOL003/VNFPerformanceManagement-API/IndividualSubscription.robot delete mode 100644 SOL003/VNFPerformanceManagement-API/Subscriptions.robot delete mode 100644 SOL003/VNFPerformanceManagement-API/environment/individualSubscription.txt delete mode 100644 SOL003/VNFPerformanceManagement-API/environment/subscriptions.txt delete mode 100644 SOL003/VNFPerformanceManagement-API/jsons/subscriptions.json delete mode 100644 SOL003/VNFPerformanceManagement-API/schemas/Subscriptions.schema.json diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index 8c2fc2979..6b86804c4 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -58,6 +58,7 @@ DELETE Individual VNF Performance Job with invalid resource identifier ... Post-Conditions: none Send Delete request for individual VNF Performance Job with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails POST Individual VNF Performance Job - Method not implemented [Documentation] Test ID: 7.3.4.2.5 @@ -67,10 +68,9 @@ POST Individual VNF Performance Job - Method not implemented ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Job is not created on the VNFM + ... Post-Conditions: none Send Post request for individual VNF Performance Job Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Job is not Created PUT Individual VNF Performance Job - Method not implemented [Documentation] Test ID: 7.3.4.2.6 @@ -80,10 +80,9 @@ PUT Individual VNF Performance Job - Method not implemented ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Job is not modified by the operation + ... Post-Conditions: none Send Put request for individual VNF Performance Job Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Job is Unmodified (Implicit) PATCH Individual VNF Performance Job [Documentation] Test ID: 7.3.4.2.7 diff --git a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot index 6a4de49d0..d3e24fa9e 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot @@ -30,6 +30,7 @@ Get Individual Performance Report with invalid resource endpoint ... Post-Conditions: none Get Individual Performance Report with invalid resource endpoint Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails POST Individual Performance Report - Method not implemented [Documentation] Test ID: 7.3.4.3.3 @@ -39,10 +40,9 @@ POST Individual Performance Report - Method not implemented ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance report is not created on the VNFM + ... Post-Conditions: none Send Post request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition VNF Individual Performance Report is not Created PUT Individual Performance Report - Method not implemented [Documentation] Test ID: 7.3.4.3.4 @@ -52,10 +52,9 @@ PUT Individual Performance Report - Method not implemented ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance report is not modified by the operation + ... Post-Conditions: none Send Put request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition VNF Individual Performance Report is Unmodified (Implicit) PATCH Individual Performance Report - Method not implemented [Documentation] Test ID: 7.3.4.3.5 @@ -65,10 +64,9 @@ PATCH Individual Performance Report - Method not implemented ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance report is not modified by the operation + ... Post-Conditions: none Send Patch request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition VNF Individual Performance Report is Unmodified (Implicit) DELETE Individual Performance Report - Method not implemented [Documentation] Test ID: 7.3.4.3.6 @@ -78,10 +76,9 @@ DELETE Individual Performance Report - Method not implemented ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance report is not deleted by the operation + ... Post-Conditions: none Send Delete request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition VNF Individual Performance Report Exists *** Keywords *** Get Individual Performance Report @@ -134,26 +131,6 @@ Send Delete request for Individual Performance Report ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition VNF Individual Performance Report Exists - Log Checking that report still exists - Get Individual Performance Report - -Check Postcondition VNF Individual Performance Report is not Created - Log Trying to get a new report - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${newReportId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - -Check Postcondition VNF Individual Performance Report is Unmodified (Implicit) - Log Check Postcondition VNF PM job is not modified - Get Individual Performance Report - Log Check Response matches original VNF report - ${report}= evaluate json.loads('''${response['body']}''') json - Should Be Equal ${origResponse['body']['entries'][0]['objectInstanceId']} ${report['entries'][0]['objectInstanceId']} - Check HTTP Response Status Code Is [Arguments] ${expected_status} ${status}= Convert To Integer ${expected_status} diff --git a/SOL003/VNFPerformanceManagement-API/IndividualSubscription.robot b/SOL003/VNFPerformanceManagement-API/IndividualSubscription.robot deleted file mode 100644 index 2a5bf91ae..000000000 --- a/SOL003/VNFPerformanceManagement-API/IndividualSubscription.robot +++ /dev/null @@ -1,100 +0,0 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Resource environment/individualSubscription.txt -Resource VNFPerformanceManagementKeywords.robot - -*** Test Cases *** -GET Individual VNF Performance Subscription - [Documentation] Test ID: 7.3.4.7.1 - ... Test title: GET Individual VNF Performance Subscription - ... Test objective: The objective is to test the retrieval of individual VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get Individual VNF Performance Subscription - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body Subscription Identifier matches the requested Subscription - -GET Individual VNF Performance Subscription with invalid resource identifier - [Documentation] Test ID: 7.3.4.7.2 - ... Test title: GET Individual VNF Performance Subscription with invalid resource identifier - ... Test objective: The objective is to test that the retrieval of an individual VNF performance subscription fails when using an invalid resource identifier - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET individual VNF Performance Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 - -DELETE Individual VNF Performance Subscription - [Documentation] Test ID: 7.3.4.7.3 - ... Test title: DELETE Individual VNF Performance Subscription - ... Test objective: The objective is to test the deletion of an individual VNF performance subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance Subscription is not available anymore in the VNFM - Send Delete request for individual VNF Performance Subscription - Check HTTP Response Status Code Is 204 - Check Postcondition VNF Performance Subscription is Deleted - -DELETE Individual VNF Performance Subscription with invalid resource identifier - [Documentation] Test ID: 7.3.4.7.4 - ... Test title: DELETE Individual VNF Performance Subscription with invalid resource identifier - ... Test objective: The objective is to test that the deletion of an individual VNF performance subscription fails when using an invalid resource identifier - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Send Delete request for individual VNF Performance Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 - -POST Individual VNF Performance Subscription - Method not implemented - [Documentation] Test ID: 7.3.4.7.5 - ... Test title: POST Individual VNF Performance Subscription - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Subscription - ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance Subscription is not created on the VNFM - Send Post request for individual VNF Performance Subscription - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscription is not Created - -PUT Individual VNF Performance Subscription - Method not implemented - [Documentation] Test ID: 7.3.4.7.6 - ... Test title: PUT Individual VNF Performance Subscription - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance subscription is not modified by the operation - Send Put request for individual VNF Performance Threshold - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscription is Unmodified (Implicit) - -PATCH Individual VNF Performance Subscription - Method not implemented - [Documentation] Test ID: 7.3.4.7.7 - ... Test title: PATCH Individual VNF Performance Subscription - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Performance subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance subscription is not modified by the operation - Send Patch request for individual VNF Performance Threshold - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscription is Unmodified (Implicit) - diff --git a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot index fb40dd197..a1fd48b1d 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -32,6 +32,7 @@ GET Individual Threshold with invalid resource identifier ... Post-Conditions: none GET individual VNF Performance Threshold with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails DELETE Individual Threshold [Documentation] Test ID: 7.3.4.5.3 @@ -57,6 +58,7 @@ DELETE Individual Threshold with invalid resource identifier ... Post-Conditions: none Send Delete request for individual VNF Performance Threshold with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails POST Individual Threshold - Method not implemented [Documentation] Test ID: 7.3.4.5.5 @@ -66,10 +68,9 @@ POST Individual Threshold - Method not implemented ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Threshold is not created on the VNFM + ... Post-Conditions: none Send Post request for individual VNF Performance Threshold Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Threshold is not Created PUT Individual Threshold - Method not implemented [Documentation] Test ID: 7.3.4.5.6 @@ -79,10 +80,9 @@ PUT Individual Threshold - Method not implemented ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Threshold is not modified by the operation + ... Post-Conditions: none Send Put request for individual VNF Performance Threshold Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Threshold is Unmodified (Implicit) PATCH Individual Threshold [Documentation] Test ID: 7.3.4.5.7 @@ -176,15 +176,6 @@ Check Postcondition VNF Performance Threshold is Unmodified (Implicit) ${threshold}= evaluate json.loads('''${response['body']}''') json Should Be Equal ${origresponse['body']['id']} ${threshold.id} Should Be Equal ${origresponse['body']['criteria']} ${threshold.criteria} - -Check Postcondition VNF Performance Threshold is not Created - Log Trying to get a new Threshold - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${newThresholdId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 Check Postcondition VNF Performance Threshold is Deleted Log Check Postcondition Threshold is deleted diff --git a/SOL003/VNFPerformanceManagement-API/PMJobs.robot b/SOL003/VNFPerformanceManagement-API/PMJobs.robot index 13a3c7634..45188503d 100644 --- a/SOL003/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL003/VNFPerformanceManagement-API/PMJobs.robot @@ -195,6 +195,20 @@ GET VNF Performance Monitoring Jobs - Bad Request Response too Big Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails +GET all VNF Performance Monitoring Jobs with fields and exclude_default attribute selector + [Documentation] Test ID: 7.3.4.1.15 + ... Test title: GET all VNF Performance Monitoring Jobs with fields and exclude_default attribute selector + ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs fields and exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued fields selector + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM supports the use of fields and exclude_fields attribute selector + ... Post-Conditions: none + GET VNF Performance Monitoring Jobs with fields and exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJobs + Check HTTP Response Body PmJobs Matches the requested fields selector + *** Keywords *** GET all VNF Performance Monitoring Jobs Log Trying to get all PM Jobs present in the VNFM @@ -237,6 +251,15 @@ GET VNF Performance Monitoring Jobs with fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} +GET VNF Performance Monitoring Jobs with fields and exclude_default attribute selector + Log Trying to get all VNF Packages present in the VNFM, using filter params + Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + GET VNF Performance Monitoring Jobs with exclude_fields attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' @@ -267,7 +290,8 @@ Send Post Request Create new VNF Performance Monitoring Job Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/CreatePmJobRequest.json + ${template}= Get File jsons/CreatePmJobRequest.json + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFPerformanceManagement-API/Subscriptions.robot b/SOL003/VNFPerformanceManagement-API/Subscriptions.robot deleted file mode 100644 index cee773e79..000000000 --- a/SOL003/VNFPerformanceManagement-API/Subscriptions.robot +++ /dev/null @@ -1,176 +0,0 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Resource VNFPerformanceManagementKeywords.robot -Resource environment/subscriptions.txt -Library MockServerLibrary -Library Process -Suite Setup Create Sessions -Suite Teardown Terminate All Processes kill=true - -*** Test Cases *** -GET all VNF Performance Subscriptions - [Documentation] Test ID: 7.3.4.6.1 - ... Test title: GET all VNF Performance Subscriptions - ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions and perform a JSON schema validation of the returned subscriptions data structure - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get all VNF Performance Subscriptions - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscriptions - -GET VNF Performance Subscriptions with attribute-based filter - [Documentation] Test ID: 7.3.4.6.2 - ... Test title: GET VNF Performance Subscriptions with attribute-based filter - ... Test objective: The objective is to test the retrieval of VNF performance subscriptions using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with attribute-based filters - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscriptions - Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter - -GET VNF Performance Management Subscriptions with invalid attribute-based filter - [Documentation] Test ID: 7.3.4.6.3 - ... Test title: GET VNF Performance Management Subscriptions with invalid attribute-based filter - ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with invalid attribute-based filters - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET VNF Performance Subscriptions with invalid resource endpoint - [Documentation] Test ID: 7.3.4.6.4 - ... Test title: GET VNF Performance Subscriptions with invalid resource endpoint - ... Test objective: The objective is to test that the retrieval of all VNF performance subscriptions fails when using invalid resource endpoint. - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with invalid resource endpoint - Check HTTP Response Status Code Is 404 - -Create new VNF Performance subscription - [Documentation] Test ID: 7.3.4.6.5 - ... Test title: Create new VNF Performance subscription - ... Test objective: The objective is to test the creation of a new VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF performance subscription is successfully set and it matches the issued subscription - Send Post Request for VNF Performance Subscription - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription - Check Postcondition VNF Performance Subscription Is Set - - -Create duplicated VNF Performance subscription with VNFM not creating duplicated subscriptions - [Tags] no-duplicated-subs - [Documentation] Test ID: 7.3.4.6.6 - ... Test title: Create duplicated VNF Performance subscription with VNFM not creating duplicated subscriptions - ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF performance subscription and check that no new subscription is created by the VNFM and a link to the original subscription is returned - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: The VNFM does not support the creation of duplicated subscriptions - ... Post-Conditions: The existing VNF performance subscription returned is available in the VNFM - Send Post Request for Duplicated VNF Performance Subscription - Check HTTP Response Status Code Is 303 - Check HTTP Response Body Is Empty - Check HTTP Response Header Contains Location - Check Postcondition Subscription Resource Returned in Location Header Is Available - -Create duplicated VNF Performance subscription with VNFM creating duplicated subscriptions - [Tags] duplicated-subs - [Documentation] Test ID: 7.3.4.6.7 - ... Test title: Create duplicated VNF Performance subscription with VNFM creating duplicated subscriptions - ... Test objective: The objective is to test the creation of a duplicated VNF performance subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: The VNFM supports the creation of duplicated subscriptions - ... Post-Conditions: The duplicated VNF performance subscription is successfully set and it matches the issued subscription - Send Post Request for Duplicated VNF Performance Subscription - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription - Check Postcondition VNF Performance Subscription Is Set - -PUT VNF Performance Subscriptions - Method not implemented - [Documentation] Test ID: 7.3.4.6.8 - ... Test title: PUT VNF Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to modify VNF performance subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Send Put Request for VNF Performance Subscriptions - Check HTTP Response Status Code Is 405 - -PATCH VNF Performance Subscriptions - Method not implemented - [Documentation] Test ID: 7.3.4.6.9 - ... Test title: PATCH VNF Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update VNF performance subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Send Patch Request for VNF Performance Subscriptions - Check HTTP Response Status Code Is 405 - -DELETE VNF Performance Subscriptions - Method not implemented - [Documentation] Test ID: 7.3.4.6.10 - ... Test title: DELETE VNF Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF performance subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF performance subscriptions are not deleted by the failed operation - Send Delete Request for VNF Performance Subscriptions - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscriptions Exists - -GET all VNF Performance Subscriptions as Paged Response - [Documentation] Test ID: 7.3.4.6.11 - ... Test title: GET all VNF Performance Subscriptions as Paged Response - ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions as Paged Response. - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get all VNF Performance Subscriptions - Check HTTP Response Status Code Is 200 - Check LINK in Header - -GET VNF Performance Management Subscriptions - Bad Request Response too Big - [Documentation] Test ID: 7.3.4.6.12 - ... Test title: GET VNF Performance Management Subscriptions - Bad Request Response too Big - ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get all VNF Performance Subscriptions - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/Thresholds.robot b/SOL003/VNFPerformanceManagement-API/Thresholds.robot index c1d7f0471..c3dc62f94 100644 --- a/SOL003/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL003/VNFPerformanceManagement-API/Thresholds.robot @@ -1,4 +1,5 @@ *** Settings *** +Library String Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Library JSONLibrary @@ -174,7 +175,8 @@ Send Post Request Create new Performance Threshold Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${request}= Get File jsons/CreateThresholdRequest.json + ${template}= Get File jsons/CreateThresholdRequest.json + ${request}= Format String ${template} objectInstanceIds=${objectInstanceIds} POST ${apiRoot}/${apiName}/${apiVersion}/thresholds ${request} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFPerformanceManagement-API/environment/individualSubscription.txt b/SOL003/VNFPerformanceManagement-API/environment/individualSubscription.txt deleted file mode 100644 index 921749ffd..000000000 --- a/SOL003/VNFPerformanceManagement-API/environment/individualSubscription.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa -${erroneousSubscriptionId} erroneousSubscriptionId -${newSubscriptionId} newSubsciptionId -${response} httpresponse -${origResponse} httpresponse \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/environment/pmJobs.txt b/SOL003/VNFPerformanceManagement-API/environment/pmJobs.txt index 9891d3fed..bccab232a 100644 --- a/SOL003/VNFPerformanceManagement-API/environment/pmJobs.txt +++ b/SOL003/VNFPerformanceManagement-API/environment/pmJobs.txt @@ -1,5 +1,7 @@ +*** Settings *** +Resource variables.txt *** Variables *** -${POS_FILTER} objectInstanceIds=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${POS_FILTER} objectInstanceIds=${objectInstanceIds} ${NEG_FILTER} criteriaPmJob=erroneousAttributeName ${fields} criteria,objectInstanceIds ${response} httpresponse diff --git a/SOL003/VNFPerformanceManagement-API/environment/subscriptions.txt b/SOL003/VNFPerformanceManagement-API/environment/subscriptions.txt deleted file mode 100644 index 46984c68e..000000000 --- a/SOL003/VNFPerformanceManagement-API/environment/subscriptions.txt +++ /dev/null @@ -1,7 +0,0 @@ -*** Variables *** -${callbackUri_Sub} http://172.22.1.7:9091/vnfpm/subscriptions -${filter_ok} callbackUri=${callbackUri_Sub} -${filter_ko} erroneousFilter=erroneous -${total_polling_time} 2 min -${polling_interval} 10 sec -${response} httpresponse diff --git a/SOL003/VNFPerformanceManagement-API/environment/thresholds.txt b/SOL003/VNFPerformanceManagement-API/environment/thresholds.txt index a2b025eef..18b3f32f4 100644 --- a/SOL003/VNFPerformanceManagement-API/environment/thresholds.txt +++ b/SOL003/VNFPerformanceManagement-API/environment/thresholds.txt @@ -1,4 +1,6 @@ +*** Settings *** +Resource variables.txt *** Variables *** -${FILTER_OK} objectInstanceId=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${FILTER_OK} objectInstanceId=${objectInstanceIds} ${FILTER_KO} criterias=erroneousFilter ${response}= httpresponse \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/environment/variables.txt b/SOL003/VNFPerformanceManagement-API/environment/variables.txt index a2794c309..170e9cee2 100644 --- a/SOL003/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL003/VNFPerformanceManagement-API/environment/variables.txt @@ -30,4 +30,6 @@ ${polling_interval} 10 sec ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -${response} \ No newline at end of file +${response} + +${objectInstanceIds} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json b/SOL003/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json index 6a21ba34f..4dbfc7c6c 100644 --- a/SOL003/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json +++ b/SOL003/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json @@ -1,9 +1,9 @@ -{ - "objectInstanceIds" : ["1f50d68b-82e8-4deb-bd40-c934d4d1ac0a"], - "criteria" : { +{{ + "objectInstanceIds" : ["{objectInstanceIds}"], + "criteria" : {{ "performanceMetric": [], "performanceMetricGroup": [], "collectionPeriod": 10, "reportingPeriod": 30 - } -} \ No newline at end of file + }} +}} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json b/SOL003/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json index 1e58c2bac..c7cfee14f 100644 --- a/SOL003/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json +++ b/SOL003/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json @@ -1,12 +1,12 @@ -{ - "objectInstanceIds" : "1f50d68b-82e8-4deb-bd40-c934d4d1ac0a", - "criteria" : { +{{ + "objectInstanceIds" : "{objectInstanceIds}", + "criteria" : {{ "performanceMetric": "cpu_util", "thresholdType": "SIMPLE", - "simpleThresholdDetails": { + "simpleThresholdDetails": {{ "thresholdValue": 10, "hysteresis": 50 - } + }} - } -} \ No newline at end of file + }} +}} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/jsons/subscriptions.json b/SOL003/VNFPerformanceManagement-API/jsons/subscriptions.json deleted file mode 100644 index 128c42e1a..000000000 --- a/SOL003/VNFPerformanceManagement-API/jsons/subscriptions.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "callbackUri": "http://172.22.1.7:9091/vnfpm/subscriptions", - "filter": { - "notificationTypes": ["ThresholdCrossedNotification"] - } -} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/schemas/Subscriptions.schema.json b/SOL003/VNFPerformanceManagement-API/schemas/Subscriptions.schema.json deleted file mode 100644 index fefb142da..000000000 --- a/SOL003/VNFPerformanceManagement-API/schemas/Subscriptions.schema.json +++ /dev/null @@ -1 +0,0 @@ -{ "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 -- GitLab From b0b789ebde7c4fcfb8a0f0d3eb55ab0d9110130f Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 8 Oct 2020 15:37:13 +0500 Subject: [PATCH 057/580] reference updated --- .../ApiVersion.robot | 20 +- .../IndividualPmJob.robot | 16 +- .../IndividualReport.robot | 12 +- .../IndividualThreshold.robot | 16 +- .../VNFPerformanceManagement-API/PMJobs.robot | 30 +- .../PerformanceManagementNotification.robot | 4 +- .../Thresholds.robot | 20 +- .../VNFPerformanceManagementKeywords.robot | 308 +----------------- 8 files changed, 60 insertions(+), 366 deletions(-) diff --git a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot index efc29bcee..6b87e7997 100644 --- a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index 6b86804c4..122cb090c 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -12,7 +12,7 @@ GET individual VNF Performance Job ... Test title: Get individual VNF Performance Job ... Test objective: The objective is to test the retrieval of an individual VNF performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET individual VNF Performance Job with invalid resource identifier ... Test title: Get individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ DELETE Individual VNF Performance Job ... Test title: Delete Individual VNF Performance Job ... Test objective: The objective is to test the deletion of an individual VNF performance monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is no more available in the VNFM @@ -52,7 +52,7 @@ DELETE Individual VNF Performance Job with invalid resource identifier ... Test title: Delete individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF performance monitoring job fails when using an invalid resource identifier ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ POST Individual VNF Performance Job - Method not implemented ... Test title: POST Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Monitoring Job ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PUT Individual VNF Performance Job - Method not implemented ... Test title: PUT Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance Monitoring Job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ PATCH Individual VNF Performance Job ... Test title: PATCH Individual VNF Performance Job ... Test objective: The objective is to test that PATCH method allows to modify individual performace management job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -102,7 +102,7 @@ PATCH Individual VNF Performance Job - Precondition failed ... Test title: PATCH Individual VNF Performance Job - Precondition failed ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation diff --git a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot index d3e24fa9e..a3d5d6347 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot @@ -11,7 +11,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual VNF performance report associated to a monitoring job fails when using an invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ POST Individual Performance Report - Method not implemented ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PUT Individual Performance Report - Method not implemented ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ PATCH Individual Performance Report - Method not implemented ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ DELETE Individual Performance Report - Method not implemented ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot index a1fd48b1d..76bc00b86 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -12,7 +12,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance threshold fails when using an invalid resource identifier ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ DELETE Individual Threshold ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not available anymore in the VNFM @@ -52,7 +52,7 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ POST Individual Threshold - Method not implemented ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Threshold ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PUT Individual Threshold - Method not implemented ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ PATCH Individual Threshold ... Test title: PATCH Individual Threshold ... Test objective: The objective is to test that PATCH method allows to modify an Individual threshold resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -102,7 +102,7 @@ PATCH Individual Threshold - Precondition failed ... Test title: PATCH Individual Threshold - Preconition failed ... Test objective: The objective is to attempt to modify an individual threshold resource, where the precondition was not met. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation diff --git a/SOL003/VNFPerformanceManagement-API/PMJobs.robot b/SOL003/VNFPerformanceManagement-API/PMJobs.robot index 45188503d..c0772ad12 100644 --- a/SOL003/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL003/VNFPerformanceManagement-API/PMJobs.robot @@ -14,7 +14,7 @@ GET all VNF Performance Monitoring Jobs ... Test title: GET all VNF Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET VNF Performance Monitoring Jobs with attribute-based filter ... Test title: GET all VNF Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs all_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued all_fileds selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_default selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -84,7 +84,7 @@ GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -98,7 +98,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test title: GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ Create new VNF Performance Monitoring Job ... Test title: Create a new VNF Performance Monitoring Job ... Test objective: The objective is to test the creation of a new VNF performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is successfully created on the VNFM @@ -137,7 +137,7 @@ PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test title: PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Monitoring Jobs ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -149,7 +149,7 @@ PATCH all VNF Performance Monitoring Jobs - (Method not implemented) ... Test title: PATCH all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -161,7 +161,7 @@ DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test title: DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ GET all VNF Performance Monitoring Jobs as Paged Response ... Test title: GET all VNF Performance Monitoring Jobs as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs as Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -187,7 +187,7 @@ GET VNF Performance Monitoring Jobs - Bad Request Response too Big ... Test title: GET VNF Performance Monitoring Jobs - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -200,7 +200,7 @@ GET all VNF Performance Monitoring Jobs with fields and exclude_default attribut ... Test title: GET all VNF Performance Monitoring Jobs with fields and exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs fields and exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of fields and exclude_fields attribute selector ... Post-Conditions: none diff --git a/SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot b/SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot index 9e5392bf2..a2e02a858 100644 --- a/SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot +++ b/SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot @@ -17,7 +17,7 @@ VNF Performance Information Availability Notification ... Test title: VNF Performance Information Availability Notification ... Test objective: The objective is to test the dispatch of VNF Performance Information Availability Notification when new VNF performance information is available in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ VNF Threshold Crossed Notification ... Test title: VNF Threshold Crossed Notification ... Test objective: The objective is to test the dispatch of VNF Threshold Crossed Notification when a previously set VNF performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a threshold subscription is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPerformanceManagement-API/Thresholds.robot b/SOL003/VNFPerformanceManagement-API/Thresholds.robot index c3dc62f94..e05108b1c 100644 --- a/SOL003/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL003/VNFPerformanceManagement-API/Thresholds.robot @@ -13,7 +13,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds and perform a JSON schema validation of the collected thresholds data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Performance Thresholds with invalid attribute-based filter ... Test title: GET Performance Thresholds with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Performance Thresholds with invalid resource endpoint ... Test title: GET Performance Thresholds with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ Create new Performance Threshold ... Test title: Create new Performance Threshold ... Test objective: The objective is to test the creation of a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is successfully created on the VNFM @@ -80,7 +80,7 @@ PUT Performance Thresholds - Method not implemented ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNF. - ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ PATCH Performance Thresholds - Method not implemented ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ DELETE Performance Thresholds - Method not implemented ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Thresholds ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF performance thresholds are not deleted by the failed operation @@ -117,7 +117,7 @@ GET All Performance Thresholds as Paged Response ... Test title: GET All Performance Thresholds as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds as a Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ GET Performance Thresholds - Bad Request Response too Big ... Test title: GET Performance Thresholds - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index a7a2ac66e..acdf75c4d 100644 --- a/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -1,7 +1,5 @@ *** Settings *** Resource environment/variables.txt -Resource environment/subscriptions.txt -Resource environment/individualSubscription.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library MockServerLibrary Library OperatingSystem @@ -11,311 +9,7 @@ Library Collections Library JSONSchemaLibrary schemas/ Library Process -*** Keywords *** -Get all VNF Performance Subscriptions - [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications - ... subscribed by the client. - ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, - ... request and response data structures, and response codes. - Set headers {"Accept": "application/json"} - Set headers {"Content-Type": "application/json"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 200 - # Log Received a 200 OK as expected - # ${contentType}= Output response headers Content-Type - # Should Contain ${contentType} application/json - # ${result}= Output response body - # Validate Json PmSubscriptions.schema.json ${result} - # Log Validated PmSubscription schema - - - Get VNF Performance Subscriptions with attribute-based filters - [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications - ... subscribed by the client. - ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, - ... request and response data structures, and response codes. - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ok} - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 200 - # Log Received a 200 OK as expected - # ${contentType}= Output response headers Content-Type - # Should Contain ${contentType} application/json - # ${result}= Output response body - # Validate Json PmSubscriptions.schema.json ${result} - # Log Validated PmSubscription schema - - - -Get VNF Performance Subscriptions with invalid attribute-based filters - [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications - ... subscribed by the client. - ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, - ... request and response data structures, and response codes. - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ko} - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 400 - # Log Received a 400 Bad Request as expected - # ${contentType}= Output response headers Content-Type - # Should Contain ${contentType} application/json - # ${result}= Output response body - # Validate Json ProblemDetails.schema.json ${result} - # Log Validated ProblemDetails schema - - -Get VNF Performance Subscriptions with invalid resource endpoint - [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications - ... subscribed by the client. - ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, - ... request and response data structures, and response codes. - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscription - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 404 - # Log Received a 404 Not found as expected - # ${contentType}= Output response headers Content-Type - # Should Contain ${contentType} application/json - # ${result}= Output response body - # Validate Json ProblemDetails.schema.json ${result} - # Log Validated ProblemDetails schema - - - -Send Post Request for VNF Performance Subscription - [Documentation] The POST method creates a new subscription. - ... This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, - ... request and response data structures, and response codes. - ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance - ... degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases. - ... Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the - ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide - ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing - ... the existing subscription resource with the same filter and callbackUri). - Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - ${body_request}= Get File jsons/subscriptions.json - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} - ${output}= Output response - Set Suite Variable ${response} ${output} - Run Keyword If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1 - ... Check Notification Endpoint - # Integer response status 201 - # Log Received a 201 Created as expected - # ${contentType}= Output response headers Content-Type - # Should Contain ${contentType} application/json - # ${result}= Output response body - # Validate Json PmSubscription.schema.json ${result} - # Log Validated PmSubscription schema - # Log Trying to validate the Location header - # ${headers}= Output response headers - # Should Contain ${headers} Location - - -Send Post Request for Duplicated VNF Performance Subscription - [Documentation] The POST method creates a new subscription. - ... This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, - ... request and response data structures, and response codes. - ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance - ... degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases. - ... Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the - ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide - ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing - ... the existing subscription resource with the same filter and callbackUri). - Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - ${body_request}= Get File jsons/subscriptions.json - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 303 - # Log Received a 303 See other as expected - # ${contentType}= Output response headers Content-Type - # Should Contain ${contentType} application/json - # ${result}= Output response body - # Should Be Empty ${result} - # Log Body is empty - # Log Trying to validate the Location header - # ${headers}= Output response headers - # Should Contain ${headers} Location - - - -Send Put Request for VNF Performance Subscriptions - [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method - ... Not Allowed" response as defined in Clause 6.4.7.3.3. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 405 - # Log Received 405 Method not implemented as expected - -Send Patch Request for VNF Performance Subscriptions - [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method - ... Not Allowed" response as defined in Clause 6.4.7.3.4. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 405 - # Log Received 405 Method not implemented as expected - -Send Delete Request for VNF Performance Subscriptions - [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method - ... Not Allowed" response as defined in Clause 6.4.7.3.5. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 405 - # Log Received 405 Method not implemented as expected - -Get Individual VNF Performance Subscription - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -GET individual VNF Performance Subscription with invalid resource identifier - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Send Delete request for individual VNF Performance Subscription - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Send Delete request for individual VNF Performance Subscription with invalid resource identifier - Log Trying to delete a subscription in the VNFM with invalid id - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Send Post request for individual VNF Performance Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${newSubscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Send Put request for individual VNF Performance Threshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} - ${origOutput}= Output response - Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Send Patch request for individual VNF Performance Threshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} - ${origOutput}= Output response - Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Check Postcondition VNF Performance Subscription is Unmodified (Implicit) - Log Check postconidtion subscription not modified - GET individual VNF Performance Subscription - Log Check Response matches original VNF Threshold - ${subscription}= evaluate json.loads('''${response['body']}''') json - Should Be Equal As Strings ${origResponse['body']['id']} ${subscription.id} - Should Be Equal As Strings ${origResponse['body']['callbackUri']} ${subscription.callbackUri} - -Check Postcondition VNF Performance 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}/${apiVersion}/subscriptions/${newSubscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - -Check Postcondition VNF Performance Subscription is Deleted - Log Check Postcondition Subscription is deleted - GET individual VNF Performance Subscription - Check HTTP Response Status Code Is 404 - -Check HTTP Response Body Subscription Identifier matches the requested Subscription - Log Trying to check response ID - Should Be Equal As Strings ${response['body']['id']} ${subscriptionId} - Log Subscription identifier as expected - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - - - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json - ${schema} = Catenate SEPARATOR= ${input} .schema.json - Validate Json ${schema} ${response['body']} - Log Json Schema Validation OK - - -Check HTTP Response Body Is Empty - Should Be Empty ${response['body']} - Log No json schema is provided. Validation OK - - -Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter - Log Check Response includes VNF Performance Management according to filter - Should Be Equal As Strings ${response['body']['callbackUri']} ${callbackUri_Sub} - -Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription - Log Check Response matches subscription - ${body}= Get File jsons/subscriptions.json - ${subscription}= evaluate json.loads('''${body}''') json - Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} - -Check Postcondition VNF Performance Subscription Is Set - Log Check Postcondition subscription exist - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 200 - -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']} - Integer response status 200 - Log Received a 200 OK as expected - ${contentType}= Output response headers Content-Type - Should Contain ${contentType} application/json - ${result}= Output response body - Validate Json PmSubscription.schema.json ${result} - Log Validated PmSubscription schema - -Check Postcondition VNF Performance Subscriptions Exists - Log Checking that subscriptions exists - Get all VNF Performance Subscriptions - +*** Keywords *** Check HTTP Response Header Contains [Arguments] ${CONTENT_TYPE} Should Contain ${response['headers']} ${CONTENT_TYPE} -- GitLab From e7218e5730df4946c40ba119cfca7fe3116da607 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 8 Oct 2020 15:46:52 +0500 Subject: [PATCH 058/580] reference updated --- SOL003/VNFFaultManagement-API/Alarms.robot | 26 +++++------ .../VNFFaultManagement-API/ApiVersion.robot | 20 ++++----- .../IndividualAlarm.robot | 14 +++--- .../IndividualSubscription.robot | 10 ++--- .../Subscriptions.robot | 44 +++++++++---------- .../NotificationEndpoint.robot | 6 +-- 6 files changed, 60 insertions(+), 60 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/Alarms.robot b/SOL003/VNFFaultManagement-API/Alarms.robot index 04c5c4bfa..0ec274966 100644 --- a/SOL003/VNFFaultManagement-API/Alarms.robot +++ b/SOL003/VNFFaultManagement-API/Alarms.robot @@ -14,7 +14,7 @@ POST Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create Fault management alarms on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ Get information about multiple alarms ... Test title: Get information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Get information about multiple alarms with filter ... Test title: Get information about multiple alarms with filter ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ Get information about multiple alarms Bad Request Invalid attribute-based filter ... Test title: Get information about multiple alarms Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to try to retrieve information about the alarm list with invalid filters and perform a JSON schema and content validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ GET information about multiple alarms with "all_fields" attribute selector ... Test title: GET information about multiple alarms with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -78,7 +78,7 @@ GET information about multiple alarms with exclude_default attribute selector ... Test title: GET information about multiple alarms with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -91,7 +91,7 @@ GET information about multiple alarms with fields attribute selector ... Test title: GET information about multiple alarms with fields attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -104,7 +104,7 @@ GET information about multiple alarms with "exclude_fields" attribute selector ... Test title: GET information about multiple alarms with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: none @@ -117,7 +117,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Fault management alarms on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Fault management alarms on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Fault management alarms on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -154,7 +154,7 @@ Get information about multiple alarms as a Paged Response ... Test title: Get information about multiple alarms as a Paged Response ... Test objective: The objective is to retrieve information about the alarm list as a Paged Response ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -167,7 +167,7 @@ Get information about multiple alarms - Bad Request Response too Big ... Test title: Get information about multiple alarms - Bad Request Response too Big ... Test objective: The objective is to try to retrieve information about the alarm list because response is too big and perform a JSON schema and content validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFFaultManagement-API/ApiVersion.robot b/SOL003/VNFFaultManagement-API/ApiVersion.robot index a971df333..1f3796a7c 100644 --- a/SOL003/VNFFaultManagement-API/ApiVersion.robot +++ b/SOL003/VNFFaultManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot index 1f9ce5ebf..d03e8bf23 100644 --- a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot @@ -16,7 +16,7 @@ POST Alarm - Method not implemented ... Test title: POST Alarm - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create Fault management individual alarm on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ Get information about an fault management individual alarm ... Test title: Get information about an fault management individual alarm ... Test objective: The objective is to retrieve information about an individual alarm and perform a JSON schema and content validation of the returned alarm data structure ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ PUT Alarm - Method not implemented ... Test title: PUT Alarm - Method not implemented ... Test objective: he objective is to test that PUT method is not allowed to for Fault management individual alarm on VNF ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ PATCH Fault Management Individual Alarm ... Test title: PATCH Fault Management Individual Alarm ... Test objective: The objective is to Modify an individual alarm resource and perform a JSON schema and content validation of the returned alarm data structure ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ Modify an individual alarm resource - Precondition failed ... Test title: Modify an individual alarm resource - Precondition failed ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ Modify an individual alarm resource - Conflict ... Test title: Modify an individual alarm resource - Conflict ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the resource was modified by another entity ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -96,7 +96,7 @@ DELETE Alarm - Method not implemented ... Test title: DELETE Alarm - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management individual alarm on VNF ... Pre-conditions: nona - ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The individual alarm still exists diff --git a/SOL003/VNFFaultManagement-API/IndividualSubscription.robot b/SOL003/VNFFaultManagement-API/IndividualSubscription.robot index 06cbdbfe7..7f2c9bdb3 100644 --- a/SOL003/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFFaultManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ Post Individual Subscription - Method not implemented ... Test title: Post Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Fault management subscription on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription is not created @@ -23,7 +23,7 @@ Get Information about an individual subscription ... Test title: Get Information about an individual subscription ... Test objective: The objective is to read an individual subscription for NFVO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT an individual subscription - Method not implemented ... Test title:PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Fault management individual subscription on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title:PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Fault management individual subscription on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE an individual subscription ... Test title:DELETE an individual subscription ... Test objective: The objective is to test that DELETE method removes individual subscription on VNF ... Pre-conditions: The Subsbcription already exists - ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription is not deleted diff --git a/SOL003/VNFFaultManagement-API/Subscriptions.robot b/SOL003/VNFFaultManagement-API/Subscriptions.robot index f9dae5efd..43050be17 100644 --- a/SOL003/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL003/VNFFaultManagement-API/Subscriptions.robot @@ -13,7 +13,7 @@ Create a new Fault Management alarm subscription ... Test title: Create a new Fault Management alarm subscription ... Test objective: The objective is to create a new Fault management alarm subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure ... Pre-conditions: No subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription is created @@ -29,7 +29,7 @@ Create a new alarm subscription - DUPLICATION ... Test title: Create a new alarm subscription - DUPLICATION ... Test objective: The objective is to create a new subscription with the VNF 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 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: the NFVO allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists ... Post-Conditions: duplicated subscription is created @@ -44,7 +44,7 @@ Create a new alarm subscription - NO DUPLICATION ... Test title: Create a new alarm subscription - NO DUPLICATION ... Test objective: The objective is to create a new subscription with the VNF 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 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: the NFVO decides to not create a duplicate subscription resource ... Post-Conditions: duplicated subscription is not created @@ -58,7 +58,7 @@ Retrieve a list of alarm subscriptions ... Test title: Retrieve a list of alarm subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: noe @@ -71,7 +71,7 @@ Retrieve a list of alarm subscriptions with filter ... Test title: Retrieve a list of alarm subscriptions with filter ... Test objective: The objective is to retrieve the list of active subscriptions with filter and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters and perform a JSON schema and content validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ GET subscriptions with "all_fields" attribute selector ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -110,7 +110,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -123,7 +123,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -136,7 +136,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -149,7 +149,7 @@ PUT subscriptions - Method not implemented ... Test title:PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Fault management subscriptions on VNF ... Pre-conditions: none - ... RReference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... RReference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -161,7 +161,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Fault management subscriptions on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -173,7 +173,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management subscriptions on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription is not deleted @@ -185,7 +185,7 @@ Retrieve a list of alarm subscriptions as Paged Response ... Test title: Retrieve a list of alarm subscriptions as Paged Response ... Test objective: The objective is to retrieve the list of active subscriptions as Paged Response. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: noe @@ -198,7 +198,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to retrieve the list of active subscriptions because response is too big and perform a JSON schema and content validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -211,7 +211,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -225,7 +225,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -239,7 +239,7 @@ Get subscriptions with filter "filter.faultyResourceTypes" ... Test title: GET Subscription with attribute-based filter "filter.faultyResourceTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -253,7 +253,7 @@ Get subscriptions with filter "filter.perceivedSeverities" ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -267,7 +267,7 @@ Get subscriptions with filter "filter.eventTypes" ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -281,7 +281,7 @@ Get subscriptions with filter "filter.probableCauses" ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -295,7 +295,7 @@ POST Create a new Subscription - Unprocessable Entity ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFFaultManagementNotification-API/NotificationEndpoint.robot b/SOL003/VNFFaultManagementNotification-API/NotificationEndpoint.robot index 95a357d1e..78e8209e1 100644 --- a/SOL003/VNFFaultManagementNotification-API/NotificationEndpoint.robot +++ b/SOL003/VNFFaultManagementNotification-API/NotificationEndpoint.robot @@ -15,7 +15,7 @@ VNF Fault Alarm Notification ... Test title: VNF Fault Alarm Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Notification when a virtualised resource within an VNF instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ VNF Fault Alarm Cleared Notification ... Test title: VNF Fault Alarm Cleared Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Cleared Notification when a faulty virtualised resource within an VNF instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Fault Alarm List Rebuilt Notification ... Test title: VNF Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm List Rebuilt Notification when the VNFM decides to rebuild the list of its VNF alarms, e.g. due to a corruption in the alarm storage, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, one or more virtualised resource are in faulty state, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 871e9680ec68f6e7372a518c0f85ae1fa2095df6 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 8 Oct 2020 16:11:45 +0500 Subject: [PATCH 059/580] templating, minor fix and new testcases added --- SOL003/VNFFaultManagement-API/Alarms.robot | 26 +++++++++---------- .../FaultManagement-APIKeyword.robot | 24 ++++++++--------- .../IndividualAlarm.robot | 24 ++++++++++++----- .../IndividualSubscription.robot | 15 ++++++++++- .../Subscriptions.robot | 3 +-- .../environment/variables.txt | 9 ++++--- .../jsons/fmSubscriptionRequest.json | 16 ++++++------ 7 files changed, 69 insertions(+), 48 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/Alarms.robot b/SOL003/VNFFaultManagement-API/Alarms.robot index 0ec274966..69001f407 100644 --- a/SOL003/VNFFaultManagement-API/Alarms.robot +++ b/SOL003/VNFFaultManagement-API/Alarms.robot @@ -7,7 +7,6 @@ Library JSONLibrary Library JSONSchemaLibrary schemas/ Library OperatingSystem - *** Test Cases *** POST Alarms - Method not implemented [Documentation] Test ID: 7.3.5.1.1 @@ -64,11 +63,11 @@ GET information about multiple alarms with "all_fields" attribute selector [Documentation] Test ID: 7.3.5.1.5 ... Test title: GET information about multiple alarms with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -77,11 +76,11 @@ GET information about multiple alarms with exclude_default attribute selector [Documentation] Test ID: 7.3.5.1.6 ... Test title: GET information about multiple alarms with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with exclude_default attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -90,11 +89,11 @@ GET information about multiple alarms with fields attribute selector [Documentation] Test ID: 7.3.5.1.7 ... Test title: GET information about multiple alarms with fields attribute selector ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -103,10 +102,10 @@ GET information about multiple alarms with "exclude_fields" attribute selector [Documentation] Test ID: 7.3.5.1.8 ... Test title: GET information about multiple alarms with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: none GET Alarms Task with exclude_fields attribute selector Check HTTP Response Status Code Is 200 @@ -147,7 +146,6 @@ DELETE Alarms - Method not implemented ... Post-Conditions: none DELETE Fault management Alarms Check HTTP Response Status Code Is 405 - Check Postcondition VNF fault management alarms Exists Get information about multiple alarms as a Paged Response [Documentation] Test ID: 7.3.5.1.12 @@ -160,7 +158,7 @@ Get information about multiple alarms as a Paged Response ... Post-Conditions: none GET Fault Management Alarms Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link Get information about multiple alarms - Bad Request Response too Big [Documentation] Test ID: 7.3.5.1.13 diff --git a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot index 4f18fe173..077fe2c6f 100644 --- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot @@ -1,5 +1,6 @@ *** Settings *** -Resource environment/variables.txt +Library String +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library JSONLibrary Library JSONSchemaLibrary schemas/ @@ -27,13 +28,8 @@ Check Postcondition FaultManagement Subscription Is Set Check Operation Occurrence Id ${opOccId}= Get Value From Json ${response['headers']} $..Location Should Not Be Empty ${opOccId} -Check Postcondition VNF fault management alarms Exists - Log Checking that alarms exists - GET Fault Management Alarms - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is Alarms -Check Postcondition VNF fault management individual alarm Exists +Check Precondition VNF fault management individual alarm Exists Log Checking that individual alarm exists GET Fault Management Individual Alarm Check HTTP Response Status Code Is 200 @@ -253,14 +249,14 @@ PATCH Fault Management Individual Alarm Conflict Patch ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - - + POST Subscription Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/fmSubscriptionRequest.json + ${template}= Get File jsons/fmSubscriptionRequest.json + ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -271,7 +267,8 @@ Send POST Request for duplicated subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/fmSubscriptionRequest.json + ${template}= Get File jsons/fmSubscriptionRequest.json + ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -282,7 +279,8 @@ Send POST Request for duplicated subscription not permitted Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/fmSubscriptionRequest.json + ${template}= Get File jsons/fmSubscriptionRequest.json + ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -402,7 +400,7 @@ DELETE Individual Subscription ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot index d03e8bf23..bb3b81d10 100644 --- a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot @@ -8,8 +8,6 @@ Library JSONLibrary Library JSONSchemaLibrary schemas/ Library DependencyLibrary - - *** Test Cases *** POST Alarm - Method not implemented [Documentation] Test ID: 7.3.5.2.1 @@ -57,7 +55,7 @@ PATCH Fault Management Individual Alarm ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Check Postcondition VNF fault management individual alarm Exists + Check Precondition VNF fault management individual alarm Exists PATCH Fault Management Individual Alarm Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarmModification @@ -71,7 +69,7 @@ Modify an individual alarm resource - Precondition failed ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Check Postcondition VNF fault management individual alarm Exists + Check Precondition VNF fault management individual alarm Exists PATCH Fault Management Individual Alarm - precondition failed Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -86,7 +84,7 @@ Modify an individual alarm resource - Conflict ... Applicability: none ... Post-Conditions: none Depends On Test PATCH Fault Management Individual Alarm - Check Postcondition VNF fault management individual alarm Exists + Check Precondition VNF fault management individual alarm Exists PATCH Fault Management Individual Alarm Conflict Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails @@ -99,7 +97,19 @@ DELETE Alarm - Method not implemented ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The individual alarm still exists + ... Post-Conditions: none DELETE Fault Management Individual Alarm Check HTTP Response Status Code Is 405 - Check Postcondition VNF fault management individual alarm Exists \ No newline at end of file + +Get information about an fault management individual alarm - Not Found + [Documentation] Test ID: 7.3.5.2.8 + ... Test title: Get information about an fault management individual alarm - Not Found + ... Test objective: The objective is to test that retrieval of information about an individual alarm fails when individual alarm is not present + ... Pre-conditions: The related alarm does not exists + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET Fault Management Individual Alarm + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API/IndividualSubscription.robot b/SOL003/VNFFaultManagement-API/IndividualSubscription.robot index 7f2c9bdb3..6ff137758 100644 --- a/SOL003/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFFaultManagement-API/IndividualSubscription.robot @@ -14,7 +14,7 @@ Post Individual Subscription - Method not implemented ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: subscription is not created + ... Post-Conditions: none POST Individual Subscription Check HTTP Response Status Code Is 405 @@ -67,3 +67,16 @@ DELETE an individual subscription DELETE Individual Subscription Check HTTP Response Status Code Is 204 Check Individual Subscription deleted + +Get Information about an individual subscription - Not Found + [Documentation] Test ID: 7.3.5.4.6 + ... Test title: Get Information about an individual subscription - Not Found + ... Test objective: The objective is to test that the retrieval of an individual subscription for NFVO alarms subscribed by the client fails when subscription is not present + ... Pre-conditions: The subscription with the given id does not exists + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET Individual Subscription + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API/Subscriptions.robot b/SOL003/VNFFaultManagement-API/Subscriptions.robot index 43050be17..6a98f35f8 100644 --- a/SOL003/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL003/VNFFaultManagement-API/Subscriptions.robot @@ -23,7 +23,6 @@ Create a new Fault Management alarm subscription Check HTTP Response Body Json Schema Is FmSubscription Check created Subscription existence - Create a new alarm subscription - DUPLICATION [Documentation] Test ID: 7.3.5.3.2 ... Test title: Create a new alarm subscription - DUPLICATION @@ -191,7 +190,7 @@ Retrieve a list of alarm subscriptions as Paged Response ... Post-Conditions: noe GET Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET subscriptions - Bad Request Response too Big [Documentation] Test ID: 7.3.5.3.15 diff --git a/SOL003/VNFFaultManagement-API/environment/variables.txt b/SOL003/VNFFaultManagement-API/environment/variables.txt index e28a2d096..14ec6985d 100644 --- a/SOL003/VNFFaultManagement-API/environment/variables.txt +++ b/SOL003/VNFFaultManagement-API/environment/variables.txt @@ -46,9 +46,12 @@ ${response} {} ${req_mock} {} ${resp_mock} {} -${alarm_filter} nsInstanceId ${nsInstanceId} 007c111c-38a1-42c0-a666-7475ecb1567c -${invalid_alarm_filter} badFilter ${invalidAlarmId} invalidIdAlarm -${fields} criteria,objectInstanceIds \ No newline at end of file +${fields} criteria,objectInstanceIds + +${callback_uri} http://127.0.0.1 +${callback_endpoint} /subscribe + +${vnfdIds} 6fc3539c-e602-4afa-8e13-962fb5a7d81f \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API/jsons/fmSubscriptionRequest.json b/SOL003/VNFFaultManagement-API/jsons/fmSubscriptionRequest.json index e44916f8d..b28685555 100644 --- a/SOL003/VNFFaultManagement-API/jsons/fmSubscriptionRequest.json +++ b/SOL003/VNFFaultManagement-API/jsons/fmSubscriptionRequest.json @@ -1,10 +1,10 @@ -{ - "filter": { - "vnfInstanceSubscriptionFilter": { +{{ + "filter": {{ + "vnfInstanceSubscriptionFilter": {{ "vnfdIds": [ - "6fc3539c-e602-4afa-8e13-962fb5a7d81f" + "{vnfdIds}" ] - } - }, - "callbackUri": "http://127.0.0.1/subscribe" -} \ No newline at end of file + }} + }}, + "callbackUri": "{callback_uri}{callback_endpoint}" +}} \ No newline at end of file -- GitLab From 26fefaf4f70cbf5b0a925b4034340d25fb7bce08 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 9 Oct 2020 10:54:23 +0500 Subject: [PATCH 060/580] refernce updated --- SOL003/VNFIndicator-API/ApiVersion.robot | 20 +++++++------- .../IndividualSubscription.robot | 14 +++++----- .../IndividualVNFindicator.robot | 14 +++++----- SOL003/VNFIndicator-API/Subscriptions.robot | 26 +++++++++---------- SOL003/VNFIndicator-API/VNFIndicators.robot | 26 +++++++++---------- .../VnfIndicatorNotification.robot | 2 +- .../VnfIndicatorsInVnfInstanceId.robot | 20 +++++++------- 7 files changed, 61 insertions(+), 61 deletions(-) diff --git a/SOL003/VNFIndicator-API/ApiVersion.robot b/SOL003/VNFIndicator-API/ApiVersion.robot index 86dbd9074..856e31ed0 100644 --- a/SOL003/VNFIndicator-API/ApiVersion.robot +++ b/SOL003/VNFIndicator-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/IndividualSubscription.robot b/SOL003/VNFIndicator-API/IndividualSubscription.robot index 161a48b87..0f83d27b3 100644 --- a/SOL003/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL003/VNFIndicator-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual VNF Indicator Subscription ... Test title: GET Individual VNF Indicator Subscription ... Test objective: The objective is to test the retrieval of individual VNF indicator subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual VNF Indicator Subscription with invalid resource identifier ... Test title: GET Individual VNF Indicator Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of individual VNF indicator subscription fails when using an invalid resource identifier. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ DELETE Individual VNF Indicator Subscription ... Test title: DELETE Individual VNF Indicator Subscription ... Test objective: The objective is to test the deletion of an individual VNF indicator subscription. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The subscription to VNF indicators is deleted @@ -50,7 +50,7 @@ DELETE Individual VNF Indicator Subscription with invalid resource identifier ... Test title: DELETE Individual VNF Indicator Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF indicator subscription fails when using an invalid resource identifier. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PUT Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT Individual VNF Indicator Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an individual VNF indicator subscription ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The individual VNF indicator subscription is not modified by the operation @@ -75,7 +75,7 @@ PATCH Individual VNF Indicator Subscription - Method not implemented ... Test title: PATCH Individual VNF Indicator Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an individual VNF indicator subscription ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The individual VNF indicator subscription is not modified by the operation @@ -88,7 +88,7 @@ POST Individual VNF Indicator Subscription - Method not implemented ... Test title: POST Individual VNF Indicator Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF indicator subscription ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The individual VNF indicator subscription is not created by the operation diff --git a/SOL003/VNFIndicator-API/IndividualVNFindicator.robot b/SOL003/VNFIndicator-API/IndividualVNFindicator.robot index c88c89903..be201072a 100644 --- a/SOL003/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL003/VNFIndicator-API/IndividualVNFindicator.robot @@ -11,7 +11,7 @@ Get Individual Indicator for VNF Instance ... Test title: Get Individual Indicator for VNF Instance ... Test objective: The objective is to test the retrieval of an indicator for a given VNF instance and perform a JSON schema validation of the returned indicator data structure ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ Get Individual Indicator for VNF Instance with invalid indicator identifier ... Test title: Get Individual Indicator for VNF Instance with invalid indicator identifier ... Test objective: The objective is to test that the retrieval of an indicator for a given VNF instance fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ POST Individual VNF Indicator for VNF Instance - Method not implemented ... Test title: POST Individual VNF Indicator for VNF Instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF indicator in the VNFM ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual VNF Indicator for VNF Instance - Method not implemented ... Test title: PUT Individual VNF Indicator for VNF Instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing indicator for a VNF instance ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual VNF Indicator for VNF Instance - Method not implemented ... Test title: PATCH Individual VNF Indicator for VNF Instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an existing indicator for a VNF instance ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,10 +74,10 @@ DELETE Individual VNF Indicator for VNF Instance - Method not implemented ... Test title: DELETE Individual VNF Indicator for VNF Instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing indicator for a VNF instance ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The individual indicator for the VNF instance is not deleted by the unsuccessful operation + ... Post-Conditions: The individual indicator for the VNF instance is not deleted by the unsuccessful operations Send DELETE Request for individual indicator in VNF instance Check HTTP Response Status Code Is 405 Check Postcondition Indicator for VNF instance Exist \ No newline at end of file diff --git a/SOL003/VNFIndicator-API/Subscriptions.robot b/SOL003/VNFIndicator-API/Subscriptions.robot index 628e3a19a..251334e2b 100644 --- a/SOL003/VNFIndicator-API/Subscriptions.robot +++ b/SOL003/VNFIndicator-API/Subscriptions.robot @@ -17,7 +17,7 @@ GET All VNF Indicator Subscriptions ... Test title: GET All VNF Indicator Subscriptions ... Test objective: The objective is to test the retrieval of all VNF indicator subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET VNF Indicator Subscriptions with attribute-based filter ... Test title: GET VNF Indicator Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF indicator subscriptions using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ GET VNF Indicator Subscriptions with invalid attribute-based filter ... Test title: GET VNF Indicator Subscriptions with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF indicator subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ GET VNF Indicator Subscriptions with invalid resource endpoint ... Test title: GET VNF Indicator Subscriptions with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF indicator subscriptions fails when using invalid resource endpoint. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ Create new VNF indicator subscription ... Test title: Create new VNF indicator subscription ... Test objective: The objective is to test the creation of a new VNF indicator subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF indicator subscription is successfully set and it matches the issued subscription @@ -85,7 +85,7 @@ Create duplicated VNF indicator subscription with VNFM not creating duplicated s ... Test title: Create duplicated VNF indicator subscription with VNFM not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF indicator subscription and check that no new subscription is created by the VNFM and a link to the original subscription is returned ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM does not support the creation of duplicated subscriptions ... Post-Conditions: The existing VNF indicator subscription returned is available in the VNFM @@ -101,7 +101,7 @@ Create duplicated VNF indicator subscription with VNFM creating duplicated subsc ... Test title: Create duplicated VNF indicator subscription with VNFM creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated VNF indicator subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated VNF indicator subscription is successfully set and it matches the issued subscription @@ -116,7 +116,7 @@ PUT VNF Indicator Subscriptions - Method not implemented ... Test title: PUT VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicator subscriptions ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ PATCH VNF Indicator Subscriptions - Method not implemented ... Test title: PATCH VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicator subscriptions ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -140,7 +140,7 @@ DELETE VNF Indicator Subscriptions - Method not implemented ... Test title: DELETE VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicators subscriptions ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF indicator subscriptions are not deleted by the failed operation @@ -153,7 +153,7 @@ GET All VNF Indicator Subscriptions as Paged Response ... Test title: GET All VNF Indicator Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all VNF indicator subscriptions as Paged Response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ GET VNF Indicator Subscriptions - Bad Request Response too Big ... Test title: GET VNF Indicator Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF indicator subscriptions fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -179,7 +179,7 @@ POST Create a new Subscription - Unprocessable Entity ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/VNFIndicators.robot b/SOL003/VNFIndicator-API/VNFIndicators.robot index b215736ac..ca591ab98 100644 --- a/SOL003/VNFIndicator-API/VNFIndicators.robot +++ b/SOL003/VNFIndicator-API/VNFIndicators.robot @@ -12,7 +12,7 @@ Get all VNF Indicators ... Test title: Get all VNF Indicators ... Test objective: The objective is to test the retrieval of all the available VNF indicators and perform a JSON schema validation of the collected indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get VNF Indicators with attribute-based filter ... Test title: Get VNF Indicators with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF indicators using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Get VNF Indicators with invalid attribute-based filter ... Test title: Get VNF Indicators with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ Get all VNF Indicators with malformed authorization token ... Test title: Get all VNF Indicators with malformed authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using malformed authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -64,7 +64,7 @@ Get all VNF Indicators without authorization token ... Test title: Get all VNF Indicators without authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when omitting the authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -76,7 +76,7 @@ GET all VNF Indicators with expired or revoked authorization token ... Test title: GET all VNF Indicators with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using expired or revoked authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -88,7 +88,7 @@ Get all VNF Indicators with invalid resource endpoint ... Test title: Get all VNF Indicators with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST all VNF Indicators - Method not implemented ... Test title: POST all VNF Indicators - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM - ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ PUT all VNF Indicators - Method not implemented ... Test title: PUT all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ PATCH all VNF Indicators - Method not implemented ... Test title: PATCH all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNF - ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -136,7 +136,7 @@ DELETE all VNF Indicators - Method not implemented ... Test title: DELETE all VNF Indicators - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNF - ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF indicators are not deleted by the unsuccessful operation @@ -149,7 +149,7 @@ Get all VNF Indicators as Paged Response ... Test title: Get all VNF Indicators as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF indicators as Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -162,7 +162,7 @@ Get VNF Indicators - Bad Request Response too Big ... Test title: Get VNF Indicators - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF indicators fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/VnfIndicatorNotification.robot b/SOL003/VNFIndicator-API/VnfIndicatorNotification.robot index 057e7f1ef..79cd22af0 100644 --- a/SOL003/VNFIndicator-API/VnfIndicatorNotification.robot +++ b/SOL003/VNFIndicator-API/VnfIndicatorNotification.robot @@ -16,7 +16,7 @@ VNF Indicator Value Change Notification ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test the dispatch of VNF Indicator Value Change Notification when new indicator values are available in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNFM. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index a160eff47..2e6afb7c7 100644 --- a/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -12,7 +12,7 @@ Get Indicators for VNF Instance ... Test title: Get Indicators for VNF Instance ... Test objective: The objective is to test the retrieval of all indicators for a given VNF instance and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Indicators for VNF Instance with attribute-based filter ... Test title: GET Indicators for VNF Instance with attribute-based filter ... Test objective: The objective is to test the retrieval of all indicators for a given VNF instance using attribute-based filter and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ Get Indicators for VNF Instance with invalid attribute-based filter ... Test title: Get Indicators for VNF Instance with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of all indicators for a given VNF instance fails using invalid attribute-based filter. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ Get Indicators for VNF Instance with invalid resource identifier ... Test title: Get Indicators for VNF Instance with invalid resource identifier ... Test objective: The objective is to test that the retrieval of all indicators for a given VNF instance fails when using invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ POST Indicators for VNF instance - Method not implemented ... Test title: POST Indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ PUT Indicators for VNF instance - Method not implemented ... Test title: PUT Indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ PATCH Indicators for VNF instance - Method not implemented ... Test title: PATCH Indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ DELETE Indicators for VNF instance - Method not implemented ... Test title: DELETE Indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The indicators for the VNF instance are not deleted by the unsuccessful operation @@ -115,7 +115,7 @@ Get Indicators for VNF Instance as Paged Response ... Test title: Get Indicators for VNF Instance as Paged Response ... Test objective: The objective is to test the retrieval of all indicators for a given VNF instance as Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ Get Indicators for VNF Instance - Bad Request Response too Big ... Test title: Get Indicators for VNF Instance - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of all indicators for a given VNF instance fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From de33b652db5ee93d39eb444293efc480bcdd9190 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 9 Oct 2020 11:37:07 +0500 Subject: [PATCH 061/580] templating, minor fix and new testcases added --- .../IndividualSubscription.robot | 12 +++---- .../IndividualVNFindicator.robot | 6 ++-- SOL003/VNFIndicator-API/Subscriptions.robot | 5 ++- SOL003/VNFIndicator-API/VNFIndicators.robot | 2 +- .../VNFIndicatorsKeywords.robot | 34 ++++--------------- .../VnfIndicatorsInVnfInstanceId.robot | 5 ++- .../environment/variables.txt | 5 ++- .../VNFIndicator-API/jsons/subscriptions.json | 6 ++-- 8 files changed, 26 insertions(+), 49 deletions(-) diff --git a/SOL003/VNFIndicator-API/IndividualSubscription.robot b/SOL003/VNFIndicator-API/IndividualSubscription.robot index 0f83d27b3..839ed3e9c 100644 --- a/SOL003/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL003/VNFIndicator-API/IndividualSubscription.robot @@ -31,6 +31,7 @@ GET Individual VNF Indicator Subscription with invalid resource identifier ... Post-Conditions: none GET Individual VNF Indicator Subscription with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails DELETE Individual VNF Indicator Subscription [Documentation] Test ID: 7.3.6.5.3 @@ -68,7 +69,6 @@ PUT Individual VNF Indicator Subscription - Method not implemented ... Post-Conditions: The individual VNF indicator subscription is not modified by the operation Send Put Request for Individual VNF Indicator Subscription Check HTTP Response Status Code Is 405 - Check Postcondition VNF indicator subscription Unmodified (Implicit) PATCH Individual VNF Indicator Subscription - Method not implemented [Documentation] Test ID: 7.3.6.5.6 @@ -78,11 +78,10 @@ PATCH Individual VNF Indicator Subscription - Method not implemented ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The individual VNF indicator subscription is not modified by the operation + ... Post-Conditions: none Send Patch Request for Individual VNF Indicator Subscription Check HTTP Response Status Code Is 405 - Check Postcondition VNF indicator subscription Unmodified (Implicit) - + POST Individual VNF Indicator Subscription - Method not implemented [Documentation] Test ID: 7.3.6.5.7 ... Test title: POST Individual VNF Indicator Subscription - Method not implemented @@ -91,7 +90,6 @@ POST Individual VNF Indicator Subscription - Method not implemented ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The individual VNF indicator subscription is not created by the operation + ... Post-Conditions: none Send Post Request for Individual VNF Indicator Subscription - Check HTTP Response Status Code Is 405 - Check Postcondition VNF indicator subscription is not created \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFIndicator-API/IndividualVNFindicator.robot b/SOL003/VNFIndicator-API/IndividualVNFindicator.robot index be201072a..52b04e414 100644 --- a/SOL003/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL003/VNFIndicator-API/IndividualVNFindicator.robot @@ -32,6 +32,7 @@ Get Individual Indicator for VNF Instance with invalid indicator identifier ... Post-Conditions: none Get Individual Indicator for a VNF instance with invalid indicator identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails POST Individual VNF Indicator for VNF Instance - Method not implemented [Documentation] Test ID: 7.3.6.3.3 @@ -77,7 +78,6 @@ DELETE Individual VNF Indicator for VNF Instance - Method not implemented ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The individual indicator for the VNF instance is not deleted by the unsuccessful operations + ... Post-Conditions: none Send DELETE Request for individual indicator in VNF instance - Check HTTP Response Status Code Is 405 - Check Postcondition Indicator for VNF instance Exist \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFIndicator-API/Subscriptions.robot b/SOL003/VNFIndicator-API/Subscriptions.robot index 251334e2b..18cda29a4 100644 --- a/SOL003/VNFIndicator-API/Subscriptions.robot +++ b/SOL003/VNFIndicator-API/Subscriptions.robot @@ -143,10 +143,9 @@ DELETE VNF Indicator Subscriptions - Method not implemented ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF indicator subscriptions are not deleted by the failed operation + ... Post-Conditions: none Send Delete Request for VNF Indicator Subscriptions Check HTTP Response Status Code Is 405 - Check Postcondition VNF Indicator Subscriptions Exists GET All VNF Indicator Subscriptions as Paged Response [Documentation] Test ID: 7.3.6.4.11 @@ -159,7 +158,7 @@ GET All VNF Indicator Subscriptions as Paged Response ... Post-Conditions: none Get All VNF Indicators Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET VNF Indicator Subscriptions - Bad Request Response too Big [Documentation] Test ID: 7.3.6.4.12 diff --git a/SOL003/VNFIndicator-API/VNFIndicators.robot b/SOL003/VNFIndicator-API/VNFIndicators.robot index ca591ab98..5eb2cf7b7 100644 --- a/SOL003/VNFIndicator-API/VNFIndicators.robot +++ b/SOL003/VNFIndicator-API/VNFIndicators.robot @@ -155,7 +155,7 @@ Get all VNF Indicators as Paged Response ... Post-Conditions: none Get all VNF indicators Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link Get VNF Indicators - Bad Request Response too Big [Documentation] Test ID: 7.3.6.1.13 diff --git a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot index cb9e3925c..bc3c1d00d 100644 --- a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot +++ b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot @@ -103,7 +103,8 @@ Send Post Request for VNF Indicator Subscription Log Trying to create a new subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback=${callback} {callback_subscribe}=${callback_subscribe} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${output}= Output response @@ -125,7 +126,8 @@ Send Post Request for Duplicated VNF indicator Subscription Log Trying to create a subscription with an already created content Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback=${callback} {callback_subscribe}=${callback_subscribe} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${output}= Output response @@ -403,14 +405,6 @@ Check HTTP Response Body Includes Requested VNF Instances ID Log Check Response includes Indicators according to resource identifier Should Be Equal As Strings ${response['body'][0]['vnfInstanceId']} ${vnfInstanceId} -Check Postcondition Indicators for VNF instance Exist - Log Check Postcondition Indicators for VNF instance Exist - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId} - Should Be Equal ${response['status']} 200 - - Get Individual Indicator for a VNF instance Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -471,11 +465,7 @@ Check Postcondition Indicator for VNF instance Exist Log Check Response includes VNF Indicator Get Individual Indicator for a VNF instance Should Be Equal ${response['body']['vnfInstanceId']} ${vnfInstanceId} - Should Be Equal ${response['body']['id']} ${indicatorId} - -Check Postcondition VNF Indicator Subscriptions Exists - Log Checking that subscriptions exists - Get all VNF Indicators Subscriptions + Should Be Equal ${response['body']['id']} ${indicatorId} GET Individual VNF Indicator Subscription Log Trying to get a given subscription identified by subscriptionId @@ -542,18 +532,6 @@ Check Postcondition Individual VNF Indicator Subscription is Deleted GET Individual VNF Indicator Subscription Check HTTP Response Status Code Is 404 -Check Postcondition VNF indicator subscription Unmodified (Implicit) - Log Check Postcondition subscription is not modified - GET Individual VNF Indicator Subscription - Log Check Response matches original subscription - ${subscription}= evaluate json.loads('''${response['body']}''') json - Should Be Equal ${origResponse['body']['callbackUri']} ${subscription.callbackUri} - -Check Postcondition VNF indicator subscription is not created - Log Check Postcondition subscription is not created - GET Individual VNF Indicator Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 - Create Sessions Pass Execution If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 0 MockServer not necessary to run Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance @@ -568,6 +546,6 @@ Check Notification Endpoint Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index 2e6afb7c7..c2e54e5dd 100644 --- a/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -105,10 +105,9 @@ DELETE Indicators for VNF instance - Method not implemented ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The indicators for the VNF instance are not deleted by the unsuccessful operation + ... Post-Conditions: none Send DELETE Request for indicators in VNF instance Check HTTP Response Status Code Is 405 - Check Postcondition Indicators for VNF instance Exist Get Indicators for VNF Instance as Paged Response [Documentation] Test ID: 7.3.6.2.9 @@ -121,7 +120,7 @@ Get Indicators for VNF Instance as Paged Response ... Post-Conditions: none Get all indicators for a VNF instance Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link Get Indicators for VNF Instance - Bad Request Response too Big [Documentation] Test ID: 7.3.6.2.10 diff --git a/SOL003/VNFIndicator-API/environment/variables.txt b/SOL003/VNFIndicator-API/environment/variables.txt index 5949e3c17..cc906c8a3 100644 --- a/SOL003/VNFIndicator-API/environment/variables.txt +++ b/SOL003/VNFIndicator-API/environment/variables.txt @@ -32,4 +32,7 @@ ${polling_interval} 10 sec ${notification_request} [] ${notification_response} [] -${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar \ No newline at end of file +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +${callback} http://172.22.1.7:${callback_port} +${callback_subscribe} /vnfind/subscribes \ No newline at end of file diff --git a/SOL003/VNFIndicator-API/jsons/subscriptions.json b/SOL003/VNFIndicator-API/jsons/subscriptions.json index 3820370db..d48f9f99d 100644 --- a/SOL003/VNFIndicator-API/jsons/subscriptions.json +++ b/SOL003/VNFIndicator-API/jsons/subscriptions.json @@ -1,3 +1,3 @@ -{ - "callbackUri": "http://172.22.1.7:9091/vnfind/subscribes" -} \ No newline at end of file +{{ + "callbackUri": "{callback}{callback_subscribe}" +}} \ No newline at end of file -- GitLab From da5b9e4b6b81fd5ec69634580a8a53c93062f7cc Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 9 Oct 2020 11:59:28 +0500 Subject: [PATCH 062/580] refernce updated --- .../ApiVersion.robot | 20 +++++++++---------- .../Grants.robot | 14 ++++++------- .../IndividualGrant.robot | 14 ++++++------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot index 1740b98ed..6821a6e18 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 392ae4b54..347344aa9 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -18,7 +18,7 @@ Requests a grant for a particular VNF lifecycle operation - Synchronous mode ... Test title: Requests a grant for a particular VNF lifecycle operation - Synchronous mode ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and perform a JSON schema validation on the returned grant data structure ... Pre-conditions: - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO can decide immediately what to respond to a grant request ... Post-Conditions: The grant information is available to the VNFM. @@ -33,7 +33,7 @@ Requests a grant for a particular VNF lifecycle operation - Asynchronous mode ... Test title: Requests a grant for a particular VNF lifecycle operation - Asynchronous mode ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and perform a JSON schema validation on the returned grant data structure ... Pre-conditions: - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO can not decide immediately what to respond to a grant request ... Post-Conditions: The grant information is available to the VNFM. @@ -48,7 +48,7 @@ Requests a grant for a particular VNF lifecycle operation - Forbidden ... Test title: Requests a grant for a particular VNF lifecycle operation - Forbidden ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and the grant is rejected ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ GET Grants - Method not implemented ... Test title: GET Grants - Method not implemented ... Test objective: The objective is to test that GET method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ PUT Grants - Method not implemented ... Test title: PUT Grants - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ PATCH Grants - Method not implemented ... Test title: PATCH Grants - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ DELETE Grants - Method not implemented ... Test title: DELETE Grants - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: resources are not deleted diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index cb95734f5..10889e265 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -17,7 +17,7 @@ POST Individual Grant - Method not implemented ... Test title: POST Individual Grant - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ GET an individual grant - Successful ... Test title: GET an individual grant - Successful ... Test objective: The objective is to retrieve a grant for a particular VNF Lifecycle Operation. ... Pre-conditions: The grant information is available to the VNFM - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ GET an individual grant - Process ongoing ... Test title: GET an individual grant - Process ongoing ... Test objective: The objective is to retrieve a grant for a particular VNF lifecycle operation when process is ongoing and no grant is available yet. ... Pre-conditions: The process of creating the grant is ongoing, no grant is available yet. - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ GET an individual grant - grant rejected ... Test title: GET an individual grant - grant rejected ... Test objective: The objective is to retrieve a grant for a particular VNF Lifecycle Operation but error returned because grant has been rejected. ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ PUT an individual grant - Method not implemented ... Test title: PUT an individual grant - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ PATCH an individual grant - Method not implemented ... Test title: PATCH an individual grant - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ DELETE an individual grant - Method not implemented ... Test title: DELETE an individual grant - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.4.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 9296d9f6346482a916c738937ab527851a9239e5 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 9 Oct 2020 12:11:32 +0500 Subject: [PATCH 063/580] templating and minor fix added --- .../Grants.robot | 14 +++++++---- .../IndividualGrant.robot | 3 --- .../environment/variables.txt | 12 +++++----- .../jsons/grantRejectedRequest.json | 24 +++++++++---------- .../jsons/grantRequest.json | 24 +++++++++---------- 5 files changed, 39 insertions(+), 38 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 347344aa9..b03e19a80 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -1,4 +1,5 @@ *** Settings *** +Library String Resource environment/variables.txt Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library OperatingSystem @@ -27,7 +28,6 @@ Requests a grant for a particular VNF lifecycle operation - Synchronous mode Check Operation Occurrence Id existence Check HTTP Response Body Json Schema Is grant - Requests a grant for a particular VNF lifecycle operation - Asynchronous mode [Documentation] Test ID: 7.3.2.1.2 ... Test title: Requests a grant for a particular VNF lifecycle operation - Asynchronous mode @@ -114,7 +114,8 @@ 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}"} - ${body}= Get File jsons/grantRequest.json + ${template}= Get File jsons/grantRequest.json + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -125,7 +126,8 @@ 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}"} - ${body}= Get File jsons/grantRequest.json + ${template}= Get File jsons/grantRequest.json + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -136,7 +138,8 @@ 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}"} - ${body}= Get File jsons/grantRejectedRequest.json + ${template}= Get File jsons/grantRejectedRequest.json + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -145,7 +148,8 @@ Send Request Grant 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/grantRequest.json + ${template}= Get File jsons/grantRequest.json + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} allow_redirects=false ${resp} Output response ${result}= evaluate json.loads(json.dumps(${resp})) json diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index 10889e265..da4150f8b 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -8,9 +8,6 @@ Documentation This resource represents an individual grant. The client can us ... It is determined by means outside the scope of the present document, such as configuration or policy, ... how long an individual grant is available. -*** Variables *** -${response} {} - *** Test Cases *** POST Individual Grant - Method not implemented [Documentation] Test ID: 7.3.2.2.1 diff --git a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index cfb446726..39e005a4d 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -14,12 +14,7 @@ ${apiVersion} v1 ${SYNC_MODE} 1 - - - -${response} - - +${response} {} ${VNFM_HOST} localhost # Hostname of the VNFM ${VNFM_PORT} 8080 # Listening port of the VNFM @@ -42,3 +37,8 @@ ${sub_filter_invalid} filter_invalid ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${notification_ep} notification ${VrQuotaAvailNotification} {} + +${vnfInstanceId} myVnfInstanceId +${vnfLcmOpOccId} myLcmOccId +${vnfdId} myVnF +${flavourId} string \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRejectedRequest.json b/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRejectedRequest.json index d8ae1e897..f335ba633 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRejectedRequest.json +++ b/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRejectedRequest.json @@ -1,16 +1,16 @@ -{ - "vnfInstanceId": "string", - "vnfLcmOpOccId": "string", - "vnfdId": "string", - "flavourId": "string", +{{ + "vnfInstanceId": "{vnfInstanceId}", + "vnfLcmOpOccId": "{vnfLcmOpOccId}", + "vnfdId": "{vnfdId}", + "flavourId": "{flavourId}", "operation": "INSTANTIATE", "isAutomaticInvocation": true, - "_links": { - "vnfLcmOpOcc": { + "_links": {{ + "vnfLcmOpOcc": {{ "href": "string" - }, - "vnfInstance": { + }}, + "vnfInstance": {{ "href": "string" - } - } -} \ No newline at end of file + }} + }} +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRequest.json b/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRequest.json index 74b326828..f335ba633 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRequest.json +++ b/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRequest.json @@ -1,16 +1,16 @@ -{ - "vnfInstanceId": "myVnfInstanceId", - "vnfLcmOpOccId": "myLcmOccId", - "vnfdId": "myVnF", - "flavourId": "string", +{{ + "vnfInstanceId": "{vnfInstanceId}", + "vnfLcmOpOccId": "{vnfLcmOpOccId}", + "vnfdId": "{vnfdId}", + "flavourId": "{flavourId}", "operation": "INSTANTIATE", "isAutomaticInvocation": true, - "_links": { - "vnfLcmOpOcc": { + "_links": {{ + "vnfLcmOpOcc": {{ "href": "string" - }, - "vnfInstance": { + }}, + "vnfInstance": {{ "href": "string" - } - } -} \ No newline at end of file + }} + }} +}} \ No newline at end of file -- GitLab From c1963d1f201d6e181f4e8f2daebcafbe16a36913 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 9 Oct 2020 12:15:57 +0500 Subject: [PATCH 064/580] refernce updated --- .../VNFPackageManagement-API/ApiVersion.robot | 20 +++---- .../IndividualSubscription.robot | 14 ++--- .../IndividualVNFPackage.robot | 24 ++++---- .../IndividualVNFPackageArtifacts.robot | 56 ++++++++--------- .../ManifestInIndividualVNFPackage.robot | 32 +++++----- .../PackageManagementNotification.robot | 6 +- .../Subscriptions.robot | 26 ++++---- .../VNFDInIndividualVNFPackage.robot | 44 +++++++------- .../VNFPackageArtifacts.robot | 60 +++++++++---------- .../VNFPackageContent.robot | 40 ++++++------- .../VNFPackages.robot | 56 ++++++++--------- 11 files changed, 189 insertions(+), 189 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/ApiVersion.robot b/SOL003/VNFPackageManagement-API/ApiVersion.robot index 85c0567dc..79cf0157a 100644 --- a/SOL003/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL003/VNFPackageManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot index 2d97f97c9..2835612a5 100644 --- a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot @@ -13,7 +13,7 @@ GET Individual VNF Package Subscription ... Test title: GET Individual VNF Package Subscription ... Test objective: The objective is to test the retrieval of individual VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual VNF Package Subscription with invalid resource identifier ... Test title: GET Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ DELETE Individual VNF Package Subscription with invalid resource identifier ... Test title: DELETE Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ POST Individual VNF Package Subscription - Method not implemented ... Test title: POST Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Package Subscription ... Pre-conditions: none - ... Reference: Clause 10.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Subscription is not created on the NFVO @@ -64,7 +64,7 @@ PUT Individual VNF Package Subscription - Method not implemented ... Test title: PUT Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package subscription is not modified by the operation @@ -77,7 +77,7 @@ PATCH Individual VNF Package Subscription - Method not implemented ... Test title: PATCH Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package subscription is not modified by the operation @@ -90,7 +90,7 @@ DELETE Individual VNF Package Subscription ... Test title: DELETE Individual VNF Package Subscription ... Test objective: The objective is to test the deletion of an individual VNF package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Subscription is not available anymore in the NFVO diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot index 2c2f1e3c8..f6cf4b76e 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -12,7 +12,7 @@ GET Individual VNF Package ... Test title: GET Individual VNF Package ... Test objective: The objective is to test the retrieval of an individual VNF package information perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual VNF Package with invalid resource identifier ... Test title: GET Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ POST Individual VNF Package - Method not implemented ... Test title: POST Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual VNF Package - Method not implemented ... Test title: PUT Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual VNF Package - Method not implemented ... Test title: PATCH Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual VNF Package - Method not implemented ... Test title: DELETE Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not deleted by the failed operation @@ -87,7 +87,7 @@ GET Individual OnBoarded VNF Package ... Test title: GET Individual OnBoarded VNF Package ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package information perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ GET Individual OnBoarded VNF Package with invalid resource identifier ... Test title: GET Individual OnBoarded VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ POST Individual OnBoarded VNF Package - Method not implemented ... Test title: POST Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new OnBoarded VNF Package ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -125,7 +125,7 @@ PUT Individual OnBoarded VNF Package - Method not implemented ... Test title: PUT Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -137,7 +137,7 @@ PATCH Individual OnBoarded VNF Package - Method not implemented ... Test title: PATCH Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -149,7 +149,7 @@ DELETE Individual OnBoarded VNF Package - Method not implemented ... Test title: DELETE Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not deleted by the failed operation diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot index 323aa3c22..7acd8f4bf 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Artifact ... Test title: GET Individual VNF Package Artifact ... Test objective: The objective is to test the retrieval of an individual VNF package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Individual VNF Package Artifact in octet stream format ... Test title: GET Individual VNF Package Artifact in octet stream format ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -37,7 +37,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -51,7 +51,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO not supporting R ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -63,7 +63,7 @@ GET Individual VNF Package Artifact with invalid Range Request ... Test title: GET Individual VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -75,7 +75,7 @@ GET Individual VNF Package Artifact with invalid resource identifier ... Test title: GET Individual VNF Package Artifact with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ GET Individual VNF Package Artifact with conflict due to onboarding state ... Test title: GET Individual VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Individual VNF Package Artifact - Method not implemented ... Test title: POST Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ PUT Individual VNF Package Artifact - Method not implemented ... Test title: PUT Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ PATCH Individual VNF Package Artifact - Method not implemented ... Test title: PATCH Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -136,7 +136,7 @@ DELETE Individual VNF Package Artifact - Method not implemented ... Test title: DELETE Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation @@ -149,7 +149,7 @@ GET Individual OnBoarded VNF Package Artifact ... Test title: GET Individual OnBoarded VNF Package Artifact ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -161,7 +161,7 @@ GET Individual OnBoarded VNF Package Artifact in octet stream format ... Test title: GET Individual OnBoarded VNF Package Artifact in octet stream format ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -174,7 +174,7 @@ GET Individual OnBoarded VNF Package Artifact with Range Request and NFVO suppor ... Test title: GET Individual OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -188,7 +188,7 @@ GET Individual OnBoarded VNF Package Artifact with Range Request and NFVO not su ... Test title: GET Individual OnBoarded VNF Package Artifact with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -200,7 +200,7 @@ GET Individual OnBoarded VNF Package Artifact with invalid Range Request ... Test title: GET Individual OnBoarded VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -212,7 +212,7 @@ GET Individual OnBoarded VNF Package Artifact with invalid resource identifier ... Test title: GET Individual OnBoarded VNF Package Artifact with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -224,7 +224,7 @@ GET Individual OnBoarded VNF Package Artifact with conflict due to onboarding st ... Test title: GET Individual OnBoarded VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -237,7 +237,7 @@ POST Individual OnBoarded VNF Package Artifact - Method not implemented ... Test title: POST Individual OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -249,7 +249,7 @@ PUT Individual OnBoarded VNF Package Artifact - Method not implemented ... Test title: PUT Individual OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -261,7 +261,7 @@ PATCH Individual OnBoarded VNF Package Artifact - Method not implemented ... Test title: PATCH Individual OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -273,7 +273,7 @@ DELETE Individual OnBoarded VNF Package Artifact - Method not implemented ... Test title: DELETE Individual OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation @@ -286,7 +286,7 @@ GET Individual VNF Package Artifact with security information ... Test title: GET Individual VNF Package Artifact with security information ... Test objective: The objective is to test the retrieval of an individual VNF package artifact shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -299,7 +299,7 @@ GET Individual OnBoarded VNF Package Artifact with security information ... Test title: GET Individual OnBoarded VNF Package Artifact with security information ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -312,7 +312,7 @@ GET Individual VNF Package Artifact with encrypted artifact ... Test title: GET Individual VNF Package Artifact with encrypted artifact ... Test objective: The objective is to test the retrieval of an individual VNF package artifact shall include an encrypted artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -325,7 +325,7 @@ GET Individual OnBoarded VNF Package Artifact with encrypted artifact ... Test title: GET Individual OnBoarded VNF Package Artifact with encrypted artifact ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact shall include an encrypted artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -338,7 +338,7 @@ GET Individual VNF Package Artifact - Not Acceptable ... Test title: GET Individual VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when related request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -351,7 +351,7 @@ GET Individual OnBoarded VNF Package Artifact - Not Acceptable ... Test title: GET Individual OnBoarded VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact fails when related request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot index 9b7347bda..29e2aeb8b 100644 --- a/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot @@ -11,7 +11,7 @@ Get Manifest in Individual VNF Package ... Test title: Get Manifest in Individual VNF Package ... Test objective: The objective is to test that the Get request read the content of manifest within a NVF Package and perform a validation that returned content is in plain text format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Manifest in Individual VNF Package with security information ... Test title: Get Manifest in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of manifest for an individual VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get Manifest in Individual VNF Package - Not acceptable ... Test title: Get Manifest in Individual VNF Package - Not acceptable ... Test objective: The objective is to test that retriveal of the of manifest for an individual VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ Get Manifest in Individual VNF Package - Conflict ... Test title: Get Manifest in Individual VNF Package - Conflict ... Test objective: The objective is to test that the retrieval of the manifest for an individual VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ POST Manifest in Individual VNF Package - Method not implemented ... Test title: POST Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new resource ... Pre-conditions: none - ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PUT Manifest in Individual VNF Package - Method not implemented ... Test title: PUT Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ PATCH Manifest in Individual VNF Package - Method not implemented ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ DELETE Manifest in Individual VNF Package - Method not implemented ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Resource is not deleted by the failed operation @@ -112,7 +112,7 @@ Get Manifest in Individual OnBoarded VNF Package ... Test title: Get Manifest in Individual OnBoarded VNF Package ... Test objective: The objective is to test that the Get request read the content of manifest within a OnBoarded NVF Package and perform a validation that returned content is in plain text format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -125,7 +125,7 @@ Get Manifest in Individual OnBoarded VNF Package with security information ... Test title: Get Manifest in Individual OnBoarded VNF Package with security information ... Test objective: The objective is to test the retrieval of manifest for an individual OnBoarded VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -138,7 +138,7 @@ Get Manifest in Individual OnBoarded VNF Package - Not acceptable ... Test title: Get Manifest in Individual OnBoarded VNF Package - Not acceptable ... Test objective: The objective is to test that retriveal of the of manifest for an individual OnBoarded VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ Get Manifest in Individual OnBoarded VNF Package - Conflict ... Test title: Get Manifest in Individual OnBoarded VNF Package - Conflict ... Test objective: The objective is to test that the retrieval of the manifest for an individual OnBoarded VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ POST Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test title: POST Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new resource ... Pre-conditions: none - ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -176,7 +176,7 @@ PUT Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test title: PUT Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -188,7 +188,7 @@ PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test title: PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -200,7 +200,7 @@ DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test title: DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Resource is not deleted by the failed operation diff --git a/SOL003/VNFPackageManagement-API/PackageManagementNotification.robot b/SOL003/VNFPackageManagement-API/PackageManagementNotification.robot index b775527f8..13830fc38 100644 --- a/SOL003/VNFPackageManagement-API/PackageManagementNotification.robot +++ b/SOL003/VNFPackageManagement-API/PackageManagementNotification.robot @@ -16,7 +16,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test the dispatch of VNF Package Onboarding notification when the VNF package onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ VNF Package Operational State Change Notification ... Test title: VNF Package Operational State Change Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package operational state is modified, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ VNF Package Deletion Notification ... Test title: VNF Package Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package is deleted on the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/Subscriptions.robot b/SOL003/VNFPackageManagement-API/Subscriptions.robot index 84f5e5242..ae20f847b 100644 --- a/SOL003/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL003/VNFPackageManagement-API/Subscriptions.robot @@ -17,7 +17,7 @@ Get All VNF Package Subscriptions ... Test title: GET all VNF Package Subscriptions ... Test objective: The objective is to test the retrieval of all VNF package subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -31,7 +31,7 @@ Get VNF Package Subscriptions with attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF package subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ Get VNF Package Subscriptions with invalid attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filters ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -59,7 +59,7 @@ GET VNF Package Subscription with invalid resource endpoint ... Test title: GET VNF Package Subscription with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF package subscriptions fails when using invalid resource endpoint. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -71,7 +71,7 @@ Create new VNF Package subscription ... Test title: Create new VNF Package subscription ... Test objective: The objective is to test the creation of a new VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF package subscription is successfully set and it matches the issued subscription @@ -88,7 +88,7 @@ Create duplicated VNF Package subscription with NFVO not creating duplicated sub ... Test title: Create duplicated VNF Package subscription with NFVO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF package subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing VNF package subscription returned is available in the NFVO @@ -104,7 +104,7 @@ Create duplicated VNF Package subscription with NFVO creating duplicated subscri ... Test title: Create duplicated VNF Package subscription with NFVO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated VNF package subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated VNF package subscription is successfully set and it matches the issued subscription @@ -119,7 +119,7 @@ PUT VNF Package Subscriptions - Method not implemented ... Test title: PUT VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -131,7 +131,7 @@ PATCH VNF Package Subscriptions - Method not implemented ... Test title: PATCH VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -144,7 +144,7 @@ DELETE VNF Package Subscriptions - Method not implemented ... Test title: DELETE VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF package subscriptions are not deleted by the failed operation @@ -157,7 +157,7 @@ Get All VNF Package Subscriptions as Paged Response ... Test title: GET all VNF Package Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all VNF package subscriptions as Paged Response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -170,7 +170,7 @@ Get VNF Package Subscriptions - Bad Request Response too Big ... Test title: Get VNF Package Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -183,7 +183,7 @@ Get VNF Package Subscriptions - Unprocessable Entity ... Test title: Get VNF Package Subscriptions - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed., and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index e53cb0514..6c5fc0064 100644 --- a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -12,7 +12,7 @@ Get single file VNFD in Individual VNF Package in Plain Format ... Test title: Get single file VNFD in Individual VNF Package in Plain Format ... Test objective: The objective is to test the retrieval of the VNFD in plain format for an individual VNF package and perform a validation that returned content is in plain format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -25,7 +25,7 @@ Get VNFD in Individual VNF Package in Zip Format ... Test title: Get VNFD in Individual VNF Package in Zip Format ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get single file VNFD in Individual VNF Package in Plain or Zip Format ... Test title: Get single file VNFD in Individual VNF Package in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file VNFD for an individual VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Plain or Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -51,7 +51,7 @@ Get multi file VNFD in Individual VNF Package in Plain or Zip Format ... Test title: Get multi file VNFD in Individual VNF Package in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a multi file ... Post-Conditions: none @@ -64,7 +64,7 @@ Get VNFD in Individual VNF Package with invalid resource identifier ... Test title: Get VNFD in Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF package content fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ Get VNFD in Individual VNF Package Content with conflict due to onboarding state ... Test title: Get VNFD in Individual VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ POST VNFD in Individual VNF Package Content - Method not implemented ... Test title: POST VNFD in Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNFD ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ PUT VNFD in Individual VNF Package Content - Method not implemented ... Test title: PUT VNFD in Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ PATCH VNFD in Individual VNF Package Content - Method not implemented ... Test title: PATCH VNFD in Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -125,7 +125,7 @@ DELETE VNFD in Individual VNF Package Content - Method not implemented ... Test title: DELETE VNFD in Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNFD is not deleted by the failed operation @@ -138,7 +138,7 @@ Get single file VNFD in Individual OnBoarded VNF Package in Plain Format ... Test title: Get single file VNFD in Individual OnBoarded VNF Package in Plain Format ... Test objective: The objective is to test the retrieval of the VNFD in plain format for an individual OnBoarded VNF package and perform a validation that returned content is in plain format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -151,7 +151,7 @@ Get VNFD in Individual OnBoarded VNF Package in Zip Format ... Test title: Get VNFD in Individual OnBoarded VNF Package in Zip Format ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual OnBoarded VNF package and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ Get single file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format ... Test title: Get single file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file VNFD for an individual OnBoarded VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Plain or Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -177,7 +177,7 @@ Get multi file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format ... Test title: Get multi file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual OnBoarded VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a multi file ... Post-Conditions: none @@ -190,7 +190,7 @@ Get VNFD in Individual OnBoarded VNF Package with invalid resource identifier ... Test title: Get VNFD in Individual OnBoarded VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the VNFD for an individual OnBoarded VNF package content fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -202,7 +202,7 @@ Get VNFD in Individual OnBoarded VNF Package Content with conflict due to onboar ... Test title: Get VNFD in Individual OnBoarded VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the VNFD for an individual OnBoarded VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -215,7 +215,7 @@ POST VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test title: POST VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNFD ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -227,7 +227,7 @@ PUT VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test title: PUT VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -239,7 +239,7 @@ PATCH VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test title: PATCH VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -251,7 +251,7 @@ DELETE VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test title: DELETE VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNFD is not deleted by the failed operation @@ -264,7 +264,7 @@ Get multi file VNFD in Individual VNF Package with security information ... Test title: Get multi file VNFD in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a multi file ... Post-Conditions: none @@ -277,7 +277,7 @@ Get multi file VNFD in Individual OnBoarded VNF Package with security informatio ... Test title: Get multi file VNFD in Individual OnBoarded VNF Package with security information ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual OnBoarded VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a multi file ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot index c4c3b9496..6d40203bf 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -11,7 +11,7 @@ Get VNF Package Artifact ... Test title: Get VNF Package Artifact ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test title: Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ Get VNF Package Artifact with "include_signatures" parameter ... Test title: Get VNF Package Artifact with "include_signatures" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test title: Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the GET request read the whole content of the archive containing the artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -90,7 +90,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ Get VNF Package Artifact with invalid URI parameters undifend select_non_mano_ar ... Test title: Get VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ Get VNF Package Artifact with conflict due to onboarding state ... Test title: Get VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ GET VNF Package Artifact with invalid Range Request ... Test title: GET VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -154,7 +154,7 @@ POST VNF Package Artifact - Method not implemented ... Test title: POST VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ PUT VNF Package Artifact - Method not implemented ... Test title: PUT VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -178,7 +178,7 @@ PATCH VNF Package Artifact - Method not implemented ... Test title: PATCH VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -190,7 +190,7 @@ DELETE VNF Package Artifact - Method not implemented ... Test title: DELETE VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation @@ -203,7 +203,7 @@ Get OnBoarded VNF Package Artifact ... Test title: Get OnBoarded VNF Package Artifact ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package Artifact files successfully, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -216,7 +216,7 @@ Get OnBoarded VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test title: Get OnBoarded VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package Artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -229,7 +229,7 @@ Get OnBoarded VNF Package Artifact with "exclude_all_non_mano_artifacts" paramet ... Test title: Get OnBoarded VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -242,7 +242,7 @@ Get OnBoarded VNF Package Artifact with "select_non_mano_artifact_sets" paramete ... Test title: Get OnBoarded VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -255,7 +255,7 @@ Get OnBoarded VNF Package Artifact with "include_signatures" parameter ... Test title: Get OnBoarded VNF Package Artifact with "include_signatures" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -268,7 +268,7 @@ Get OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range ... Test title: Get OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -282,7 +282,7 @@ Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_ ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -295,7 +295,7 @@ Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_ ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -308,7 +308,7 @@ Get OnBoarded VNF Package Artifact with invalid URI parameters undifend select_n ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -321,7 +321,7 @@ Get OnBoarded VNF Package Artifact with conflict due to onboarding state ... Test title: Get OnBoarded VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -334,7 +334,7 @@ GET OnBoarded VNF Package Artifact with invalid Range Request ... Test title: GET OnBoarded VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -346,7 +346,7 @@ POST OnBoarded VNF Package Artifact - Method not implemented ... Test title: POST OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -358,7 +358,7 @@ PUT OnBoarded VNF Package Artifact - Method not implemented ... Test title: PUT OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -370,7 +370,7 @@ PATCH OnBoarded VNF Package Artifact - Method not implemented ... Test title: PATCH OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -382,7 +382,7 @@ DELETE OnBoarded VNF Package Artifact - Method not implemented ... Test title: DELETE OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation diff --git a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot index 856c54c2e..7ab90b549 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Content ... Test title: GET Individual VNF Package Content ... Test objective: The objective is to test the retrieval of an individual VNF package content and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual VNF Package Content with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Individual VNF Package Content with Range Request and NFVO not supporting Ra ... Test title: GET Individual VNF Package Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Individual VNF Package Content with invalid Range Request ... Test title: GET Individual VNF Package Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -65,7 +65,7 @@ GET Individual VNF Package Content with invalid resource identifier ... Test title: GET Individual VNF Package Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ GET Individual VNF Package Content with conflict due to onboarding state ... Test title: GET Individual VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ POST Individual VNF Package Content - Method not implemented ... Test title: POST Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package content ... Pre-conditions: none - ... Reference: Clause 10.4.3.5.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.5.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ PUT Individual VNF Package Content - Method not implemented ... Test title: PUT Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.5.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -114,7 +114,7 @@ PATCH Individual VNF Package Content - Method not implemented ... Test title: PATCH Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.5.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ DELETE Individual VNF Package Content - Method not implemented ... Test title: DELETE Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package content is not deleted by the failed operation @@ -139,7 +139,7 @@ GET Individual OnBoarded VNF Package Content ... Test title: GET Individual OnBoarded VNF Package Content ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package content and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -152,7 +152,7 @@ GET Individual OnBoarded VNF Package Content with Range Request and NFVO support ... Test title: GET Individual OnBoarded VNF Package Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -167,7 +167,7 @@ GET Individual OnBoarded VNF Package Content with Range Request and NFVO not sup ... Test title: GET Individual OnBoarded VNF Package Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -180,7 +180,7 @@ GET Individual OnBoarded VNF Package Content with invalid Range Request ... Test title: GET Individual OnBoarded VNF Package Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -192,7 +192,7 @@ GET Individual OnBoarded VNF Package Content with invalid resource identifier ... Test title: GET Individual OnBoarded VNF Package Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package content fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -204,7 +204,7 @@ GET Individual OnBoarded VNF Package Content with conflict due to onboarding sta ... Test title: GET Individual OnBoarded VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -217,7 +217,7 @@ POST Individual OnBoarded VNF Package Content - Method not implemented ... Test title: POST Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package content ... Pre-conditions: none - ... Reference: Clause 10.4.3.5.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.5.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -229,7 +229,7 @@ PUT Individual OnBoarded VNF Package Content - Method not implemented ... Test title: PUT Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.5.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -241,7 +241,7 @@ PATCH Individual OnBoarded VNF Package Content - Method not implemented ... Test title: PATCH Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.5.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -253,7 +253,7 @@ DELETE Individual OnBoarded VNF Package Content - Method not implemented ... Test title: DELETE Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package content is not deleted by the failed operation diff --git a/SOL003/VNFPackageManagement-API/VNFPackages.robot b/SOL003/VNFPackageManagement-API/VNFPackages.robot index 0e55fa20c..f2d5a2197 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackages.robot @@ -12,7 +12,7 @@ GET all VNF Packages ... Test title: GET all VNF Packages ... Test objective: The objective is to test the retrieval of all the available VNF packages information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET VNF Packages with attribute-based filter ... Test title: GET VNF Packages with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF packages using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ GET VNF Packages with invalid attribute-based filter ... Test title: GET VNF Packages with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET VNF Packages with "all_fields" attribute selector ... Test title: GET VNF Packages with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ GET VNF Packages with "exclude_default" attribute selector ... Test title: GET VNF Packages with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ GET VNF Packages with "fields" attribute selector ... Test title: GET VNF Packages with fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -97,7 +97,7 @@ GET VNF Packages with "exclude_fields" attribute selector ... Test title: GET VNF Packages with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -111,7 +111,7 @@ GET all VNF Packages with invalid resource endpoint ... Test title: GET VNF Packages with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid resource endpoint ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ POST all VNF Packages - Method not implemented ... Test title: POST all VNF Packages - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Packages ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -135,7 +135,7 @@ PUT all VNF Packages - Method not implemented ... Test title: PUT all VNF Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -147,7 +147,7 @@ PATCH all VNF Packages - Method not implemented ... Test title: PATCH all VNF Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -159,7 +159,7 @@ DELETE all VNF Packages - Method not implemented ... Test title: DELETE all VNF Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Packages are not deleted by the failed operation @@ -172,7 +172,7 @@ GET all VNF Packages as a Paged Response ... Test title: GET all VNF Packages as a Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF packages information as a Paged Response. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -185,7 +185,7 @@ GET VNF Packages - Bad Request Response too Big ... Test title: GET VNF Packages - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF packages fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -198,7 +198,7 @@ GET all OnBoarded VNF Packages ... Test title: GET all OnBoarded VNF Packages ... Test objective: The objective is to test the retrieval of all the available onboarded VNF packages information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -214,7 +214,7 @@ GET OnBoarded VNF Packages with attribute-based filter ... Test title: GET OnBoarded VNF Packages with attribute-based filter ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -228,7 +228,7 @@ GET OnBoarded VNF Packages with invalid attribute-based filter ... Test title: GET OnBoarded VNF Packages with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of OnBoarded VNF packages fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -241,7 +241,7 @@ GET OnBoarded VNF Packages with "all_fields" attribute selector ... Test title: GET OnBoarded VNF Packages with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -255,7 +255,7 @@ GET OnBoarded VNF Packages with "exclude_default" attribute selector ... Test title: GET OnBoarded VNF Packages with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -269,7 +269,7 @@ GET OnBoarded VNF Packages with "fields" attribute selector ... Test title: GET OnBoarded VNF Packages with fields attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -283,7 +283,7 @@ GET OnBoarded VNF Packages with "exclude_fields" attribute selector ... Test title: GET OnBoarded VNF Packages with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -297,7 +297,7 @@ GET all OnBoarded VNF Packages with invalid resource endpoint ... Test title: GET OnBoarded VNF Packages with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of OnBoarded VNF packages fails when using invalid resource endpoint ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -309,7 +309,7 @@ POST all OnBoarded VNF Packages - Method not implemented ... Test title: POST all OnBoarded VNF Packages - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new OnBoarded VNF Packages ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -321,7 +321,7 @@ PUT all OnBoarded VNF Packages - Method not implemented ... Test title: PUT all OnBoarded VNF Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing OnBoarded VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -333,7 +333,7 @@ PATCH all OnBoarded VNF Packages - Method not implemented ... Test title: PATCH all OnBoarded VNF Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing OnBoarded VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -345,7 +345,7 @@ DELETE all OnBoarded VNF Packages - Method not implemented ... Test title: DELETE all OnBoarded VNF Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete existing OnBoarded VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Packages are not deleted by the failed operation @@ -358,7 +358,7 @@ GET all OnBoarded VNF Packages as a Paged Response ... Test title: GET all OnBoarded VNF Packages as a Paged Response ... Test objective: The objective is to test the retrieval of all the available OnBoarded VNF packages information as a Paged Response. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -371,7 +371,7 @@ GET OnBoarded VNF Packages - Bad Request Response too Big ... Test title: GET OnBoarded VNF Packages - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of OnBoarded VNF packages fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 3713af86b2a89f99274909f5898f855b42ac3e1e Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 9 Oct 2020 12:48:26 +0500 Subject: [PATCH 065/580] templating, minor fix and new testcases added --- .../IndividualSubscription.robot | 14 +-- .../IndividualVNFPackage.robot | 10 +- .../IndividualVNFPackageArtifacts.robot | 8 +- .../Subscriptions.robot | 8 +- .../VNFDInIndividualVNFPackage.robot | 8 +- .../VNFPackageArtifacts.robot | 8 +- .../VNFPackageContent.robot | 9 +- .../VNFPackageManagementKeywords.robot | 113 ++++++------------ .../VNFPackages.robot | 36 +++++- .../jsons/subscriptions.json | 6 +- 10 files changed, 95 insertions(+), 125 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot index 2835612a5..495e972ec 100644 --- a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot @@ -54,10 +54,9 @@ POST Individual VNF Package Subscription - Method not implemented ... Reference: Clause 10.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package Subscription is not created on the NFVO + ... Post-Conditions: none Send Post request for individual VNF Package Subscription Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Subscription is not Created PUT Individual VNF Package Subscription - Method not implemented [Documentation] Test ID: 7.3.3.7.5 @@ -67,10 +66,9 @@ PUT Individual VNF Package Subscription - Method not implemented ... Reference: Clause 10.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package subscription is not modified by the operation + ... Post-Conditions: none Send Put request for individual VNF Package Subscription Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Subscription is Unmodified (Implicit) PATCH Individual VNF Package Subscription - Method not implemented [Documentation] Test ID: 7.3.3.7.6 @@ -80,10 +78,9 @@ PATCH Individual VNF Package Subscription - Method not implemented ... Reference: Clause 10.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package subscription is not modified by the operation + ... Post-Conditions: none Send Patch request for individual VNF Package Subscription Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Subscription is Unmodified (Implicit) DELETE Individual VNF Package Subscription [Documentation] Test ID: 7.3.3.7.7 @@ -93,7 +90,6 @@ DELETE Individual VNF Package Subscription ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package Subscription is not available anymore in the NFVO + ... Post-Conditions: none Send Delete request for individual VNF Package Subscription - Check HTTP Response Status Code Is 204 - Check Postcondition VNF Package Subscription is Deleted \ No newline at end of file + Check HTTP Response Status Code Is 204 \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot index f6cf4b76e..a5409db81 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -32,6 +32,7 @@ GET Individual VNF Package with invalid resource identifier ... Post-Conditions: none GET Individual VNF Package with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails POST Individual VNF Package - Method not implemented [Documentation] Test ID: 7.3.3.2.3 @@ -77,10 +78,9 @@ DELETE Individual VNF Package - Method not implemented ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for individual VNF Package Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Exist GET Individual OnBoarded VNF Package [Documentation] Test ID: 7.3.3.2.7 @@ -107,6 +107,7 @@ GET Individual OnBoarded VNF Package with invalid resource identifier ... Post-Conditions: none GET Individual OnBoarded VNF Package with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails POST Individual OnBoarded VNF Package - Method not implemented [Documentation] Test ID: 7.3.3.2.9 @@ -152,7 +153,6 @@ DELETE Individual OnBoarded VNF Package - Method not implemented ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for individual OnBoarded VNF Package - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Exist \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot index 7acd8f4bf..ae798271a 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot @@ -81,6 +81,7 @@ GET Individual VNF Package Artifact with invalid resource identifier ... Post-Conditions: none GET Individual VNF Package Artifact with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Individual VNF Package Artifact with conflict due to onboarding state [Documentation] Test ID: 7.3.3.5.7 @@ -139,10 +140,9 @@ DELETE Individual VNF Package Artifact - Method not implemented ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for individual VNF Package Artifact Check HTTP Response Status Code Is 405 - Check Postcondition Individual VNF Package Artifact Exist GET Individual OnBoarded VNF Package Artifact [Documentation] Test ID: 7.3.3.5.12 @@ -218,6 +218,7 @@ GET Individual OnBoarded VNF Package Artifact with invalid resource identifier ... Post-Conditions: none GET Individual OnBoarded VNF Package Artifact with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Individual OnBoarded VNF Package Artifact with conflict due to onboarding state [Documentation] Test ID: 7.3.3.5.18 @@ -276,10 +277,9 @@ DELETE Individual OnBoarded VNF Package Artifact - Method not implemented ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for individual OnBoarded VNF Package Artifact Check HTTP Response Status Code Is 405 - Check Postcondition Individual OnBoarded VNF Package Artifact Exist GET Individual VNF Package Artifact with security information [Documentation] Test ID: 7.3.3.5.23 diff --git a/SOL003/VNFPackageManagement-API/Subscriptions.robot b/SOL003/VNFPackageManagement-API/Subscriptions.robot index ae20f847b..174ab56d4 100644 --- a/SOL003/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL003/VNFPackageManagement-API/Subscriptions.robot @@ -25,7 +25,6 @@ Get All VNF Package Subscriptions Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PkgmSubscriptions - Get VNF Package Subscriptions with attribute-based filter [Documentation] Test ID: 7.3.3.6.2 ... Test title: Get VNF Package Subscriptions with attribute-based filter @@ -40,7 +39,6 @@ Get VNF Package Subscriptions with attribute-based filter Check HTTP Response Body Json Schema Is PkgmSubscription Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter - Get VNF Package Subscriptions with invalid attribute-based filter [Documentation] Test ID: 7.3.3.6.3 ... Test title: Get VNF Package Subscriptions with attribute-based filters @@ -65,6 +63,7 @@ GET VNF Package Subscription with invalid resource endpoint ... Post-Conditions: none Get VNF Package Subscriptions with invalid resource endpoint Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails Create new VNF Package subscription [Documentation] Test ID: 7.3.3.6.5 @@ -147,10 +146,9 @@ DELETE VNF Package Subscriptions - Method not implemented ... Reference: Clause 10.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF package subscriptions are not deleted by the failed operation + ... Post-Conditions: none Send Delete Request for VNF Package Subscriptions Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Subscriptions Exists Get All VNF Package Subscriptions as Paged Response [Documentation] Test ID: 7.3.3.6.11 @@ -163,7 +161,7 @@ Get All VNF Package Subscriptions as Paged Response ... Post-Conditions: none Get all VNF Package Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link Get VNF Package Subscriptions - Bad Request Response too Big [Documentation] Test ID: 7.3.3.6.12 diff --git a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index 6c5fc0064..dce75ae61 100644 --- a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -128,10 +128,9 @@ DELETE VNFD in Individual VNF Package Content - Method not implemented ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNFD is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for VNFD in individual VNF Package Check HTTP Response Status Code Is 405 - Check Postcondition VNFD Exist Get single file VNFD in Individual OnBoarded VNF Package in Plain Format [Documentation] Test ID: 7.3.3.4.12 @@ -254,10 +253,9 @@ DELETE VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNFD is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for VNFD in individual OnBoarded VNF Package Check HTTP Response Status Code Is 405 - Check Postcondition VNFD Exist Get multi file VNFD in Individual VNF Package with security information [Documentation] Test ID: 7.3.3.4.23 @@ -283,4 +281,4 @@ Get multi file VNFD in Individual OnBoarded VNF Package with security informatio ... Post-Conditions: none Get multi file VNFD in Individual OnBoarded VNF Package with security information Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip + Check HTTP Response Header Content-Type Is application/zip \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot index 6d40203bf..35a1ad73a 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -193,10 +193,9 @@ DELETE VNF Package Artifact - Method not implemented ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for VNF Package Artifact Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Artifact Exist Get OnBoarded VNF Package Artifact [Documentation] Test ID: 7.3.3.11.16 @@ -385,7 +384,6 @@ DELETE OnBoarded VNF Package Artifact - Method not implemented ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for OnBoarded VNF Package Artifact - Check HTTP Response Status Code Is 405 - Check Postcondition OnBoarded VNF Package Artifact Exist \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot index 7ab90b549..8a9d9c332 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot @@ -71,6 +71,7 @@ GET Individual VNF Package Content with invalid resource identifier ... Post-Conditions: none GET Individual VNF Package Content with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Individual VNF Package Content with conflict due to onboarding state [Documentation] Test ID: 7.3.3.3.6 @@ -129,10 +130,9 @@ DELETE Individual VNF Package Content - Method not implemented ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package content is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for individual VNF Package Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Content Exist GET Individual OnBoarded VNF Package Content [Documentation] Test ID: 7.3.3.3.11 @@ -256,7 +256,6 @@ DELETE Individual OnBoarded VNF Package Content - Method not implemented ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package content is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for individual OnBoarded VNF Package - Check HTTP Response Status Code Is 405 - GET Individual OnBoarded VNF Package Content \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 5e8ec3024..96beb3dd2 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -126,6 +126,25 @@ Check HTTP Response Body vnfPkgsInfo Matches the requested fields selector Validate Json additionalArtifacts.schema.json ${additional_artifacts[0]} Log Validation for additionalArtifacts schema OK +GET VNF Packages with fields and exclude_default attribute selector + Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields + 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}/${apiVersion}/vnf_packages?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check HTTP Response Body vnfPkgsInfo Matches the requested fields and exclude_default selector + Log Trying to validate softwareImages schema + ${softwareImages}= Get Value From Json ${response['body']} $..softwareImages + Validate Json softwareImage.schema.json ${softwareImages[0]} + Log Validation for softwareImage schema OK + Log Trying to validate additionalArtifacts schema + ${additional_artifacts}= Get Value From Json ${response['body']} $..additionalArtifacts + Validate Json additionalArtifacts.schema.json ${additional_artifacts[0]} + Log Validation for additionalArtifacts schema OK + GET VNF Packages with exclude_fields attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use fields parameter @@ -185,10 +204,6 @@ Send DELETE Request for all VNF Packages ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition VNF Packages Exist - Log Checking that Pm Job still exists - GET all VNF Packages - GET Individual VNF Package Log Trying to get a VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -241,10 +256,6 @@ Send DELETE Request for individual VNF Package DELETE ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition VNF Package Exist - Log Checking that vnf pacakge still exists - GET Individual VNF Package GET Individual VNF Package Content Log Trying to get a VNF Package Content @@ -338,10 +349,6 @@ Send DELETE Request for individual VNF Package Content ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition VNF Package Content Exist - Log Checking that vnf pacakge still exists - GET Individual VNF Package Content - Get all VNF Package Subscriptions Log Trying to get the list of subscriptions Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -378,7 +385,8 @@ Send Post Request for VNF Package Subscription Log Trying to create a new subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callbackUri=${callbackUri} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${output}= Output response @@ -390,7 +398,8 @@ Send Post Request for Duplicated VNF Package Subscription Log Trying to create a subscription with an already created content Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callbackUri=${callbackUri} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${output}= Output response @@ -418,11 +427,7 @@ Send Delete Request for VNF Package Subscriptions Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${output}= Output response - Set Suite Variable ${response} ${output} - -Check Postcondition VNF Package Subscriptions Exists - Log Checking that subscriptions exists - Get all VNF Package Subscriptions + Set Suite Variable ${response} ${output} Get single file VNFD in Individual VNF Package in Plain Format Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue @@ -520,14 +525,6 @@ Send DELETE Request for VNFD in individual VNF Package ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition VNFD Exist - Log Checking that vnf pacakge still exists - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd - Check HTTP Response Status Code Is 200 - GET Individual VNF Package Artifact Log Trying to get a VNF Package Artifact Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -606,13 +603,6 @@ Send DELETE Request for individual VNF Package Artifact DELETE ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition Individual VNF Package Artifact Exist - Log Checking that vnf pacakge still exists - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} - Check HTTP Response Status Code Is 200 Check HTTP Response Status Code Is [Arguments] ${expected_status} @@ -697,12 +687,7 @@ Send Delete request for individual VNF Package Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${output}= Output response - Set Suite Variable ${response} ${output} - -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 + Set Suite Variable ${response} ${output} Send Delete request for individual VNF Package Subscription with invalid resource identifier Log Trying to perform a DELETE on a subscriptionId which doesn't exist @@ -735,23 +720,6 @@ Send Patch request for individual VNF Package Subscription PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition VNF Package Subscription is Unmodified (Implicit) - Log Check postconidtion subscription not modified - GET individual VNF Package Subscription - Log Check Response matches original VNF Threshold - ${subscription}= evaluate json.loads('''${response['body']}''') json - Should Be Equal ${origResponse['body']['id']} ${subscription.id} - Should Be Equal ${origResponse['body']['callbackUri']} ${subscription.callbackUri} - -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}/${apiVersion}/subscriptions/${newSubscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 Check HTTP Response Header Contains [Arguments] ${CONTENT_TYPE} @@ -768,8 +736,7 @@ Create Sessions Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance Wait For Process handle=mockInstance timeout=5s on_timeout=continue Create Mock Session ${callback_uri}:${callback_port} - - + Check Notification Endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 @@ -777,7 +744,7 @@ Check Notification Endpoint Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} @@ -1141,13 +1108,6 @@ Send DELETE Request for individual OnBoarded VNF Package Artifact DELETE ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition Individual OnBoarded VNF Package Artifact Exist - Log Checking that vnf pacakge still exists - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} - Check HTTP Response Status Code Is 200 Get multi file VNFD in Individual OnBoarded VNF Package with security information Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue @@ -1443,13 +1403,6 @@ Send DELETE Request for VNF Package Artifact DELETE ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition VNF Package Artifact Exist - Log Checking that vnf pacakge still exists - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts - Check HTTP Response Status Code Is 200 Get Artifact in OnBoarded VNF Package Log Trying to get Artifact in OnBoarded VNF Package @@ -1565,10 +1518,12 @@ Send DELETE Request for OnBoarded VNF Package Artifact DELETE ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition OnBoarded VNF Package Artifact Exist - Log Checking that OnBoarded vnf pacakge still exists + +GET OnBoarded VNF Packages with fields and exclude_default attribute selector + Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue, using fields + 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts - Check HTTP Response Status Code Is 200 \ No newline at end of file + GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackages.robot b/SOL003/VNFPackageManagement-API/VNFPackages.robot index f2d5a2197..f910cbd3b 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackages.robot @@ -162,10 +162,9 @@ DELETE all VNF Packages - Method not implemented ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Packages are not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for all VNF Packages Check HTTP Response Status Code Is 405 - Check Postcondition VNF Packages Exist GET all VNF Packages as a Paged Response [Documentation] Test ID: 7.3.3.1.13 @@ -348,10 +347,9 @@ DELETE all OnBoarded VNF Packages - Method not implemented ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Packages are not deleted by the failed operation + ... Post-Conditions: none Send OnBoarded DELETE Request for all VNF Packages Check HTTP Response Status Code Is 405 - Check Postcondition VNF Packages Exist GET all OnBoarded VNF Packages as a Paged Response [Documentation] Test ID: 7.3.3.1.27 @@ -377,4 +375,32 @@ GET OnBoarded VNF Packages - Bad Request Response too Big ... Post-Conditions: none Get all OnBoarded VNF Packages Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +GET VNF Packages with "fields" and "exclude_default" attribute selector + [Documentation] Test ID: 7.3.3.1.29 + ... Test title: GET VNF Packages with fields and exclude_default attribute selector + ... Test objective: The objective is to test the retrieval of VNF packages with "fields" and "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The VNFM supports the use of fields attribute selector + ... Post-Conditions: none + GET VNF Packages with fields and exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is vnfPkgsInfo + Check HTTP Response Body vnfPkgsInfo Matches the requested fields and exclude_default selector + +GET OnBoarded VNF Packages with "fields" and "exclude_default" attribute selector + [Documentation] Test ID: 7.3.3.1.30 + ... Test title: GET OnBoarded VNF Packages with fields and exclude_default attribute selector + ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "fields" and "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The VNFM supports the use of fields attribute selector + ... Post-Conditions: none + GET OnBoarded VNF Packages with fields and exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is vnfPkgsInfo + Check HTTP Response Body vnfPkgsInfo Matches the requested fields selector \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/jsons/subscriptions.json b/SOL003/VNFPackageManagement-API/jsons/subscriptions.json index 1d5927979..35c8671eb 100644 --- a/SOL003/VNFPackageManagement-API/jsons/subscriptions.json +++ b/SOL003/VNFPackageManagement-API/jsons/subscriptions.json @@ -1,3 +1,3 @@ -{ - "callbackUri": "http://172.22.1.7:9091/vnfpkgm/subscriptions" -} \ No newline at end of file +{{ + "callbackUri": "{callbackUri}" +}} \ No newline at end of file -- GitLab From 7d4f86655f4b28ee3ec9c4ed7870e15aca3f5084 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 9 Oct 2020 12:50:38 +0500 Subject: [PATCH 066/580] refernce updated --- .../ApiVersion.robot | 20 ++++++++-------- .../IndividualSubscription.robot | 10 ++++---- .../NotificationEndpoint.robot | 2 +- .../Subscriptions.robot | 24 +++++++++---------- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot index dfb570e1d..223f8d37c 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot @@ -11,7 +11,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot index a42c3215c..5f3c46264 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot @@ -15,7 +15,7 @@ Create new Virtualised Resources Quota Available Notification individual subscri ... Test title: Create new Virtualised Resources Quota Available Notification individual subscription ... Test objective: The objective is to test that POST method is not allowed to create a new Virtualised Resources Quota Available Notification individual subscription instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Get Information about an individual subscription ... Test title: Get Information about an individual subscription ... Test objective: The objective is to read an individual Virtualised Resources Quota Available Notification subscription subscribed by the client and perform a JSON schema and content validation of the returned individual subscription data structure ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update a existing Virtualised Resources Quota Available Notification individual subscription instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify a existing Virtualised Resources Quota Available Notification individual subscription instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that Delete method is allowed to remove a existing Virtualised Resources Quota Available Notification individual subscription instance on VNF ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot index ae3bddf2b..9d81b4580 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot @@ -16,7 +16,7 @@ Deliver a notification - Vr Quota Availibility ... Test title: Deliver a notification - Vr Quota Availibility ... Test objective: The objective is to notify related to the availability of the virtualised resources quota. ... Pre-conditions: The VNF has subscribed to the Vr Quota Availibility resource - ... Reference: Clause 11.4.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot index 0c0a309e2..a5b0e3938 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot @@ -12,7 +12,7 @@ Create new Virtualised Resources Quota Available Notification subscription ... Test title: Create new Virtualised Resources Quota Available Notification subscription ... Test objective: The objective is to create a new Virtualised Resources Quota Available Notification subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: no subscription with the same filter and callbackUri exists - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Create new Virtualised Resources Quota Available Notification subscription - DUP ... Test title: Create new Virtualised Resources Quota Available Notification subscription - DUPLICATION ... Test objective: The objective is to create a new Virtualised Resources Quota Available Notification subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: the VNFM allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists ... Post-Conditions: none @@ -41,7 +41,7 @@ Create new Virtualised Resources Quota Available Notification subscription - NO- ... Test title: Create new Virtualised Resources Quota Available Notification subscription - NO-DUPLICATION ... Test objective: The objective is to create a nduplicated Virtualised Resources Quota Available Notification subscription and verify that the VNF does not allow duplication ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: the VNFM decides to not create a duplicate subscription resource ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions ... Test title: GET Virtualised Resources Quota Available Notification Subscriptions ... Test objective: The objective is to retrieve the list of active Virtualised Resources Quota Available Notification subscriptions and perform a JSON schema and content validation of the returned subscriptions data structure ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions with attrib ... Test title: GET Virtualised Resources Quota Available Notification Subscriptions with attribute-based Filter ... Test objective: The objective is to retrieve the list of active Virtualised Resources Quota Available Notification subscriptions and perform a JSON schema and content validation of the returned subscriptions data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ GET Virtualised Resources Quota Available Notification subscriptions - Bad Reque ... Test title: GET Virtualised Resources Quota Available Notification subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active Virtualised Resources Quota Available Notification subscriptions with invalid attribute-based filtering parameters, and verify that problem details are returned ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ PUT Virtualised Resources Quota Available Notification subscriptions - Method no ... Test title: PUT Virtualised Resources Quota Available Notification subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update existing Virtualised Resources Quota Available Notification subscriptions instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ PATCH Virtualised Resources Quota Available Notification subscriptions - Method ... Test title: PATCH Virtualised Resources Quota Available Notification subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify Virtualised Resources Quota Available Notification subscriptions instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ DELETE Virtualised Resources Quota Available Notification subscriptions - Method ... Test title: DELETE Virtualised Resources Quota Available Notification subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to delete Virtualised Resources Quota Available Notification subscriptions instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions as Paged Re ... Test title: GET Virtualised Resources Quota Available Notification Subscriptions as Paged Response ... Test objective: The objective is to retrieve the list of active Virtualised Resources Quota Available Notification subscriptions as a Paged Response. ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -143,7 +143,7 @@ GET Virtualised Resources Quota Available Notification subscriptions - Bad Reque ... Test title: GET Virtualised Resources Quota Available Notification subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of active Virtualised Resources Quota Available Notification subscriptions list fails because response is too big, and verify that problem details are returned ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -156,7 +156,7 @@ Create new Virtualised Resources Quota Available Notification Subscription - Unp ... Test title: Create new Virtualised Resources Quota Available Notification Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From d19e170743f9a810cdcb7b11cf5dcab9bb00bff7 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 9 Oct 2020 12:57:25 +0500 Subject: [PATCH 067/580] templating, minor fix and new testcases added --- .../IndividualSubscription.robot | 18 +++++++++++++++--- .../Subscriptions.robot | 2 -- .../VRQANOperationKeywords.robot | 14 +++++++------- .../environment/variables.txt | 1 + .../vrQuotaAvailSubscriptionRequest .json | 6 +++--- .../jsons/vrQuotaAvailSubscriptionRequest.json | 3 --- 6 files changed, 26 insertions(+), 18 deletions(-) delete mode 100644 SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/vrQuotaAvailSubscriptionRequest.json diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot index 5f3c46264..e1de22b87 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot @@ -10,9 +10,9 @@ Documentation This resource represents an individual subscription. The client Suite Setup Check Individual Subscription existence *** Test Cases *** -Create new Virtualised Resources Quota Available Notification individual subscription +Create new Virtualised Resources Quota Available Notification individual subscription - Method not implemented [Documentation] Test ID: 7.3.7.2.1 - ... Test title: Create new Virtualised Resources Quota Available Notification individual subscription + ... Test title: Create new Virtualised Resources Quota Available Notification individual subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Virtualised Resources Quota Available Notification individual subscription instance on VNF ... Pre-conditions: A VNF instance is instantiated ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 @@ -71,4 +71,16 @@ DELETE an individual subscription Delete Virtualised Resources Quota Available Notification individual subscription Check HTTP Response Status Code Is 204 Check Postcondition VNF Virtualised Resources Quota Available Notification individual Subscriptions is Deleted - \ No newline at end of file + +Get Information about an individual subscription - Not Found + [Documentation] Test ID: 7.3.7.2.2 + ... Test title: Get Information about an individual subscription - Not Found + ... Test objective: The objective is to test that the retrieval of an individual Virtualised Resources Quota Available Notification subscription subscribed by the client fils when resource is not present + ... Pre-conditions: The subscription with the given id does not exists + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Virtualised Resources Quota Available Notification individual subscription + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot index a5b0e3938..1b7cfe68a 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot @@ -21,7 +21,6 @@ Create new Virtualised Resources Quota Available Notification subscription Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is VrQuotaAvailSubscription - Create new Virtualised Resources Quota Available Notification subscription - DUPLICATION [Documentation] Test ID: 7.3.7.1.2 ... Test title: Create new Virtualised Resources Quota Available Notification subscription - DUPLICATION @@ -123,7 +122,6 @@ DELETE Virtualised Resources Quota Available Notification subscriptions - Method ... Post-Conditions: none Send Delete request for Virtualised Resources Quota Available Notification subscription Check HTTP Response Status Code Is 405 - Check Postcondition VNF Virtualised Resources Quota Available Notification Subscriptions Exists GET Virtualised Resources Quota Available Notification Subscriptions as Paged Response [Documentation] Test ID: 7.3.7.1.10 diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot index 20d4a9fc4..641ffcefc 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot @@ -1,4 +1,5 @@ *** Settings *** +Library String Resource environment/variables.txt Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library JSONLibrary @@ -42,10 +43,6 @@ Check HTTP Response Header ContentType is Log Validate content type Should Be Equal ${response['headers']['Content-Type']} ${expected_contentType} Log Content Type validated - -Check Postcondition VNF Virtualised Resources Quota Available Notification Subscriptions Exists - Log Checking that subscriptions exists - GET Virtualised Resources Quota Available Notification Subscriptions Check Postcondition VNF Virtualised Resources Quota Available Notification individual Subscriptions is Deleted Log Check Postcondition Subscription is deleted @@ -97,7 +94,8 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/vrQuotaAvailSubscriptionRequest.json + ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_subscribe=${callback_subscribe} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -108,7 +106,8 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/vrQuotaAvailSubscriptionRequest.json + ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_subscribe=${callback_subscribe} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -119,7 +118,8 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/vrQuotaAvailSubscriptionRequest.json + ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_subscribe=${callback_subscribe} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt index 87671b9f8..ea3559c2f 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt @@ -14,6 +14,7 @@ ${sub_filter} filter ${sub_filter_invalid} filter_invalid ${callback_endpoint} /notification +${callback_subscribe} /subscribe ${callback_port} 9091 ${callback_uri} http://localhost ${sleep_interval} 20s diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/vrQuotaAvailSubscriptionRequest .json b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/vrQuotaAvailSubscriptionRequest .json index 8d91c2b81..ffed99d47 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/vrQuotaAvailSubscriptionRequest .json +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/vrQuotaAvailSubscriptionRequest .json @@ -1,3 +1,3 @@ -{ - "callbackUri": "http://127.0.0.1/subscribe" -} \ No newline at end of file +{{ + "callbackUri": "{callback_uri}{callback_subscribe}" +}} \ No newline at end of file diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/vrQuotaAvailSubscriptionRequest.json b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/vrQuotaAvailSubscriptionRequest.json deleted file mode 100644 index 8d91c2b81..000000000 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/vrQuotaAvailSubscriptionRequest.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "callbackUri": "http://127.0.0.1/subscribe" -} \ No newline at end of file -- GitLab From afe37d7f6d2e7c90e6c5317e5403101bf4be2898 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 12 Oct 2020 15:47:29 +0500 Subject: [PATCH 068/580] added majoyAPIVersion --- .../ApiVersion.robot | 10 +- .../CancelOperationTask.robot | 2 +- .../ChangeExternalVNFConnectivityTask.robot | 2 +- .../ChangeVNFFlavourTask.robot | 2 +- .../HealVNFTask.robot | 2 +- .../InstantiateVNFTask.robot | 2 +- .../OperateVNFTask.robot | 2 +- .../RetryOperationTask.robot | 2 +- .../RollbackOperationTask.robot | 2 +- .../ScaleVNFTask.robot | 2 +- .../ScaleVNFToLevelTask.robot | 2 +- .../TerminateVNFTask.robot | 2 +- .../VnfLcmOperationKeywords.robot | 238 +++++++++--------- .../environment/variables.txt | 2 +- 14 files changed, 136 insertions(+), 136 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/ApiVersion.robot b/SOL002/VNFLifecycleManagement-API/ApiVersion.robot index 076343d82..c85fc6ced 100644 --- a/SOL002/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL002/VNFLifecycleManagement-API/ApiVersion.robot @@ -167,35 +167,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot index 326819aa0..60d04f4b8 100644 --- a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -101,5 +101,5 @@ DELETE Cancel operation task - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index 48589116c..f803d37fb 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -87,5 +87,5 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index d1a7d8634..bf6278856 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -100,5 +100,5 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot index 68b5014f6..e8298325c 100644 --- a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot @@ -101,5 +101,5 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 200f0c387..0bf995edd 100644 --- a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -89,5 +89,5 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot index a27748bc1..40448b7c6 100644 --- a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -100,5 +100,5 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot index fff8c4816..8e7a7fd2a 100644 --- a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -99,5 +99,5 @@ DELETE Retry operation task - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot index c92083878..1ed4064c5 100644 --- a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -100,5 +100,5 @@ DELETE Rollback operation task - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot index 4b9ebed98..f34e1bf96 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -100,5 +100,5 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 75efe34bf..de97db01a 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -99,5 +99,5 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot index 72690a90b..0656a1724 100644 --- a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -87,5 +87,5 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 8b5b5d7de..f98becf2a 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -18,7 +18,7 @@ Get Vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${body}= Output response body [Return] ${body} @@ -52,7 +52,7 @@ Check VNF Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${response}= Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfId} + ${response}= Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfId} Check VNF Status [Arguments] ${current} ${expected} @@ -61,12 +61,12 @@ Check VNF Status Check operation resource state is FAILED_TEMP Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body instantiationState FAILED_TEMP Check operation resource state is FINALLY_FAILED Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body instantiationState FINALLY_FAILED Check HTTP Response Header Contains @@ -75,13 +75,13 @@ Check HTTP Response Header Contains Log Header is present POST Create a new vnfInstance - Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiVersion}/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}"} ${template} = Get File jsons/createVnfRequest.json ${body}= Format String ${template} vnfdId=${vnfdId} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -90,7 +90,7 @@ GET multiple vnfInstances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -99,7 +99,7 @@ GET multiple vnfInstances with bad attribute Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"Authorization":"${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?attribute_not_exist=some_value + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?attribute_not_exist=some_value ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -108,42 +108,42 @@ GET multiple vnfInstances with bad filter Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?fields=wrong_field + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=wrong_field ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET multiple vnfInstances with all_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_default attribute selector Log Query status information about multiple VNF instances using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_default and fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} PUT multiple vnfInstances @@ -151,21 +151,21 @@ PUT multiple vnfInstances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH multiple vnfInstances Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfLcmOpOccId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE multiple vnfInstances 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}/${apiVersion}/vnf_instances/${vnfLcmOpOccId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -174,7 +174,7 @@ POST individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -183,7 +183,7 @@ GET individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -192,7 +192,7 @@ PUT individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -203,13 +203,13 @@ PATCH individual vnfInstance Set Headers {"If-Match": "${original_etag}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/patchBodyRequest.json - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} ${body} + 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}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -220,35 +220,35 @@ POST instantiate individual vnfInstance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/instantiateVnfRequest.json ${body}= Format String ${template} flavourId=${flavourId} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -259,7 +259,7 @@ POST Scale vnfInstance 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}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance @@ -268,7 +268,7 @@ GET Scale vnfInstance Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Scale vnfInstance @@ -277,7 +277,7 @@ PUT Scale vnfInstance Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Scale vnfInstance @@ -286,7 +286,7 @@ PATCH Scale vnfInstance Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Scale vnfInstance @@ -295,7 +295,7 @@ DELETE Scale vnfInstance Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -306,34 +306,34 @@ POST Scale vnfInstance to level Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/scaleVnfToLevelRequest.json ${body}= Format String ${template} newFlavourId=${newFlavourId} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance to level log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Scale vnfInstance to level log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Scale vnfInstance to level 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}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Scale vnfInstance to level log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -344,34 +344,34 @@ POST Change VNF deployment flavour Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/changeVnfFlavourRequest.json ${body}= Format String ${template} newFlavourId=${newFlavourId} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Change VNF deployment flavour log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Change VNF deployment flavour log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Change VNF deployment flavour Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Change VNF deployment flavour 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}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -382,35 +382,35 @@ POST Terminate VNF Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/terminateVnfRequest.json ${body}= Format String ${template} terminationType=${terminationType} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Terminate VNF log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Terminate VNF log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Terminate VNF 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}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Terminate VNF log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -421,35 +421,35 @@ POST Heal VNF Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/healVnfRequest.json ${body}= Format String ${template} healingCause=${healingCause} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Heal VNF log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Heal VNF log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Heal VNF 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}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Heal VNF log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -459,35 +459,35 @@ POST Change External VNF Connectivity Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/changeExtVnfConnectivityRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Change External VNF Connectivity log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Change External VNF Connectivity log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Change External VNF Connectivity Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Change External VNF Connectivity 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}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -498,35 +498,35 @@ POST Operate VNF Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/operateVnfRequest.json ${body}= Format String ${template} changeStateTo=${changeStateTo} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Operate VNF log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Operate VNF log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Operate VNF 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}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Operate VNF log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -534,7 +534,7 @@ Post VNF LCM OP occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM OP occurrences @@ -542,84 +542,84 @@ GET VNF LCM OP occurrences Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM OP occurrences invalid attribute Log Query status information about multiple VNF lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?attribute_not_exist=some_value + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?attribute_not_exist=some_value ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM OP occurrences invalid filter Log Query status information about multiple VNF lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?fields=wrong_field + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=wrong_field ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT VNF LCM OP occurrences log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH VNF LCM OP occurrences log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE VNF LCM OP occurrences log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Individual VNF LCM OP occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Individual VNF LCM OP occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put Individual VNF LCM OP occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Individual VNF LCM OP occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Individual VNF LCM OP occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Retry operation Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Retry operation @@ -627,35 +627,35 @@ Get Retry operation Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put Retry operation log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Retry operation log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Retry operation log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Rollback operation Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Rollback operation @@ -663,35 +663,35 @@ Get Rollback operation Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put Rollback operation log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Rollback operation log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Rollback operation log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Fail operation Log mark as Failed a VNF lifecycle operation if that operation has experienced a failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Fail operation @@ -699,28 +699,28 @@ Get Fail operation Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put Fail operation log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Fail operation log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Fail operation log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -728,7 +728,7 @@ POST Cancel operation task Log Cancel an ongoing VNF lifecycle operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Cancel a VNF lifecycle operation - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} Log Validate Status code ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -736,39 +736,39 @@ POST Cancel operation task GET Cancel operation task log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Cancel operation task log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Cancel operation task Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Cancel operation task 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}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Create subscription - Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} 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} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Create subscription - DUPLICATION @@ -779,7 +779,7 @@ Post Create subscription - DUPLICATION 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} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Create subscription - NO-DUPLICATION @@ -790,7 +790,7 @@ Post Create subscription - NO-DUPLICATION 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} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions @@ -799,7 +799,7 @@ Get subscriptions Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions - filter @@ -807,42 +807,42 @@ Get subscriptions - filter Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions - invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} PUT subscriptions @@ -850,7 +850,7 @@ PUT subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH subscriptions @@ -858,7 +858,7 @@ PATCH subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE subscriptions @@ -866,7 +866,7 @@ DELETE subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Create Individual subscription @@ -874,14 +874,14 @@ Post Create Individual subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Individual subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put Individual subscription @@ -889,7 +889,7 @@ Put Individual subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Individual subscription @@ -897,14 +897,14 @@ Patch Individual subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Individual subscription log Try to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put Notification subscription @@ -974,13 +974,13 @@ Check Subscription resource exist Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Get VNF LCM Operation occurrences with all_fields attribute selector Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?all_fields + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -988,28 +988,28 @@ Get VNF LCM Operation occurrences with all_fields attribute selector Get VNF LCM Operation occurrences with exclude_default attribute selector Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with fields attribute selector Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_default and fields attribute selector Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_fields attribute selector Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index 71e5445a3..b15172d18 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -12,7 +12,7 @@ ${ACCEPT} application/json ${ACCEPT_JSON} application/json ${apiRoot} / ${apiName} vnflcm -${apiVersion} v1 +${apiMajorVersion} v1 ${AUTH_USAGE} 1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX ${vnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -- GitLab From a2ea192d4c229b938aeb5d2cf4b4927613ce7c30 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 12 Oct 2020 15:53:06 +0500 Subject: [PATCH 069/580] added majorAPIVersion --- .../ApiVersion.robot | 10 ++--- .../IndividualPmJob.robot | 18 ++++----- .../IndividualReport.robot | 18 ++++----- .../IndividualThreshold.robot | 18 ++++----- .../VNFPerformanceManagement-API/PMJobs.robot | 28 ++++++------- .../Thresholds.robot | 18 ++++----- .../VNFPerformanceManagementKeywords.robot | 40 +++++++++---------- .../environment/variables.txt | 2 +- 8 files changed, 76 insertions(+), 76 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot index bb484bf34..5832a7af2 100644 --- a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot @@ -167,35 +167,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index 5a84a1747..61cd4bd06 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -119,7 +119,7 @@ GET individual VNF Performance Job Log Trying to get a Pm Job present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -127,7 +127,7 @@ GET individual VNF Performance Job with invalid resource identifier Log Trying to perform a negative get, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${erroneousPmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -135,7 +135,7 @@ Send Delete request for individual VNF Performance Job Log Trying to delete an existing PM Job Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -143,7 +143,7 @@ Send Delete request for individual VNF Performance Job with invalid resource ide Log Trying to perform a negative delete, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${erroneousPmJobId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -151,7 +151,7 @@ Send Post request for individual VNF Performance Job 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}/${apiVersion}/pm_jobs/${newPmJobId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -159,10 +159,10 @@ Send Put request for individual VNF Performance Job 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -171,7 +171,7 @@ Send Patch request for individual VNF Performance Job Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/PMJobModification.json - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} ${body} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -179,7 +179,7 @@ Check Postcondition VNF Performance Job is not Created Log Trying to get a new Pm Job Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${newPmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 404 diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot index d6ba168b3..f42402876 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot @@ -88,7 +88,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -96,41 +96,41 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${erroneousReportId} + 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}"} - POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${newReportId} + 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} Send Patch request for Individual Performance Report Log Trying to update performance report Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for Individual Performance Report Log Trying to delete performance report Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -142,7 +142,7 @@ Check Postcondition VNF Individual Performance Report is not Created Log Trying to get a new report Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${newReportId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${newReportId} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 404 diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index d68f09617..429727d04 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -116,7 +116,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -124,28 +124,28 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${erroneousThresholdId} + 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}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + 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}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds/${erroneousThresholdId} + 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}"} - POST ${apiRoot}/${apiName}/${apiVersion}/thresholds/${newThresholdId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -153,10 +153,10 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -166,7 +166,7 @@ Send Patch request for individual VNF Performance Threshold Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/ThresholdModification.json - PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -182,7 +182,7 @@ Check Postcondition VNF Performance Threshold is not Created Log Trying to get a new Threshold Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${newThresholdId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 404 diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 27a851129..84283d725 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -212,7 +212,7 @@ GET all VNF Performance Monitoring Jobs Log Trying to get all PM Jobs present in the VNFM Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -220,7 +220,7 @@ GET VNF Performance Monitoring Jobs with attribute-based filter Log Trying to get all PM Jobs present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?${POS_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -228,7 +228,7 @@ GET VNF Performance Monitoring Jobs with all_fields attribute selector Log Trying to get all PM Jobs present in the VNFM, using 'all_fields' filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?all_fields + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -236,7 +236,7 @@ GET VNF Performance Monitoring Jobs with exclude_default attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -245,7 +245,7 @@ GET VNF Performance Monitoring Jobs with fields attribute selector Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -253,7 +253,7 @@ GET VNF Performance Monitoring Jobs with exclude_default and fields attribute se Log Trying to get all VNF Packages present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -262,7 +262,7 @@ GET VNF Performance Monitoring Jobs with exclude_fields attribute selector Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -270,7 +270,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter Log Trying to get all PM Jobs present in the VNFM, using an erroneous filter param Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?${NEG_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -278,7 +278,7 @@ GET VNF Performance Monitoring Jobs 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}/${apiVersion}/pm_job # wrong URI /pm_job instead of /pm_jobs + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_job # wrong URI /pm_job instead of /pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -289,7 +289,7 @@ Send Post Request Create new VNF Performance Monitoring Job 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} - POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -297,7 +297,7 @@ Send PUT Request for all VNF Performance Monitoring Jobs 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}/${apiVersion}/pm_jobs + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -305,7 +305,7 @@ Send PATCH Request for all VNF Performance Monitoring Jobs 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}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -313,7 +313,7 @@ Send DELETE Request for all VNF Performance Monitoring Jobs 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}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -325,7 +325,7 @@ Check Postcondition PmJob Exists Log Checking that Pm Job exists Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index a0fb710e9..c3804b28d 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -143,7 +143,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -151,7 +151,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds?${FILTER_OK} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_OK} ${output}= Output response Set Suite Variable ${response} ${output} @@ -159,7 +159,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds?${FILTER_KO} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_KO} ${output}= Output response Set Suite Variable ${response} ${output} @@ -167,7 +167,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/threshold + GET ${apiRoot}/${apiName}/${apiMajorVersion}/threshold ${output}= Output response Set Suite Variable ${response} ${output} @@ -178,7 +178,7 @@ Send Post Request Create new Performance Threshold Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/CreateThresholdRequest.json ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${callback_uri} - POST ${apiRoot}/${apiName}/${apiVersion}/thresholds ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -187,7 +187,7 @@ Send PUT Request for all Performance Thresholds Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - PUT ${apiRoot}/${apiName}/${apiVersion}/thresholds + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -196,14 +196,14 @@ Send PATCH Request for all Performance Thresholds Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} Send DELETE Request for all Performance Thresholds Log DELETE THresholds Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -215,7 +215,7 @@ Check Postcondition Threshold Exists Log Checking that Threshold exists Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index 80ac22c2d..9a6c90f90 100644 --- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -21,7 +21,7 @@ Get all VNF Performance Subscriptions Set headers {"Accept": "application/json"} Set headers {"Content-Type": "application/json"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 200 @@ -40,7 +40,7 @@ Get all VNF Performance Subscriptions ... request and response data structures, and response codes. Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ok} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 200 @@ -60,7 +60,7 @@ Get VNF Performance Subscriptions with invalid attribute-based filters ... request and response data structures, and response codes. Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ko} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 400 @@ -79,7 +79,7 @@ Get VNF Performance Subscriptions with invalid resource endpoint ... request and response data structures, and response codes. Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscription + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 404 @@ -107,7 +107,7 @@ Send Post Request for VNF Performance Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} ${template}= Get File jsons/subscriptions.json ${body_request}= Format String ${template} callback_uri=${callback_uri} subscribe=${subscribe} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1 @@ -139,7 +139,7 @@ Send Post Request for Duplicated VNF Performance Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/subscriptions.json ${body_request}= Format String ${template} callback_uri=${callback_uri} subscribe=${subscribe} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 303 @@ -159,7 +159,7 @@ Send Put Request for VNF Performance Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in Clause 4.3.5.4. Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 405 @@ -169,7 +169,7 @@ Send Patch Request for VNF Performance Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in Clause 4.3.5.4. Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 405 @@ -179,7 +179,7 @@ Send Delete Request for VNF Performance Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in Clause 4.3.5.4. Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 405 @@ -188,52 +188,52 @@ Send Delete Request for VNF Performance Subscriptions Get Individual VNF Performance Subscription Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} GET individual VNF Performance Subscription with invalid resource identifier Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual VNF Performance Subscription Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual VNF Performance Subscription with invalid resource identifier Log Trying to delete a subscription in the VNFM with invalid id Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post request for individual VNF Performance Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${newSubscriptionId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Put request for individual VNF Performance Threshold Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Patch request for individual VNF Performance Threshold Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -249,7 +249,7 @@ Check Postcondition VNF Performance 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}/${apiVersion}/subscriptions/${newSubscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 404 @@ -297,7 +297,7 @@ Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subsc Check Postcondition VNF Performance Subscription Is Set Log Check Postcondition subscription exist Set Headers {"Accept": "${ACCEPT_JSON}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 diff --git a/SOL002/VNFPerformanceManagement-API/environment/variables.txt b/SOL002/VNFPerformanceManagement-API/environment/variables.txt index 65cab3fbe..0772cedcc 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/variables.txt @@ -4,7 +4,7 @@ ${VNFM_PORT} 8080 # Listening port of the VNFM ${VNFM_SCHEMA} https ${apiRoot} / -${apiVersion} v1 +${apiMajorVersion} v1 ${apiName} vnfpm -- GitLab From a998341da674320351777800b778e7e2b66bac0b Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 13 Oct 2020 12:54:48 +0500 Subject: [PATCH 070/580] added majorApiVersion --- SOL002/VNFFaultManagement-API/Alarms.robot | 34 +++++++-------- .../VNFFaultManagement-API/ApiVersion.robot | 10 ++--- .../EscalatePerceivedSeverityTask.robot | 12 +++--- .../IndividualAlarm.robot | 16 +++---- .../IndividualSubscription.robot | 16 +++---- .../Subscriptions.robot | 42 +++++++++---------- .../environment/variables.txt | 2 +- 7 files changed, 66 insertions(+), 66 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/Alarms.robot b/SOL002/VNFFaultManagement-API/Alarms.robot index 6bc714a21..fd51868aa 100644 --- a/SOL002/VNFFaultManagement-API/Alarms.robot +++ b/SOL002/VNFFaultManagement-API/Alarms.robot @@ -262,28 +262,28 @@ POST Alarms Task log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/alarms + Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Alarms Task log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/alarms + Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Alarms Task log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/alarms + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Alarms Task log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/alarms + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Alarms Task @@ -291,7 +291,7 @@ GET Alarms Task Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Alarms Task with filter @@ -299,7 +299,7 @@ GET Alarms Task with filter Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?${alarm_filter}=${managedObjectId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${alarm_filter}=${managedObjectId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Alarms Task with invalid filter @@ -307,35 +307,35 @@ GET Alarms Task with invalid filter Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?${invalid_alarm_filter}=${managedObjectId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${invalid_alarm_filter}=${managedObjectId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Alarms Task with all_fields attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/alarms?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with exclude_default attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/alarms?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with fields attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/alarms?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with exclude_fields attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/alarms?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -366,7 +366,7 @@ GET Alarms Task with filter "id" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?id=${alarmId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?id=${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -378,7 +378,7 @@ GET Alarms Task with filter "vnfcInstanceIds" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?vnfcInstanceIds=${vnfcInstanceIds} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?vnfcInstanceIds=${vnfcInstanceIds} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -392,7 +392,7 @@ GET Alarms Task with filter "rootCauseFaultyResource_faultyResourceType" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?rootCauseFaultyResource.faultyResourceType=${faultyResourceType} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?rootCauseFaultyResource.faultyResourceType=${faultyResourceType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -406,7 +406,7 @@ GET Alarms Task with filter "eventType" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?eventType=${eventType} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?eventType=${eventType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -420,7 +420,7 @@ GET Alarms Task with filter "perceivedSeverity" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?perceivedSeverity=${perceivedSeverity} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?perceivedSeverity=${perceivedSeverity} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -434,7 +434,7 @@ GET Alarms Task with filter "probableCause" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?probableCause=${probableCause} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?probableCause=${probableCause} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFFaultManagement-API/ApiVersion.robot b/SOL002/VNFFaultManagement-API/ApiVersion.robot index ae7bb77b0..ea7c27ddc 100644 --- a/SOL002/VNFFaultManagement-API/ApiVersion.robot +++ b/SOL002/VNFFaultManagement-API/ApiVersion.robot @@ -169,35 +169,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot index 394a9c789..63f0d49d9 100644 --- a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot +++ b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot @@ -70,38 +70,38 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} Integer response status 200 POST escalate severity Log escalate the perceived severity of an alarm with the VNFM Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId}/escalate ${PerceivedSeverity} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId}/escalate ${PerceivedSeverity} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET escalate severity log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId}/escalate + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId}/escalate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT escalate severity log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId}/escalate + Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId}/escalate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH escalate severity 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}/${apiVersion}/alarms/${alarmId}/escalate + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId}/escalate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE escalate severity 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}/${apiVersion}/alarms/${alarmId}/escalate + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId}/escalate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot index ada7690ea..0aa6b9e2f 100644 --- a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot @@ -116,7 +116,7 @@ POST Alarm Task log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Alarm Task @@ -124,7 +124,7 @@ PUT Alarm Task Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/alarmModifications.json - Put ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} ${body} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Alarm Task @@ -134,7 +134,7 @@ PATCH Alarm Task Set Headers {"If-Match": "${original_etag[0]}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/alarmModifications.json - Patch ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} ${body} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Alarm Task with wrong precondition @@ -143,14 +143,14 @@ PATCH Alarm Task with wrong precondition Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/alarmModifications.json - Patch ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} ${body} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Alarm Task log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Alarm Task @@ -158,7 +158,7 @@ GET Alarm Task Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${etag} Output response headers ETag Set Suite Variable &{original_etag} ${etag} ${outputResponse}= Output response @@ -168,7 +168,7 @@ GET Alarm Task with filter Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?${alarm_filter}=${managedObjectId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${alarm_filter}=${managedObjectId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Alarm Task with invalid filter @@ -176,7 +176,7 @@ GET Alarm Task with invalid filter Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?${invalid_alarm_filter}=${managedObjectId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${invalid_alarm_filter}=${managedObjectId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Check HTTP Response Status Code Is diff --git a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot index 274b83385..245f27508 100644 --- a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot @@ -85,41 +85,41 @@ GET Information about an individual subscription - Not Found Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Post Create individual subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get individual subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get individual subscription - filter Log Get the list of active individual subscription using a filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get individual subscription - invalid filter Log Get the list of active individual subscription using an invalid filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT individual subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH individual subscription @@ -127,14 +127,14 @@ PATCH individual subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE individual subscription log Try to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index bc3bbb182..2a1461e1f 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -298,13 +298,13 @@ POST Create a new Subscription - Unprocessable Entity *** Keywords *** Post Create subscription - Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions 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}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Create subscription - DUPLICATION @@ -315,7 +315,7 @@ Post Create subscription - DUPLICATION 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}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Create subscription - NO-DUPLICATION @@ -326,7 +326,7 @@ Post Create subscription - NO-DUPLICATION 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}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions @@ -335,70 +335,70 @@ Get subscriptions Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions - filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions - invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} PUT subscriptions log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH subscriptions log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE subscriptions log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -422,7 +422,7 @@ Get subscriptions with filter "id" Log Get the list of active subscriptions using a filter "id" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?id=${subscription_id} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?id=${subscription_id} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -433,7 +433,7 @@ Get subscriptions with filter "filter_notificationTypes" Log Get the list of active subscriptions using a filter "filter.notificationTypes" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.notificationTypes=${notification_type} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.notificationTypes=${notification_type} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -446,7 +446,7 @@ Get subscriptions with filter "filter_faultyResourceTypes" Log Get the list of active subscriptions using a filter "filter.faultyResourceTypes" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.faultyResourceTypes=${faultyResourceType} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.faultyResourceTypes=${faultyResourceType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -459,7 +459,7 @@ Get subscriptions with filter "filter_perceivedSeverities" Log Get the list of active subscriptions using a filter "filter.perceivedSeverities" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.perceivedSeverities=${perceivedSeverity} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.perceivedSeverities=${perceivedSeverity} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -472,7 +472,7 @@ Get subscriptions with filter "filter_eventTypes" Log Get the list of active subscriptions using a filter "filter.eventTypes" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.eventTypes=${eventType} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.eventTypes=${eventType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -485,7 +485,7 @@ Get subscriptions with filter "filter_probableCauses" Log Get the list of active subscriptions using a filter "filter.probableCauses" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.probableCauses=${probableCause} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.probableCauses=${probableCause} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -497,6 +497,6 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 diff --git a/SOL002/VNFFaultManagement-API/environment/variables.txt b/SOL002/VNFFaultManagement-API/environment/variables.txt index 1264a6aa9..dbc40ec86 100644 --- a/SOL002/VNFFaultManagement-API/environment/variables.txt +++ b/SOL002/VNFFaultManagement-API/environment/variables.txt @@ -11,7 +11,7 @@ ${managedObjectId} 007c111c-38a1-42c0-a666-7475ecb1567c ${invalid_alarm_filter} badFilter ${apiRoot} / ${apiName} vnffm -${apiVersion} v1 +${apiMajorVersion} v1 ${CONTENT_TYPE} application/json ${VNFM_ALLOWS_DUPLICATE_SUBS} 0 -- GitLab From f0191caab33d2c97f0cca5d164bc6677b7c42ac6 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 13 Oct 2020 12:57:26 +0500 Subject: [PATCH 071/580] added majorApiVersion --- SOL002/VNFIndicator-API/ApiVersion.robot | 10 +++---- .../IndividualSubscription.robot | 18 ++++++------- .../IndividualVNFindicator.robot | 26 +++++++++---------- SOL002/VNFIndicator-API/Subscriptions.robot | 22 ++++++++-------- SOL002/VNFIndicator-API/VNFIndicators.robot | 22 ++++++++-------- .../VnfIndicatorsInVnfInstanceId.robot | 18 ++++++------- .../environment/variables.txt | 2 +- 7 files changed, 59 insertions(+), 59 deletions(-) diff --git a/SOL002/VNFIndicator-API/ApiVersion.robot b/SOL002/VNFIndicator-API/ApiVersion.robot index 25aa1403f..9a9b25f3b 100644 --- a/SOL002/VNFIndicator-API/ApiVersion.robot +++ b/SOL002/VNFIndicator-API/ApiVersion.robot @@ -169,35 +169,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFIndicator-API/IndividualSubscription.robot b/SOL002/VNFIndicator-API/IndividualSubscription.robot index d8a8eb5a0..dc83acc73 100644 --- a/SOL002/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL002/VNFIndicator-API/IndividualSubscription.robot @@ -102,7 +102,7 @@ Get Individual VNF Indicator Subscription Log Trying to get a given subscription identified by subscriptionId Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -110,7 +110,7 @@ GET Individual VNF Indicator 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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -118,7 +118,7 @@ Send Delete Request for Individual VNF Indicator 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}/${apiVersion}/subscriptions/${subscriptionId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -126,14 +126,14 @@ Send Delete Request for Individual VNF Indicator Subscription with invalid resou 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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post Request for Individual VNF Indicator Subscription Log Trying to create a new subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -141,20 +141,20 @@ Send Put Request for Individual VNF Indicator Subscription 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Patch Request for Individual VNF Indicator Subscription Log Trying to create a new subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot index 08a04f106..5e5cdf32d 100644 --- a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot @@ -163,7 +163,7 @@ Get Individual Indicator for a VNF instance Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -171,7 +171,7 @@ Get Individual Indicator for a VNF instance with invalid indicator identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${erroneousIndicatorId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${erroneousIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -179,7 +179,7 @@ Send POST Request for individual indicator in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -187,7 +187,7 @@ Send PUT Request for individual indicator in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -195,7 +195,7 @@ Send PATCH Request for individual indicator in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -203,7 +203,7 @@ Send DELETE Request for individual indicator in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -244,7 +244,7 @@ Get Individual Indicator Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${indicatorId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -252,7 +252,7 @@ Get Individual Indicator with invalid indicator identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${erroneousIndicatorId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${erroneousIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -260,7 +260,7 @@ Send POST Request for individual indicator 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}/${apiVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -268,7 +268,7 @@ Send PUT Request for individual indicator 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}/${apiVersion}/indicators/${indicatorId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -276,7 +276,7 @@ Send PATCH Request for individual indicator 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}/${apiVersion}/indicators/${indicatorId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -284,7 +284,7 @@ Send DELETE Request for individual indicator 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}/${apiVersion}/indicators/${indicatorId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -292,5 +292,5 @@ Check PostCondition Individual Indicator exist Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index 65cfcde57..a2624bada 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -185,7 +185,7 @@ Get VNF Indicators 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}/${apiVersion}/subscriptions + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -193,7 +193,7 @@ Get VNF Indicators Subscriptions with filter 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}/${apiVersion}/subscriptions?${POS_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -201,7 +201,7 @@ Get VNF Indicators Subscriptions with invalid filter 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}/${apiVersion}/subscriptions?${NEG_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -209,7 +209,7 @@ Get VNF Indicators 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}/${apiVersion}/subscription + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -220,7 +220,7 @@ Send Post Request for VNF Indicator Subscription ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1 @@ -230,7 +230,7 @@ Send Put Request for VNF Indicator Subscriptions Log Trying to create a new subscription ${body}= Get File jsons/subscriptions.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -238,7 +238,7 @@ Send Patch Request for VNF Indicator Subscriptions Log Trying to create a new subscription ${body}= Get File jsons/subscriptions.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -246,7 +246,7 @@ Send Delete Request for VNF Indicator Subscriptions Log Trying to create a new subscription ${body}= Get File jsons/subscriptions.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -280,7 +280,7 @@ Check Postcondition VNF Indicator 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}/${apiVersion}/subscriptions/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -314,7 +314,7 @@ Post Create subscription - DUPLICATION Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body}= Get File jsons/subscriptions.json - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -325,7 +325,7 @@ Post Create subscription - NO-DUPLICATION Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body}= Get File jsons/subscriptions.json - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFIndicator-API/VNFIndicators.robot b/SOL002/VNFIndicator-API/VNFIndicators.robot index a4e5e7b46..11b8d7b01 100644 --- a/SOL002/VNFIndicator-API/VNFIndicators.robot +++ b/SOL002/VNFIndicator-API/VNFIndicators.robot @@ -177,7 +177,7 @@ Get all VNF indicators Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -186,7 +186,7 @@ Get VNF indicators with filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators?${POS_FIELDS} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${POS_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -195,7 +195,7 @@ Get VNF indicators with invalid filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators?${NEG_FIELDS} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -205,7 +205,7 @@ Get all VNF indicators with malformed authorization token Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -215,7 +215,7 @@ Get all VNF indicators with expired or revoked authorization token Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -224,7 +224,7 @@ Get all VNF indicators without authorization token Log The GET method queries multiple VNF indicators omitting token Set Headers {"Accept": "${ACCEPT_JSON}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -233,7 +233,7 @@ Get all VNF indicators with invalid resource endpoint Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicator + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicator ${output}= Output response Set Suite Variable ${response} ${output} @@ -241,7 +241,7 @@ Send POST Request for all VNF indicators 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}/${apiVersion}/indicators + Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -249,7 +249,7 @@ Send PUT Request for all VNF indicators 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}"} - Post ${apiRoot}/${apiName}/${apiVersion}/indicators + Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -257,7 +257,7 @@ Send PATCH Request for all VNF indicators 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}"} - Post ${apiRoot}/${apiName}/${apiVersion}/indicators + Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -265,7 +265,7 @@ Send DELETE Request for all VNF indicators 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}"} - Post ${apiRoot}/${apiName}/${apiVersion}/indicators + Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index 1ab37fc66..06cc15ba8 100644 --- a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -142,7 +142,7 @@ Get all indicators for a VNF instance Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -150,7 +150,7 @@ Get all indicators for a VNF instance with filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}?${POS_FIELDS} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${POS_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -158,7 +158,7 @@ Get all indicators for a VNF instance with invalid filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}?${NEG_FIELDS} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -166,7 +166,7 @@ Get all indicators for a VNF instance with invalid resource identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${erroneousVnfInstanceId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${erroneousVnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -174,7 +174,7 @@ Send POST Request for indicators in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -182,7 +182,7 @@ Send PUT Request for indicators in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -190,7 +190,7 @@ Send PATCH Request for indicators in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -198,7 +198,7 @@ Send DELETE Request for indicators in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -234,7 +234,7 @@ Check Postcondition Indicators for VNF instance Exist Log Check Postcondition Indicators for VNF instance Exist Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} Should Be Equal ${response['status']} 200 Check LINK in Header diff --git a/SOL002/VNFIndicator-API/environment/variables.txt b/SOL002/VNFIndicator-API/environment/variables.txt index 58dff1e61..22f32a1fb 100644 --- a/SOL002/VNFIndicator-API/environment/variables.txt +++ b/SOL002/VNFIndicator-API/environment/variables.txt @@ -12,7 +12,7 @@ ${EM-VNF_SCHEMA} https ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 ${apiRoot} / -${apiVersion} v1 +${apiMajorVersion} v1 ${apiName} vnfind -- GitLab From 07e687cda8f915e2da07fe1dbcf8dbf935943ada Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 13 Oct 2020 12:59:59 +0500 Subject: [PATCH 072/580] added majorApiVersion --- SOL002/VNFConfiguration-API/ApiVersion.robot | 10 +++++----- SOL002/VNFConfiguration-API/Configuration.robot | 12 ++++++------ .../VNFConfiguration-API/environment/variables.txt | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/SOL002/VNFConfiguration-API/ApiVersion.robot b/SOL002/VNFConfiguration-API/ApiVersion.robot index f0e1fe455..47abb5a53 100644 --- a/SOL002/VNFConfiguration-API/ApiVersion.robot +++ b/SOL002/VNFConfiguration-API/ApiVersion.robot @@ -167,35 +167,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFConfiguration-API/Configuration.robot b/SOL002/VNFConfiguration-API/Configuration.robot index 13dda5c88..f520a7578 100644 --- a/SOL002/VNFConfiguration-API/Configuration.robot +++ b/SOL002/VNFConfiguration-API/Configuration.robot @@ -110,7 +110,7 @@ Get VNF configuration Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/configuration + Get ${apiRoot}/${apiName}/${apiMajorVersion}/configuration ${output}= Output response Set Suite Variable ${response} ${output} @@ -120,7 +120,7 @@ Send VNF configuration Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/vnfConfigModifications.json - Patch ${apiRoot}/${apiName}/${apiVersion}/configuration ${body} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/configuration ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -165,7 +165,7 @@ Send Duplicated VNF configuration Set Headers {"If-Match": "${etag}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/vnfConfigModifications.json - Patch ${apiRoot}/${apiName}/${apiVersion}/configuration ${body} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/configuration ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -173,7 +173,7 @@ Send POST Request for VNF Configuration log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/configuration + Post ${apiRoot}/${apiName}/${apiMajorVersion}/configuration ${output}= Output response Set Suite Variable ${response} ${output} @@ -181,7 +181,7 @@ Send PUT Request for VNF Configuration log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/configuration + Put ${apiRoot}/${apiName}/${apiMajorVersion}/configuration ${output}= Output response Set Suite Variable ${response} ${output} @@ -189,6 +189,6 @@ Send DELETE Request for VNF Configuration log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/configuration + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/configuration ${output}= Output response Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL002/VNFConfiguration-API/environment/variables.txt b/SOL002/VNFConfiguration-API/environment/variables.txt index 40bbd9343..0cd66a08c 100644 --- a/SOL002/VNFConfiguration-API/environment/variables.txt +++ b/SOL002/VNFConfiguration-API/environment/variables.txt @@ -16,7 +16,7 @@ ${CONTENT_TYPE} application/json ${apiRoot} / ${apiName} vnfconfig -${apiVersion} v1 +${apiMajorVersion} v1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX -- GitLab From b0d78bdad90c2747cf2cbf7a705c5f31d4b6f707 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 13 Oct 2020 13:07:29 +0500 Subject: [PATCH 073/580] added majorApiVersion --- .../ApiVersion.robot | 10 +- .../CancelOperationTask.robot | 8 +- .../CancelOperationWorkflow.robot | 8 +- .../ChangeExternalVNFConnectivityTask.robot | 4 +- .../ChangeVNFFlavourTask.robot | 10 +- .../FailOperationTask.robot | 6 +- .../FailOperationWorkflow.robot | 4 +- .../HealVNFTask.robot | 8 +- .../IndividualSubscription.robot | 2 +- .../IndividualVNFInstance.robot | 6 +- .../InstantiateVNFTask.robot | 4 +- .../InstantiateVNFTaskWorkflow.robot | 2 +- .../OperateVNFTask.robot | 8 +- .../RetryOperationTask.robot | 6 +- .../RetryOperationWorkflow.robot | 6 +- .../RollBackOperationWorkflow.robot | 6 +- .../RollbackOperationTask.robot | 6 +- .../ScaleVNFTask.robot | 8 +- .../ScaleVNFToLevelTask.robot | 8 +- .../SubscriptionKeywords.robot | 4 +- .../TerminateVNFTask.robot | 8 +- .../VnfLcmMntOperationKeywords.robot | 272 +++++++++--------- .../environment/configuration.txt | 2 +- 23 files changed, 203 insertions(+), 203 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot index 3af9e2c16..9b644479d 100644 --- a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot @@ -168,35 +168,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot index a716a2d1e..a59afa065 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -99,20 +99,20 @@ DELETE Cancel operation task - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 Launch another error handling action Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry Integer response status 202 Check Fail not supported Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} # how to check if Fail is not supported? Check resource FAILED_TEMP Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState FAILED_TEMP \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot index 05c970fa6..b3a52eb84 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot @@ -55,22 +55,22 @@ Initialize System Precondition Checks - STARTING Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState STARTING Precondition Checks - PROCESSING - ROLLING_BACK Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState PROCESSING Check Postcondition VNF Cancel - STARTING Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState ROLLED_BACK Check Postcondition VNF Cancel - PROCESSING - ROLLING_BACK Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState FAILED_TEMP Check Operation Notification For Cancel diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index 8cabe1bbb..be2f16094 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -74,7 +74,7 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 Launch another LCM operation @@ -82,5 +82,5 @@ Launch another LCM operation Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} Integer response status 202 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 26326b039..8ebf82909 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -101,28 +101,28 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 Check resource not instantiated Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} String response body instantiationState NOT_INSTANTIATED Check resource instantiated Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} String response body instantiationState INSTANTIATED Check change flavour not supported Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} # how to check if change floavour is not supported? "flavourId" doesn't exist? Launch another LCM operation @@ -130,5 +130,5 @@ Launch another LCM operation Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} Integer response status 202 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index 5e0c6ba82..a5db3b48d 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -101,16 +101,16 @@ DELETE Fail operation task - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 Launch another error handling action Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry Integer response status 202 Check Fail not supported Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} # how to check if Fail is not supported? diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot index 35c87ff12..be9b602e0 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot @@ -36,12 +36,12 @@ Initialize System Precondition Checks Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState FAILED_TEMP Check Postcondition VNF Fail Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState FAILED Check Operation Notification For Fail diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index dadd2ea47..c30791d82 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -104,21 +104,21 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 Check resource not instantiated Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} String response body instantiationState NOT_INSTANTIATED Check heal not supported Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} # how to check if heal is not supported? "flavourId" doesn't exist? Launch another LCM operation @@ -126,5 +126,5 @@ Launch another LCM operation Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} Integer response status 202 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot index 8088c0856..9d00ce943 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -85,5 +85,5 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index da668687a..c1fd08129 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -132,14 +132,14 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 Check resource instantiated Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} String response body instantiationState INSTANTIATED Launch another LCM operation @@ -147,7 +147,7 @@ Launch another LCM operation Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfToLevelRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} Integer response status 202 SET etag ${etag} Output response headers ETag diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 1990c4dc4..87d127b99 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -90,12 +90,12 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 Check resource instantiated Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} String response body instantiationState INSTANTIATED \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot index 24fb72421..839d28a97 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot @@ -42,7 +42,7 @@ Send VNF Instantiation Request Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/instantiateVnfRequest.json - ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} + ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} Check Operation Notification For Instantiation [Arguments] ${status} diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index c5dba8677..d7d01667b 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -102,21 +102,21 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 Check resource not instantiated Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} String response body instantiationState NOT_INSTANTIATED Check operate not supported Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} # how to check if operate is not supported? "flavourId" doesn't exist? Launch another LCM operation @@ -124,5 +124,5 @@ Launch another LCM operation Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} Integer response status 202 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index ff057a941..eb8d440e9 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -101,16 +101,16 @@ DELETE Retry operation task - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 Launch another error handling action Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback Integer response status 202 Check retry not supported Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} # how to check if retry is not supported? diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot index 8a62a5f30..f9858ebea 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot @@ -53,17 +53,17 @@ Initialize System Precondition Checks Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState FAILED_TEMP Check Postcondition VNF Retry Successful Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState COMPLETED Check Postcondition VNF Retry Unsuccessful Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState FAILED_TEMP Check Operation Notification For Retry diff --git a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot index e22b001c8..92734b6f9 100644 --- a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot @@ -56,17 +56,17 @@ Initialize System Precondition Checks Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState FAILED_TEMP Check Postcondition VNF Roll Back Successful Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState ROLLED_BACK Check Postcondition VNF Roll Back Unsuccessful Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState FAILED_TEMP Check Operation Notification For Roll Back diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index 4f5fc7688..dcc5f288b 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -101,16 +101,16 @@ DELETE Rollback operation task - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 Launch another error handling action Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry Integer response status 202 Check Rollback not supported Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} # how to check if Rollback is not supported? diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index d5f81b268..b8caee904 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -104,21 +104,21 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 Check resource not instantiated Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} String response body instantiationState NOT_INSTANTIATED Check scale not supported Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Missing response body instantiatedVnfInfo scaleStatus Launch another LCM operation @@ -126,5 +126,5 @@ Launch another LCM operation Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfToLevelRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} Integer response status 202 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index b57e54726..6706ed342 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -105,21 +105,21 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 Check resource not instantiated Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${notInstantiatedVnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId} String response body instantiationState NOT_INSTANTIATED Check scale to level not supported Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Missing response body instantiatedVnfInfo scaleStatus Launch another LCM operation @@ -127,5 +127,5 @@ Launch another LCM operation Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} Integer response status 202 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot b/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot index 54fa12754..6c858da67 100644 --- a/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot @@ -14,8 +14,8 @@ Check subscriptions about one VNFInstance and operation type [Arguments] ${vnfInstanceId} ${notificationType} ${operationType}="" ${operationState}="" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - Run Keyword If ${notificationType}=="VnfIdentifierCreationNotification" or ${notificationType}=="VnfIdentifierDeletionNotification" GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?vnfInstanceIds=${vnfInstanceId}¬ificationTypes=${notificationType} - ... ELSE GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?vnfInstanceIds=${vnfInstanceId}¬ificationTypes=${notificationType}&operationTypes=${operationType}&operationStates=${operationState} + Run Keyword If ${notificationType}=="VnfIdentifierCreationNotification" or ${notificationType}=="VnfIdentifierDeletionNotification" GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?vnfInstanceIds=${vnfInstanceId}¬ificationTypes=${notificationType} + ... ELSE GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?vnfInstanceIds=${vnfInstanceId}¬ificationTypes=${notificationType}&operationTypes=${operationType}&operationStates=${operationState} Integer response status 200 Array response body minItems=1 ${body} Output response body diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index 94fa1a7f3..928f931a8 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -89,21 +89,21 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 Check resource not instantiated Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} String response body instantiationState NOT_INSTANTIATED Check change flavour not supported Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} # how to check if change floavour is not supported? "flavourId" doesn't exist? Launch another LCM operation @@ -111,5 +111,5 @@ Launch another LCM operation Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} Integer response status 202 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 8fde64a7e..723712d75 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -18,7 +18,7 @@ Get Vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${body}= Output response body [Return] ${body} @@ -56,7 +56,7 @@ Check VNF Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${response}= Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfId} + ${response}= Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfId} Check VNF Status [Arguments] ${current} ${expected} @@ -65,12 +65,12 @@ Check VNF Status Check operation resource state is FAILED_TEMP Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body instantiationState FAILED_TEMP Check operation resource state is FINALLY_FAILED Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body instantiationState FINALLY_FAILED Get Vnf Scale Info [Arguments] ${vnfInstanceId} @@ -108,7 +108,7 @@ Send VNF Scale Out Request ${body}= Get File jsons/scaleVnfOutRequest.json ${json}= evaluate json.loads('''${body}''') json ${aspectId}= Set Variable ${json.aspectId} - ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} Send VNF Scale To Level Request [Documentation] Instantiate VNF The POST method instantiates a VNF instance. @@ -119,20 +119,20 @@ Send VNF Scale To Level Request ${body}= Get File jsons/scaleVnfToLevelRequest.json ${json}= evaluate json.loads('''${body}''') json ${aspectId}= Set Variable ${json.aspectId} - ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} + ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} Send VNF Instance Resource Create Request - Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiVersion}/vnf_instances + Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances 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 - ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances ${body} + ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} Send VNF Instance Resource Delete Request log Delete an individual VNF instance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${response}= Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + ${response}= Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Send Change VNF Flavour Request Log Trying to change the deployment flavour of a VNF instance. @@ -140,7 +140,7 @@ Send Change VNF Flavour Request Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/changeVnfFlavourRequest.json - ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} + ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} Send Change VNF Operational State Request Log Trying to change the operational state of a VNF instance. @@ -148,7 +148,7 @@ Send Change VNF Operational State Request Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/operateVnfRequest.json - ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate ${body} + ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} Send Heal VNF Request Log Trying to heal a VNF instance. @@ -156,7 +156,7 @@ Send Heal VNF Request Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/healVnfRequest.json - ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal ${body} + ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} Send Change Ext Connectivity Request Log Trying to change the external connectivity of a VNF instance. @@ -164,7 +164,7 @@ Send Change Ext Connectivity Request Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/changeExtVnfConnectivityRequest.json - ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} + ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} Send Terminate VNF Request Log Trying to terminate a VNF instance. @@ -172,7 +172,7 @@ Send Terminate VNF Request Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/terminateVnfRequest.json - ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} + ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} Send Info Modification Request Log Trying to update information of a VNF instance. @@ -180,31 +180,31 @@ Send Info Modification Request Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/patchBodyRequest.json - ${response}= Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} ${body} + ${response}= Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${body} Send Retry Operation Request Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry Send Roll back Operation Request Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback Send Fail Operation Request Log Fail a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail + ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail Send Cancel Operation Request Log Cancel an ongoing VNF lifecycle operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} + ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} Create a new Grant - Synchronous mode [Arguments] ${vnfInstanceId} ${vnfLcmOpOccId} ${operation} - Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants + Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/grants Pass Execution If ${SYNC_MODE} == 0 The Granting process is asynchronous mode. Skipping the test Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -213,7 +213,7 @@ Create a new Grant - Synchronous mode ${json_body}= evaluate json.loads('''${body}''') json Set To Dictionary ${json_body} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} operation=${operation} ${body}= evaluate json.dumps(${json_body}) json - Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} Integer response status 201 Log Status code validated ${headers}= Output response headers @@ -226,7 +226,7 @@ Create a new Grant - Synchronous mode Create a new Grant - Asynchronous mode [Arguments] ${vnfInstanceId} ${vnfLcmOpOccId} ${operation} - Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants + Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/grants Pass Execution If ${SYNC_MODE} == 1 The Granting process is synchronous mode. Skipping the test Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -235,7 +235,7 @@ Create a new Grant - Asynchronous mode ${json_body}= evaluate json.loads('''${body}''') json Set To Dictionary ${json_body} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} operation=${operation} ${body}= evaluate json.dumps(${json_body}) json - Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} Output response Integer response status 202 Log Status code validated @@ -249,7 +249,7 @@ POST Cancel operation task Log Cancel an ongoing VNF lifecycle operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Cancel a VNF lifecycle operation - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} Log Validate Status code ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -257,28 +257,28 @@ POST Cancel operation task GET Cancel operation task log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Cancel operation task log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Cancel operation task Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Cancel operation task 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}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -288,35 +288,35 @@ POST Change External VNF Connectivity Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/changeExtVnfConnectivityRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Change External VNF Connectivity log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Change External VNF Connectivity log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Change External VNF Connectivity Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Change External VNF Connectivity 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}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -327,34 +327,34 @@ POST Change VNF deployment flavour Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/changeVnfFlavourRequest.json ${body}= Format String ${template} newFlavourId=${newFlavourId} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Change VNF deployment flavour log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Change VNF deployment flavour log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Change VNF deployment flavour Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Change VNF deployment flavour 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}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -365,7 +365,7 @@ POST Create a new vnfInstance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/createVnfRequest.json ${body}= Format String ${template} vnfdId=${vnfdId} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -375,7 +375,7 @@ GET multiple vnfInstances Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -385,7 +385,7 @@ GET multiple vnfInstances with bad attribute Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?attribute_not_exist=some_value + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?attribute_not_exist=some_value ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -395,7 +395,7 @@ GET multiple vnfInstances with bad filter Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?attribute_not_exist=some_value + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?attribute_not_exist=some_value ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -403,35 +403,35 @@ GET multiple vnfInstances with all_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_default attribute selector Log Query status information about multiple VNF instances using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_default and fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -440,7 +440,7 @@ PUT VNFInstances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${output}= Output response Set Suite Variable ${response} ${output} @@ -449,7 +449,7 @@ PATCH VNFInstances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${output}= Output response Set Suite Variable ${response} ${output} @@ -458,7 +458,7 @@ DELETE VNFInstances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${output}= Output response Set Suite Variable ${response} ${output} @@ -467,7 +467,7 @@ POST individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -476,7 +476,7 @@ GET individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -485,7 +485,7 @@ PUT individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -495,13 +495,13 @@ PATCH individual vnfInstance Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/patchBodyRequest.json - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} ${body} + 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}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST instantiate individual vnfInstance @@ -510,35 +510,35 @@ POST instantiate individual vnfInstance Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/instantiateVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST Scale vnfInstance @@ -548,7 +548,7 @@ POST Scale vnfInstance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/scaleVnfRequest.json ${body}= Format String ${template} scaletype=${scaletype} scaleAspectId=${scaleAspectId} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance @@ -557,7 +557,7 @@ GET Scale vnfInstance Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Scale vnfInstance @@ -566,7 +566,7 @@ PUT Scale vnfInstance Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Scale vnfInstance @@ -575,7 +575,7 @@ PATCH Scale vnfInstance Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Scale vnfInstance @@ -584,7 +584,7 @@ DELETE Scale vnfInstance Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/scaleVnfRequest.json - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST Scale vnfInstance to level @@ -594,34 +594,34 @@ POST Scale vnfInstance to level Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/scaleVnfToLevelRequest.json ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance to level log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Scale vnfInstance to level log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Scale vnfInstance to level 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}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Scale vnfInstance to level log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -632,35 +632,35 @@ POST Terminate VNF Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/terminateVnfRequest.json ${body}= Format String ${template} terminationType=${terminationType} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Terminate VNF log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Terminate VNF log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Terminate VNF 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}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Terminate VNF log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -671,35 +671,35 @@ POST Heal VNF Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/healVnfRequest.json ${body}= Format String ${template} healingCause=${healingCause} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Heal VNF log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Heal VNF log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Heal VNF 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}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Heal VNF log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -710,35 +710,35 @@ POST Operate VNF Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/operateVnfRequest.json ${body}= Format String ${template} changeStateTo=${changeStateTo} stopType=${stopType} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Operate VNF log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Operate VNF log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Operate VNF 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}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Operate VNF log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -746,7 +746,7 @@ Post VNF LCM Operation occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM Operation occurrences @@ -754,84 +754,84 @@ GET VNF LCM Operation occurrences Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM Operation occurrences invalid attribute Log Query status information about multiple VNF lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?attribute_not_exist=some_value + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?attribute_not_exist=some_value ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM Operation occurrences invalid filter Log Query status information about multiple VNF lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?fields=wrong_field + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=wrong_field ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get VNF LCM Operation occurrences with all_fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_default and fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_default attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} PUT VNF LCM Operation occurrences log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH VNF LCM Operation occurrences log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE VNF LCM Operation occurrences log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Individual VNF LCM Operation occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Individual VNF LCM Operation occurrences @@ -839,35 +839,35 @@ Get Individual VNF LCM Operation occurrences Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put multiple VNF instances log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch multiple VNF instances log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete multiple VNF instances log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Retry operation Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Retry operation @@ -875,35 +875,35 @@ Get Retry operation Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put Retry operation log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Retry operation log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Retry operation log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Rollback operation Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Rollback operation @@ -911,35 +911,35 @@ Get Rollback operation Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put Rollback operation log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Rollback operation log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Rollback operation log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Fail operation Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Fail operation @@ -947,38 +947,38 @@ Get Fail operation Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put Fail operation log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Fail operation log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Fail operation log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Create subscription - Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} 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} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Create subscription - DUPLICATION @@ -989,7 +989,7 @@ Post Create subscription - DUPLICATION 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} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Create subscription - NO-DUPLICATION @@ -1000,7 +1000,7 @@ Post Create subscription - NO-DUPLICATION 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} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions @@ -1009,7 +1009,7 @@ Get subscriptions Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions - filter @@ -1017,42 +1017,42 @@ Get subscriptions - filter Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions - invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} PUT subscriptions @@ -1060,7 +1060,7 @@ PUT subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH subscriptions @@ -1068,7 +1068,7 @@ PATCH subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE subscriptions @@ -1076,7 +1076,7 @@ DELETE subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Create Individual subscription @@ -1084,14 +1084,14 @@ Post Create Individual subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Individual subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put Individual subscription @@ -1099,7 +1099,7 @@ Put Individual subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Individual subscription @@ -1107,14 +1107,14 @@ Patch Individual subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Individual subscription log Try to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put Notification subscription diff --git a/SOL003/VNFLifecycleManagement-API/environment/configuration.txt b/SOL003/VNFLifecycleManagement-API/environment/configuration.txt index 5363f3f0c..91cc810be 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/configuration.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/configuration.txt @@ -11,7 +11,7 @@ ${CONTENT_TYPE_PATCH} application/merge-patch+json ${apiRoot} / ${apiName} vnflcm -${apiVersion} v1 +${apiMajorVersion} v1 ${CancelMode} GRACEFUL ${VNFM_DUPLICATION} 0 -- GitLab From 904e4f0456b7567d5b8a3b9ad9d6c4f49834cced Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 13 Oct 2020 13:09:57 +0500 Subject: [PATCH 074/580] added majorApiVersion --- .../ApiVersion.robot | 10 +++---- .../IndividualPmJob.robot | 18 ++++++------ .../IndividualReport.robot | 16 +++++------ .../IndividualThreshold.robot | 16 +++++------ .../VNFPerformanceManagement-API/PMJobs.robot | 28 +++++++++---------- .../Thresholds.robot | 18 ++++++------ .../environment/variables.txt | 2 +- 7 files changed, 54 insertions(+), 54 deletions(-) diff --git a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot index 6b87e7997..b1cfc474c 100644 --- a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot @@ -169,35 +169,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index 122cb090c..f93eae424 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -115,7 +115,7 @@ GET individual VNF Performance Job Log Trying to get a Pm Job present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -123,7 +123,7 @@ GET individual VNF Performance Job with invalid resource identifier Log Trying to perform a negative get, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${erroneousPmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -131,7 +131,7 @@ Send Delete request for individual VNF Performance Job Log Trying to delete an existing PM Job Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -139,7 +139,7 @@ Send Delete request for individual VNF Performance Job with invalid resource ide Log Trying to perform a negative delete, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${erroneousPmJobId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -147,7 +147,7 @@ Send Post request for individual VNF Performance Job 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}/${apiVersion}/pm_jobs/${newPmJobId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -155,10 +155,10 @@ Send Put request for individual VNF Performance Job 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -167,7 +167,7 @@ Send Patch request for individual VNF Performance Job Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/PMJobModifications.json - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} ${body} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -176,7 +176,7 @@ Check Postcondition VNF Performance Job is not Created Log Trying to get a new Pm Job Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${newPmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 404 diff --git a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot index a3d5d6347..4a4837916 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot @@ -85,7 +85,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -93,41 +93,41 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${erroneousReportId} + 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}"} - POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${newReportId} + 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} Send Patch request for Individual Performance Report Log Trying to update performance report Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for Individual Performance Report Log Trying to delete performance report Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + 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 76bc00b86..a1372c72d 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -115,7 +115,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -123,28 +123,28 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${erroneousThresholdId} + 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}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + 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}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds/${erroneousThresholdId} + 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}"} - POST ${apiRoot}/${apiName}/${apiVersion}/thresholds/${newThresholdId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -152,10 +152,10 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -165,7 +165,7 @@ Send Patch request for individual VNF Performance Threshold Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/ThresholdModifications.json - PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFPerformanceManagement-API/PMJobs.robot b/SOL003/VNFPerformanceManagement-API/PMJobs.robot index c0772ad12..978e21542 100644 --- a/SOL003/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL003/VNFPerformanceManagement-API/PMJobs.robot @@ -214,7 +214,7 @@ GET all VNF Performance Monitoring Jobs Log Trying to get all PM Jobs present in the VNFM Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -222,7 +222,7 @@ GET VNF Performance Monitoring Jobs with attribute-based filter Log Trying to get all PM Jobs present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?${POS_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -230,7 +230,7 @@ GET VNF Performance Monitoring Jobs with all_fields attribute selector Log Trying to get all PM Jobs present in the VNFM, using 'all_fields' filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?all_fields + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -238,7 +238,7 @@ GET VNF Performance Monitoring Jobs with exclude_default attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -247,7 +247,7 @@ GET VNF Performance Monitoring Jobs with fields attribute selector Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -256,7 +256,7 @@ GET VNF Performance Monitoring Jobs with fields and exclude_default attribute se Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -265,7 +265,7 @@ GET VNF Performance Monitoring Jobs with exclude_fields attribute selector Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -273,7 +273,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter Log Trying to get all PM Jobs present in the VNFM, using an erroneous filter param Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?${NEG_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -281,7 +281,7 @@ GET VNF Performance Monitoring Jobs 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}/${apiVersion}/pm_job # wrong URI /pm_job instead of /pm_jobs + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_job # wrong URI /pm_job instead of /pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -292,7 +292,7 @@ Send Post Request Create new VNF Performance Monitoring Job Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/CreatePmJobRequest.json ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} - POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -300,7 +300,7 @@ Send PUT Request for all VNF Performance Monitoring Jobs 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}/${apiVersion}/pm_jobs + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -308,7 +308,7 @@ Send PATCH Request for all VNF Performance Monitoring Jobs 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}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -316,7 +316,7 @@ Send DELETE Request for all VNF Performance Monitoring Jobs 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}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -328,7 +328,7 @@ Check Postcondition PmJob Exists Log Checking that Pm Job exists Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 diff --git a/SOL003/VNFPerformanceManagement-API/Thresholds.robot b/SOL003/VNFPerformanceManagement-API/Thresholds.robot index e05108b1c..945547029 100644 --- a/SOL003/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL003/VNFPerformanceManagement-API/Thresholds.robot @@ -142,7 +142,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -150,7 +150,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds?${FILTER_OK} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_OK} ${output}= Output response Set Suite Variable ${response} ${output} @@ -158,7 +158,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds?${FILTER_KO} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_KO} ${output}= Output response Set Suite Variable ${response} ${output} @@ -166,7 +166,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/threshold + GET ${apiRoot}/${apiName}/${apiMajorVersion}/threshold ${output}= Output response Set Suite Variable ${response} ${output} @@ -177,7 +177,7 @@ Send Post Request Create new Performance Threshold Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/CreateThresholdRequest.json ${request}= Format String ${template} objectInstanceIds=${objectInstanceIds} - POST ${apiRoot}/${apiName}/${apiVersion}/thresholds ${request} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${request} ${output}= Output response Set Suite Variable ${response} ${output} @@ -186,7 +186,7 @@ Send PUT Request for all Performance Thresholds Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - PUT ${apiRoot}/${apiName}/${apiVersion}/thresholds + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -195,14 +195,14 @@ Send PATCH Request for all Performance Thresholds Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} Send DELETE Request for all Performance Thresholds Log DELETE THresholds Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -214,7 +214,7 @@ Check Postcondition Threshold Exists Log Checking that Threshold exists Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 diff --git a/SOL003/VNFPerformanceManagement-API/environment/variables.txt b/SOL003/VNFPerformanceManagement-API/environment/variables.txt index 170e9cee2..348ad4738 100644 --- a/SOL003/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL003/VNFPerformanceManagement-API/environment/variables.txt @@ -16,7 +16,7 @@ ${VNFM_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the F ${VNFM_ALLOWS_DUPLICATE_SUBS} 1 ${apiRoot} / -${apiVersion} v1 +${apiMajorVersion} v1 ${apiName} vnfpm ${callback_port} 9091 -- GitLab From 52d3dd97d863016678127dd03c26e9a8c039a056 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 13 Oct 2020 13:12:25 +0500 Subject: [PATCH 075/580] added majorApiVersion --- .../VNFFaultManagement-API/ApiVersion.robot | 10 +- .../FaultManagement-APIKeyword.robot | 100 +++++++++--------- .../environment/variables.txt | 2 +- 3 files changed, 56 insertions(+), 56 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/ApiVersion.robot b/SOL003/VNFFaultManagement-API/ApiVersion.robot index 1f3796a7c..298ac757e 100644 --- a/SOL003/VNFFaultManagement-API/ApiVersion.robot +++ b/SOL003/VNFFaultManagement-API/ApiVersion.robot @@ -169,35 +169,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot index 077fe2c6f..1f9b5e86e 100644 --- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot @@ -16,12 +16,12 @@ ${original_etag} 1234 Check created Subscription existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} Integer response status 200 Check Postcondition FaultManagement Subscription Is Set Log Check Postcondition subscription exist Set Headers {"Accept": "${ACCEPT_JSON}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -38,13 +38,13 @@ Check Precondition VNF fault management individual alarm Exists Check Individual Subscription existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Check Individual Subscription deleted Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 404 Check HTTP Response Status Code Is @@ -86,7 +86,7 @@ Send POST request for fault management Alarms log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/alarms + Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -94,7 +94,7 @@ PATCH Fault management Alarms log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/alarms + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse} = Output response Set Global Variable ${response} ${outputResponse} @@ -102,7 +102,7 @@ PUT Fault management Alarms log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/alarms + Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -110,7 +110,7 @@ DELETE Fault management Alarms log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/alarms + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -119,7 +119,7 @@ GET Fault Management Alarms Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -128,7 +128,7 @@ GET Fault Management Alarms With Filters Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?${alarm_filter}=${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${alarm_filter}=${nsInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -137,7 +137,7 @@ GET Fault Management Alarms With Invalid Filters Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?${invalid_alarm_filter}=${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${invalid_alarm_filter}=${nsInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Alarms Task with all_fields attribute selector @@ -145,7 +145,7 @@ GET Alarms Task with all_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}/${apiVersion}/alarms?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with exclude_default attribute selector @@ -153,7 +153,7 @@ GET Alarms Task with exclude_default 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}/${apiVersion}/alarms?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with fields attribute selector @@ -161,7 +161,7 @@ GET Alarms Task 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}/${apiVersion}/alarms?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with exclude_fields attribute selector @@ -169,14 +169,14 @@ GET Alarms Task 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}/${apiVersion}/alarms?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Send POST request for fault management Individual Alarm log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -184,7 +184,7 @@ DELETE Fault Management Individual Alarm log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -192,7 +192,7 @@ PUT Fault Management Individual Alarm log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -202,7 +202,7 @@ GET Fault Management Individual Alarm Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${etag} Output response headers ETag Set Suite Variable &{original_etag} ${etag} ${outputResponse}= Output response @@ -214,7 +214,7 @@ GET Fault Management Individual Alarm with invalid id Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms/${invalidAlarmId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${invalidAlarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -224,7 +224,7 @@ PATCH Fault Management Individual Alarm Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/alarmModifications.json - Patch ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} ${body} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -235,7 +235,7 @@ PATCH Fault Management Individual Alarm - precondition failed Set Headers {"If-Match": "${original_etag[0]}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/alarmModifications.json - Patch ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} ${body} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -246,42 +246,42 @@ PATCH Fault Management Individual Alarm Conflict Set Headers {"If-Match": "${Etag}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/alarmModifications.json - Patch ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} ${body} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST Subscription - Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions 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} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Send POST Request for duplicated subscription - Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Pass Execution If ${VNFM_DUPLICATION} == 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} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Send POST Request for duplicated subscription not permitted - Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Pass Execution If ${VNFM_DUPLICATION} == 1 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} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -289,7 +289,7 @@ GET Subscriptions Log Get the list of active subscriptions Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -297,7 +297,7 @@ GET Subscriptions with filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -305,42 +305,42 @@ GET Subscriptions with Invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} PUT Subscriptions log Trying to perform a PUT Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -348,7 +348,7 @@ PATCH Subscriptions log Trying to perform a PATCH Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -356,7 +356,7 @@ DELETE Subscriptions log Trying to perform a DELETE Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -364,7 +364,7 @@ POST Individual Subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -372,7 +372,7 @@ GET Individual Subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -380,7 +380,7 @@ PUT Individual Subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -388,7 +388,7 @@ PATCH Individual Subscription log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -396,7 +396,7 @@ DELETE Individual Subscription log Trying to perform a DELETE. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -408,7 +408,7 @@ Get subscriptions with filter "id" Log Get the list of active subscriptions using a filter "id" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?id=${subscription_id} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?id=${subscription_id} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -419,7 +419,7 @@ Get subscriptions with filter "filter_notificationTypes" Log Get the list of active subscriptions using a filter "filter.notificationTypes" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.notificationTypes=${notification_type} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.notificationTypes=${notification_type} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -432,7 +432,7 @@ Get subscriptions with filter "filter_faultyResourceTypes" Log Get the list of active subscriptions using a filter "filter.faultyResourceTypes" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.faultyResourceTypes=${faultyResourceType} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.faultyResourceTypes=${faultyResourceType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -445,7 +445,7 @@ Get subscriptions with filter "filter_perceivedSeverities" Log Get the list of active subscriptions using a filter "filter.perceivedSeverities" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.perceivedSeverities=${perceivedSeverity} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.perceivedSeverities=${perceivedSeverity} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -458,7 +458,7 @@ Get subscriptions with filter "filter_eventTypes" Log Get the list of active subscriptions using a filter "filter.eventTypes" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.eventTypes=${eventType} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.eventTypes=${eventType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -471,7 +471,7 @@ Get subscriptions with filter "filter_probableCauses" Log Get the list of active subscriptions using a filter "filter.probableCauses" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.probableCauses=${probableCause} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.probableCauses=${probableCause} ${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 14ec6985d..f34b4ec6a 100644 --- a/SOL003/VNFFaultManagement-API/environment/variables.txt +++ b/SOL003/VNFFaultManagement-API/environment/variables.txt @@ -26,7 +26,7 @@ ${NFVO_FIELDS} 1 ${apiRoot} / ${apiName} vnffm -${apiVersion} v1 +${apiMajorVersion} v1 ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -- GitLab From ec34c3d24719d27150aebcddde319a8ab0d5c26e Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 13 Oct 2020 15:44:13 +0500 Subject: [PATCH 076/580] removed subscription and fixed minor bugs --- .../IndividualPmJob.robot | 19 +- .../IndividualReport.robot | 41 +-- .../IndividualSubscription.robot | 99 ------ .../IndividualThreshold.robot | 19 +- .../VNFPerformanceManagement-API/PMJobs.robot | 24 +- .../Subscriptions.robot | 176 ----------- .../Thresholds.robot | 18 +- .../VNFPerformanceManagementKeywords.robot | 295 +----------------- .../environment/individualSubscription.txt | 6 - .../environment/subscriptions.txt | 8 - .../environment/variables.txt | 2 +- .../jsons/subscriptions.json | 6 - .../schemas/PmSubscription.schema.json | 142 --------- .../schemas/PmSubscriptions.schema.json | 1 - 14 files changed, 34 insertions(+), 822 deletions(-) delete mode 100644 SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot delete mode 100644 SOL002/VNFPerformanceManagement-API/Subscriptions.robot delete mode 100644 SOL002/VNFPerformanceManagement-API/environment/individualSubscription.txt delete mode 100644 SOL002/VNFPerformanceManagement-API/environment/subscriptions.txt delete mode 100644 SOL002/VNFPerformanceManagement-API/jsons/subscriptions.json delete mode 100644 SOL002/VNFPerformanceManagement-API/schemas/PmSubscription.schema.json delete mode 100644 SOL002/VNFPerformanceManagement-API/schemas/PmSubscriptions.schema.json diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index 61cd4bd06..eeced512b 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -65,27 +65,25 @@ POST Individual VNF Performance Job - Method not implemented [Documentation] Test ID: 6.3.3.2.5 ... Test title: POST Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Monitoring Job - ... Pre-conditions: A VNF instance is instantiated + ... Pre-conditions: none ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Job is not created on the VNFM + ... Post-Conditions: none Send Post request for individual VNF Performance Job Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Job is not Created PUT Individual VNF Performance Job - Method not implemented [Documentation] Test ID: 6.3.3.2.6 ... Test title: PUT Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance Monitoring Job - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. + ... Pre-conditions: none ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Job is not modified by the operation + ... Post-Conditions: none Send Put request for individual VNF Performance Job Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Job is Unmodified (Implicit) PATCH Individual VNF Performance Job [Documentation] Test ID: 6.3.3.2.7 @@ -175,15 +173,6 @@ Send Patch request for individual VNF Performance Job ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition VNF Performance Job is not Created - Log Trying to get a new Pm Job - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - Check Postcondition VNF Performance Job is Unmodified (Implicit) Log Check Postcondition VNF PM job is not modified GET individual VNF Performance Job diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot index f42402876..7570068dd 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot @@ -30,58 +30,55 @@ Get Individual Performance Report with invalid resource endpoint ... Post-Conditions: none Get Individual Performance Report with invalid resource endpoint Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails POST Individual Performance Report - Method not implemented [Documentation] Test ID: 6.3.3.3.3 ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF performance report within a monitoring job - ... Pre-conditions: A VNF instance is instantiated. + ... Pre-conditions: none ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance report is not created on the VNFM + ... Post-Conditions: none Send Post request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition VNF Individual Performance Report is not Created PUT Individual Performance Report - Method not implemented [Documentation] Test ID: 6.3.3.3.4 ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF performance report within a monitoring job - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. + ... Pre-conditions: none ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance report is not modified by the operation + ... Post-Conditions: none Send Put request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition VNF Individual Performance Report is Unmodified (Implicit) PATCH Individual Performance Report - Method not implemented [Documentation] Test ID: 6.3.3.3.5 ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF performance report within a monitoring job - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. + ... Pre-conditions: none ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance report is not modified by the operation + ... Post-Conditions: none Send Patch request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition VNF Individual Performance Report is Unmodified (Implicit) DELETE Individual Performance Report - Method not implemented [Documentation] Test ID: 6.3.3.3.6 ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF performance report within a monitoring job - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. + ... Pre-conditions: none ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance report is not deleted by the operation + ... Post-Conditions: none Send Delete request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition VNF Individual Performance Report Exists *** Keywords *** Get Individual Performance Report @@ -134,26 +131,6 @@ Send Delete request for Individual Performance Report ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition VNF Individual Performance Report Exists - Log Checking that report still exists - Get Individual Performance Report - -Check Postcondition VNF Individual Performance Report is not Created - Log Trying to get a new report - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${newReportId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - -Check Postcondition VNF Individual Performance Report is Unmodified (Implicit) - Log Check Postcondition VNF PM job is not modified - Get Individual Performance Report - Log Check Response matches original VNF report - ${report}= evaluate json.loads('''${response['body']}''') json - Should Be Equal ${origResponse['body']['entries'][0]['objectInstanceId']} ${report['entries'][0]['objectInstanceId']} - Check HTTP Response Status Code Is [Arguments] ${expected_status} ${status}= Convert To Integer ${expected_status} diff --git a/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot b/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot deleted file mode 100644 index 4f34fd5c0..000000000 --- a/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot +++ /dev/null @@ -1,99 +0,0 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Resource environment/individualSubscription.txt -Resource VNFPerformanceManagementKeywords.robot - -*** Test Cases *** -GET Individual VNF Performance Subscription - [Documentation] Test ID: 6.3.3.7.1 - ... Test title: GET Individual VNF Performance Subscription - ... Test objective: The objective is to test the retrieval of individual VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get Individual VNF Performance Subscription - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body Subscription Identifier matches the requested Subscription - -GET Individual VNF Performance Subscription with invalid resource identifier - [Documentation] Test ID: 6.3.3.7.2 - ... Test title: GET Individual VNF Performance Subscription with invalid resource identifier - ... Test objective: The objective is to test that the retrieval of an individual VNF performance subscription fails when using an invalid resource identifier - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET individual VNF Performance Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 - -DELETE Individual VNF Performance Subscription - [Documentation] Test ID: 6.3.3.7.3 - ... Test title: DELETE Individual VNF Performance Subscription - ... Test objective: The objective is to test the deletion of an individual VNF performance subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance Subscription is not available anymore in the VNFM - Send Delete request for individual VNF Performance Subscription - Check HTTP Response Status Code Is 204 - Check Postcondition VNF Performance Subscription is Deleted - -DELETE Individual VNF Performance Subscription with invalid resource identifier - [Documentation] Test ID: 6.3.3.7.4 - ... Test title: DELETE Individual VNF Performance Subscription with invalid resource identifier - ... Test objective: The objective is to test that the deletion of an individual VNF performance subscription fails when using an invalid resource identifier - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Send Delete request for individual VNF Performance Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 - -POST Individual VNF Performance Subscription - Method not implemented - [Documentation] Test ID: 6.3.3.7.5 - ... Test title: POST Individual VNF Performance Subscription - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Subscription - ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance Subscription is not created on the VNFM - Send Post request for individual VNF Performance Subscription - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscription is not Created - -PUT Individual VNF Performance Subscription - Method not implemented - [Documentation] Test ID: 6.3.3.7.6 - ... Test title: PUT Individual VNF Performance Subscription - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance subscription is not modified by the operation - Send Put request for individual VNF Performance Threshold - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscription is Unmodified (Implicit) - -PATCH Individual VNF Performance Subscription - Method not implemented - [Documentation] Test ID: 6.3.3.7.7 - ... Test title: PATCH Individual VNF Performance Subscription - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Performance subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance subscription is not modified by the operation - Send Patch request for individual VNF Performance Threshold - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscription is Unmodified (Implicit) \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index 429727d04..003817da6 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -32,6 +32,7 @@ GET Individual Threshold with invalid resource identifier ... Post-Conditions: none GET individual VNF Performance Threshold with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails DELETE Individual Threshold [Documentation] Test ID: 6.3.3.5.3 @@ -57,32 +58,31 @@ DELETE Individual Threshold with invalid resource identifier ... Post-Conditions: none Send Delete request for individual VNF Performance Threshold with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails POST Individual Threshold - Method not implemented [Documentation] Test ID: 6.3.3.5.5 ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Threshold - ... Pre-conditions: A VNF instance is instantiated + ... Pre-conditions: none ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not created on the VNFM Send Post request for individual VNF Performance Threshold Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Threshold is not Created PUT Individual Threshold - Method not implemented [Documentation] Test ID: 6.3.3.5.6 ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance threshold - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. + ... Pre-conditions: none ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Threshold is not modified by the operation + ... Post-Conditions: none Send Put request for individual VNF Performance Threshold Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Threshold is Unmodified (Implicit) PATCH Individual Threshold [Documentation] Test ID: 6.3.3.5.7 @@ -177,15 +177,6 @@ Check Postcondition VNF Performance Threshold is Unmodified (Implicit) ${threshold}= evaluate json.loads('''${response['body']}''') json Should Be Equal ${origresponse['body']['id']} ${threshold.id} Should Be Equal ${origresponse['body']['criteria']} ${threshold.criteria} - -Check Postcondition VNF Performance Threshold is not Created - Log Trying to get a new Threshold - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 Check Postcondition VNF Performance Threshold is Deleted Log Check Postcondition Threshold is deleted diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 84283d725..62747fa37 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -20,7 +20,6 @@ GET all VNF Performance Monitoring Jobs GET all VNF Performance Monitoring Jobs Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PmJobs - Check HTTP Response Body Does Not Contain reports GET VNF Performance Monitoring Jobs with attribute-based filter [Documentation] Test ID: 6.3.3.1.2 @@ -136,7 +135,7 @@ PUT all VNF Performance Monitoring Jobs - Method not implemented [Documentation] Test ID: 6.3.3.1.10 ... Test title: PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Monitoring Jobs - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. + ... Pre-conditions: none ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none @@ -144,11 +143,11 @@ PUT all VNF Performance Monitoring Jobs - Method not implemented Send PUT Request for all VNF Performance Monitoring Jobs Check HTTP Response Status Code Is 405 -PATCH all VNF Performance Monitoring Jobs - (Method not implemented) +PATCH all VNF Performance Monitoring Jobs - Method not implemented [Documentation] Test ID: 6.3.3.1.11 ... Test title: PATCH all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF Performance Monitoring Jobs - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. + ... Pre-conditions: none ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none @@ -160,14 +159,13 @@ DELETE all VNF Performance Monitoring Jobs - Method not implemented [Documentation] Test ID: 6.3.3.1.12 ... Test title: DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Monitoring Jobs - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. + ... Pre-conditions: none ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none Send PATCH Request for all VNF Performance Monitoring Jobs Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Monitoring Jobs Exist GET VNF Performance Monitoring Jobs to get Paged Response [Documentation] Test ID: 6.3.3.1.13 @@ -180,7 +178,7 @@ GET VNF Performance Monitoring Jobs to get Paged Response ... Post-Conditions: none GET all VNF Performance Monitoring Jobs Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET VNF Performance Monitoring Jobs for Bad Request Response too big [Documentation] Test ID: 6.3.3.1.14 @@ -316,10 +314,6 @@ Send DELETE Request for all VNF Performance Monitoring Jobs PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition VNF Performance Monitoring Jobs Exist - Log Checking that Pm Job still exists - GET all VNF Performance Monitoring Jobs Check Postcondition PmJob Exists Log Checking that Pm Job exists @@ -374,12 +368,6 @@ Check HTTP Response Body Matches filter Log Checking that attribute-based filter is matched @{words} = Split String ${POS_FILTER} ,${SEPERATOR} Should Be Equal As Strings ${response['body'][0]['objectInstanceIds']} @{words}[1] - -Check HTTP Response Body Does Not Contain reports - Log Checking that field element is missing - ${reports}= Get Value From Json ${response['body']} $..reports - Should Be Empty ${reports} - Log Reports element is empty as expected Check HTTP Response Status Code Is [Arguments] ${expected_status} @@ -402,6 +390,6 @@ Check HTTP Response Body Json Schema Is Validate Json ${schema} ${response['body']} Log Json Schema Validation OK -Check LINK in Header +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 diff --git a/SOL002/VNFPerformanceManagement-API/Subscriptions.robot b/SOL002/VNFPerformanceManagement-API/Subscriptions.robot deleted file mode 100644 index 2ba4751cb..000000000 --- a/SOL002/VNFPerformanceManagement-API/Subscriptions.robot +++ /dev/null @@ -1,176 +0,0 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Resource VNFPerformanceManagementKeywords.robot -Resource environment/subscriptions.txt -Library MockServerLibrary -Library Process -Suite Setup Create Sessions -Suite Teardown Terminate All Processes kill=true - -*** Test Cases *** -GET all VNF Performance Subscriptions - [Documentation] Test ID: 6.3.3.6.1 - ... Test title: GET all VNF Performance Subscriptions - ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions and perform a JSON schema validation of the returned subscriptions data structure - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get all VNF Performance Subscriptions - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscriptions - -GET VNF Performance Subscriptions with attribute-based filter - [Documentation] Test ID: 6.3.3.6.2 - ... Test title: GET VNF Performance Subscriptions with attribute-based filter - ... Test objective: The objective is to test the retrieval of VNF performance subscriptions using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with attribute-based filters - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscriptions - Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter - -GET VNF Performance Management Subscriptions with invalid attribute-based filter - [Documentation] Test ID: 6.3.3.6.3 - ... Test title: GET VNF Performance Management Subscriptions with invalid attribute-based filter - ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with invalid attribute-based filters - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET VNF Performance Subscriptions with invalid resource endpoint - [Documentation] Test ID: 6.3.3.6.4 - ... Test title: GET VNF Performance Subscriptions with invalid resource endpoint - ... Test objective: The objective is to test that the retrieval of all VNF performance subscriptions fails when using invalid resource endpoint. - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with invalid resource endpoint - Check HTTP Response Status Code Is 404 - -Create new VNF Performance subscription - [Documentation] Test ID: 6.3.3.6.5 - ... Test title: Create new VNF Performance subscription - ... Test objective: The objective is to test the creation of a new VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF performance subscription is successfully set and it matches the issued subscription - Send Post Request for VNF Performance Subscription - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription - Check Postcondition VNF Performance Subscription Is Set - - -Create duplicated VNF Performance subscription with VNFM not creating duplicated subscriptions - [Tags] no-duplicated-subs - [Documentation] Test ID: 6.3.3.6.6 - ... Test title: Create duplicated VNF Performance subscription with VNFM not creating duplicated subscriptions - ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF performance subscription and check that no new subscription is created by the VNFM and a link to the original subscription is returned - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: The VNFM does not support the creation of duplicated subscriptions - ... Post-Conditions: The existing VNF performance subscription returned is available in the VNFM - Send Post Request for Duplicated VNF Performance Subscription - Check HTTP Response Status Code Is 303 - Check HTTP Response Body Is Empty - Check HTTP Response Header Contains Location - Check Postcondition Subscription Resource Returned in Location Header Is Available - -Create duplicated VNF Performance subscription with VNFM creating duplicated subscriptions - [Tags] duplicated-subs - [Documentation] Test ID: 6.3.3.6.7 - ... Test title: Create duplicated VNF Performance subscription with VNFM creating duplicated subscriptions - ... Test objective: The objective is to test the creation of a duplicated VNF performance subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: The VNFM supports the creation of duplicated subscriptions - ... Post-Conditions: The duplicated VNF performance subscription is successfully set and it matches the issued subscription - Send Post Request for Duplicated VNF Performance Subscription - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription - Check Postcondition VNF Performance Subscription Is Set - -PUT VNF Performance Subscriptions - Method not implemented - [Documentation] Test ID: 6.3.3.6.8 - ... Test title: PUT VNF Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to modify VNF performance subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Send Put Request for VNF Performance Subscriptions - Check HTTP Response Status Code Is 405 - -PATCH VNF Performance Subscriptions - Method not implemented - [Documentation] Test ID: 6.3.3.6.9 - ... Test title: PATCH VNF Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update VNF performance subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Send Patch Request for VNF Performance Subscriptions - Check HTTP Response Status Code Is 405 - -DELETE VNF Performance Subscriptions - Method not implemented - [Documentation] Test ID: 6.3.3.6.10 - ... Test title: DELETE VNF Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF performance subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF performance subscriptions are not deleted by the failed operation - Send Delete Request for VNF Performance Subscriptions - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscriptions Exists - -GET VNF Performance Subscriptions to get Paged Response - [Documentation] Test ID: 6.3.3.6.11 - ... Test title: GET VNF Performance Subscriptions to get Paged Response - ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions to get Paged Response - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get all VNF Performance Subscriptions - Check HTTP Response Status Code Is 200 - Check LINK in Header - -GET VNF Performance Management Subscriptions for Bad Request Response too big - [Documentation] Test ID: 6.3.3.6.12 - ... Test title: GET VNF Performance Management Subscriptions for Bad Request Response too big - ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with invalid attribute-based filters - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index c3804b28d..6dead1e56 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -46,6 +46,7 @@ GET Performance Thresholds with invalid attribute-based filter ... Post-Conditions: none GET Performance Thresholds with invalid attribute-based filter Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Performance Thresholds with invalid resource endpoint [Documentation] Test ID: 6.3.3.4.4 @@ -79,7 +80,7 @@ PUT Performance Thresholds - Method not implemented [Documentation] Test ID: 6.3.3.4.6 ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Thresholds - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNF. + ... Pre-conditions: none ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none @@ -91,7 +92,7 @@ PATCH Performance Thresholds - Method not implemented [Documentation] Test ID: 6.3.3.4.7 ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify VNF Performance Thresholds - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. + ... Pre-conditions: none ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none @@ -103,14 +104,13 @@ DELETE Performance Thresholds - Method not implemented [Documentation] Test ID: 6.3.3.4.8 ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Thresholds - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. + ... Pre-conditions: none ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance thresholds are not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for all Performance Thresholds Check HTTP Response Status Code Is 405 - Check Postcondition Thresholds Exist GET Performance Thresholds with Paged Response [Documentation] Test ID: 6.3.3.4.9 @@ -123,7 +123,7 @@ GET Performance Thresholds with Paged Response ... Post-Conditions: none GET all Performance Thresholds Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET Performance Thresholds for Bad Request Response too big [Documentation] Test ID: 6.3.3.4.10 @@ -206,10 +206,6 @@ Send DELETE Request for all Performance Thresholds DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition Thresholds Exist - Log Checking that Thresholds still exists - GET all Performance Thresholds Check Postcondition Threshold Exists Log Checking that Threshold exists @@ -243,7 +239,7 @@ Check HTTP Response Body Json Schema Is Validate Json ${schema} ${response['body']} Log Json Schema Validation OK -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index 9a6c90f90..394c97280 100644 --- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -13,264 +13,12 @@ Library JSONSchemaLibrary schemas/ Library Process *** Keywords *** -Get all VNF Performance Subscriptions - [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications - ... subscribed by the client. - ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, - ... request and response data structures, and response codes. - Set headers {"Accept": "application/json"} - Set headers {"Content-Type": "application/json"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 200 - # Log Received a 200 OK as expected - # ${contentType}= Output response headers Content-Type - # Should Contain ${contentType} application/json - # ${result}= Output response body - # Validate Json PmSubscriptions.schema.json ${result} - # Log Validated PmSubscription schema - - - Get VNF Performance Subscriptions with attribute-based filters - [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications - ... subscribed by the client. - ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, - ... request and response data structures, and response codes. - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 200 - # Log Received a 200 OK as expected - # ${contentType}= Output response headers Content-Type - # Should Contain ${contentType} application/json - # ${result}= Output response body - # Validate Json PmSubscriptions.schema.json ${result} - # Log Validated PmSubscription schema - - - -Get VNF Performance Subscriptions with invalid attribute-based filters - [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications - ... subscribed by the client. - ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, - ... request and response data structures, and response codes. - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 400 - # Log Received a 400 Bad Request as expected - # ${contentType}= Output response headers Content-Type - # Should Contain ${contentType} application/json - # ${result}= Output response body - # Validate Json ProblemDetails.schema.json ${result} - # Log Validated ProblemDetails schema - - -Get VNF Performance Subscriptions with invalid resource endpoint - [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications - ... subscribed by the client. - ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, - ... request and response data structures, and response codes. - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 404 - # Log Received a 404 Not found as expected - # ${contentType}= Output response headers Content-Type - # Should Contain ${contentType} application/json - # ${result}= Output response body - # Validate Json ProblemDetails.schema.json ${result} - # Log Validated ProblemDetails schema - - - -Send Post Request for VNF Performance Subscription - [Documentation] The POST method creates a new subscription. - ... This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, - ... request and response data structures, and response codes. - ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance - ... degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases. - ... Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the - ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide - ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing - ... the existing subscription resource with the same filter and callbackUri). - Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - ${template}= Get File jsons/subscriptions.json - ${body_request}= Format String ${template} callback_uri=${callback_uri} subscribe=${subscribe} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} - ${output}= Output response - Set Suite Variable ${response} ${output} - Run Keyword If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1 - ... Check Notification Endpoint - # Integer response status 201 - # Log Received a 201 Created as expected - # ${contentType}= Output response headers Content-Type - # Should Contain ${contentType} application/json - # ${result}= Output response body - # Validate Json PmSubscription.schema.json ${result} - # Log Validated PmSubscription schema - # Log Trying to validate the Location header - # ${headers}= Output response headers - # Should Contain ${headers} Location - - -Send Post Request for Duplicated VNF Performance Subscription - [Documentation] The POST method creates a new subscription. - ... This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, - ... request and response data structures, and response codes. - ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance - ... degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases. - ... Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the - ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide - ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing - ... the existing subscription resource with the same filter and callbackUri). - Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${template}= Get File jsons/subscriptions.json - ${body_request}= Format String ${template} callback_uri=${callback_uri} subscribe=${subscribe} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 303 - # Log Received a 303 See other as expected - # ${contentType}= Output response headers Content-Type - # Should Contain ${contentType} application/json - # ${result}= Output response body - # Should Be Empty ${result} - # Log Body is empty - # Log Trying to validate the Location header - # ${headers}= Output response headers - # Should Contain ${headers} Location - - - -Send Put Request for VNF Performance Subscriptions - [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method - ... Not Allowed" response as defined in Clause 4.3.5.4. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 405 - # Log Received 405 Method not implemented as expected - -Send Patch Request for VNF Performance Subscriptions - [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method - ... Not Allowed" response as defined in Clause 4.3.5.4. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 405 - # Log Received 405 Method not implemented as expected - -Send Delete Request for VNF Performance Subscriptions - [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method - ... Not Allowed" response as defined in Clause 4.3.5.4. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 405 - # Log Received 405 Method not implemented as expected - -Get Individual VNF Performance Subscription - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -GET individual VNF Performance Subscription with invalid resource identifier - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Send Delete request for individual VNF Performance Subscription - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Send Delete request for individual VNF Performance Subscription with invalid resource identifier - Log Trying to delete a subscription in the VNFM with invalid id - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Send Post request for individual VNF Performance Subscription - 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 Performance Threshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - ${origOutput}= Output response - Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Send Patch request for individual VNF Performance Threshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - ${origOutput}= Output response - Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Check Postcondition VNF Performance Subscription is Unmodified (Implicit) - Log Check postconidtion subscription not modified - GET individual VNF Performance Subscription - Log Check Response matches original VNF Threshold - ${subscription}= evaluate json.loads('''${response['body']}''') json - Should Be Equal As Strings ${origResponse['body']['id']} ${subscription.id} - Should Be Equal As Strings ${origResponse['body']['callbackUri']} ${subscription.callbackUri} - -Check Postcondition VNF Performance 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} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - -Check Postcondition VNF Performance Subscription is Deleted - Log Check Postcondition Subscription is deleted - GET individual VNF Performance Subscription - Check HTTP Response Status Code Is 404 - -Check HTTP Response Body Subscription Identifier matches the requested Subscription - Log Trying to check response ID - Should Be Equal As Strings ${response['body']['id']} ${subscriptionId} - Log Subscription identifier as expected Check HTTP Response Status Code Is [Arguments] ${expected_status} Should Be Equal As Strings ${response['status']} ${expected_status} Log Status code validated - - Check HTTP Response Body Json Schema Is [Arguments] ${input} Should Contain ${response['headers']['Content-Type']} application/json @@ -278,48 +26,9 @@ Check HTTP Response Body Json Schema Is Validate Json ${schema} ${response['body']} Log Json Schema Validation OK - Check HTTP Response Body Is Empty Should Be Empty ${response['body']} - Log No json schema is provided. Validation OK - - -Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter - Log Check Response includes VNF Performance Management according to filter - Should Be Equal As Strings ${response['body'][0]['callbackUri']} ${callbackUri_Sub} - -Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription - Log Check Response matches subscription - ${body}= Get File jsons/subscriptions.json - ${subscription}= evaluate json.loads('''${body}''') json - Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} - -Check Postcondition VNF Performance Subscription Is Set - Log Check Postcondition subscription exist - Set Headers {"Accept": "${ACCEPT_JSON}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 200 - -Check Postcondition Subscription Resource Returned in Location Header Is Available - Log Going to check postcondition - GET ${response['headers']['Location']} - Integer response status 200 - Log Received a 200 OK as expected - ${contentType}= Output response headers Content-Type - Should Contain ${contentType} application/json - ${result}= Output response body - Validate Json PmSubscription.schema.json ${result} - Log Validated PmSubscription schema - ${body}= Get File jsons/subscriptions.json - ${subscription}= evaluate json.loads('''${body}''') json - Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} - Log Validated Issued subscription is same as original - -Check Postcondition VNF Performance Subscriptions Exists - Log Checking that subscriptions exists - Get all VNF Performance Subscriptions + Log No json schema is provided. Validation OK Check HTTP Response Header Contains [Arguments] ${CONTENT_TYPE} @@ -350,6 +59,6 @@ Check Notification Endpoint Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL002/VNFPerformanceManagement-API/environment/individualSubscription.txt b/SOL002/VNFPerformanceManagement-API/environment/individualSubscription.txt deleted file mode 100644 index 921749ffd..000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/individualSubscription.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa -${erroneousSubscriptionId} erroneousSubscriptionId -${newSubscriptionId} newSubsciptionId -${response} httpresponse -${origResponse} httpresponse \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/environment/subscriptions.txt b/SOL002/VNFPerformanceManagement-API/environment/subscriptions.txt deleted file mode 100644 index c49045743..000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/subscriptions.txt +++ /dev/null @@ -1,8 +0,0 @@ -*** Variables *** -${callbackUri_Sub} http://172.22.1.7:9091/vnfpm/subscriptions -${filter_ok} callbackUri=${callbackUri_Sub} -${filter_ko} erroneousFilter=erroneous -${total_polling_time} 2 min -${polling_interval} 10 sec -${response} httpresponse - diff --git a/SOL002/VNFPerformanceManagement-API/environment/variables.txt b/SOL002/VNFPerformanceManagement-API/environment/variables.txt index 0772cedcc..c6f2f9a80 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/variables.txt @@ -4,7 +4,7 @@ ${VNFM_PORT} 8080 # Listening port of the VNFM ${VNFM_SCHEMA} https ${apiRoot} / -${apiMajorVersion} v1 +${apiMajorVersion} v2 ${apiName} vnfpm diff --git a/SOL002/VNFPerformanceManagement-API/jsons/subscriptions.json b/SOL002/VNFPerformanceManagement-API/jsons/subscriptions.json deleted file mode 100644 index 7072ba326..000000000 --- a/SOL002/VNFPerformanceManagement-API/jsons/subscriptions.json +++ /dev/null @@ -1,6 +0,0 @@ -{{ - "callbackUri": "{callback_uri}{subscribe}", - "filter": {{ - "notificationTypes": ["ThresholdCrossedNotification"] - }} -}} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PmSubscription.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/PmSubscription.schema.json deleted file mode 100644 index c9ad05130..000000000 --- a/SOL002/VNFPerformanceManagement-API/schemas/PmSubscription.schema.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "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 diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PmSubscriptions.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/PmSubscriptions.schema.json deleted file mode 100644 index fefb142da..000000000 --- a/SOL002/VNFPerformanceManagement-API/schemas/PmSubscriptions.schema.json +++ /dev/null @@ -1 +0,0 @@ -{ "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 -- GitLab From 071a4a62d0b521ae03720a85df04a2a566f0d39a Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 13 Oct 2020 16:15:52 +0500 Subject: [PATCH 077/580] minor bugs fix added --- SOL002/VNFFaultManagement-API/Alarms.robot | 114 +++++++++--------- .../IndividualAlarm.robot | 21 +++- .../IndividualSubscription.robot | 11 +- .../Subscriptions.robot | 20 +-- .../environment/variables.txt | 3 +- 5 files changed, 97 insertions(+), 72 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/Alarms.robot b/SOL002/VNFFaultManagement-API/Alarms.robot index fd51868aa..b2c226c55 100644 --- a/SOL002/VNFFaultManagement-API/Alarms.robot +++ b/SOL002/VNFFaultManagement-API/Alarms.robot @@ -12,10 +12,10 @@ POST Alarms - Method not implemented [Documentation] Test ID: 6.3.4.1.1 ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: none POST Alarms Task Check HTTP Response Status Code Is 405 @@ -24,11 +24,11 @@ GET information about multiple alarms [Documentation] Test ID: 6.3.4.1.2 ... Test title: GET information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -36,12 +36,12 @@ GET information about multiple alarms GET information about multiple alarms with attribute-based filter [Documentation] Test ID: 6.3.4.1.3 ... Test title: GET information about multiple alarms with attribute-based filter - ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Test objective: The objective is to retrieve information about the alarm list with attribute-based filter + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -50,11 +50,11 @@ GET information about multiple alarms with invalid attribute-based filter [Documentation] Test ID: 6.3.4.1.4 ... Test title: GET information about multiple alarms with invalid attribute-based filter ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -63,11 +63,11 @@ GET information about multiple alarms with "all_fields" attribute selector [Documentation] Test ID: 6.3.4.1.5 ... Test title: GET information about multiple alarms with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -76,11 +76,11 @@ GET information about multiple alarms with exclude_default attribute selector [Documentation] Test ID: 6.3.4.1.6 ... Test title: GET information about multiple alarms with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with exclude_default attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -89,11 +89,11 @@ GET information about multiple alarms with fields attribute selector [Documentation] Test ID: 6.3.4.1.7 ... Test title: GET information about multiple alarms with fields attribute selector ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -102,10 +102,10 @@ GET information about multiple alarms with "exclude_fields" attribute selector [Documentation] Test ID: 6.3.4.1.8 ... Test title: GET information about multiple alarms with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: none GET Alarms Task with exclude_fields attribute selector Check HTTP Response Status Code Is 200 @@ -115,10 +115,10 @@ PUT Alarms - Method not implemented [Documentation] Test ID: 6.3.4.1.9 ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: none PUT Alarms Task Check HTTP Response Status Code Is 405 @@ -127,10 +127,10 @@ PATCH Alarms - Method not implemented [Documentation] Test ID: 6.3.4.1.10 ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: + ... Applicability: none ... Post-Conditions: none PATCH Alarms Task Check HTTP Response Status Code Is 405 @@ -139,11 +139,11 @@ DELETE Alarms - Method not implemented [Documentation] Test ID: 6.3.4.1.11 ... Test title: DELETE Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: the alarm is not deleted + ... Applicability: none + ... Post-Conditions: none DELETE Alarms Task Check HTTP Response Status Code Is 405 @@ -151,24 +151,24 @@ GET information about multiple alarms to get Paged Response [Documentation] Test ID: 6.3.4.1.12 ... Test title: GET information about multiple alarms to get Paged Response ... Test objective: The objective is to retrieve information about the alarms to get paged response - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET information about multiple alarms for Bad Request Response too big [Documentation] Test ID: 6.3.4.1.13 ... Test title: GET information about multiple alarms for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about Alarms when Response is too big, and perform the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -177,11 +177,11 @@ GET information about alarms with attribute-based filter "id" [Documentation] Test ID: 6.3.4.1.14 ... Test title: GET information about alarms with attribute-based filter "id" ... Test objective: The objective is to retrieve information about the alarm list with alarm filter "id" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with filter "id" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarm @@ -191,11 +191,11 @@ GET information about multiple alarms with attribute-based filter "vnfcInstanceI [Documentation] Test ID: 6.3.4.1.15 ... Test title: GET information about multiple alarms with attribute-based filter "vnfcInstanceIds" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "vnfcInstanceIds" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with filter "vnfcInstanceIds" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -205,11 +205,11 @@ GET information about multiple alarms with attribute-based filter "rootCauseFaul [Documentation] Test ID: 6.3.4.1.16 ... Test title: GET information about multiple alarms with attribute-based filter "rootCauseFaultyResource.faultyResourceType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "rootCauseFaultyResource.faultyResourceType" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with filter "rootCauseFaultyResource_faultyResourceType" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -219,11 +219,11 @@ GET information about multiple alarms with attribute-based filter "eventType" [Documentation] Test ID: 6.3.4.1.17 ... Test title: GET information about multiple alarms with attribute-based filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "eventType" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with filter "eventType" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -233,11 +233,11 @@ GET information about multiple alarms with attribute-based filter "perceivedSeve [Documentation] Test ID: 6.3.4.1.18 ... Test title: GET information about multiple alarms with attribute-based filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "perceivedSeverity" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with filter "perceivedSeverity" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -247,11 +247,11 @@ GET information about multiple alarms with attribute-based filter "probableCause [Documentation] Test ID: 6.3.4.1.19 ... Test title: GET information about multiple alarms with attribute-based filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "probableCause" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with filter "probableCause" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -357,7 +357,7 @@ Check HTTP Response Body Json Schema Is Validate Json ${schema} ${response['body']} Log Json Schema Validation OK -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} @@ -426,7 +426,7 @@ GET Alarms Task with filter "perceivedSeverity" Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "perceivedSeverity" :FOR ${item} IN @{response['body']} - Should Be Equal As Strings ${item['perceivedSeverity']} ${perceivedSeverity} + Should Be Equal As Strings ${item['perceivedSeverity']} ${PerceivedSeverity} END GET Alarms Task with filter "probableCause" diff --git a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot index 0aa6b9e2f..97c96dc56 100644 --- a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot @@ -1,5 +1,4 @@ *** Settings *** -# Suite setup Expect spec SOL003-VNFLifecycleManagement-API.yaml Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem @@ -15,7 +14,7 @@ POST Alarm - Method not implemented [Documentation] Test ID: 6.3.4.2.1 ... Test title: POST Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none @@ -40,7 +39,7 @@ PUT Individual Alarm - Method not implemented [Documentation] Test ID: 6.3.4.2.3 ... Test title: PUT Individual Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none @@ -73,6 +72,7 @@ PATCH Individual Alarm - Precondition failed PATCH Alarm Task with wrong precondition Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails + Check Postcondition VNF individual alarm Unmodified (Implicit) PATCH Individual Alarm - Conflict [Documentation] Test ID: 6.3.4.2.6 @@ -86,16 +86,17 @@ PATCH Individual Alarm - Conflict PATCH Alarm Task Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails + Check Postcondition VNF individual alarm Unmodified (Implicit) DELETE Individual Alarm - Method not implemented [Documentation] Test ID: 6.3.4.2.7 ... Test title: DELETE Individual Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: alarm not deleted + ... Post-Conditions: none DELETE Alarm Task Check HTTP Response Status Code Is 405 @@ -110,6 +111,7 @@ GET information about an individual alarm - Not Found ... Post-Conditions: none GET Alarm Task Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** POST Alarm Task @@ -143,6 +145,9 @@ PATCH Alarm Task with wrong precondition Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/alarmModifications.json + GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -190,3 +195,9 @@ Check HTTP Response Body Json Schema Is ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK + +Check Postcondition VNF individual alarm Unmodified (Implicit) + Log Check Postcondition subscription is not modified + GET Alarm Task + Should Be Equal As Strings ${origResponse['body']['callbackUri']} ${response['body']['callbackUri']} + diff --git a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot index 245f27508..6189b4e04 100644 --- a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot @@ -60,14 +60,15 @@ PATCH an individual subscription - Method not implemented DELETE an individual subscription [Documentation] Test ID: 6.3.4.5.5 ... Test title: DELETE an individual subscription - ... Test objective: The objective is to test that the deletion of a subscription - ... Pre-conditions: an existing subscription + ... Test objective: The objective is to test that the deletion of a individual subscription resource. + ... Pre-conditions: one or more subscription already exsist ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: the subscription is deleted Delete individual subscription Check HTTP Response Status Code Is 204 + Check Postcondition resource is deleted GET Information about an individual subscription - Not Found [Documentation] Test ID: 6.3.4.5.6 @@ -80,6 +81,7 @@ GET Information about an individual subscription - Not Found ... Post-Conditions: none Get individual subscription Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Check resource existence @@ -149,3 +151,8 @@ Check HTTP Response Body Json Schema Is ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK + +Check Postcondition resource is deleted + Get individual subscription + Check HTTP Response Status Code Is 404 + \ No newline at end of file diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index 2a1461e1f..3c6434819 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -19,7 +19,8 @@ Create a new subscription Post Create subscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is FmSubscription - Check resource existence + Check HTTP Response Header Contain Link + Check Postcondition resource exists Create a new Subscription - DUPLICATION [Documentation] Test ID: 6.3.4.4.2 @@ -33,6 +34,8 @@ Create a new Subscription - DUPLICATION 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 @@ -45,6 +48,7 @@ Create a new Subscription - NO-DUPLICATION ... Post-Conditions: duplicated subscription is not created Post Create subscription - DUPLICATION Check HTTP Response Status Code Is 303 + Check HTTP Response Header Contain Link GET Subscriptions [Documentation] Test ID: 6.3.4.4.4 @@ -54,7 +58,7 @@ GET Subscriptions ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: subscription is not deleted + ... Post-Conditions: none Get subscriptions Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -169,7 +173,7 @@ DELETE subscriptions - Method not implemented ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: subscription not deleted + ... Post-Conditions: none DELETE subscriptions Check HTTP Response Status Code Is 405 @@ -181,10 +185,10 @@ GET Subscriptions to get Paged Response ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: subscription is not deleted + ... Post-Conditions: none Get subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET subscriptions - Bad Request Response too Big [Documentation] Test ID: 6.3.4.4.15 @@ -414,7 +418,7 @@ Check HTTP Response Body Json Schema Is Validate Json ${schema} ${response['body']} Log Json Schema Validation OK -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} @@ -494,9 +498,11 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Should Be Equal As Strings ${item['filter']['probableCauses']} ${probableCause} END -Check resource existence +Check Postcondition resource exists Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} 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 diff --git a/SOL002/VNFFaultManagement-API/environment/variables.txt b/SOL002/VNFFaultManagement-API/environment/variables.txt index dbc40ec86..88d5888ff 100644 --- a/SOL002/VNFFaultManagement-API/environment/variables.txt +++ b/SOL002/VNFFaultManagement-API/environment/variables.txt @@ -14,6 +14,8 @@ ${apiName} vnffm ${apiMajorVersion} v1 ${CONTENT_TYPE} application/json +${origResponse}= httpresponse + ${VNFM_ALLOWS_DUPLICATE_SUBS} 0 ${alarmId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d @@ -52,7 +54,6 @@ ${response}= httpresponse ${vnfcInstanceIds} [] ${faultyResourceType} COMPUTE ${eventType} COMMUNICATIONS_ALARM -${perceivedSeverity} CRITICAL ${probableCause} ${notification_type} AlarmNotification \ No newline at end of file -- GitLab From 36e8628616e21c0e3e11609631c3f811916ebc36 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 13 Oct 2020 16:31:39 +0500 Subject: [PATCH 078/580] minor bugs fix added --- .../IndividualSubscription.robot | 26 +++---------- .../IndividualVNFindicator.robot | 37 ++++++------------- SOL002/VNFIndicator-API/Subscriptions.robot | 16 ++++---- SOL002/VNFIndicator-API/VNFIndicators.robot | 22 +++++------ .../VnfIndicatorsInVnfInstanceId.robot | 22 ++++------- 5 files changed, 43 insertions(+), 80 deletions(-) diff --git a/SOL002/VNFIndicator-API/IndividualSubscription.robot b/SOL002/VNFIndicator-API/IndividualSubscription.robot index dc83acc73..4e75f80c7 100644 --- a/SOL002/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL002/VNFIndicator-API/IndividualSubscription.robot @@ -62,40 +62,37 @@ PUT Individual VNF Indicator Subscription - Method not implemented [Documentation] Test ID: 6.3.2.5.5 ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an individual VNF performance indicator subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. + ... Pre-conditions: none ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. - ... Post-Conditions: The individual VNF indicator subscription is not modified by the operation + ... Post-Conditions: none Send Put Request for Individual VNF Indicator Subscription Check HTTP Response Status Code Is 405 - Check Postcondition VNF individual subscription Unmodified (Implicit) PATCH Individual VNF Indicator Subscription - Method not implemented [Documentation] Test ID: 6.3.2.5.6 ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an individual VNF performance indicator subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. + ... Pre-conditions: none ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. - ... Post-Conditions: The individual VNF indicator subscription is not modified by the operation + ... Post-Conditions: none Send Patch Request for Individual VNF Indicator Subscription Check HTTP Response Status Code Is 405 - Check Postcondition VNF individual subscription Unmodified (Implicit) POST Individual VNF Indicator Subscription - Method not implemented [Documentation] Test ID: 6.3.2.5.7 ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an individual VNF performance indicator subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. + ... Pre-conditions: none ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. - ... Post-Conditions: The individual VNF indicator subscription is not created by the operation + ... Post-Conditions: none Send Post Request for Individual VNF Indicator Subscription Check HTTP Response Status Code Is 405 - Check Postcondition VNF individual subscription is not created *** Keywords *** Get Individual VNF Indicator Subscription @@ -181,14 +178,3 @@ Check Postcondition Individual VNF Indicator Subscription is Deleted Log Check Postcondition subscription is deleted GET Individual VNF Indicator Subscription Check HTTP Response Status Code Is 404 - -Check Postcondition VNF individual subscription Unmodified (Implicit) - Log Check Postcondition subscription is not modified - GET Individual VNF Indicator Subscription - Log Check Response matches original subscription - Should Be Equal As Strings ${origResponse['body']['callbackUri']} ${response['body']['callbackUri']} - -Check Postcondition VNF individual subscription is not created - Log Check Postcondition subscription is not created - GET Individual VNF Indicator Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 diff --git a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot index 5e5cdf32d..19b7fb469 100644 --- a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot @@ -37,7 +37,7 @@ POST Individual VNF Indicator - Method not implemented [Documentation] Test ID: 6.3.2.3.3 ... Test title: POST individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new performance indicator for a VNF instance - ... Pre-conditions: A VNF instance is instantiated. + ... Pre-conditions: none ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. @@ -49,7 +49,7 @@ PUT Individual VNF Indicator - Method not implemented [Documentation] Test ID: 6.3.2.3.4 ... Test title: PUT individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing performance indicator for a VNF instance - ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. + ... Pre-conditions: none ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. @@ -61,7 +61,7 @@ PATCH Individual VNF Indicator - Method not implemented [Documentation] Test ID: 6.3.2.3.5 ... Test title: PATCH individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an existing performance indicator for a VNF instance - ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. + ... Pre-conditions: none ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. @@ -73,14 +73,13 @@ DELETE Individual VNF Indicator - Method not implemented [Documentation] Test ID: 6.3.2.3.6 ... Test title: DELETE individual performance indicator indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing performance indicator for a VNF instance - ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. + ... Pre-conditions: none ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. - ... Post-Conditions: The individual performance indicator for the VNF instance is not deleted by the unsuccessful operation + ... Post-Conditions: none Send DELETE Request for individual indicator in VNF instance Check HTTP Response Status Code Is 405 - Check Postcondition Indicator for VNF instance Exist Get Individual Performance Indicator [Documentation] Test ID: 6.3.2.3.7 @@ -113,7 +112,7 @@ POST Individual Performance Indicator - Method not implemented [Documentation] Test ID: 6.3.2.3.9 ... Test title: POST Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new performance indicator. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. @@ -125,7 +124,7 @@ PUT Individual Performance Indicator - Method not implemented [Documentation] Test ID: 6.3.2.3.10 ... Test title: PUT Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing performance indicator. - ... Pre-conditions: At least one measure of performance indicator is available. + ... Pre-conditions: none ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. @@ -137,7 +136,7 @@ PATCH Individual Performance Indicator - Method not implemented [Documentation] Test ID: 6.3.2.3.11 ... Test title: PATCH Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an existing performance indicator. - ... Pre-conditions: At least one measure of performance indicator is available. + ... Pre-conditions: none ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. @@ -149,14 +148,13 @@ DELETE Individual Performance Indicator - Method not implemented [Documentation] Test ID: 6.3.2.3.12 ... Test title: DELETE Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing performance indicator. - ... Pre-conditions: At least one measure of performance indicator is available. + ... Pre-conditions: none ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. - ... Post-Conditions: + ... Post-Conditions: none Send DELETE Request for individual indicator Check HTTP Response Status Code Is 405 - Check PostCondition Individual Indicator exist *** Keywords *** Get Individual Indicator for a VNF instance @@ -234,12 +232,6 @@ Check HTTP Response Body Includes Requested VNF Instance ID Log Check Response includes propoer VNF instance and Indicator identifiers Should Be Equal As Strings ${response['body']['vnfInstanceId']} ${vnfInstanceId} -Check Postcondition Indicator for VNF instance Exist - Log Check Response includes VNF Indicator - Get Individual Indicator for a VNF instance - Should Be Equal As Strings ${response['body']['vnfInstanceId']} ${vnfInstanceId} - Should Be Equal As Strings ${response['body']['id']} ${indicatorId} - Get Individual Indicator Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -286,11 +278,4 @@ Send DELETE Request for individual indicator Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} ${output}= Output response - Set Suite Variable ${response} ${output} - -Check PostCondition Individual Indicator exist - Log This resource represents a VNF indicator related to a VNF instance. - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} - Integer response status 200 \ No newline at end of file + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index a2624bada..0e208cd33 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -63,6 +63,7 @@ GET VNF Indicators Subscriptions with invalid resource endpoint ... Post-Conditions: none Get VNF Indicators Subscriptions with invalid resource endpoint Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails Create new VNF indicator subscription [Documentation] Test ID: 6.3.2.4.5 @@ -83,7 +84,7 @@ PUT VNF Indicator Subscriptions - Method not implemented [Documentation] Test ID: 6.3.2.4.6 ... Test title: PUT VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicator subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. + ... Pre-conditions: none ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. @@ -95,7 +96,7 @@ PATCH VNF Indicator Subscriptions - Method not implemented [Documentation] Test ID: 6.3.2.4.7 ... Test title: PATCH VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicator subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. + ... Pre-conditions: none ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. @@ -107,7 +108,7 @@ DELETE VNF Indicator Subscriptions - Method not implemented [Documentation] Test ID: 6.3.2.4.8 ... Test title: DELETE VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicator subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. + ... Pre-conditions: none ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. @@ -126,7 +127,7 @@ GET VNF Indicators Subscriptions to get Paged Response ... Post-Conditions: none Get VNF Indicators Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET VNF Indicators Subscriptions - Bad Request Response too Big [Documentation] Test ID: 6.3.2.4.10 @@ -162,10 +163,11 @@ Create new VNF indicator Subscription - DUPLICATION ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: SUT should support duplication of subscription creation - ... Post-Conditions: in response header Location shall not be null + ... Post-Conditions: In response header Location shall not be null Post Create subscription - DUPLICATION Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is VnfIndicatorSubscription + Check Operation Occurrence Id Create new VNF indicator Subscription - NO-DUPLICATION [Documentation] Test ID: 6.3.2.4.13 @@ -175,7 +177,7 @@ Create new VNF indicator Subscription - NO-DUPLICATION ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: SUT should not support duplication of subscription creation - ... Post-Conditions: in response header Location shall not be null + ... Post-Conditions: In response header Location shall not be null Post Create subscription - NO-DUPLICATION Check HTTP Response Status Code Is 303 Check Operation Occurrence Id @@ -303,7 +305,7 @@ Check Notification Endpoint Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL002/VNFIndicator-API/VNFIndicators.robot b/SOL002/VNFIndicator-API/VNFIndicators.robot index 11b8d7b01..f3f8f20f8 100644 --- a/SOL002/VNFIndicator-API/VNFIndicators.robot +++ b/SOL002/VNFIndicator-API/VNFIndicators.robot @@ -59,6 +59,7 @@ Get all VNF Indicators with malformed authorization token ... Post-Conditions: none Get all VNF indicators with malformed authorization token Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails Get all VNF Indicators without authorization token [Documentation] Test ID: 6.3.2.1.5 @@ -71,6 +72,7 @@ Get all VNF Indicators without authorization token ... Post-Conditions: none Get all VNF indicators without authorization token Check HTTP Response Status Code Is 401 + Check HTTP Response Body Json Schema Is ProblemDetails GET all VNF Indicators with expired or revoked authorization token [Documentation] Test ID: 6.3.2.1.6 @@ -83,6 +85,7 @@ GET all VNF Indicators with expired or revoked authorization token ... Post-Conditions: none Get all VNF indicators with expired or revoked authorization token Check HTTP Response Status Code Is 401 + Check HTTP Response Body Json Schema Is ProblemDetails Get all VNF Indicators with invalid resource endpoint [Documentation] Test ID: 6.3.2.1.7 @@ -95,12 +98,13 @@ Get all VNF Indicators with invalid resource endpoint ... Post-Conditions: none Get all VNF indicators with invalid resource endpoint Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails POST all VNF Indicators - Method not implemented [Documentation] Test ID: 6.3.2.1.8 ... Test title: POST all VNF Indicators - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF indicators - ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF + ... Pre-conditions: none ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. @@ -112,7 +116,7 @@ PUT all VNF Indicators - Method not implemented [Documentation] Test ID: 6.3.2.1.9 ... Test title: PUT all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicators - ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF + ... Pre-conditions: none ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. @@ -124,7 +128,7 @@ PATCH all VNF Indicators - Method not implemented [Documentation] Test ID: 6.3.2.1.10 ... Test title: PATCH all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicators - ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF + ... Pre-conditions: none ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. @@ -136,14 +140,13 @@ DELETE all VNF Indicators - Method not implemented [Documentation] Test ID: 6.3.2.1.11 ... Test title: DELETE all VNF Indicators - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicators - ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF + ... Pre-conditions: none ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none Send DELETE Request for all VNF indicators Check HTTP Response Status Code Is 405 - Check Postcondition VNF Indicators Exist Get VNF Indicators to get Paged Response [Documentation] Test ID: 6.3.2.1.12 @@ -156,7 +159,7 @@ Get VNF Indicators to get Paged Response ... Post-Conditions: none Get all VNF indicators Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link Get VNF Indicators - Bad Request Response too Big [Documentation] Test ID: 6.3.2.1.13 @@ -288,11 +291,6 @@ Check HTTP Response Body Json Schema Is ${jsonSchema}= Catenate SEPARATOR= ${schema} .schema.json Validate Json ${jsonSchema} ${response['body']} Log Json Schema Validation OK - -Check Postcondition VNF Indicators Exist - Log Check Postcondition indicators exist - Get all VNF indicators - Check HTTP Response Status Code Is 200 Check HTTP Response Body vnfIndicators Matches the requested attribute-based filter Log Check Response includes VNF Indicators according to filter @@ -301,6 +299,6 @@ Check HTTP Response Body vnfIndicators Matches the requested attribute-based fil @{var_id} = Split String @{attr}[1] ,${SEPERATOR} Should Be True "${response['body'][0]['name']}"=="@{var_name}[1]" and "${response['body'][0]['vnfInstanceId']}"=="@{var_id}[1]" -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index 06cc15ba8..14cb88972 100644 --- a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -66,7 +66,7 @@ POST Indicators for VNF instance - Method not implemented [Documentation] Test ID: 6.3.2.2.5 ... Test title: POST performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new performance indicators for a VNF instance - ... Pre-conditions: A VNF instance is instantiated. + ... Pre-conditions: none ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. @@ -78,7 +78,7 @@ PUT Indicators for VNF instance - Method not implemented [Documentation] Test ID: 6.3.2.2.6 ... Test title: PUT performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing performance indicators for a VNF instance - ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. + ... Pre-conditions: none ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. @@ -90,7 +90,7 @@ PATCH Indicators for VNF instance - Method not implemented [Documentation] Test ID: 6.3.2.2.7 ... Test title: PATCH performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing performance indicators for a VNF instance - ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. + ... Pre-conditions: none ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. @@ -102,14 +102,13 @@ DELETE Indicators for VNF instance - Method not implemented [Documentation] Test ID: 6.3.2.2.8 ... Test title: DELETE performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete performance indicators for a VNF instance - ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. + ... Pre-conditions: none ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. - ... Post-Conditions: The indicators for the VNF instance are not deleted by the unsuccessful operation + ... Post-Conditions: none Send DELETE Request for indicators in VNF instance Check HTTP Response Status Code Is 405 - Check Postcondition Indicators for VNF instance Exist Get Indicators for VNF Instance to get Paged Response [Documentation] Test ID: 6.3.2.2.9 @@ -122,7 +121,7 @@ Get Indicators for VNF Instance to get Paged Response ... Post-Conditions: none Get all indicators for a VNF instance Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link Get Indicators for VNF Instance - Bad Request Response too Big [Documentation] Test ID: 6.3.2.2.10 @@ -229,14 +228,7 @@ Check HTTP Response Body Matches Attribute-Based Filter Log Check Response includes VNF Indicators according to filter @{words} = Split String ${POS_FIELDS} ,${SEPERATOR} Should Be Equal As Strings ${response['body'][0]['name']} @{words}[1] - -Check Postcondition Indicators for VNF instance Exist - Log Check Postcondition Indicators for VNF instance Exist - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} - Should Be Equal ${response['status']} 200 -Check LINK in Header +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 -- GitLab From 2f894f338aa5447629abc5041eb4751f2617180e Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 13 Oct 2020 17:20:48 +0500 Subject: [PATCH 079/580] minor bugs fix added --- SOL002/VNFConfiguration-API/Configuration.robot | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/SOL002/VNFConfiguration-API/Configuration.robot b/SOL002/VNFConfiguration-API/Configuration.robot index f520a7578..a8ccf57c9 100644 --- a/SOL002/VNFConfiguration-API/Configuration.robot +++ b/SOL002/VNFConfiguration-API/Configuration.robot @@ -70,7 +70,7 @@ POST VNF Configuration - Method not implemented [Documentation] Test ID: 6.3.1.1.5 ... Test title: POST VNF Configuration - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF configuration - ... Pre-conditions: A VNF instance is instantiated. The VNF instance is alrseady configured + ... Pre-conditions: none ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none @@ -82,7 +82,7 @@ PUT VNF Configuration - Method not implemented [Documentation] Test ID: 6.3.1.1.6 ... Test title: PUT VNF Configuration - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing VNF configuration - ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured + ... Pre-conditions: none ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none @@ -94,14 +94,13 @@ DELETE VNF Configuration - Method not implemented [Documentation] Test ID: 6.3.1.1.7 ... Test title: Delete VNF Configuration - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF configuration - ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured + ... Pre-conditions: none ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: The VNF configuration is not deleted by the unsuccessful operation + ... Post-Conditions: none Send DELETE Request for VNF Configuration Check HTTP Response Status Code Is 405 - Check Postcondition VNF Configuration Exists *** Keywords *** Get VNF configuration @@ -145,10 +144,6 @@ Check HTTP Response Body Json Schema Is Check Postcondition VNF Configuration Unmodified (Implicit) Log Check Implicit Postcondition Check Postcondition VNF Is Configured - -Check Postcondition VNF Configuration Exists - Log Check Postcondition VNF exists - Check Postcondition VNF Is Configured Check Postcondition VNF Is Configured Log Check Postcondition for VNF Configuration -- GitLab From a61a6b846d7556d95b1aa5587535a2f1ad855ba1 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 14 Oct 2020 11:07:33 +0500 Subject: [PATCH 080/580] added majorApiVersion --- SOL002/VNFIndicator-API/ApiVersion.robot | 10 +++---- .../IndividualSubscription.robot | 18 ++++++------- .../IndividualVNFindicator.robot | 26 +++++++++---------- SOL002/VNFIndicator-API/Subscriptions.robot | 18 ++++++------- SOL002/VNFIndicator-API/VNFIndicators.robot | 22 ++++++++-------- .../VnfIndicatorsInVnfInstanceId.robot | 18 ++++++------- .../environment/variables.txt | 2 +- 7 files changed, 57 insertions(+), 57 deletions(-) diff --git a/SOL002/VNFIndicator-API/ApiVersion.robot b/SOL002/VNFIndicator-API/ApiVersion.robot index fce69405c..934cc24ef 100644 --- a/SOL002/VNFIndicator-API/ApiVersion.robot +++ b/SOL002/VNFIndicator-API/ApiVersion.robot @@ -169,35 +169,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFIndicator-API/IndividualSubscription.robot b/SOL002/VNFIndicator-API/IndividualSubscription.robot index 16de0847e..01eb68eff 100644 --- a/SOL002/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL002/VNFIndicator-API/IndividualSubscription.robot @@ -102,7 +102,7 @@ Get Individual VNF Indicator Subscription Log Trying to get a given subscription identified by subscriptionId Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -110,7 +110,7 @@ GET Individual VNF Indicator 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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -118,7 +118,7 @@ Send Delete Request for Individual VNF Indicator 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}/${apiVersion}/subscriptions/${subscriptionId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -126,14 +126,14 @@ Send Delete Request for Individual VNF Indicator Subscription with invalid resou 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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post Request for Individual VNF Indicator Subscription Log Trying to create a new subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -141,20 +141,20 @@ Send Put Request for Individual VNF Indicator Subscription 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Patch Request for Individual VNF Indicator Subscription Log Trying to create a new subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot index f4cecd713..87ff57f43 100644 --- a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot @@ -163,7 +163,7 @@ Get Individual Indicator for a VNF instance Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -171,7 +171,7 @@ Get Individual Indicator for a VNF instance with invalid indicator identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${erroneousIndicatorId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${erroneousIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -179,7 +179,7 @@ Send POST Request for individual indicator in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -187,7 +187,7 @@ Send PUT Request for individual indicator in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -195,7 +195,7 @@ Send PATCH Request for individual indicator in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -203,7 +203,7 @@ Send DELETE Request for individual indicator in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -244,7 +244,7 @@ Get Individual Indicator Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${indicatorId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -252,7 +252,7 @@ Get Individual Indicator with invalid indicator identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${erroneousIndicatorId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${erroneousIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -260,7 +260,7 @@ Send POST Request for individual indicator 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}/${apiVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -268,7 +268,7 @@ Send PUT Request for individual indicator 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}/${apiVersion}/indicators/${indicatorId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -276,7 +276,7 @@ Send PATCH Request for individual indicator 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}/${apiVersion}/indicators/${indicatorId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -284,7 +284,7 @@ Send DELETE Request for individual indicator 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}/${apiVersion}/indicators/${indicatorId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -292,5 +292,5 @@ Check PostCondition Individual Indicator exist Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index fd458fbb6..1ed601330 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -146,7 +146,7 @@ Get VNF Indicators 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}/${apiVersion}/subscriptions + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -154,7 +154,7 @@ Get VNF Indicators Subscriptions with filter 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}/${apiVersion}/subscriptions?${POS_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -162,7 +162,7 @@ Get VNF Indicators Subscriptions with invalid filter 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}/${apiVersion}/subscriptions?${NEG_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -170,7 +170,7 @@ Get VNF Indicators 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}/${apiVersion}/subscription + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -180,7 +180,7 @@ Send Post Request for VNF Indicator Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body}= Get File jsons/subscriptions.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1 @@ -190,7 +190,7 @@ Send Put Request for VNF Indicator Subscriptions Log Trying to create a new subscription ${body}= Get File jsons/subscriptions.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -198,7 +198,7 @@ Send Patch Request for VNF Indicator Subscriptions Log Trying to create a new subscription ${body}= Get File jsons/subscriptions.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -206,7 +206,7 @@ Send Delete Request for VNF Indicator Subscriptions Log Trying to create a new subscription ${body}= Get File jsons/subscriptions.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -240,7 +240,7 @@ Check Postcondition VNF Indicator 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}/${apiVersion}/subscriptions/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 diff --git a/SOL002/VNFIndicator-API/VNFIndicators.robot b/SOL002/VNFIndicator-API/VNFIndicators.robot index bc6dbd9c9..0b05ea627 100644 --- a/SOL002/VNFIndicator-API/VNFIndicators.robot +++ b/SOL002/VNFIndicator-API/VNFIndicators.robot @@ -177,7 +177,7 @@ Get all VNF indicators Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -186,7 +186,7 @@ Get VNF indicators with filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators?${POS_FIELDS} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${POS_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -195,7 +195,7 @@ Get VNF indicators with invalid filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators?${NEG_FIELDS} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -205,7 +205,7 @@ Get all VNF indicators with malformed authorization token Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -215,7 +215,7 @@ Get all VNF indicators with expired or revoked authorization token Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -224,7 +224,7 @@ Get all VNF indicators without authorization token Log The GET method queries multiple VNF indicators omitting token Set Headers {"Accept": "${ACCEPT_JSON}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -233,7 +233,7 @@ Get all VNF indicators with invalid resource endpoint Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicator + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicator ${output}= Output response Set Suite Variable ${response} ${output} @@ -241,7 +241,7 @@ Send POST Request for all VNF indicators 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}/${apiVersion}/indicators + Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -249,7 +249,7 @@ Send PUT Request for all VNF indicators 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}"} - Post ${apiRoot}/${apiName}/${apiVersion}/indicators + Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -257,7 +257,7 @@ Send PATCH Request for all VNF indicators 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}"} - Post ${apiRoot}/${apiName}/${apiVersion}/indicators + Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -265,7 +265,7 @@ Send DELETE Request for all VNF indicators 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}"} - Post ${apiRoot}/${apiName}/${apiVersion}/indicators + Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index 11f83e45b..df5458c16 100644 --- a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -142,7 +142,7 @@ Get all indicators for a VNF instance Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -150,7 +150,7 @@ Get all indicators for a VNF instance with filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}?${POS_FIELDS} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${POS_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -158,7 +158,7 @@ Get all indicators for a VNF instance with invalid filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}?${NEG_FIELDS} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -166,7 +166,7 @@ Get all indicators for a VNF instance with invalid resource identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${erroneousVnfInstanceId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${erroneousVnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -174,7 +174,7 @@ Send POST Request for indicators in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -182,7 +182,7 @@ Send PUT Request for indicators in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -190,7 +190,7 @@ Send PATCH Request for indicators in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -198,7 +198,7 @@ Send DELETE Request for indicators in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -234,7 +234,7 @@ Check Postcondition Indicators for VNF instance Exist Log Check Postcondition Indicators for VNF instance Exist Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} Should Be Equal ${response['status']} 200 Check LINK in Header diff --git a/SOL002/VNFIndicator-API/environment/variables.txt b/SOL002/VNFIndicator-API/environment/variables.txt index 58dff1e61..22f32a1fb 100644 --- a/SOL002/VNFIndicator-API/environment/variables.txt +++ b/SOL002/VNFIndicator-API/environment/variables.txt @@ -12,7 +12,7 @@ ${EM-VNF_SCHEMA} https ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 ${apiRoot} / -${apiVersion} v1 +${apiMajorVersion} v1 ${apiName} vnfind -- GitLab From ba41f1dcdce67a0af9ebec8a71f6393c555df757 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 14 Oct 2020 11:10:14 +0500 Subject: [PATCH 081/580] Revert "added majorApiVersion" This reverts commit a61a6b846d7556d95b1aa5587535a2f1ad855ba1. --- SOL002/VNFIndicator-API/ApiVersion.robot | 10 +++---- .../IndividualSubscription.robot | 18 ++++++------- .../IndividualVNFindicator.robot | 26 +++++++++---------- SOL002/VNFIndicator-API/Subscriptions.robot | 18 ++++++------- SOL002/VNFIndicator-API/VNFIndicators.robot | 22 ++++++++-------- .../VnfIndicatorsInVnfInstanceId.robot | 18 ++++++------- .../environment/variables.txt | 2 +- 7 files changed, 57 insertions(+), 57 deletions(-) diff --git a/SOL002/VNFIndicator-API/ApiVersion.robot b/SOL002/VNFIndicator-API/ApiVersion.robot index 934cc24ef..fce69405c 100644 --- a/SOL002/VNFIndicator-API/ApiVersion.robot +++ b/SOL002/VNFIndicator-API/ApiVersion.robot @@ -169,35 +169,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version + Post ${apiRoot}/${apiName}/v1/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version + Get ${apiRoot}/${apiName}/v1/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version + Put ${apiRoot}/${apiName}/v1/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version + Patch ${apiRoot}/${apiName}/v1/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version + Delete ${apiRoot}/${apiName}/v1/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFIndicator-API/IndividualSubscription.robot b/SOL002/VNFIndicator-API/IndividualSubscription.robot index 01eb68eff..16de0847e 100644 --- a/SOL002/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL002/VNFIndicator-API/IndividualSubscription.robot @@ -102,7 +102,7 @@ Get Individual VNF Indicator Subscription Log Trying to get a given 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} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -110,7 +110,7 @@ GET Individual VNF Indicator 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} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -118,7 +118,7 @@ Send Delete Request for Individual VNF Indicator 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} + DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -126,14 +126,14 @@ Send Delete Request for Individual VNF Indicator Subscription with invalid resou 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} + DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post Request for Individual VNF Indicator Subscription Log Trying to create a new subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -141,20 +141,20 @@ Send Put Request for Individual VNF Indicator Subscription 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}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Patch Request for Individual VNF Indicator Subscription Log Trying to create a new subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot index 87ff57f43..f4cecd713 100644 --- a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot @@ -163,7 +163,7 @@ Get Individual Indicator for a VNF instance Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} + GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -171,7 +171,7 @@ Get Individual Indicator for a VNF instance with invalid indicator identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${erroneousIndicatorId} + GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${erroneousIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -179,7 +179,7 @@ Send POST Request for individual indicator in VNF instance 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}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} + POST ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -187,7 +187,7 @@ Send PUT Request for individual indicator in VNF instance 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}/indicators/${vnfInstanceId}/${indicatorId} + PUT ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -195,7 +195,7 @@ Send PATCH Request for individual indicator in VNF instance 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}/indicators/${vnfInstanceId}/${indicatorId} + PATCH ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -203,7 +203,7 @@ Send DELETE Request for individual indicator in VNF instance 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}/indicators/${vnfInstanceId}/${indicatorId} + DELETE ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -244,7 +244,7 @@ Get Individual Indicator Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} + GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -252,7 +252,7 @@ Get Individual Indicator with invalid indicator identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${erroneousIndicatorId} + GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${erroneousIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -260,7 +260,7 @@ Send POST Request for individual indicator 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}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} + POST ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -268,7 +268,7 @@ Send PUT Request for individual indicator 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}/indicators/${indicatorId} + PUT ${apiRoot}/${apiName}/${apiVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -276,7 +276,7 @@ Send PATCH Request for individual indicator 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}/indicators/${indicatorId} + PATCH ${apiRoot}/${apiName}/${apiVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -284,7 +284,7 @@ Send DELETE Request for individual indicator 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}/indicators/${indicatorId} + DELETE ${apiRoot}/${apiName}/${apiVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -292,5 +292,5 @@ Check PostCondition Individual Indicator exist Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} + GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index 1ed601330..fd458fbb6 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -146,7 +146,7 @@ Get VNF Indicators 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 + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -154,7 +154,7 @@ Get VNF Indicators Subscriptions with filter 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?${POS_FILTER} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -162,7 +162,7 @@ Get VNF Indicators Subscriptions with invalid filter 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?${NEG_FILTER} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -170,7 +170,7 @@ Get VNF Indicators 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 + GET ${apiRoot}/${apiName}/${apiVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -180,7 +180,7 @@ Send Post Request for VNF Indicator Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body}= Get File jsons/subscriptions.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1 @@ -190,7 +190,7 @@ Send Put Request for VNF Indicator Subscriptions Log Trying to create a new subscription ${body}= Get File jsons/subscriptions.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -198,7 +198,7 @@ Send Patch Request for VNF Indicator Subscriptions Log Trying to create a new subscription ${body}= Get File jsons/subscriptions.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -206,7 +206,7 @@ Send Delete Request for VNF Indicator Subscriptions Log Trying to create a new subscription ${body}= Get File jsons/subscriptions.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -240,7 +240,7 @@ Check Postcondition VNF Indicator 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']} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 diff --git a/SOL002/VNFIndicator-API/VNFIndicators.robot b/SOL002/VNFIndicator-API/VNFIndicators.robot index 0b05ea627..bc6dbd9c9 100644 --- a/SOL002/VNFIndicator-API/VNFIndicators.robot +++ b/SOL002/VNFIndicator-API/VNFIndicators.robot @@ -177,7 +177,7 @@ Get all VNF indicators Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators + Get ${apiRoot}/${apiName}/${apiVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -186,7 +186,7 @@ Get VNF indicators with filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${POS_FIELDS} + Get ${apiRoot}/${apiName}/${apiVersion}/indicators?${POS_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -195,7 +195,7 @@ Get VNF indicators with invalid filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${NEG_FIELDS} + Get ${apiRoot}/${apiName}/${apiVersion}/indicators?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -205,7 +205,7 @@ Get all VNF indicators with malformed authorization token Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators + Get ${apiRoot}/${apiName}/${apiVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -215,7 +215,7 @@ Get all VNF indicators with expired or revoked authorization token Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators + Get ${apiRoot}/${apiName}/${apiVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -224,7 +224,7 @@ Get all VNF indicators without authorization token Log The GET method queries multiple VNF indicators omitting token Set Headers {"Accept": "${ACCEPT_JSON}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators + Get ${apiRoot}/${apiName}/${apiVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -233,7 +233,7 @@ Get all VNF indicators with invalid resource endpoint Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicator + Get ${apiRoot}/${apiName}/${apiVersion}/indicator ${output}= Output response Set Suite Variable ${response} ${output} @@ -241,7 +241,7 @@ Send POST Request for all VNF indicators 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}/indicators + Post ${apiRoot}/${apiName}/${apiVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -249,7 +249,7 @@ Send PUT Request for all VNF indicators 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}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators + Post ${apiRoot}/${apiName}/${apiVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -257,7 +257,7 @@ Send PATCH Request for all VNF indicators 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}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators + Post ${apiRoot}/${apiName}/${apiVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -265,7 +265,7 @@ Send DELETE Request for all VNF indicators 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}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators + Post ${apiRoot}/${apiName}/${apiVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index df5458c16..11f83e45b 100644 --- a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -142,7 +142,7 @@ Get all indicators for a VNF instance Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} + GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -150,7 +150,7 @@ Get all indicators for a VNF instance with filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${POS_FIELDS} + GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}?${POS_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -158,7 +158,7 @@ Get all indicators for a VNF instance with invalid filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${NEG_FIELDS} + GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -166,7 +166,7 @@ Get all indicators for a VNF instance with invalid resource identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${erroneousVnfInstanceId} + GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${erroneousVnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -174,7 +174,7 @@ Send POST Request for indicators in VNF instance 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}/indicators/${vnfInstanceId} + POST ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -182,7 +182,7 @@ Send PUT Request for indicators in VNF instance 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}/indicators/${vnfInstanceId} + PUT ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -190,7 +190,7 @@ Send PATCH Request for indicators in VNF instance 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}/indicators/${vnfInstanceId} + PATCH ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -198,7 +198,7 @@ Send DELETE Request for indicators in VNF instance 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}/indicators/${vnfInstanceId} + DELETE ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -234,7 +234,7 @@ Check Postcondition Indicators for VNF instance Exist Log Check Postcondition Indicators for VNF instance Exist Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} + GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId} Should Be Equal ${response['status']} 200 Check LINK in Header diff --git a/SOL002/VNFIndicator-API/environment/variables.txt b/SOL002/VNFIndicator-API/environment/variables.txt index 22f32a1fb..58dff1e61 100644 --- a/SOL002/VNFIndicator-API/environment/variables.txt +++ b/SOL002/VNFIndicator-API/environment/variables.txt @@ -12,7 +12,7 @@ ${EM-VNF_SCHEMA} https ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 ${apiRoot} / -${apiMajorVersion} v1 +${apiVersion} v1 ${apiName} vnfind -- GitLab From 8d895f6901b876563170f71a87cc297cc606e563 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 14 Oct 2020 11:12:37 +0500 Subject: [PATCH 082/580] added majorApiVersion and remove issues --- SOL003/VNFIndicator-API/ApiVersion.robot | 10 +-- .../VNFIndicatorsKeywords.robot | 90 +++++++++---------- .../environment/variables.txt | 2 +- 3 files changed, 51 insertions(+), 51 deletions(-) diff --git a/SOL003/VNFIndicator-API/ApiVersion.robot b/SOL003/VNFIndicator-API/ApiVersion.robot index 856e31ed0..7dfc38510 100644 --- a/SOL003/VNFIndicator-API/ApiVersion.robot +++ b/SOL003/VNFIndicator-API/ApiVersion.robot @@ -169,35 +169,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot index bc3c1d00d..d39f925d5 100644 --- a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot +++ b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot @@ -20,7 +20,7 @@ Get All VNF Indicators 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}/${apiVersion}/subscriptions + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 200 @@ -36,7 +36,7 @@ Get VNF Indicators Subscriptions with filter 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}/${apiVersion}/subscriptions?${filter_ok} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 200 @@ -52,7 +52,7 @@ Get VNF Indicators Subscriptions with invalid filter 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}/${apiVersion}/subscriptions?${filter_ko} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 400 @@ -69,7 +69,7 @@ Get VNF Indicators 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}/${apiVersion}/subscription + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 404 @@ -86,7 +86,7 @@ Get VNF Indicators Subscriptions with invalid authentication token Log Trying to perform a negative get, using wrong authorization bearer Pass Execution If ${AUTH_USAGE} == 0 Skipping test as VNFM is not supporting authentication Set Headers {"Accept": "${ACCEPT_JSON}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 401 @@ -106,7 +106,7 @@ Send Post Request for VNF Indicator Subscription ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback=${callback} {callback_subscribe}=${callback_subscribe} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1 @@ -129,7 +129,7 @@ Send Post Request for Duplicated VNF indicator Subscription ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback=${callback} {callback_subscribe}=${callback_subscribe} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 201 @@ -146,7 +146,7 @@ Send Put Request for VNF Indicator 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}/${apiVersion}/subscriptions + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -155,7 +155,7 @@ Send Patch Request for VNF Indicator 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}/${apiVersion}/subscriptions + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -164,7 +164,7 @@ Send Delete Request for VNF Indicator 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}/${apiVersion}/subscriptions + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -201,7 +201,7 @@ Check Postcondition VNF Indicator Subscription Is Set Log Trying to get the subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - Run Keyword If Should Not Be Equal As Strings ${location} Location GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']} + Run Keyword If Should Not Be Equal As Strings ${location} Location GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} Run Keyword If Should Be Equal As Strings ${location} Location GET ${response['headers']['Location']} ${output}= Output response Set Suite Variable ${response} ${output} @@ -232,7 +232,7 @@ Get all VNF indicators Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} Set Suite Variable ${vnfIndicators} ${response['body']} @@ -242,7 +242,7 @@ Get VNF indicators with filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators?${POS_FIELDS} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${POS_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -251,7 +251,7 @@ Get VNF indicators with invalid filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators?${NEG_FIELDS} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -261,7 +261,7 @@ Get all VNF indicators with malformed authorization token Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -271,7 +271,7 @@ Get all VNF indicators with expired or revoked authorization token Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -280,7 +280,7 @@ Get all VNF indicators without authorization token Log The GET method queries multiple VNF indicators omitting token Set Headers {"Accept": "${ACCEPT_JSON}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -289,7 +289,7 @@ Get all VNF indicators with invalid resource endpoint Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/indicators + Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -297,7 +297,7 @@ Send POST Request for all VNF indicators 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}/${apiVersion}/indicators + Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -305,7 +305,7 @@ Send PUT Request for all VNF indicators 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}"} - Post ${apiRoot}/${apiName}/${apiVersion}/indicators + Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -313,7 +313,7 @@ Send PATCH Request for all VNF indicators 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}"} - Post ${apiRoot}/${apiName}/${apiVersion}/indicators + Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -321,7 +321,7 @@ Send DELETE Request for all VNF indicators 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}"} - Post ${apiRoot}/${apiName}/${apiVersion}/indicators + Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -341,7 +341,7 @@ Get all indicators for a VNF instance Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -349,7 +349,7 @@ Get all indicators for a VNF instance with filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}?${POS_FIELDS} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${POS_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -357,7 +357,7 @@ Get all indicators for a VNF instance with invalid filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}?${NEG_FIELDS} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -365,7 +365,7 @@ Get all indicators for a VNF instance with invalid resource identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${erroneousVnfInstanceId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${erroneousVnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -373,7 +373,7 @@ Send POST Request for indicators in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -381,7 +381,7 @@ Send PUT Request for indicators in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -389,7 +389,7 @@ Send PATCH Request for indicators in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -397,7 +397,7 @@ Send DELETE Request for indicators in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -409,7 +409,7 @@ Get Individual Indicator for a VNF instance Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -417,7 +417,7 @@ Get Individual Indicator for a VNF instance with invalid indicator identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/indicators/${vnfInstanceId}/${erroneousIndicatorId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${erroneousIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -425,7 +425,7 @@ Send POST Request for individual indicator in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -433,7 +433,7 @@ Send PUT Request for individual indicator in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -441,7 +441,7 @@ Send PATCH Request for individual indicator in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -449,7 +449,7 @@ Send DELETE Request for individual indicator in VNF instance 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}/${apiVersion}/indicators/${vnfInstanceId}/${indicatorId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -471,7 +471,7 @@ GET Individual VNF Indicator Subscription Log Trying to get a given subscription identified by subscriptionId Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -479,7 +479,7 @@ GET Individual VNF Indicator 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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -487,7 +487,7 @@ Send Delete Request for Individual VNF Indicator 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}/${apiVersion}/subscriptions/${subscriptionId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -495,14 +495,14 @@ Send Delete Request for Individual VNF Indicator Subscription with invalid resou 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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post Request for Individual VNF Indicator Subscription Log Trying to create a new subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -510,20 +510,20 @@ Send Put Request for Individual VNF Indicator Subscription 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Patch Request for Individual VNF Indicator Subscription Log Trying to create a new subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFIndicator-API/environment/variables.txt b/SOL003/VNFIndicator-API/environment/variables.txt index cc906c8a3..6cc6ab92c 100644 --- a/SOL003/VNFIndicator-API/environment/variables.txt +++ b/SOL003/VNFIndicator-API/environment/variables.txt @@ -11,7 +11,7 @@ ${AUTH_USAGE} 1 ${CONTENT_TYPE_JSON} application/json ${apiRoot} / -${apiVersion} v1 +${apiMajorVersion} v1 ${apiName} vnfind ${VNFM_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint -- GitLab From 55c5c94ef1919339149deadff47a229cc6e9df0d Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 14 Oct 2020 11:35:37 +0500 Subject: [PATCH 083/580] added majorApiVersion --- .../ApiVersion.robot | 10 ++++----- .../Grants.robot | 22 +++++++++---------- .../IndividualGrant.robot | 12 +++++----- .../environment/variables.txt | 2 +- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot index 6821a6e18..273a3d326 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot @@ -169,35 +169,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index b03e19a80..4f9ce5172 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -109,38 +109,38 @@ DELETE Grants - Method not implemented Wait for individual grant successful notification Wait Until Keyword Succeeds ${retry} ${polling} Get an individual grant - Successful Send Request Grant Request in Synchronous mode - Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants + Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/grants Pass Execution If ${SYNC_MODE} == 0 The Granting process is asynchronous mode. 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/grantRequest.json ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} - Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} Send Request Grant Request in Asynchronous mode - Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants + Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/grants Pass Execution If ${SYNC_MODE} == 1 The Granting process is synchronous mode. 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/grantRequest.json ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} - Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} Send Request for a new Grant Forbiden Operation - Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants + Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/grants Log The grant request should be rejected Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/grantRejectedRequest.json ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} - Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -150,7 +150,7 @@ Send Request Grant Request 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}/${apiVersion}/grants ${body} allow_redirects=false + Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} allow_redirects=false ${resp} Output response ${result}= evaluate json.loads(json.dumps(${resp})) json Log ${result} @@ -187,7 +187,7 @@ Get Grants Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/grants + Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response Set Suite Variable ${response} ${body} @@ -195,7 +195,7 @@ Put Grants Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/grants + Put ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response Set Suite Variable ${response} ${body} @@ -203,7 +203,7 @@ Patch Grants Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/grants + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response Set Suite Variable ${response} ${body} @@ -212,7 +212,7 @@ Delete Grants Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/grants + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response Set Suite Variable ${response} ${body} diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index da4150f8b..52b961997 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -103,14 +103,14 @@ Get individual grant log Trying to read an individual grant Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response Set Suite Variable ${response} ${body} Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Post individual Grant @@ -118,7 +118,7 @@ Post individual Grant Pass Execution If ${SYNC_MODE} == 1 Skipping. Synchronous mode is supported Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response Set Suite Variable ${response} ${body} @@ -126,7 +126,7 @@ Put individual Grant Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response Set Suite Variable ${response} ${body} @@ -134,7 +134,7 @@ Patch individual Grant Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response Set Suite Variable ${response} ${body} @@ -142,7 +142,7 @@ Delete individual Grant Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response Set Suite Variable ${response} ${body} diff --git a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index 39e005a4d..8ba38cb43 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -10,7 +10,7 @@ ${grantId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d ${apiRoot} / ${apiName} grant -${apiVersion} v1 +${apiMajorVersion} v1 ${SYNC_MODE} 1 -- GitLab From 00163ee7bf88388ce47a9420e3f4ede021542f64 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 14 Oct 2020 11:40:29 +0500 Subject: [PATCH 084/580] added majorApiVersion and minor bugs fixed --- .../VNFPackageManagement-API/ApiVersion.robot | 10 +- .../VNFPackageManagementKeywords.robot | 326 +++++++++--------- .../VNFPackages.robot | 4 +- .../environment/variables.txt | 2 +- 4 files changed, 171 insertions(+), 171 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/ApiVersion.robot b/SOL003/VNFPackageManagement-API/ApiVersion.robot index 79cf0157a..66e4aeffc 100644 --- a/SOL003/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL003/VNFPackageManagement-API/ApiVersion.robot @@ -169,35 +169,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 96beb3dd2..1cbc4b7a7 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -23,7 +23,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}/${apiVersion}/vnf_packages + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -49,7 +49,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}/${apiVersion}/vnf_packages?${POS_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -64,7 +64,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}/${apiVersion}/vnf_packages?${NEG_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -72,7 +72,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}/${apiVersion}/vnf_packages?all_fields + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -93,7 +93,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}/${apiVersion}/vnf_packages?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -112,7 +112,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}/${apiVersion}/vnf_packages?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -131,7 +131,7 @@ GET VNF Packages with fields and exclude_default 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}/${apiVersion}/vnf_packages?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -150,7 +150,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}/${apiVersion}/vnf_packages?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -168,7 +168,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}/${apiVersion}/vnf_package + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_package ${output}= Output response Set Suite Variable ${response} ${output} @@ -176,7 +176,7 @@ Send POST Request for all VNF Packages 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}/${apiVersion}/vnf_packages + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -184,7 +184,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}/${apiVersion}/vnf_packages + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -192,7 +192,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}/${apiVersion}/vnf_packages + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -200,7 +200,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}/${apiVersion}/vnf_packages + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -208,7 +208,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}/${apiVersion}/vnf_packages/${vnfPackageId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -221,7 +221,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}/${apiVersion}/vnf_packages/${erroneousVnfPackageId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -229,7 +229,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}/${apiVersion}/vnf_packages/${vnfPackageId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -237,7 +237,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}/${apiVersion}/vnf_packages/${vnfPackageId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -245,7 +245,7 @@ Send PATCH Request for individual VNF Package 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}/${apiVersion}/vnf_packages/${vnfPackageId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -253,7 +253,7 @@ 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}/${apiVersion}/vnf_packages/${vnfPackageId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -261,7 +261,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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -275,7 +275,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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -297,7 +297,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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -305,7 +305,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}/${apiVersion}/vnf_packages/${erroneousVnfPkgId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -313,7 +313,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}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -321,7 +321,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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -329,7 +329,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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -337,7 +337,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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -345,7 +345,7 @@ 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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -353,7 +353,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}/${apiVersion}/subscriptions + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -361,7 +361,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}/${apiVersion}/subscriptions?${filter_ok} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} @@ -369,7 +369,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}/${apiVersion}/subscriptions?${filter_ko} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} @@ -377,7 +377,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}/${apiVersion}/subscription + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -388,7 +388,7 @@ Send Post Request for VNF Package Subscription ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callbackUri=${callbackUri} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 @@ -401,7 +401,7 @@ Send Post Request for Duplicated VNF Package Subscription ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callbackUri=${callbackUri} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -409,7 +409,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}/${apiVersion}/subscriptions + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -417,7 +417,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}/${apiVersion}/subscriptions + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -425,7 +425,7 @@ 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}/${apiVersion}/subscriptions + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -433,7 +433,7 @@ Get single file VNFD in Individual VNF Package in Plain Format Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -441,7 +441,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}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -450,7 +450,7 @@ Get single file VNFD in Individual VNF Package 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}/${apiVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -459,7 +459,7 @@ Get multi file VNFD in Individual VNF Package 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}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -471,7 +471,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}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -480,7 +480,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}/${apiVersion}/vnf_packages/${erroneousVnfPkgId}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -489,7 +489,7 @@ Get VNFD in Individual VNF Package Content 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}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -497,7 +497,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_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/vnfd + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -505,7 +505,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}/${apiVersion}/vnf_packages/${vnfPackageId}/vnfd + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -513,7 +513,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}/${apiVersion}/vnf_packages/${vnfPackageId}/vnfd + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -521,21 +521,21 @@ 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}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + 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}/${apiVersion}/vnf_packages/${vnfPackageOctetStreamId}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageOctetStreamId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -544,7 +544,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -554,21 +554,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + 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}/${apiVersion}/vnf_packages/${erroneousVnfPkgId}/artifacts/${artifactPath} + 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}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -576,7 +576,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -584,7 +584,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -592,7 +592,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -600,7 +600,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -642,7 +642,7 @@ 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}/${apiVersion}/subscriptions/${response['body']['id']} + ... GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} Run Keyword If ${location} == Location ... GET ${response['headers']['Location']} ${output}= Output response @@ -669,7 +669,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}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -677,7 +677,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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -685,7 +685,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}/${apiVersion}/subscriptions/${subscriptionId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -693,31 +693,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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + 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}/${apiVersion}/subscriptions/${newSubscriptionId} + 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}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + 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}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -752,7 +752,7 @@ Get all OnBoarded VNF Packages Log Trying to get all OnBoarded 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}/${apiVersion}/onboarded_vnf_packages + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -760,7 +760,7 @@ GET OnBoarded VNF Packages with attribute-based filter Log Trying to get all OnBoarded 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}/${apiVersion}/onboarded_vnf_packages?${POS_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -768,7 +768,7 @@ GET OnBoarded 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}/${apiVersion}/onboarded_vnf_packages?${NEG_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -776,7 +776,7 @@ GET OnBoarded VNF Packages with all_fields attribute selector Log Trying to get all OnBoarded 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}/${apiVersion}/onboarded_vnf_packages?all_fields + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -784,7 +784,7 @@ GET OnBoarded VNF Packages with exclude_default attribute selector Log Trying to get all OnBoarded 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}/${apiVersion}/onboarded_vnf_packages?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -793,7 +793,7 @@ GET OnBoarded 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}/${apiVersion}/onboarded_vnf_packages?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -802,7 +802,7 @@ GET OnBoarded 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}/${apiVersion}/onboarded_vnf_packages?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -810,7 +810,7 @@ GET OnBoarded 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}/${apiVersion}/onboarded_vnf_package + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_package ${output}= Output response Set Suite Variable ${response} ${output} @@ -818,7 +818,7 @@ Send OnBoarded POST Request for all VNF Packages 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}/${apiVersion}/onboarded_vnf_packages + POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -826,7 +826,7 @@ Send OnBoarded 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}/${apiVersion}/onboarded_vnf_packages + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -834,7 +834,7 @@ Send OnBoarded 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}/${apiVersion}/onboarded_vnf_packages + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -842,7 +842,7 @@ Send OnBoarded 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}/${apiVersion}/onboarded_vnf_packages + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -850,7 +850,7 @@ GET Individual OnBoarded VNF Package Log Trying to get a OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -858,7 +858,7 @@ GET Individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${erroneousVnfdId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${erroneousVnfdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -866,7 +866,7 @@ Send POST Request for individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -874,7 +874,7 @@ Send PUT Request for individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -882,7 +882,7 @@ Send PATCH Request for individual OnBoarded VNF Package 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}/${apiVersion}/onboarded_vnf_packages/${vndId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -890,7 +890,7 @@ Send DELETE Request for individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -898,7 +898,7 @@ Get single file VNFD in Individual OnBoarded VNF Package in Plain Format Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -906,7 +906,7 @@ Get VNFD in Individual OnBoarded VNF Package in Zip Format Log Trying to get a VNFD from a given OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -915,7 +915,7 @@ Get single file VNFD in Individual OnBoarded VNF Package 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -924,7 +924,7 @@ Get multi file VNFD in Individual OnBoarded VNF Package 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -932,7 +932,7 @@ Get multi file VNFD in Individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndIdZipVnfd}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndIdZipVnfd}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -941,7 +941,7 @@ Get VNFD in Individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${erroneousVnfdId}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${erroneousVnfdId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -950,7 +950,7 @@ Get VNFD in Individual OnBoarded VNF Package Content with conflict due to onboar Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -958,7 +958,7 @@ Send POST Request for VNFD in individual OnBoarded VNF Package Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/vnfd + POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -966,7 +966,7 @@ Send PUT Request for VNFD in individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/vnfd + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -974,7 +974,7 @@ Send PATCH Request for VNFD in individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/vnfd + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -982,7 +982,7 @@ Send DELETE Request for VNFD in individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndIdZipVnfd}/vnfd + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndIdZipVnfd}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -990,7 +990,7 @@ GET Individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -1000,7 +1000,7 @@ GET Individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -1010,7 +1010,7 @@ GET Individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -1018,7 +1018,7 @@ GET Individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${erroneousVnfdId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${erroneousVnfdId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -1026,21 +1026,21 @@ GET Content for OnBoarded VNF Package in onboarding state different from ONBOARD 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}/${apiVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} GET Individual OnBoarded VNF Package Artifact Log Trying to get a VNF Package Artifact Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} GET Individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vnfdOctetStreamId}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfdOctetStreamId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1049,7 +1049,7 @@ GET Individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1059,21 +1059,21 @@ GET Individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} GET Individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${erroneousVnfdId}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${erroneousVnfdId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} GET Artifact for OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1081,7 +1081,7 @@ Send POST Request for individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1089,7 +1089,7 @@ Send PUT Request for individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1097,7 +1097,7 @@ Send PATCH Request for individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1105,7 +1105,7 @@ Send DELETE Request for individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1114,7 +1114,7 @@ Get multi file VNFD in Individual OnBoarded VNF Package with security informatio Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/vnfd/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1123,7 +1123,7 @@ Get multi file VNFD in Individual VNF Package with security information Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1131,7 +1131,7 @@ GET Individual VNF Package Artifact with security information Log Trying to get a VNF Package Artifact Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1139,21 +1139,21 @@ GET Individual OnBoarded VNF Package Artifact with security information Log Trying to get a VNF Package Artifact Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} GET Individual VNF Package Artifact with encrypted artifact Log Trying to get a VNF Package Artifact Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vndEncryptedArtifactID}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vndEncryptedArtifactID}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} GET Individual OnBoarded VNF Package Artifact with encrypted artifact Log Trying to get a VNF Package Artifact Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndEncryptedArtifactID}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndEncryptedArtifactID}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1161,7 +1161,7 @@ GET Individual VNF Package Artifact with incompatable header Log Trying to get a VNF Package Artifact Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1169,7 +1169,7 @@ GET Individual OnBoarded VNF Package Artifact with incompatable header Log Trying to get a VNF Package Artifact Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1177,7 +1177,7 @@ Get Manifest in Individual VNF Package Log Trying to get content of manifest file 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}/${apiVersion}/vnf_packages/${vnfPackageId}/manifest + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1186,7 +1186,7 @@ Get Manifest in Individual VNF Package with security information Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/manifest/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1195,7 +1195,7 @@ Get Manifest 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}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/manifest + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1203,7 +1203,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_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/manifest + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1211,7 +1211,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}/${apiVersion}/vnf_packages/${vnfPackageId}/manifest + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1219,7 +1219,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}/${apiVersion}/vnf_packages/${vnfPackageId}/manifest + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1227,7 +1227,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}/${apiVersion}/vnf_packages/${vnfPackageId}/manifest + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1235,7 +1235,7 @@ Get Manifest in Individual OnBoarded VNF Package Log Trying to get content of manifest file from a given OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/manifest + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1244,7 +1244,7 @@ Get Manifest in Individual OnBoarded VNF Package with security information Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndIdZipVnfd}/manifest/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndIdZipVnfd}/manifest/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1253,7 +1253,7 @@ Get Manifest in Individual OnBoarded VNF Package with conflict due to onboarding Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/manifest + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1261,7 +1261,7 @@ Send POST Request for Manifest in individual OnBoarded VNF Package Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vndId}/manifest + POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1269,7 +1269,7 @@ Send PUT Request for Manifest in individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/manifest + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1277,7 +1277,7 @@ Send PATCH Request for Manifest in individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/manifest + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1285,7 +1285,7 @@ Send DELETE Request for Manifest in individual OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vndId}/manifest + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1293,7 +1293,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1301,7 +1301,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1309,7 +1309,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1318,7 +1318,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/select_non_mano_artifact_sets=${non_mano_artifact_sets} + 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} @@ -1326,7 +1326,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1335,7 +1335,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1343,7 +1343,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&select_non_mano_artifact_sets=${non_mano_artifact_sets} + 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} @@ -1351,14 +1351,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&exclude_all_non_mano_artifacts + 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}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1368,7 +1368,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1376,7 +1376,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1384,7 +1384,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1392,7 +1392,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1400,7 +1400,7 @@ 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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1408,7 +1408,7 @@ Get Artifact in OnBoarded VNF Package Log Trying to get Artifact in OnBoarded VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1416,7 +1416,7 @@ Get Artifact in OnBoarded VNF Package with exclude_all_mano_artifacts parameter Log Trying to get Artifact in OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1424,7 +1424,7 @@ Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts parame Log Trying to get Artifact in OnBoarded VNF Package with security certificates Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1433,7 +1433,7 @@ Get Artifact in OnBoarded VNF Package with select_non_mano_artifact_sets paramet 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/select_non_mano_artifact_sets=${non_mano_artifact_sets} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/select_non_mano_artifact_sets=${non_mano_artifact_sets} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1441,7 +1441,7 @@ Get Artifact in OnBoarded VNF Package with include_signatures parameter Log Trying to get Artifact in OnBoarded VNF Package with security certificates Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1450,7 +1450,7 @@ Get Artifact in OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1458,7 +1458,7 @@ Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and se Log Trying to get Artifact in OnBoarded VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&select_non_mano_artifact_sets=${non_mano_artifact_sets} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_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} @@ -1466,14 +1466,14 @@ Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and ex Log Trying to get Artifact in OnBoarded VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&exclude_all_non_mano_artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_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 OnBoarded VNF Package in onboarding state different from ONBOARDED Log Trying to get a OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${onboardingStateVnfPkgId}/artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfPkgId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1483,7 +1483,7 @@ GET OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1491,7 +1491,7 @@ Send POST Request for OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1499,7 +1499,7 @@ Send PUT Request for OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1507,7 +1507,7 @@ Send PATCH Request for OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1515,7 +1515,7 @@ Send DELETE Request for OnBoarded 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}/${apiVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1524,6 +1524,6 @@ GET OnBoarded VNF Packages with fields and exclude_default 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}/${apiVersion}/onboarded_vnf_packages?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackages.robot b/SOL003/VNFPackageManagement-API/VNFPackages.robot index f910cbd3b..982c0eef9 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackages.robot @@ -177,7 +177,7 @@ GET all VNF Packages as a Paged Response ... Post-Conditions: none GET all VNF Packages Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET VNF Packages - Bad Request Response too Big [Documentation] Test ID: 7.3.3.1.14 @@ -362,7 +362,7 @@ GET all OnBoarded VNF Packages as a Paged Response ... Post-Conditions: none Get all OnBoarded VNF Packages Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET OnBoarded VNF Packages - Bad Request Response too Big [Documentation] Test ID: 7.3.3.1.28 diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 3ee43c2d6..2639b8457 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -15,7 +15,7 @@ ${onboardingStateVnfPkgId} f9f130e4-05eb-4082-a676-4c97d13a883d ${onboardingStateVnfdId} f9f130e4-05eb-4082-a676-4c97d13a883d ${apiRoot} / -${apiVersion} v1 +${apiMajorVersion} v1 ${apiName} vnfpkgm ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint -- GitLab From 0e0d6857a63a95b3a39d66428a99afebc2d1f052 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 14 Oct 2020 11:42:17 +0500 Subject: [PATCH 085/580] added majorApiVersion --- .../ApiVersion.robot | 10 +++--- .../VRQANOperationKeywords.robot | 32 +++++++++---------- .../environment/variables.txt | 2 +- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot index 223f8d37c..c02163dd6 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot @@ -167,35 +167,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot index 641ffcefc..f33ff0732 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot @@ -18,7 +18,7 @@ Create Sessions Check Individual Subscription existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Check HTTP Response Status Code Is @@ -53,7 +53,7 @@ Send Post request for Virtualised Resources Quota Available Notification Individ log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -61,7 +61,7 @@ Put Virtualised Resources Quota Available Notification individual Subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -69,7 +69,7 @@ Patch Virtualised Resources Quota Available Notification individual subscription log Trying to perform a Patch. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -77,7 +77,7 @@ Get Virtualised Resources Quota Available Notification individual subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -85,18 +85,18 @@ Delete Virtualised Resources Quota Available Notification individual subscriptio log Try to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Send Post request for new Virtualised Resources Quota Available Notification subscription - Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} 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} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -108,7 +108,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub 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} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -120,7 +120,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub 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} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -129,7 +129,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -138,7 +138,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions with Filter Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -146,7 +146,7 @@ Get Virtualised Resources Quota Available Notification subscriptions with Bad Re Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -155,7 +155,7 @@ Send Put request for Virtualised Resources Quota Available Notification subscrip Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -164,7 +164,7 @@ Send Patch request for Virtualised Resources Quota Available Notification subscr Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -173,7 +173,7 @@ Send Delete request for Virtualised Resources Quota Available Notification subsc Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt index ea3559c2f..7e9f441fc 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt @@ -22,7 +22,7 @@ ${sleep_interval} 20s ${apiRoot} / ${apiName} vrqan -${apiVersion} v1 +${apiMajorVersion} v1 ${VrQuotaAvailNotification} {} ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -- GitLab From a0d13f56e911c7f58da04028b2504391b575cfd1 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 14 Oct 2020 11:47:07 +0500 Subject: [PATCH 086/580] reference updated --- SOL005/NSDManagement-API/ApiVersion.robot | 20 +++++------ .../IndividualNSDescriptor.robot | 22 ++++++------ .../IndividualPnfDescriptor.robot | 14 ++++---- .../IndividualSubscription.robot | 14 ++++---- SOL005/NSDManagement-API/NSDContent.robot | 36 +++++++++---------- .../NSDManagementNotification.robot | 14 ++++---- SOL005/NSDManagement-API/NSDescriptors.robot | 32 ++++++++--------- SOL005/NSDManagement-API/PNFDContent.robot | 16 ++++----- SOL005/NSDManagement-API/PNFDescriptors.robot | 26 +++++++------- SOL005/NSDManagement-API/Subscriptions.robot | 24 ++++++------- 10 files changed, 109 insertions(+), 109 deletions(-) diff --git a/SOL005/NSDManagement-API/ApiVersion.robot b/SOL005/NSDManagement-API/ApiVersion.robot index 4f632f26a..ed10f38f5 100644 --- a/SOL005/NSDManagement-API/ApiVersion.robot +++ b/SOL005/NSDManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot index 2ff40359e..32dce71f4 100644 --- a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot @@ -15,7 +15,7 @@ GET Individual Network Service Descriptor Information ... Test title: GET Individual Network Service Descriptor Information ... Test objective: The objective is to test the retrieval of an individual Network Service Descriptor information and perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET Individual Network Service Descriptor Information with invalid resource iden ... Test title: GET Individual Network Service Descriptor Information with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual Network Service Descriptor Information fails when using an invalid resource identifier ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ Disable Individual Network Service Descriptor ... Test title: Disable Individual Network Service Descriptor ... Test objective: The objective is to test the disabling of an individual Network Service Descriptor and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in enabled operational state. - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is in operational state DISABLED and usage state is not modified @@ -58,7 +58,7 @@ Enable Individual Network Service Descriptor ... Test title: Enable Individual Network Service Descriptor ... Test objective: The objective is to test the enabling of an individual Network Service Descriptor and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.1.2.3). - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is in operational state ENABLED and usage state is not modified @@ -73,7 +73,7 @@ Enable Individual Network Service Descriptor with conflict due to operational st ... Test title: Enable Individual Network Service Descriptor with conflict due to operational state ENABLED ... Test objective: The objective is to test that enabling an individual Network Service Descriptor that is already in ENABLED operational state failsand perform a JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.4). - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ Enable Individual Network Service Descriptor with conflict due to onboarding sta ... Test title: Enable Individual Network Service Descriptor with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an Network Service Descriptor fails due to a conflict when the Network Service Descriptor is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in ENABLED operational state. The onboarding state of the Network Service Descriptor for which the enabling is requested is different from ONBOARDED. - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ Enable Individual Network Service Descriptor with conflict due to onboarding sta ... Test title: Enable Individual Network Service Descriptor with HTTP Etag precondition failure ... Test objective: The objective is to test that the retrieval of an Network Service Descriptor fails due to a precondition failure when using an uncorrect Http Etag identified. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.4). - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ DELETE Individual Network Service Descriptor ... Test title: DELETE Individual Network Service Descriptor ... Test objective: The objective is to test the deletion of an individual Network Service Descriptor. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in DISABLED operational state and NOT_IN_USE usage state. - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is not available anymore in the NFVO @@ -124,7 +124,7 @@ DELETE Individual Network Service Descriptor in operational state ENABLED ... Test title: DELETE Individual Network Service Descriptor in operational state ENABLED ... Test objective: The objective is to test that the deletion of an individual Network Service Descriptor in operational state ENABLED fails. The test also performs a JSON schema validation of the failed operation HTTP response. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.4). - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is not deleted by the failed operation. @@ -138,7 +138,7 @@ POST Individual Network Service Descriptor - Method not implemented ... Test title: POST Individual Network Service Descriptor - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -150,7 +150,7 @@ PUT Individual Network Service Descriptor - Method not implemented ... Test title: PUT Individual Network Service Descriptor - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a new Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot b/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot index bb1e5d970..eb15a97c2 100644 --- a/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot @@ -14,7 +14,7 @@ GET Individual PNF Descriptor Information ... Test title: GET Individual PNF Descriptor Information ... Test objective: The objective is to test the retrieval of an individual PNF Descriptor information and perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ GET Individual PNF Descriptor Information with invalid resource identifier ... Test title: GET Individual PNF Descriptor Information with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual PNF Descriptor Information fails when using an invalid resource identifier ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ Update Individual PNF Descriptor ... Test title: Update Individual PNF Descriptor ... Test objective: The objective is to test the update of an individual PNF Descriptor and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNF Descriptor is modified according to the update request @@ -56,7 +56,7 @@ Update Individual PNF Descriptor with HTTP Etag precondition failure ... Test title: Update Individual PNF Descriptor with HTTP Etag precondition failure ... Test objective: The objective is to test that the update of a PNF Descriptor fails due to a precondition failure when using an uncorrect Http Etag identified. ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ POST Individual PNF Descriptor - Method not implemented ... Test title: POST Individual PNF Descriptor - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new PNF Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ PUT Individual PNF Descriptor - Method not implemented ... Test title: PUT Individual PNF Descriptor - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a new PNF Descriptor ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ DELETE Individual PNF Descriptor ... Test title: DELETE Individual PNF Descriptor ... Test objective: The objective is to test the deletion of an individual PNF Descriptor. ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNF Descriptor is not available anymore in the NFVO diff --git a/SOL005/NSDManagement-API/IndividualSubscription.robot b/SOL005/NSDManagement-API/IndividualSubscription.robot index cd9047ea1..655572bc8 100644 --- a/SOL005/NSDManagement-API/IndividualSubscription.robot +++ b/SOL005/NSDManagement-API/IndividualSubscription.robot @@ -13,7 +13,7 @@ GET Individual NSD Management Subscription ... Test title: GET Individual NSD Management Subscription ... Test objective: The objective is to test the retrieval of individual NSD Management subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual NSD Management Subscription with invalid resource identifier ... Test title: GET Individual NSD Management Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual NSD Management subscription fails when using an invalid resource identifier ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ DELETE Individual NSD Management Subscription with invalid resource identifier ... Test title: DELETE Individual NSD Management Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual NSD Management subscription fails when using an invalid resource identifier ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ POST Individual NSD Management Subscription - Method not implemented ... Test title: POST Individual NSD Management Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NSD Management Subscription ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NSD Management Subscription is not created on the NFVO @@ -64,7 +64,7 @@ PUT Individual NSD Management Subscription - Method not implemented ... Test title: PUT Individual NSD Management Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NSD Management subscription ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NSD Management subscription is not modified by the operation @@ -77,7 +77,7 @@ PATCH Individual NSD Management Subscription - Method not implemented ... Test title: PATCH Individual NSD Management Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NSD Management subscription ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NSD Management subscription is not modified by the operation @@ -90,7 +90,7 @@ DELETE Individual NSD Management Subscription ... Test title: DELETE Individual NSD Management Subscription ... Test objective: The objective is to test the deletion of an individual NSD Management subscription ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NSD Management Subscription is not available anymore in the NFVO diff --git a/SOL005/NSDManagement-API/NSDContent.robot b/SOL005/NSDManagement-API/NSDContent.robot index 5079ca2cd..aaf583164 100644 --- a/SOL005/NSDManagement-API/NSDContent.robot +++ b/SOL005/NSDManagement-API/NSDContent.robot @@ -14,7 +14,7 @@ Get single file NSD Content in Plain Format ... Test title: Get single file NSD Content in Plain Format ... Test objective: The objective is to test the retrieval of the NSD Content in plain format and perform a validation that returned content is in plain format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD is implemented as a single file ... Post-Conditions: none @@ -27,7 +27,7 @@ Get NSD Content in Zip Format ... Test title: Get NSD Content in Zip Format ... Test objective: The objective is to test the retrieval of the NSD Content in zip format and perform a validation that returned content is in zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ Get single file NSD Content in Plain or Zip Format ... Test title: Get single file NSD Content in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file NSD Content when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Plain or Zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD Content is implemented as a single file ... Post-Conditions: none @@ -53,7 +53,7 @@ Get multi file NSD Content in Plain or Zip Format ... Test title: Get multi file NSD Content in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file NSD Content when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD is implemented as a multi file ... Post-Conditions: none @@ -66,7 +66,7 @@ Get multi file NSD Content in Plain Format ... Test title: Get multi file NSD Content in Plain Format ... Test objective: The objective is to test that the retrieval of the multi file NSD Content fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD Content is implemented as a multi file ... Post-Conditions: none @@ -79,7 +79,7 @@ Get NSD Content with invalid resource identifier ... Test title: Get NSD Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the NSD Content fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ Get NSD Content with conflict due to onboarding state ... Test title: Get NSD Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the NSD Content fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD for which the NSD Content is requested is different from ONBOARDED. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ GET NSD Content with Range Request and NFVO supporting Range Requests ... Test title: GET NSD Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of NSD Content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the NSD file ... Post-Conditions: none @@ -119,7 +119,7 @@ GET NSD Content with Range Request and NFVO not supporting Range Requests ... Test title: GET NSD Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of NSD Content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full NSD file. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the NSD file ... Post-Conditions: none @@ -132,7 +132,7 @@ GET NSD Content with invalid Range Request ... Test title: GET NSD Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of NSD Content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the NSD file ... Post-Conditions: none @@ -144,7 +144,7 @@ Upload NSD Content as Zip file in asynchronous mode ... Test title: Upload NSD Content as Zip file in asynchronous mode ... Test objective: The objective is to test the upload of an NSD Content in Zip format when the NFVO supports the asynchronous upload mode. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the upload of NSD contents in asynchronous mode ... Post-Conditions: NSD Uploaded @@ -158,7 +158,7 @@ Upload NSD Content as plain text file in asynchronous mode ... Test title: Upload NSD Content as plain text file in asynchronous mode ... Test objective: The objective is to test the upload of an NSD Content in plain text format when the NFVO supports the asynchronous upload mode. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the upload of NSD contents in asynchronous mode ... Post-Conditions: none @@ -171,7 +171,7 @@ Upload NSD Content as Zip file in synchronous mode ... Test title: Upload NSD Content as Zip file in synchronous mode ... Test objective: The objective is to test the upload of an NSD Content in Zip format when the NFVO supports the synchronous upload mode. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the upload of NSD contents in synchronous mode ... Post-Conditions: The NSD content is successfully uploaded and available in the NFVO @@ -184,7 +184,7 @@ Upload NSD Content as plain text file in synchronous mode ... Test title: Upload NSD Content as plain text file in synchronous mode ... Test objective: The objective is to test the upload of an NSD Content in plain text format when the NFVO supports the synchronous upload mode. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the upload of NSD contents in synchronous mode ... Post-Conditions: The NSD content is successfully uploaded and available in the NFVO @@ -198,7 +198,7 @@ Upload NSD Content with conflict due to onboarding state ... Test title: Upload NSD Content with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the NSD Content fails due to a conflict when the NSD is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD for which the NSD Content is requested is different from ONBOARDED. - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -211,7 +211,7 @@ POST NSD Content - Method not implemented ... Test title: POST NSD Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -223,7 +223,7 @@ PATCH NSD Content - Method not implemented ... Test title: PATCH NSD Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -235,7 +235,7 @@ DELETE NSD Content - Method not implemented ... Test title: DELETE NSD Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NSD content is not deleted by the failed operation diff --git a/SOL005/NSDManagement-API/NSDManagementNotification.robot b/SOL005/NSDManagement-API/NSDManagementNotification.robot index de6418c75..60dee5ab9 100644 --- a/SOL005/NSDManagement-API/NSDManagementNotification.robot +++ b/SOL005/NSDManagement-API/NSDManagementNotification.robot @@ -16,7 +16,7 @@ NSD Onboarding Notification ... Test title: NSD Onboarding Notification ... Test objective: The objective is to test the dispatch of NSD Onboarding notification when the NSD onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NSD management subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ NSD Onboarding Failure Notification ... Test title: NSD Onboarding Failure Notification ... Test objective: The objective is to test the dispatch of NSD Onboarding failure notification when the NSD onboarding operation fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NSD management subscription for onboarding failure notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ NSD Operational State Change Notification ... Test title: NSD Operational State Change Notification ... Test objective: The objective is to test the dispatch of NSD Operational State Change notification when the NSD operational status change in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NSD management subscription for operational state change notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ NSD Deletion Notification ... Test title: NSD Deletion Notification ... Test objective: The objective is to test the dispatch of NSD Deletion notification when the NSD is deleted from the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NSD management subscription for deletion notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ PNFD Onboarding Notification ... Test title: PNFD Onboarding Notification ... Test objective: The objective is to test the dispatch of PNFD Onboarding notification when the PNFD onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A PNFD management subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ PNFD Onboarding Failure Notification ... Test title: PNFD Onboarding Failure Notification ... Test objective: The objective is to test the dispatch of PNFD Onboarding failure notification when the PNFD onboarding operation fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A PNFD management subscription for onboarding failure notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ PNFD Deletion Notification ... Test title: PNFD Deletion Notification ... Test objective: The objective is to test the dispatch of PNFD Deletion notification when the PNFD is deleted from the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A PNFD management subscription for deletion notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/NSDescriptors.robot b/SOL005/NSDManagement-API/NSDescriptors.robot index 0f2be1603..4f0789aae 100644 --- a/SOL005/NSDManagement-API/NSDescriptors.robot +++ b/SOL005/NSDManagement-API/NSDescriptors.robot @@ -14,7 +14,7 @@ GET all Network Service Descriptors Information ... Test title: GET all Network Service Descriptors Information ... Test objective: The objective is to test the retrieval of all the Network Service Descriptors information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Network Service Descriptors Information with attribute-based filter ... Test title: GET Network Service Descriptors Information with attribute-based filter ... Test objective: The objective is to test the retrieval of Network Service Descriptors information using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET Network Service Descriptors Information with invalid attribute-based filter ... Test title: GET Network Service Descriptors Information with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of Network Service Descriptors information fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ Get all Network Service Descriptors Information with malformed authorization tok ... Test title: Get all Network Service Descriptors Information with malformed authorization token ... Test objective: The objective is to test that the retrieval of Network Service Descriptors Information fails when using malformed authorization token ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -66,7 +66,7 @@ Get all Network Service Descriptors Information without authorization token ... Test title: Get all Network Service Descriptors Information without authorization token ... Test objective: The objective is to test that the retrieval of Network Service Descriptors Information fails when omitting the authorization token ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -78,7 +78,7 @@ GET all Network Service Descriptors Information with expired or revoked authoriz ... Test title: GET all Network Service Descriptors Information with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of Network Service Descriptors Information fails when using expired or revoked authorization token ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -90,7 +90,7 @@ GET all Network Service Descriptors Information with "all_fields" attribute sele ... Test title: GET all Network Service Descriptors Information with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of all Network Service Descriptors Information with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ GET all Network Service Descriptors Information with "exclude_default" attribute ... Test title: GET all Network Service Descriptors Information with "exclude_default" attribute selector ... Test objective: The objective is to test the retrieval of all Network Service Descriptors Information with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ GET all Network Service Descriptors Information with "fields" attribute selector ... Test title: GET all Network Service Descriptors Information with "fields" attribute selector ... Test objective: The objective is to test the retrieval of all Network Service Descriptors Information with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "fields" attribute selector ... Post-Conditions: none @@ -132,7 +132,7 @@ GET all Network Service Descriptors Information with "exclude_fields" attribute ... Test title: GET all Network Service Descriptors Information with "exclude_fields" attribute selector ... Test objective: The objective is to test the retrieval of all Network Service Descriptors Information with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "exclude_fields" attribute selector ... Post-Conditions: none @@ -146,7 +146,7 @@ Create new Network Service Descriptor Resource ... Test title: Create new Network Service Descriptor Resource ... Test objective: The objective is to test the creation of a new Create new Network Service Descriptor resource and perform the JSON schema validation of the returned structure ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor resource is successfully created on the NFVO @@ -161,7 +161,7 @@ PUT all Network Service Descriptors - Method not implemented ... Test title: PUT all Network Service Descriptors Information - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify Network Service Descriptors Information ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -173,7 +173,7 @@ PATCH all Network Service Descriptors - Method not implemented ... Test title: PATCH all Network Service Descriptors Information - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptors Information ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -185,7 +185,7 @@ DELETE all Network Service Descriptors - Method not implemented ... Test title: DELETE all Network Service Descriptors Information - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptors Information ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptors are not deleted by the failed operation @@ -198,7 +198,7 @@ GET all Network Service Descriptors Information as Paged Response ... Test title: GET all Network Service Descriptors Information as Paged Response ... Test objective: The objective is to test the retrieval of all the Network Service Descriptors information as a Paged Response. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -211,7 +211,7 @@ Get all Network Service Descriptors Information - Bad Request Response too Big ... Test title: Get all Network Service Descriptors Information - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of Network Service Descriptors Information fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/PNFDContent.robot b/SOL005/NSDManagement-API/PNFDContent.robot index 15231b5fc..740ef2a26 100644 --- a/SOL005/NSDManagement-API/PNFDContent.robot +++ b/SOL005/NSDManagement-API/PNFDContent.robot @@ -14,7 +14,7 @@ Get PNFD Content ... Test title: Get PNFD Content ... Test objective: The objective is to test the retrieval of the PNFD Content in plain format and perform a validation that returned content is in plain format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Get PNFD Content with invalid resource identifier ... Test title: Get PNFD Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the PNFD Content fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Get PNFD Content with conflict due to onboarding state ... Test title: Get PNFD Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the PNFD Content fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD for which the PNFD Content is requested is different from ONBOARDED. - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ Upload PNFD Content as plain text file ... Test title: Upload PNFD Content as plain text file ... Test objective: The objective is to test the upload of a PNFD Content in plain text format. ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The uploaded PNFD content is available in the NFVO @@ -67,7 +67,7 @@ Upload PNFD Content with conflict due to onboarding state ... Test title: Upload PNFD Content with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the PNFD Content fails due to a conflict when the PNFD is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD for which the PNFD Content is requested is different from CREATED. - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ POST PNFD Content - Method not implemented ... Test title: POST PNFD Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new PNF Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ PATCH PNFD Content - Method not implemented ... Test title: PATCH PNFD Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update PNF Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ DELETE PNFD Content - Method not implemented ... Test title: DELETE PNFD Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete PNF Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNFD content is not deleted by the failed operation diff --git a/SOL005/NSDManagement-API/PNFDescriptors.robot b/SOL005/NSDManagement-API/PNFDescriptors.robot index afb60a8e5..194c173fc 100644 --- a/SOL005/NSDManagement-API/PNFDescriptors.robot +++ b/SOL005/NSDManagement-API/PNFDescriptors.robot @@ -14,7 +14,7 @@ GET all PNF Descriptors Information ... Test title: GET all PNF Descriptors Information ... Test objective: The objective is to test the retrieval of all the PNF Descriptors information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET PNF Descriptors Information with attribute-based filter ... Test title: GET PNF Descriptors Information with attribute-based filter ... Test objective: The objective is to test the retrieval of PNF Descriptors information using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET PNF Descriptors Information with invalid attribute-based filter ... Test title: GET PNF Descriptors Information with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of PNF Descriptors information fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET all PNF Descriptors Information with "all_fields" attribute selector ... Test title: GET all PNF Descriptors Information with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ GET all PNF Descriptors Information with "exclude_default" attribute selector ... Test title: GET all PNF Descriptors Information with "exclude_default" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ GET all PNF Descriptors Information with "fields" attribute selector ... Test title: GET all PNF Descriptors Information with "fields" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "fields" attribute selector ... Post-Conditions: none @@ -96,7 +96,7 @@ GET all PNF Descriptors Information with "exclude_fields" attribute selector ... Test title: GET all PNF Descriptors Information with "exclude_fields" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "exclude_fields" attribute selector ... Post-Conditions: none @@ -110,7 +110,7 @@ Create new PNF Descriptor Resource ... Test title: Create new PNF Descriptor Resource ... Test objective: The objective is to test the creation of a new Create new PNF Descriptor resource and perform the JSON schema validation of the returned structure ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNF Descriptor resource is successfully created on the NFVO @@ -125,7 +125,7 @@ PUT all PNF Descriptors - Method not implemented ... Test title: PUT all PNF Descriptors Information - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify PNF Descriptors Information ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -137,7 +137,7 @@ PATCH all PNF Descriptors - Method not implemented ... Test title: PATCH all PNF Descriptors Information - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NF Descriptors Information ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -149,7 +149,7 @@ DELETE all PNF Descriptors - Method not implemented ... Test title: DELETE all PNF Descriptors Information - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete PNF Descriptors Information ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNF Descriptors are not deleted by the failed operation @@ -162,7 +162,7 @@ GET all PNF Descriptors Information as Paged Response ... Test title: GET all PNF Descriptors Information as Paged Response ... Test objective: The objective is to test the retrieval of all the PNF Descriptors information as a Paged Response. ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -175,7 +175,7 @@ GET PNF Descriptors Information - Bad Request Response too Big ... Test title: GET PNF Descriptors Information - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of PNF Descriptors information fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/Subscriptions.robot b/SOL005/NSDManagement-API/Subscriptions.robot index 968710bd8..d70615f82 100644 --- a/SOL005/NSDManagement-API/Subscriptions.robot +++ b/SOL005/NSDManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ Get All NSD Management Subscriptions ... Test title: Get All NSD Management Subscriptions ... Test objective: The objective is to test the retrieval of all NSD Management subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ Get NSD Management Subscriptions with attribute-based filter ... Test title: Get NSD Management Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of NSD Management subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ Get NSD Management Subscriptions with invalid attribute-based filter ... Test title: Get NSD Management Subscriptions with attribute-based filters ... Test objective: The objective is to test that the retrieval of NSD Management subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -58,7 +58,7 @@ GET NSD Management Subscription with invalid resource endpoint ... Test title: GET NSD Management Subscription with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all NSD Management subscriptions fails when using invalid resource endpoint. ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ Create new NSD Management subscription ... Test title: Create new NSD Management subscription ... Test objective: The objective is to test the creation of a new NSD Management subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NSD Management subscription is successfully set and it matches the issued subscription @@ -87,7 +87,7 @@ Create duplicated NSD Management subscription with NFVO not creating duplicated ... Test title: Create duplicated NSD Management subscription with NFVO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated NSD Management subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing NSD Management subscription returned is available in the NFVO @@ -104,7 +104,7 @@ Create duplicated NSD Management subscription with NFVO creating duplicated subs ... Test title: Create duplicated NSD Management subscription with NFVO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated NSD Management subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated NSD Management subscription is successfully set and it matches the issued subscription @@ -120,7 +120,7 @@ PUT NSD Management Subscriptions - Method not implemented ... Test title: PUT NSD Management Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NSD Management subscriptions ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -133,7 +133,7 @@ PATCH NSD Management Subscriptions - Method not implemented ... Test title: PATCH NSD Management Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NSD Management subscriptions ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -146,7 +146,7 @@ DELETE NSD Management Subscriptions - Method not implemented ... Test title: DELETE NSD Management Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete NSD Management subscriptions ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NSD Management subscriptions are not deleted by the failed operation @@ -159,7 +159,7 @@ Get All NSD Management Subscriptions as Paged Response ... Test title: Get All NSD Management Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all NSD Management subscriptions as a Paged Response. ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -172,7 +172,7 @@ Get NSD Management Subscriptions - Bad Request Response too Big ... Test title: Get NSD Management Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NSD Management subscriptions fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From d27f1383f91e37213db6dc2390e5dcf4794ae1b0 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 14 Oct 2020 11:50:56 +0500 Subject: [PATCH 087/580] reference updated --- .../ApiVersion.robot | 20 ++++++------ .../CancelOperationTask.robot | 14 ++++---- .../ContinueOperationTask.robot | 14 ++++---- .../CreateNSInstanceWorkflow.robot | 2 +- .../DeleteNSInstanceWorkflow.robot | 2 +- .../FailOperationTask.robot | 14 ++++---- .../HealNSTask.robot | 12 +++---- .../HealNSTaskWorkflow.robot | 2 +- .../IndividualNSInstance.robot | 12 +++---- .../IndividualNSLCMOccurences.robot | 10 +++--- .../IndividualSubscription.robot | 10 +++--- .../InstanciateNSTaskWorkflow.robot | 2 +- .../InstantiateNSTask.robot | 12 +++---- .../NSInstances.robot | 32 +++++++++---------- .../NSLCMOccurences.robot | 26 +++++++-------- .../NotificationEndpoint.robot | 8 ++--- .../RetryOperationTask.robot | 14 ++++---- .../RollbackOperationTask.robot | 14 ++++---- .../ScaleNSTask.robot | 12 +++---- .../ScaleNSTaskWorkflow.robot | 2 +- .../Subscriptions.robot | 30 ++++++++--------- .../TerminateNSTask.robot | 12 +++---- .../TerminateNSTaskWorkflow.robot | 2 +- .../UpdateNSTask.robot | 12 +++---- .../UpdateNSTaskWorkflow.robot | 2 +- 25 files changed, 146 insertions(+), 146 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/ApiVersion.robot b/SOL005/NSLifecycleManagement-API/ApiVersion.robot index 77e6bc6bf..9a1f0c8bc 100644 --- a/SOL005/NSLifecycleManagement-API/ApiVersion.robot +++ b/SOL005/NSLifecycleManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot b/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot index 26407a2d2..a930030d4 100644 --- a/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot @@ -13,7 +13,7 @@ POST Cancel operation task ... Test title: POST Cancel operation task ... Test objective: The objective is to test that POST method cancel the NS LCM operation ... Pre-conditions: NS instance status equal to STARTING, PROCESSING or ROLLING_BACK - ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status equal to FAILED_TEMP @@ -26,7 +26,7 @@ POST Cancel operation task Not Found ... Test title: POST Cancel operation task Not Found ... Test objective: The objective is to test that POST method fail completing the Cancel NS LCM operation if the resource is not found ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Cancel operation task Conflict ... Test title: POST Cancel operation task Conflict ... Test objective: The objective is to test that POST method fail if a status conflict exist on the NS LCM operation. (i.e. NS instance status not equal to STARTING, PROCESSING or ROLLING_BACK) ... Pre-conditions: NS instance status not equal to STARTING, PROCESSING or ROLLING_BACK - ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Cancel operation task - Method not implemented ... Test title: GET Cancel operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.15.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Cancel operation task - Method not implemented ... Test title: PUT Cancel operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.15.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Cancel operation task - Method not implemented ... Test title: PATCH Cancel operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.15.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Cancel operation task - Method not implemented ... Test title: DELETE Cancel operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.15.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot b/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot index 54b22eae5..ff24ffbe0 100644 --- a/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot @@ -13,7 +13,7 @@ POST Continue operation task ... Test title: POST Continue operation task ... Test objective: The objective is to test that POST method trigger a continue on the LCM operation ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status not equal to FAILED_TEMP @@ -26,7 +26,7 @@ POST Continue operation task Not Found ... Test title: POST Continue operation task Not Found ... Test objective: The objective is to test that POST method cannot perform a continue operation task because the resource is not found ... Pre-conditions: none - ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Continue operation task Conflict ... Test title: POST Continue operation task Conflict ... Test objective: The objective is to test that POST method fail in case of operation status conflict (i.e. NS instance status not equal to FAILED_TEMP ) ... Pre-conditions: NS instance status not equal to FAILED_TEMP - ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Continue operation task - Method not implemented ... Test title: GET Continue operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.13.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.13.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Continue operation task - Method not implemented ... Test title: PUT Continue operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.13.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.13.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Continue operation task - Method not implemented ... Test title: PATCH Continue operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.14.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Continue operation task - Method not implemented ... Test title: DELETE Continue operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.14.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot index 9092991e1..1218822f8 100644 --- a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot @@ -14,7 +14,7 @@ NS Instance Creation ... Test title: NS Instance Creation ... Test objective: The objective is to test the workflow for Creating a NS instance ... Pre-conditions: none - ... Reference: Clause 6.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS lifecycle management operation occurrence is in NOT_ISTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot index 480600cca..92616f735 100644 --- a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot @@ -12,7 +12,7 @@ NS Instance Deletion ... Test title: NS Instance Deletion ... Test objective: The objective is to test the workflow for Deleting a NS instance ... Pre-conditions: the resource is in NOT_INSTANTIATED state - ... Reference: Clause 6.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS Instance resource is deleted diff --git a/SOL005/NSLifecycleManagement-API/FailOperationTask.robot b/SOL005/NSLifecycleManagement-API/FailOperationTask.robot index 5ad6c92e5..e4c017684 100644 --- a/SOL005/NSLifecycleManagement-API/FailOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/FailOperationTask.robot @@ -13,7 +13,7 @@ POST Fail operation task ... Test title: POST Fail operation task ... Test objective: The objective is to test that POST method trigger a state change to "finally failed" on the NS LCM operation ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Fail operation task Not Found ... Test title: POST Fail operation task Not Found ... Test objective: The objective is to test that POST method fail if the NS LCM resource is not found ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Fail operation task Conflict ... Test title: POST Fail operation task Conflict ... Test objective: The objective is to test that POST method fail in case of status conflict on the NS LCM operation (i.e NS instance status not equal to FAILED_TEMP) ... Pre-conditions: NS instance status not equal to FAILED_TEMP - ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Fail operation task - Method not implemented ... Test title: GET Fail operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.14.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Fail operation task - Method not implemented ... Test title: PUT Fail operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.14.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Fail operation task - Method not implemented ... Test title: PATCH Fail operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.14.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Fail operation task - Method not implemented ... Test title: DELETE Fail operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.14.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/HealNSTask.robot b/SOL005/NSLifecycleManagement-API/HealNSTask.robot index dc237b439..7d95b0e16 100644 --- a/SOL005/NSLifecycleManagement-API/HealNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/HealNSTask.robot @@ -13,7 +13,7 @@ POST Heal a NSInstance ... Test title: POST Heal a NSInstance ... Test objective: The objective is to test that POST method trigger a Heal NS instance ... Pre-conditions: NS Instance is in INSTANTIATED state. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance is still in INSTANTIATED state. @@ -26,7 +26,7 @@ POST Heal a NSInstance - Conflict (Not Instantited) ... Test title: POST Heal a NSInstance - Conflict (Not Instantited) ... Test objective: The objective is to test that POST method fail if NS instance is in NOT_INSTANTIATE state ... Pre-conditions: NS Instance is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS Instance is still in NOT_INSTANTIATED state @@ -39,7 +39,7 @@ GET Heal NSInstance- Method not implemented ... Test title: GET Heal NSInstance- Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Heal NSInstance - Method not implemented ... Test title: PUT Heal NSInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Heal NSInstance - Method not implemented ... Test title: PATCH Heal NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Heal NSInstance - Method not implemented ... Test title: DELETE Heal NSInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/HealNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/HealNSTaskWorkflow.robot index 0663a9f2b..7ee91bf85 100644 --- a/SOL005/NSLifecycleManagement-API/HealNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/HealNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Heal Flow of NS lifecycle management operations ... Test title: Heal Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Healing a NS instance ... Pre-conditions: the resource is in INSTANTIATED state - ... Reference: Clause 6.4.7 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.7 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS Instance still in INSTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot index bcc46e91b..cd4345a1a 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot @@ -13,7 +13,7 @@ POST Individual NSInstance - Method not implemented ... Test title: POST Individual NSInstance - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Check Postcondition NS Instance is not created @@ -26,7 +26,7 @@ GET Information about an individual NS Instance ... Test title: GET Information about an individual NS Instance ... Test objective: The objective is to test that GET method returns an individual NS instance ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ PUT Individual NSInstance - Method not implemented ... Test title: PUT Individual NSInstance - Method not implemented ... Test objective: TThe objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Check Postcondition NS Instance is not modified @@ -52,7 +52,7 @@ PATCH Individual NSInstance - Method not implemented ... Test title: PATCH Individual NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Check Postcondition NS Instance is not modified @@ -65,7 +65,7 @@ DELETE Individual NSInstance ... Test title: DELETE Individual NSInstance ... Test objective: The objective is to test that DELETE method delete a not INSTANTIATED NS instance ... Pre-conditions: NS instance is not INSTANTIATED . - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Check Postcondition NS Instance is deleted @@ -78,7 +78,7 @@ DELETE Individual NSInstance Conflict ... Test title: DELETE Individual NSInstance Conflict ... Test objective: The objective is to test that DELETE method cannot delete an INSTANTIATED NS instance ... Pre-conditions: one instance of a NS in INSTANTIATED state - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Check Postcondition NS Instance is not deleted diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot index 17046cc9a..fd9eeea93 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot @@ -12,7 +12,7 @@ Post Individual NS LCM occurrences - Method not implemented ... Test title: Post Individual NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not created in the NFVO @@ -24,7 +24,7 @@ Get status information about Individual NS LCM occurrences ... Test title: Get status information about Individual NS LCM occurrences ... Test objective: The objective is to test that GET method returns the LCM occurrence of the NS ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT status information about Individual NS LCM occurrences - Method not implemen ... Test title: PUT status information about Individual NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not modified from the NFVO @@ -49,7 +49,7 @@ PATCH status information about Individual NS LCM occurrences - Method not implem ... Test title: PATCH status information about Individual NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not modified from the NFVO @@ -61,7 +61,7 @@ DELETE status information about Individual NS LCM occurrences - Method not imple ... Test title: DELETE status information about Individual NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not deleted from the NFVO diff --git a/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot b/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot index 9d5a165b3..64105600e 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot @@ -14,7 +14,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.17.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS lifecycle management subscription is not created on the NFVO @@ -26,7 +26,7 @@ GET Information about an individual subscription ... Test title: GET Information about an individual subscription ... Test objective: The objective is to test the retrieval of NS lifecycle management subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.17.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: TThe objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.17.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS lifecycle management subscription is not modified by the operation @@ -51,7 +51,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.17.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS lifecycle management subscription is not modified by the operation @@ -63,7 +63,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: At least one lifecycle management subscription is available in the NFVO - ... Reference: Clause 6.4.17.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.17.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS lifecycle management subscription is not available anymore on NFVO diff --git a/SOL005/NSLifecycleManagement-API/InstanciateNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/InstanciateNSTaskWorkflow.robot index f3357abb4..a6a087ca6 100644 --- a/SOL005/NSLifecycleManagement-API/InstanciateNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/InstanciateNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Instantiate Flow of NS lifecycle management operations ... Test title: Instantiate Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Instantiate a NS instance ... Pre-conditions: the resource is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in INSTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot b/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot index ae0178684..7b55d6235 100644 --- a/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot @@ -13,7 +13,7 @@ POST Instantiate a nsInstance ... Test title: POST Instantiate a nsInstance ... Test objective: The objective is to test that POST method instantiate a new NS instance ... Pre-conditions: An NS instance created and it is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is instantiated on the NFVO @@ -27,7 +27,7 @@ POST Instantiate a nsInstance Conflict ... Test title: POST Instantiate a nsInstance Conflict ... Test objective: The objective is to test that the operation cannot be performed due to a conflict with the state of resource (i.e. the resource is in INSTANTIATED state) ... Pre-conditions: resource is in INSTANTIATED state - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not instantiated on the NFVO @@ -41,7 +41,7 @@ GET Instantiate NSInstance - Method not implemented ... Test title: GET Instantiate NSInstance - Method not implemented ... Test objective: The objective is to test that the operation cannot be performed due because method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none. @@ -53,7 +53,7 @@ PUT Instantiate NSInstance - Method not implemented ... Test title: PUT Instantiate NSInstance - Method not implemented ... Test objective: The objective is to test that the operation cannot be performed due because method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none. @@ -65,7 +65,7 @@ PATCH Instantiate NSInstance - Method not implemented ... Test title: PATCH Instantiate NSInstance - Method not implemented ... Test objective: The objective is to test that the operation cannot be performed due because method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none. @@ -77,7 +77,7 @@ DELETE Instantiate NSInstance - Method not implemented ... Test title: DELETE Instantiate NSInstance - Method not implemented ... Test objective: The objective is to test that the operation cannot be performed due because method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none. diff --git a/SOL005/NSLifecycleManagement-API/NSInstances.robot b/SOL005/NSLifecycleManagement-API/NSInstances.robot index 3d579f4cc..106da04e8 100644 --- a/SOL005/NSLifecycleManagement-API/NSInstances.robot +++ b/SOL005/NSLifecycleManagement-API/NSInstances.robot @@ -12,7 +12,7 @@ POST Create a new NsInstance ... Test title: POST Create a new NsInstance ... Test objective: The objective is to test the creation of a new Ns Instances and perform a JSON schema validation of the collected instance data structure ... Pre-conditions: None. - ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none. ... Post-Conditions: A Ns instance is instantiated. @@ -26,7 +26,7 @@ GET information about multiple NS instances ... Test title: GET information about multiple NS instances ... Test objective: The objective is to test the retrieval of all the available NS Instances and perform a JSON schema and content validation of the collected instance data structure ... Pre-conditions: An existing Ns instance. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none. ... Post-Conditions: none. @@ -38,8 +38,8 @@ GET information about multiple NS instances Bad Request Invalid attribute-based [Documentation] Test ID: 5.3.2.1.3 ... Test title: GET information about multiple NS instances Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test the retrieval of all the available NS Instances using attribute-based filter and perform a JSON schema and content validation of the collected instance data structure - ... Pre-conditions: A Ns instance is instantiated, a bad filter parameter (filter parameters are listed in Table 6.4.2.3.2-1 - ETSI GS NFV-SOL 005 [3] v2.6.1). - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Pre-conditions: A Ns instance is instantiated, a bad filter parameter (filter parameters are listed in Table 6.4.2.3.2-1 - ETSI GS NFV-SOL 005 [3] v2.7.1). + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none. ... Post-Conditions: none. @@ -51,8 +51,8 @@ GET information about multiple NS instances Bad Request Invalid attribute select [Documentation] Test ID: 5.3.2.1.4 ... Test title: GET information about multiple NS instances Bad Request Invalid attribute selector ... Test objective: The objective is to test the retrieval of all the available NS Instances using attribute-based filter and perform a JSON schema and content validation of the collected instance data structure - ... Pre-conditions: A Ns instance is instantiated, a bad attribute selector (attribute selectors are listed in Table 6.4.2.3.2-1 - ETSI GS NFV-SOL 005 [3] v2.6.1). - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Pre-conditions: A Ns instance is instantiated, a bad attribute selector (attribute selectors are listed in Table 6.4.2.3.2-1 - ETSI GS NFV-SOL 005 [3] v2.7.1). + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none. ... Post-Conditions: none. @@ -64,7 +64,7 @@ GET NSInstances with "all_fields" attribute selector ... Test title: GET NSInstances with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -77,7 +77,7 @@ GET NSInstances with "exclude_default" attribute selector ... Test title: GET NSInstances with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -90,7 +90,7 @@ GET NSInstances with "fields" attribute selector ... Test title: GET NSInstances with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -103,7 +103,7 @@ GET NSInstances with "exclude_fields" attribute selector ... Test title: GET NSInstances with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -116,7 +116,7 @@ PUT NSInstances - Method not implemented ... Test title: PUT Individual NS instance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not modified by the operation @@ -128,7 +128,7 @@ PATCH NSInstances - Method not implemented ... Test title: PATCH NSInstances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not modified by the operation @@ -140,7 +140,7 @@ DELETE NSInstances - Method not implemented ... Test title: DELETE NSInstances - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not deleted by the operation @@ -152,7 +152,7 @@ GET information about multiple NS instances as Paged Response ... Test title: GET information about multiple NS instances as Paged Response ... Test objective: The objective is to test the retrieval of all the available NS Instances as a Paged Response. ... Pre-conditions: An existing Ns instance. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none. ... Post-Conditions: none. @@ -164,8 +164,8 @@ GET information about multiple NS instances - Bad Request Response too Big [Documentation] Test ID: 5.3.2.1.13 ... Test title: GET information about multiple NS instances - Bad Request Response too Big ... Test objective: The objective is to test the retrieval of all the available NS Instances fails because reponse is too big, and perform a JSON schema and content validation of the collected instance data structure - ... Pre-conditions: A Ns instance is instantiated, a bad attribute selector (attribute selectors are listed in Table 6.4.2.3.2-1 - ETSI GS NFV-SOL 005 [3] v2.6.1). - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Pre-conditions: A Ns instance is instantiated, a bad attribute selector (attribute selectors are listed in Table 6.4.2.3.2-1 - ETSI GS NFV-SOL 005 [3] v2.7.1). + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none. ... Post-Conditions: none. diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot index 7256db753..3a6aa7eae 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot @@ -12,7 +12,7 @@ POST NS LCM occurrences - Method not implemented ... Test title: POST NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET status information about multiple NS LCM occurrences ... Test title: GET status information about multiple NS LCM occurrences ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ GET status information about multiple NS LCM occurrences Bad Request Invalid att ... Test title: GET status information about multiple NS LCM occurrences Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test that GET method fail because of wrong query parameter ... Pre-conditions: At least one LCM occurrences available in the NFVO, Invalid filter parameter - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ GET status information about multiple NS LCM occurrences Bad Request Invalid att ... Test title: GET status information about multiple NS LCM occurrences Bad Request Invalid attribute selector ... Test objective: The objective is to test that GET method fail because of wrong attributes selector ... Pre-conditions: At least one LCM occurrences available in the NFVO, Invalid attribute selector - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ GET status information about multiple NS LCM occurrences with "all_fields" ... Test title: GET status information about multiple NS LCM occurrences with "all_fields" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ GET status information about multiple NS LCM occurrences with "exclude_default" ... Test title: GET status information about multiple NS LCM occurrences with "exclude_default" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ GET status information about multiple NS LCM occurrences with "fields" ... Test title: GET status information about multiple NS LCM occurrences with "fields" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ GET status information about multiple NS LCM occurrences with "exclude_fields" ... Test title: GET status information about multiple NS LCM occurrences with "exclude_fields" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ PUT status information about multiple NS LCM occurrences - Method not implemente ... Test title: PUT status information about multiple NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ PATCH status information about multiple NS LCM occurrences - Method not implemen ... Test title: PATCH status information about multiple NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -139,7 +139,7 @@ DELETE status information about multiple NS LCM occurrences - Method not impleme ... Test title: DELETE status information about multiple NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ GET status information about multiple NS LCM occurrences as Paged Response ... Test title: GET status information about multiple NS LCM occurrences as Paged Reponse ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS as paged response. ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ GET status information about multiple NS LCM occurrences - Bad Request Response ... Test title: GET status information about multiple NS LCM occurrences - Bad Request Response too Big ... Test objective: The objective is to test that GET method fail because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one LCM occurrences available in the NFVO, Invalid filter parameter - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot b/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot index 628bbdf57..9290ef85e 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ NS LCM Operation Occurrence Start Notification ... Test title: NS LCM Operation Occurrence Start Notification ... Test objective: The objective is to test the dispatch of NS LCM Operation Occurrence Start Notification when a new NS LCM operation is started in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for NS LCM Operation Occurrence notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ NS LCM Operation Occurrence Result Notification ... Test title: NS LCM Operation Occurrence Result Notification ... Test objective: The objective is to test the dispatch of NS LCM Operation Occurrence Result Notification when a NS LCM operation is completed in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: An NS LCM operation is in progress, and a subscription for NS LCM Operation Occurrence notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ NS Identifier Creation Notification ... Test title: NS Identifier Creation Notification ... Test objective: The objective is to test the dispatch of NS Identifier Creation Notification when a new NS instance resource is created in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for NS identifier creation notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ NS Identifier Deletion Notification ... Test title: NS Identifier Deletion Notification ... Test objective: The objective is to test the dispatch of NS Identifier Deletion Notification when a NS instance resource is deleted in the NFVO, and perform a JSON schema and content validation of the delivered notification.The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance resource is created, and a subscription for NS identifier creation notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot b/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot index c25513fbc..df82b33f3 100644 --- a/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot @@ -13,7 +13,7 @@ Post Retry operation task ... Test title: Post Retry operation task ... Test objective: The objective is to test that POST method trigger a retry of NS lifecycle operation in case of temporary failure ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status not equal to FAILED_TEMP @@ -27,7 +27,7 @@ Post Retry operation task Not Found ... Test title: Post Retry operation task Not Found ... Test objective: The objective is to test that POST method fail in case of NS lifecycle operation not found ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ Post Retry operation task Conflict ... Test title: Post Retry operation task Conflict ... Test objective: The objective is to test that POST method fail in case of NS lifecycle operation status conflict (i.e. NS instance status not equal to FAILED_TEMP) ... Pre-conditions: NS instance status not equal to FAILED_TEMP - ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Retry operation task - Method not implemented ... Test title: GET Retry operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.11.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Retry operation task - Method not implemented ... Test title: PUT Retry operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.11.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Retry operation task - Method not implemented ... Test title: PATCH Retry operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.11.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Retry operation task - Method not implemented ... Test title: DELETE Retry operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.11.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot b/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot index 3b09699e0..9fbbcfeb2 100644 --- a/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot @@ -13,7 +13,7 @@ POST Rollback operation task ... Test title: POST Rollback operation task ... Test objective: The objective is to test that POST method triggers a rollback on the NS LCM operation ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status not equal to FAILED_TEMP @@ -26,7 +26,7 @@ POST Rollback operation task Not Found ... Test title: POST Rollback operation task Not Found ... Test objective: The objective is to test that POST method fails if NS LCM operation is not found ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Rollback operation task Conflict ... Test title: POST Rollback operation task Conflict ... Test objective: The objective is to test that POST method fail in case of NS LCM operation status conflict (i.e. NS instance status not equal to FAILED_TEMP) ... Pre-conditions: NS instance status not equal to FAILED_TEMP - ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Rollback operation task - Method not implemented ... Test title: GET Rollback operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.12.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Rollback operation task - Method not implemented ... Test title: PUT Rollback operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.12.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Rollback operation task - Method not implemented ... Test title: PATCH Rollback operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.12.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Rollback operation task - Method not implemented ... Test title: DELETE Rollback operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.12.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot b/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot index 8343fa87b..03d2459e4 100644 --- a/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot @@ -13,7 +13,7 @@ POST Scale a nsInstance ... Test title: POST Scale a nsInstance ... Test objective: The objective is to test that POST method scales NS instance ... Pre-conditions: NS instance is INSTANTIATED state - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance is INSTANTIATED state and NS has been scaled @@ -27,7 +27,7 @@ POST Scale a nsInstance - Conflict (Not Instantited) ... Test title: POST Scale a nsInstance - Conflict (Not Instantited) ... Test objective: The objective is to test that POST method cannot scale NS instance because of conflict in resource status (i.e. because the resource is in NOT_INSTANTIATED state) ... Pre-conditions: NS instance is in NOT_INSTANTIATED state. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Scale NS operation is not triggered on the NFVO @@ -40,7 +40,7 @@ GET Scale NSInstance- Method not implemented ... Test title: GET Scale NSInstance- Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Scale NSInstance - Method not implemented ... Test title: PUT Scale NSInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Scale NSInstance - Method not implemented ... Test title: PATCH Scale NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Scale NSInstance - Method not implemented ... Test title: DELETE Scale NSInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/ScaleNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/ScaleNSTaskWorkflow.robot index bdcf5e86a..dd49111b0 100644 --- a/SOL005/NSLifecycleManagement-API/ScaleNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/ScaleNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Scale Flow of NS lifecycle management operations ... Test title: Instantiate Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Instantiate a NS instance ... Pre-conditions: the resource is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in INSTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/Subscriptions.robot b/SOL005/NSLifecycleManagement-API/Subscriptions.robot index 5b4916c93..ff62a7c04 100644 --- a/SOL005/NSLifecycleManagement-API/Subscriptions.robot +++ b/SOL005/NSLifecycleManagement-API/Subscriptions.robot @@ -12,7 +12,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The objective is to test that POST method create a subscription ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: subscription is created in the NFVO @@ -27,7 +27,7 @@ POST Create a new Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The objective is to test that POST method create a duplicate subscription ... Pre-conditions: a subscription shall already exist - ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: duplication supported by NFVO ... Post-Conditions: duplicate subscription is created in the NFVO @@ -41,7 +41,7 @@ POST Create a new Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The objective is to test that POST method cannot create a duplicate subscription ... Pre-conditions: a subscription shall already exist - ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: duplication NOT supported by NFVO ... Post-Conditions: duplicate subscription is not created in the NFVO @@ -54,7 +54,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET Subscription - Filter ... Test title: GET Subscription - Filter ... Test objective: The objective is Get the list of active subscriptions using a filter ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is Get the list of active subscriptions using an invalid filter ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET subscriptions with "all_fields" attribute selector ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -106,7 +106,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -119,7 +119,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -132,7 +132,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -145,7 +145,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a NS lifecycle management subscription ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -157,7 +157,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a NS lifecycle management subscription ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -169,7 +169,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method cannot modify a NS lifecycle management subscription ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Subscription is not deleted @@ -181,7 +181,7 @@ GET Subscriptions as Paged Response ... Test title: GET Subscriptions as Paged Response ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions as paged response. ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -194,7 +194,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of active subscriptions list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot index f04165ec2..942c47487 100644 --- a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot @@ -12,7 +12,7 @@ POST Terminate a NSInstance ... Test title: POST Terminate a NSInstance ... Test objective: The objective is to test that POST method terminate the NS ... Pre-conditions: NS instance in INSTANTIATED state - ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance has NOT_INSTANTIATED state @@ -26,7 +26,7 @@ POST Terminate a NSInstance - Conflict (Not Instantited) ... Test title: POST Terminate a NSInstance - Conflict (Not Instantited) ... Test objective: The objective is to test that POST method cannot terminate the NS because of conflict in resource status (i.e. the resource is not in INSTANTIATED state) ... Pre-conditions: NS instance is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance is in NOT_INSTANTIATED state @@ -40,7 +40,7 @@ GET Terminate NSInstance- Method not implemented ... Test title: GET Terminate NSInstance- Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Terminate NSInstance - Method not implemented ... Test title: PUT Terminate NSInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: resource state not modified @@ -64,7 +64,7 @@ PATCH Terminate NSInstance - Method not implemented ... Test title: PATCH Terminate NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: resource state not modified @@ -76,7 +76,7 @@ DELETE Terminate NSInstance - Method not implemented ... Test title: DELETE Terminate NSInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: resource state not modified diff --git a/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot index fe25b1042..802a35ac0 100644 --- a/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Terminate Flow of NS lifecycle management operations ... Test title: Terminate Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Terminate a NS instance ... Pre-conditions: the resource is in INSTANTIATED state - ... Reference: Clause 6.4.8 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.8 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in NOT_INSTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot b/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot index bd9ebc651..171fac57a 100644 --- a/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot @@ -13,7 +13,7 @@ POST Update a NSInstance ... Test title: POST Update a NSInstance ... Test objective: The objective is to test that POST method update a NS instance ... Pre-conditions: An NS instance is in INSTANTIATED state - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is still INSTANTIATED and updated on the NFVO @@ -26,7 +26,7 @@ POST Update a NSInstance - Conflict (Not Instantited) ... Test title: POST Update a NSInstance - Conflict (Not Instantited) ... Test objective: The objective is to test that POST method fail if a NS Instance is not existing or is in NOT_INSTANTIATED state ... Pre-conditions: An NS instance is in INSTANTIATED state - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not updated on the NFVO @@ -39,7 +39,7 @@ GET Update NSInstance- Method not implemented ... Test title: GET Update NSInstance- Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Update NSInstance - Method not implemented ... Test title: PUT Update NSInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not updated on the NFVO @@ -63,7 +63,7 @@ PATCH Update NSInstance - Method not implemented ... Test title: PATCH Update NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not updated on the NFVO @@ -75,7 +75,7 @@ DELETE Update NSInstance - Method not implemented ... Test title: DELETE Update NSInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not deleted on the NFVO diff --git a/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot index 053c7b382..f64a83120 100644 --- a/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Update Flow of NS lifecycle management operations ... Test title: Update Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Update a NS instance ... Pre-conditions: the resource is in INSTANTIATED state - ... Reference: Clause 6.4.6 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.6 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in INSTANTIATED state -- GitLab From a27bc07dc347a534f27e8f2c77c20d7114a234d2 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 14 Oct 2020 11:53:23 +0500 Subject: [PATCH 088/580] reference updated --- .../ApiVersion.robot | 20 ++++++------- .../IndividualPmJob.robot | 14 +++++----- .../IndividualReport.robot | 12 ++++---- .../IndividualSubscription.robot | 14 +++++----- .../IndividualThreshold.robot | 14 +++++----- .../Notifications.robot | 4 +-- .../NSPerformanceManagement-API/PMJobs.robot | 28 +++++++++---------- .../Subscriptions.robot | 24 ++++++++-------- .../Thresholds.robot | 20 ++++++------- 9 files changed, 75 insertions(+), 75 deletions(-) diff --git a/SOL005/NSPerformanceManagement-API/ApiVersion.robot b/SOL005/NSPerformanceManagement-API/ApiVersion.robot index 17bbc85f4..c3232f1b2 100644 --- a/SOL005/NSPerformanceManagement-API/ApiVersion.robot +++ b/SOL005/NSPerformanceManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot index 818dc1368..7ab7999b9 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot @@ -12,7 +12,7 @@ GET individual NS Performance Job ... Test title: Get individual NS Performance Job ... Test objective: The objective is to test the retrieval of an individual NS Performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET individual NS Performance Job with invalid resource identifier ... Test title: Get individual NS Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual NS Performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ DELETE Individual NS Performance Job with invalid resource identifier ... Test title: Delete individual NS Performance Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual NS Performance monitoring job fails when using an invalid resource identifier ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ POST Individual NS Performance Job - Method not implemented ... Test title: POST Individual NS Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NS Performance Monitoring Job ... Pre-conditions: A NS instance is instantiated - ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Individual NS Performance Job - Method not implemented ... Test title: PUT Individual NS Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NS Performance Monitoring Job ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH Individual NS Performance Job - Method not implemented ... Test title: PATCH Individual NS Performance Job - method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new NS Performance Monitoring Job ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE Individual NS Performance Job ... Test title: Delete Individual NS Performance Job ... Test objective: The objective is to test the deletion of an individual NS Performance monitoring job ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS Performance Job is no more available in the NFVO diff --git a/SOL005/NSPerformanceManagement-API/IndividualReport.robot b/SOL005/NSPerformanceManagement-API/IndividualReport.robot index 53926a226..b79aee7dc 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualReport.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualReport.robot @@ -12,7 +12,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual NS performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual NS performance report associated to a monitoring job fails when using an invalid resource endpoint ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ POST Individual Performance Report - Method not implemented ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NS performance report within a monitoring job ... Pre-conditions: A NS instance is instantiated. - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance report is not created on the NFVO @@ -50,7 +50,7 @@ PUT Individual Performance Report - Method not implemented ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NS performance report within a monitoring job ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. - ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance report is not modified by the operation @@ -63,7 +63,7 @@ PATCH Individual Performance Report - Method not implemented ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NS performance report within a monitoring job ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. - ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance report is not modified by the operation @@ -76,7 +76,7 @@ DELETE Individual Performance Report - Method not implemented ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing NS performance report within a monitoring job ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. - ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance report is not deleted by the operation diff --git a/SOL005/NSPerformanceManagement-API/IndividualSubscription.robot b/SOL005/NSPerformanceManagement-API/IndividualSubscription.robot index 1ceeaea22..02370945f 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualSubscription.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualSubscription.robot @@ -16,7 +16,7 @@ GET Individual NS Performance Subscription ... Test title: GET Individual NS Performance Subscription ... Test objective: The objective is to test the retrieval of individual NS Performance subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET Individual NS Performance Subscription with invalid resource identifier ... Test title: GET Individual NS Performance Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual NS Performance subscription fails when using an invalid resource identifier ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ DELETE Individual NS Performance Subscription with invalid resource identifier ... Test title: DELETE Individual NS Performance Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual NS Performance subscription fails when using an invalid resource identifier ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ POST Individual NS Performance Subscription - Method not implemented ... Test title: POST Individual NS Performance Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NS Performance Subscription ... Pre-conditions: none - ... Reference: Clause 7.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS Performance Subscription is not created on the NFVO @@ -67,7 +67,7 @@ PUT Individual NS Performance Subscription - Method not implemented ... Test title: PUT Individual NS Performance Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NS Performance subscription ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS Performance subscription is not modified by the operation @@ -80,7 +80,7 @@ PATCH Individual NS Performance Subscription - Method not implemented ... Test title: PATCH Individual NS Performance Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NS Performance subscription ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS Performance subscription is not modified by the operation @@ -93,7 +93,7 @@ DELETE Individual NS Performance Subscription ... Test title: DELETE Individual NS Performance Subscription ... Test objective: The objective is to test the deletion of an individual NS Performance subscription ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS Performance Subscription is not available anymore in the NFVO diff --git a/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot b/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot index 6b3a5c245..2be5fdb3e 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot @@ -14,7 +14,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual NS performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual NS performance threshold fails when using an invalid resource identifier ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual NS performance threshold ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ POST Individual Threshold - Method not implemented ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NS performance Threshold ... Pre-conditions: A NS instance is instantiated - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is not created on the NFVO @@ -65,7 +65,7 @@ PUT Individual Threshold - Method not implemented ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NS performance threshold ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is not modified by the operation @@ -78,7 +78,7 @@ PATCH Individual Threshold - Method not implemented ... Test title: PATCH Individual Threshold - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NS performance threshold ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is not modified by the operation @@ -91,7 +91,7 @@ DELETE Individual Threshold ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual NS performance threshold ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is not available anymore in the NFVO diff --git a/SOL005/NSPerformanceManagement-API/Notifications.robot b/SOL005/NSPerformanceManagement-API/Notifications.robot index fcc032436..4fb4b5de0 100644 --- a/SOL005/NSPerformanceManagement-API/Notifications.robot +++ b/SOL005/NSPerformanceManagement-API/Notifications.robot @@ -17,7 +17,7 @@ NS Performance Information Availability Notification ... Test title: NS Performance Information Availability Notification ... Test objective: The objective is to test the dispatch of NS Performance Information Availability Notification when new NS performance information is available in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS performance job is created, and a subscription for information availability notifications is available in the NFVO. - ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ NS Threshold Crossed Notification ... Test title: NS Threshold Crossed Notification ... Test objective: The objective is to test the dispatch of NS Threshold Crossed Notification when a previously set NS performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS performance job is created, and a threshold subscription is available in the NFVO. - ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSPerformanceManagement-API/PMJobs.robot b/SOL005/NSPerformanceManagement-API/PMJobs.robot index 2fcdc9a57..3665194be 100644 --- a/SOL005/NSPerformanceManagement-API/PMJobs.robot +++ b/SOL005/NSPerformanceManagement-API/PMJobs.robot @@ -14,7 +14,7 @@ GET all NS Performance Monitoring Jobs ... Test title: GET all NS Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available NS performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET NS Performance Monitoring Jobs with attribute-based filter ... Test title: GET all NS Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of NS performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ GET all NS Performance Monitoring Jobs with "all_fields" attribute selector ... Test title: GET all NS Performance Monitoring Jobs with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "all_fields" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET all NS Performance Monitoring Jobs with "exclude_default" attribute selector ... Test title: GET all NS Performance Monitoring Jobs with "exclude_default" attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "exclude_default" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ GET all NS Performance Monitoring Jobs with "include" attribute selector ... Test title: GET all NS Performance Monitoring Jobs with "include" attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "include" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "include" selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "include" attribute selector ... Post-Conditions: none @@ -84,7 +84,7 @@ GET all NS Performance Monitoring Jobs with "exclude" attribute selector ... Test title: GET all NS Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "exclude" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "exclude" selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "exclude" attribute selector ... Post-Conditions: none @@ -98,7 +98,7 @@ GET NS Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET NS Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NS performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ GET NS Performance Monitoring Jobs with invalid resource endpoint ... Test title: GET NS Performance Monitoring Jobs with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of NS performance monitoring jobs fails when using invalid resource endpoint ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ Create new NS Performance Monitoring Job ... Test title: Create a new NS Performance Monitoring Job ... Test objective: The objective is to test the creation of a new NS performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS Performance Job is successfully created on the NFVO @@ -137,7 +137,7 @@ PUT all NS Performance Monitoring Jobs - Method not implemented ... Test title: PUT all NS Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NS Performance Monitoring Jobs ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -149,7 +149,7 @@ PATCH all NS Performance Monitoring Jobs - Method not implemented ... Test title: PATCH all NS Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NS Performance Monitoring Jobs ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -161,7 +161,7 @@ DELETE all NS Performance Monitoring Jobs - Method not implemented ... Test title: DELETE all NS Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete NS Performance Monitoring Jobs ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS Performance Monitoring Jobs are not deleted by the failed operation @@ -174,7 +174,7 @@ GET all NS Performance Monitoring Jobs as Paged Response ... Test title: GET all NS Performance Monitoring Jobs as Paged Response ... Test objective: The objective is to test the retrieval of all the available NS performance monitoring jobs as paged response. ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -187,7 +187,7 @@ GET NS Performance Monitoring Jobs - Bad Request Response too Big ... Test title: GET NS Performance Monitoring Jobs - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NS performance monitoring jobs fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSPerformanceManagement-API/Subscriptions.robot b/SOL005/NSPerformanceManagement-API/Subscriptions.robot index 7bfa09b4f..3f97d8afe 100644 --- a/SOL005/NSPerformanceManagement-API/Subscriptions.robot +++ b/SOL005/NSPerformanceManagement-API/Subscriptions.robot @@ -17,7 +17,7 @@ Get All NS Performance Subscriptions ... Test title: Get All NS Performance Subscriptions ... Test objective: The objective is to test the retrieval of all NS Performance subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -31,7 +31,7 @@ Get NS Performance Subscriptions with attribute-based filter ... Test title: Get NS Performance Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of NS Performance subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ Get NS Performance Subscriptions with invalid attribute-based filter ... Test title: Get NS Performance Subscriptions with attribute-based filters ... Test objective: The objective is to test that the retrieval of NS Performance subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ GET NS Performance Subscription with invalid resource endpoint ... Test title: GET NS Performance Subscription with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all NS Performance subscriptions fails when using invalid resource endpoint. ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ Create new NS Performance subscription ... Test title: Create new NS Performance subscription ... Test objective: The objective is to test the creation of a new NS Performance subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS Performance subscription is successfully set and it matches the issued subscription @@ -90,7 +90,7 @@ Create duplicated NS Performance subscription with NFVO not creating duplicated ... Test title: Create duplicated NS Performance subscription with NFVO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated NS Performance subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing NS Performance subscription returned is available in the NFVO @@ -106,7 +106,7 @@ Create duplicated NS Performance subscription with NFVO creating duplicated subs ... Test title: Create duplicated NS Performance subscription with NFVO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated NS Performance subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated NS Performance subscription is successfully set and it matches the issued subscription @@ -122,7 +122,7 @@ PUT NSD Performance Subscriptions - Method not implemented ... Test title: PUT NS Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NS Performance subscriptions ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -135,7 +135,7 @@ PATCH NSD Performance Subscriptions - Method not implemented ... Test title: PATCH NS Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NS Performance subscriptions ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ DELETE NSD Performance Subscriptions - Method not implemented ... Test title: DELETE NS Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete NS Performance subscriptions ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS Performance subscriptions are not deleted by the failed operation @@ -160,7 +160,7 @@ Get All NS Performance Subscriptions as Paged Response ... Test title: Get All NS Performance Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all NS Performance subscriptions as paged response. ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -173,7 +173,7 @@ Get NS Performance Subscriptions - Bad Request Response too Big ... Test title: Get NS Performance Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NS Performance subscriptions fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSPerformanceManagement-API/Thresholds.robot b/SOL005/NSPerformanceManagement-API/Thresholds.robot index 8affd84fe..a57d72fb5 100644 --- a/SOL005/NSPerformanceManagement-API/Thresholds.robot +++ b/SOL005/NSPerformanceManagement-API/Thresholds.robot @@ -14,7 +14,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available NS performance thresholds and perform a JSON schema validation of the collected thresholds data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available NS performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET Performance Thresholds with invalid attribute-based filter ... Test title: GET Performance Thresholds with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NS performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Performance Thresholds with invalid resource endpoint ... Test title: GET Performance Thresholds with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of NS performance thresholds fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ Create new Performance Threshold ... Test title: Create new Performance Threshold ... Test objective: The objective is to test the creation of a new NS performance threshold and perform the JSON schema validation of the returned threshold data structure ... Pre-conditions: A NS instance is instantiated. - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is successfully created on the NFVO @@ -81,7 +81,7 @@ PUT Performance Thresholds - Method not implemented ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NS performance Thresholds ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ PATCH Performance Thresholds - Method not implemented ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify NS performance Thresholds ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ DELETE Performance Thresholds - Method not implemented ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NS performance Thresholds ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance thresholds are not deleted by the failed operation @@ -118,7 +118,7 @@ GET All Performance Thresholds as Paged Response ... Test title: GET All Performance Thresholds as Paged Response ... Test objective: The objective is to test the retrieval of all the available NS performance thresholds as paged response. ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -131,7 +131,7 @@ GET Performance Thresholds - Bad Request Response too Big ... Test title: GET Performance Thresholds - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NS performance thresholds fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 1ad31b69f5d548f45f882f3f7bdafa3df864e0fd Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 14 Oct 2020 11:56:28 +0500 Subject: [PATCH 089/580] reference updated --- SOL005/NSFaultManagement-API/Alarms.robot | 42 +++++++++---------- SOL005/NSFaultManagement-API/ApiVersion.robot | 20 ++++----- .../IndividualAlarm.robot | 16 +++---- .../IndividualSubscription.robot | 10 ++--- .../NotificationEndpoint.robot | 6 +-- .../NSFaultManagement-API/Subscriptions.robot | 42 +++++++++---------- 6 files changed, 68 insertions(+), 68 deletions(-) diff --git a/SOL005/NSFaultManagement-API/Alarms.robot b/SOL005/NSFaultManagement-API/Alarms.robot index 6b2f028e0..50f47bcd7 100644 --- a/SOL005/NSFaultManagement-API/Alarms.robot +++ b/SOL005/NSFaultManagement-API/Alarms.robot @@ -12,7 +12,7 @@ POST Alarms - Method not implemented ... Test title:POST Alarms - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create Fault management alarms on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: alarm not created @@ -24,7 +24,7 @@ GET information about multiple alarms ... Test title: GET information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ GET information about multiple alarms with filters ... Test title: GET information about multiple alarms with filters ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ GET information about multiple alarms Bad Request Invalid attribute-based filter ... Test title: GET information about multiple alarms Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to try to retrieve information about the alarm list with invalid filters and perform a JSON schema and content validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ GET information about multiple alarms with "all_fields" attribute selector ... Test title: GET information about multiple alarms with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -76,7 +76,7 @@ GET information about multiple alarms with exclude_default attribute selector ... Test title: GET information about multiple alarms with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -90,7 +90,7 @@ GET information about multiple alarms with fields attribute selector ... Test title: GET information about multiple alarms with fields attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -103,7 +103,7 @@ GET information about multiple alarms with "exclude_fields" attribute selector ... Test title: GET information about multiple alarms with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: none @@ -116,7 +116,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Fault management alarms on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Fault management alarms on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE Alarms - Method not implemented ... Test title: DELETE Alarms - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Fault management alarms on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: alarm not deleted @@ -153,7 +153,7 @@ GET information about multiple alarms as Paged Response ... Test title: GET information about multiple alarms as Paged Response ... Test objective: The objective is to retrieve information about the alarm list as paged response. ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ GET information about multiple alarms - Bad Request Response too Big ... Test title: GET information about multiple alarms - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of information about the alarm list fails because response is too big, and perform a JSON schema and content validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -179,7 +179,7 @@ GET information about multiple alarms with filter "id" ... Test title: GET information about multiple alarms with filter "id" ... Test objective: The objective is to retrieve information about the alarm list with filter "id" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -193,7 +193,7 @@ GET information about multiple alarms with filter "rootCauseFaultyComponent.faul ... Test title: GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyNestedNsInstanceId" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyComponent.faultyNestedNsInstanceId" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -207,7 +207,7 @@ GET information about multiple alarms with filter "rootCauseFaultyComponent.faul ... Test title: GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -221,7 +221,7 @@ GET information about multiple alarms with filter "rootCauseFaultyComponent.faul ... Test title: GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyVnfInstanceId" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyComponent.faultyVnfInstanceId" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -236,7 +236,7 @@ GET information about multiple alarms with filter "rootCauseFaultyResource.fault ... Test title: GET information about multiple alarms with filter "rootCauseFaultyResource.faultyResourceType" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyResource.faultyResourceType" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -250,7 +250,7 @@ GET information about multiple alarms with filter "eventType" ... Test title: GET information about multiple alarms with filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with filter "eventType" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -264,7 +264,7 @@ GET information about multiple alarms with filter "perceivedSeverity" ... Test title: GET information about multiple alarms with filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with filter "perceivedSeverity" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -278,7 +278,7 @@ GET information about multiple alarms with filter "probableCause" ... Test title: GET information about multiple alarms with filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with filter "probableCause" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSFaultManagement-API/ApiVersion.robot b/SOL005/NSFaultManagement-API/ApiVersion.robot index ed17827d7..18dc486a9 100644 --- a/SOL005/NSFaultManagement-API/ApiVersion.robot +++ b/SOL005/NSFaultManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSFaultManagement-API/IndividualAlarm.robot b/SOL005/NSFaultManagement-API/IndividualAlarm.robot index 50583cd9e..b6481159f 100644 --- a/SOL005/NSFaultManagement-API/IndividualAlarm.robot +++ b/SOL005/NSFaultManagement-API/IndividualAlarm.robot @@ -14,7 +14,7 @@ POST Individual Alarm - Method not implemented ... Test title:POST Individual Alarm - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Fault management individual alarm on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: alarm is not created @@ -26,7 +26,7 @@ GET information about Individual Alarm ... Test title: GET information about Individual Alarm ... Test objective: The objective is to retrieve information about individual alarm and perform a JSON schema and content validation of the returned alarm data structure ... Pre-conditions: The related alarm exists - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET information about Invalid Individual Alarm ... Test title: GET information about Invalid Individual Alarm ... Test objective: The objective is to try to read an Invalid individual alarm and get 404 not found response code ... Pre-conditions: The related alarm does not exists - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Individual Alarm - Method not implemented ... Test title:PUT Individual Alarm - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Fault management individual alarm on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Alarm ... Test title: Modify an individual alarm resource ... Test objective: The objective is to Modify an individual alarm resource and perform a JSON schema and content validation of the returned alarm modifications data structure ... Pre-conditions: The related alarm exists - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Alarm - Conflict ... Test title: Modify an individual alarm resource - Conflict ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set ... Pre-conditions: The related alarm exists - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ PATCH Alarm - Precondition failed ... Test title: Modify an individual alarm resource - Precondition failed ... Test objective: The objective is to test that an individual alarm resource cannot be modifed if the resource was modified by another entity ... Pre-conditions: The related alarm exists - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: @@ -104,7 +104,7 @@ DELETE Individual Alarm - Method not implemented ... Test title:DELETE Individual Alarm - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Fault management individual alarm on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: alarm not deleted diff --git a/SOL005/NSFaultManagement-API/IndividualSubscription.robot b/SOL005/NSFaultManagement-API/IndividualSubscription.robot index bada3922c..50ab67ca2 100644 --- a/SOL005/NSFaultManagement-API/IndividualSubscription.robot +++ b/SOL005/NSFaultManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ Post Individual Subscription - Method not implemented ... Test title:Post Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Fault management subscription on NFV ... Pre-conditions:none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: subscription is not created @@ -23,7 +23,7 @@ Get Information about an individual subscription ... Test title: Get Information about an individual subscription ... Test objective: The objective is to read an individual subscription for NFVO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT an individual subscription - Method not implemented ... Test title:PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Fault management subscription on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title:PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Fault management subscription on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE an individual subscription ... Test title:DELETE an individual subscription ... Test objective: The objective is to DELETE an individual subscription ... Pre-conditions: The Subsbcription already exists - ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: subscription is not deleted diff --git a/SOL005/NSFaultManagement-API/NotificationEndpoint.robot b/SOL005/NSFaultManagement-API/NotificationEndpoint.robot index 650bb2a7a..e256c9b9b 100644 --- a/SOL005/NSFaultManagement-API/NotificationEndpoint.robot +++ b/SOL005/NSFaultManagement-API/NotificationEndpoint.robot @@ -16,7 +16,7 @@ NS Fault Alarm Notification ... Test title: NS Fault Alarm Notification ... Test objective: The objective is to test the dispatch of NS Fault Alarm Notification when a virtualised resource within an NS instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ NS Fault Alarm Cleared Notification ... Test title: NS Fault Alarm Cleared Notification ... Test objective: The objective is to test the dispatch of NS Fault Alarm Cleared Notification when a faulty virtualised resource within an NS instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ NS Fault Alarm List Rebuilt Notification ... Test title: NS Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test the dispatch of NS Fault Alarm List Rebuilt Notification when the NFVO decides to rebuild the list of its NS alarms, e.g. due to a corruption in the alarm storage, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance is instantiated, one or more virtualised resource are in faulty state, and a subscription for fault alarm list rebuilt notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSFaultManagement-API/Subscriptions.robot b/SOL005/NSFaultManagement-API/Subscriptions.robot index 0fb8ac8ce..3fa988c74 100644 --- a/SOL005/NSFaultManagement-API/Subscriptions.robot +++ b/SOL005/NSFaultManagement-API/Subscriptions.robot @@ -13,7 +13,7 @@ Create a new alarm subscription ... Test title: Create a new alarm subscription ... Test objective: The objective is to create a new Fault management alarm subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure ... Pre-conditions: no subscription with the same filter and callbackUri exists - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ Create a new alarm subscription - DUPLICATION ... 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.6.1 + ... 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 @@ -42,7 +42,7 @@ Create a new alarm subscription - NO DUPLICATION ... 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.6.1 + ... 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 @@ -55,7 +55,7 @@ Retrieve a list of alarm subscriptions ... Test title: Retrieve a list of alarm subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ Retrieve a list of alarm subscriptions - Filter ... Test title: Retrieve a list of alarm subscriptions - Filter ... Test objective: The objective is to retrieve the list of active subscriptions with filter and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective:The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters and perform a JSON schema and content validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ GET subscriptions with "all_fields" attribute selector ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -107,7 +107,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -120,7 +120,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -133,7 +133,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -146,7 +146,7 @@ PUT subscriptions - Method not implemented ... Test title:PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Fault management subscriptions on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -158,7 +158,7 @@ PATCH subscriptions - Method not implemented ... Test title:PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Fault management subscriptions on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -170,7 +170,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management subscriptions on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: subscription is not deleted @@ -182,7 +182,7 @@ Retrieve a list of alarm subscriptions as Paged Response ... Test title: Retrieve a list of alarm subscriptions as Paged Response ... Test objective: The objective is to retrieve the list of active subscriptions as paged response. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -195,7 +195,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective:The objective is test that the retrieval of active subscriptions list fails because response is too big, and perform a JSON schema and content validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -208,7 +208,7 @@ Retrieve a list of alarm subscriptions with filter "id" ... Test title: Retrieve a list of alarm subscriptions with filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -222,7 +222,7 @@ Retrieve a list of alarm subscriptions with filter "filter.notificationTypes" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -236,7 +236,7 @@ Retrieve a list of alarm subscriptions with filter "filter.faultyResourceTypes" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.faultyResourceTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -250,7 +250,7 @@ Retrieve a list of alarm subscriptions with filter "filter.perceivedSeverities" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -264,7 +264,7 @@ Retrieve a list of alarm subscriptions with filter "filter.eventTypes" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -278,7 +278,7 @@ Retrieve a list of alarm subscriptions with filter "filter.probableCauses" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 8aca3a66862e82ed7b5d36c8762e5f63474163b8 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 14 Oct 2020 11:58:35 +0500 Subject: [PATCH 090/580] reference updated --- .../VNFPackageManagement-API/ApiVersion.robot | 20 ++++++------ .../IndividualSubscription.robot | 14 ++++---- .../IndividualVNFPackage.robot | 22 ++++++------- .../Notifications.robot | 6 ++-- .../Subscriptions.robot | 22 ++++++------- .../VNFDInIndividualVNFPackage.robot | 22 ++++++------- .../VNFPackageArtifacts.robot | 22 ++++++------- .../VNFPackageContent.robot | 22 ++++++------- .../VNFPackageContentViaURI.robot | 12 +++---- .../VNFPackages.robot | 32 +++++++++---------- 10 files changed, 97 insertions(+), 97 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/ApiVersion.robot b/SOL005/VNFPackageManagement-API/ApiVersion.robot index 609a71d1a..942147599 100644 --- a/SOL005/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL005/VNFPackageManagement-API/ApiVersion.robot @@ -12,7 +12,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot index c72164f90..49da09d46 100644 --- a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Subscription ... Test title: GET Individual VNF Package Subscription ... Test objective: The objective is to test the retrieval of individual VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual VNF Package Subscription with invalid resource identifier ... Test title: GET Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ DELETE Individual VNF Package Subscription with invalid resource identifier ... Test title: DELETE Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ POST Individual VNF Package Subscription - Method not implemented ... Test title: POST Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Package Subscription ... Pre-conditions: none - ... Reference: Clause 9.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PUT Individual VNF Package Subscription - Method not implemented ... Test title: PUT Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ PATCH Individual VNF Package Subscription - Method not implemented ... Test title: PATCH Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ DELETE Individual VNF Package Subscription ... Test title: DELETE Individual VNF Package Subscription ... Test objective: The objective is to test the deletion of an individual VNF package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Subscription is not available anymore in the NFVO diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot index f47c41c4d..b14a4142f 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -11,7 +11,7 @@ GET Individual VNF Package ... Test title: GET Individual VNF Package ... Test objective: The objective is to test the retrieval of an individual VNF package information perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual VNF Package with invalid resource identifier ... Test title: GET Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ POST Individual VNF Package - Method not implemented ... Test title: POST Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PUT Individual VNF Package - Method not implemented ... Test title: PUT Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ Disable Individual VNF Package ... Test title: Disable Individual VNF Package ... Test objective: The objective is to test the disabling of an individual VNF Package and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state. - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is in operational state DISABLED @@ -75,7 +75,7 @@ Disable Individual VNF Package with conflict due to operational state DISABLED ... Test title: Disable Individual VNF Package with conflict due to operational state DISABLED ... Test objective: The objective is to test that disabling an individual VNF Package that is already in DISABLED operational state fails and perform a JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.5.2.5). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ Enable Individual VNF Package ... Test title: Enable Individual VNF Package ... Test objective: The objective is to test the enabling of an individual VNF Package and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.5.2.5). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is in operational state ENABLED @@ -102,7 +102,7 @@ Enable Individual VNF Package with conflict due to operational state ENABLED ... Test title: Enable Individual VNF Package with conflict due to operational state ENABLED ... Test objective: The objective is to test that enabling an individual VNF Package that is already in ENABLED operational state fails and perform a JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.5.2.7). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ DELETE Individual VNF Package ... Test title: DELETE Individual VNF Package ... Test objective: The objective is to test the deletion of an individual VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO in DISABLED operational state - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not available anymore in the NFVO @@ -128,7 +128,7 @@ DELETE Individual VNF Package in operational state ENABLED ... Test title: DELETE Individual VNF Package in operational state ENABLED ... Test objective: The objective is to test that the deletion of an individual VNF Package in operational state ENABLED fails. The test also performs a JSON schema validation of the failed operation HTTP response. ... Pre-conditions: One or more VNF Package are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.7). - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not deleted by the failed operation. @@ -142,7 +142,7 @@ DELETE Individual VNF Package used for instantiated VNF instances ... Test title: DELETE Individual VNF Package used for instantiated VNF instances ... Test objective: The objective is to test that the deletion of an individual VNF Package that is used in instantiated VNF instances fails. The test also performs a JSON schema validation of the failed operation HTTP response. ... Pre-conditions: One or more VNF instances are instantiated based on the concerned VNF package. - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not deleted by the failed operation. diff --git a/SOL005/VNFPackageManagement-API/Notifications.robot b/SOL005/VNFPackageManagement-API/Notifications.robot index fefa8c79b..ac66428ec 100644 --- a/SOL005/VNFPackageManagement-API/Notifications.robot +++ b/SOL005/VNFPackageManagement-API/Notifications.robot @@ -16,7 +16,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test the dispatch of VNF Package Onboarding notification when the VNF package onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ VNF Package Operational State Change Notification ... Test title: VNF Package Operational State Change Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package operational state is modified, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ VNF Package Deletion Notification ... Test title: VNF Package Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package is deleted on the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/Subscriptions.robot b/SOL005/VNFPackageManagement-API/Subscriptions.robot index 8ca89778a..4ea7e9d35 100644 --- a/SOL005/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL005/VNFPackageManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ Get All VNF Package Subscriptions ... Test title: GET all VNF Package Subscriptions ... Test objective: The objective is to test the retrieval of all VNF package subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ Get VNF Package Subscriptions with attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF package subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ Get VNF Package Subscriptions with invalid attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filters ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -58,7 +58,7 @@ GET VNF Package Subscription with invalid resource endpoint ... Test title: GET VNF Package Subscription with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF package subscriptions fails when using invalid resource endpoint. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ Create new VNF Package subscription ... Test title: Create new VNF Package subscription ... Test objective: The objective is to test the creation of a new VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF package subscription is successfully set and it matches the issued subscription @@ -86,7 +86,7 @@ Create duplicated VNF Package subscription with NFVO not creating duplicated sub ... Test title: Create duplicated VNF Package subscription with NFVO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF package subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing VNF package subscription returned is available in the NFVO @@ -102,7 +102,7 @@ Create duplicated VNF Package subscription with NFVO creating duplicated subscri ... Test title: Create duplicated VNF Package subscription with NFVO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated VNF package subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated VNF package subscription is successfully set and it matches the issued subscription @@ -117,7 +117,7 @@ PUT VNF Package Subscriptions - Method not implemented ... Test title: PUT VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH VNF Package Subscriptions - Method not implemented ... Test title: PATCH VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -154,7 +154,7 @@ Get All VNF Package Subscriptions as Paged Response ... Test title: GET all VNF Package Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all VNF package subscriptions as paged response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -167,7 +167,7 @@ Get VNF Package Subscriptions - Bad Request Response too Big ... Test title: Get VNF Package Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index 05586203f..79778b325 100644 --- a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -11,7 +11,7 @@ Get single file VNFD in Individual VNF Package in Plain Format ... Test title: Get single file VNFD in Individual VNF Package in Plain Format ... Test objective: The objective is to test the retrieval of the VNFD in plain format for an individual VNF package and perform a validation that returned content is in plain format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -24,7 +24,7 @@ Get VNFD in Individual VNF Package in Zip Format ... Test title: Get VNFD in Individual VNF Package in Zip Format ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get single file VNFD in Individual VNF Package in Plain or Zip Format ... Test title: Get single file VNFD in Individual VNF Package in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file VNFD for an individual VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Plain or Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -50,7 +50,7 @@ Get multi file VNFD in Individual VNF Package in Plain or Zip Format ... Test title: Get multi file VNFD in Individual VNF Package in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a multi file ... Post-Conditions: none @@ -63,7 +63,7 @@ Get multi file VNFD in Individual VNF Package in Plain Format ... Test title: Get multi file VNFD in Individual VNF Package in Plain Format ... Test objective: The objective is to test that the retrieval of the multi file VNFD for an individual VNF package fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a multi file ... Post-Conditions: none @@ -76,7 +76,7 @@ Get VNFD in Individual VNF Package with invalid resource identifier ... Test title: Get VNFD in Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF Package fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ Get VNFD in Individual VNF Package with conflict due to onboarding state ... Test title: Get VNFD in Individual VNF Package with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF Package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ POST VNFD in Individual VNF Package - Method not implemented ... Test title: POST VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNFD ... Pre-conditions: none - ... Reference: Clause 9.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ PUT VNFD in Individual VNF Package - Method not implemented ... Test title: PUT VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -125,7 +125,7 @@ PATCH VNFD in Individual VNF Package - Method not implemented ... Test title: PATCH VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -137,7 +137,7 @@ DELETE VNFD in Individual VNF Package - Method not implemented ... Test title: DELETE VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNFD is not deleted by the failed operation diff --git a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot index 72304b904..09b951e99 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -11,7 +11,7 @@ GET Individual VNF Package Artifact ... Test title: GET Individual VNF Package Artifact ... Test objective: The objective is to test the retrieval of an individual VNF package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual VNF Package Artifact in octet stream format ... Test title: GET Individual VNF Package Artifact in octet stream format ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -36,7 +36,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -50,7 +50,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO not supporting R ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -62,7 +62,7 @@ GET Individual VNF Package Artifact with invalid Range Request ... Test title: GET Individual VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -74,7 +74,7 @@ GET Individual VNF Package Artifact with invalid resource identifier ... Test title: GET Individual VNF Package Artifact with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET Individual VNF Package Artifact with conflict due to onboarding state ... Test title: GET Individual VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ POST Individual VNF Package Artifact - Method not implemented ... Test title: POST Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 9.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PUT Individual VNF Package Artifact - Method not implemented ... Test title: PUT Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ PATCH Individual VNF Package Artifact - Method not implemented ... Test title: PATCH Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -135,7 +135,7 @@ DELETE Individual VNF Package Artifact - Method not implemented ... Test title: DELETE Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot index 661a04e62..ec895526c 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Content ... Test title: GET Individual VNF Package Content ... Test objective: The objective is to test the retrieval of an individual VNF package content and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual VNF Package Content with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Individual VNF Package Content with Range Request and NFVO not supporting Ra ... Test title: GET Individual VNF Package Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Individual VNF Package Content with invalid Range Request ... Test title: GET Individual VNF Package Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -65,7 +65,7 @@ GET Individual VNF Package Content with invalid resource identifier ... Test title: GET Individual VNF Package Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ GET Individual VNF Package Content with conflict due to onboarding state ... Test title: GET Individual VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ POST Individual VNF Package Content - Method not implemented ... Test title: POST Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package content ... Pre-conditions: none - ... Reference: Clause 9.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ Upload VNF Package Content ... Test title: Upload VNF Package Content ... Test objective: The objective is to test the upload of a VNF Package Content in Zip format. ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package content is successfully uploaded and available in the NFVO @@ -115,7 +115,7 @@ Upload VNF Package Content with conflict due to onboarding state ... Test title: Upload VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the VNF Package Content fails due to a conflict when the VNF Package is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF Package for which the content is requested is different from CREATED. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ PATCH Individual VNF Package Content - Method not implemented ... Test title: PATCH Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -140,7 +140,7 @@ DELETE Individual VNF Package Content - Method not implemented ... Test title: DELETE Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package content is not deleted by the failed operation diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot index 6369bdeeb..5a2fd0c8d 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot @@ -12,7 +12,7 @@ Upload VNF Package Content from URI ... Test title: Upload VNF Package Content from URI ... Test objective: The objective is to test the upload of a VNF Package Content from URI. ... Pre-conditions: One or more VNF Packages are in onboarding state CREATED in the NFVO. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Upload VNF Package Content from URI with conflict due to onboarding state ... Test title: Upload VNF Package Content from URI with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the VNF Package Content from URI fails due to a conflict when the VNF Package is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF Package for which the content is requested is different from CREATED. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Individual VNF Package Content from URI - Method not implemented ... Test title: GET Individual VNF Package Content from URI - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Individual VNF Package Content from URI - Method not implemented ... Test title: PUT Individual VNF Package Content from URI - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Individual VNF Package Content from URI - Method not implemented ... Test title: PATCH Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Individual VNF Package Content from URI - Method not implemented ... Test title: DELETE Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package content is not deleted by the failed operation diff --git a/SOL005/VNFPackageManagement-API/VNFPackages.robot b/SOL005/VNFPackageManagement-API/VNFPackages.robot index 3cfc30de7..6b681ce00 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackages.robot @@ -11,7 +11,7 @@ GET all VNF Packages ... Test title: GET all VNF Packages ... Test objective: The objective is to test the retrieval of all the available VNF packages information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET VNF Packages with attribute-based filter ... Test title: GET VNF Packages with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF packages using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ GET VNF Packages with invalid attribute-based filter ... Test title: GET VNF Packages with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ Get all VNF Packages with malformed authorization token ... Test title: Get all VNF Packages Information with malformed authorization token ... Test objective: The objective is to test that the retrieval of VNF Packages fails when using malformed authorization token ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -67,7 +67,7 @@ Get all VNF Packages without authorization token ... Test title: Get all VNF Packages without authorization token ... Test objective: The objective is to test that the retrieval of VNF Packages fails when omitting the authorization token ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -79,7 +79,7 @@ GET VNF Packages with "all_fields" attribute selector ... Test title: GET VNF Packages with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET VNF Packages with "exclude_default" attribute selector ... Test title: GET VNF Packages with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -107,7 +107,7 @@ GET VNF Packages with "fields" attribute selector ... Test title: GET VNF Packages with fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -121,7 +121,7 @@ GET VNF Packages with "exclude_fields" attribute selector ... Test title: GET VNF Packages with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -135,7 +135,7 @@ GET all VNF Packages with invalid resource endpoint ... Test title: GET VNF Packages with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid resource endpoint ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -147,7 +147,7 @@ Create new VNF Package Resource ... Test title: Create new VNF Package Resource ... Test objective: The objective is to test the creation of a new VNF Package Resource and perform the JSON schema validation of the returned structure ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Resource is successfully created on the NFVO @@ -162,7 +162,7 @@ PUT all VNF Packages - Method not implemented ... Test title: PUT all VNF Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ PATCH all VNF Packages - Method not implemented ... Test title: PATCH all VNF Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -186,7 +186,7 @@ DELETE all VNF Packages - Method not implemented ... Test title: DELETE all VNF Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Packages are not deleted by the failed operation @@ -199,7 +199,7 @@ GET all VNF Packages as Paged Response ... Test title: GET all VNF Packages as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF packages information as paged response. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -212,7 +212,7 @@ GET VNF Packages - Bad Request Response too Big ... Test title: GET VNF Packages - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF packages fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From adaaa05b99429668e2bdf402bfaac5c1629fc7a7 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 14 Oct 2020 16:28:01 +0200 Subject: [PATCH 091/580] fix for issue #121 in SOL002-VNFIndicator-API --- .../IndividualVNFindicator.robot | 1 - SOL002/VNFIndicator-API/Subscriptions.robot | 3 +-- SOL002/VNFIndicator-API/VNFIndicators.robot | 1 - .../VnfIndicatorsInVnfInstanceId.robot | 1 - .../environment/individualSubscription.txt | 5 ---- .../environment/individualVnfIndicator.txt | 6 ----- .../environment/subscriptions.txt | 10 ------- .../environment/variables.txt | 26 ++++++++++++++++++- .../environment/vnfIndicatorinVnfInstance.txt | 7 ----- .../environment/vnfIndicators.txt | 8 ------ 10 files changed, 26 insertions(+), 42 deletions(-) delete mode 100644 SOL002/VNFIndicator-API/environment/individualSubscription.txt delete mode 100644 SOL002/VNFIndicator-API/environment/individualVnfIndicator.txt delete mode 100644 SOL002/VNFIndicator-API/environment/subscriptions.txt delete mode 100644 SOL002/VNFIndicator-API/environment/vnfIndicatorinVnfInstance.txt delete mode 100644 SOL002/VNFIndicator-API/environment/vnfIndicators.txt diff --git a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot index 19b7fb469..437cb6f3a 100644 --- a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/individualVnfIndicator.txt Library REST ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT} ssl_verify=false *** Test Cases *** diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index 0e208cd33..d0f7f89dd 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/subscriptions.txt Library OperatingSystem Library JSONLibrary Library Process @@ -220,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_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/VNFIndicator-API/VNFIndicators.robot b/SOL002/VNFIndicator-API/VNFIndicators.robot index f3f8f20f8..0addde858 100644 --- a/SOL002/VNFIndicator-API/VNFIndicators.robot +++ b/SOL002/VNFIndicator-API/VNFIndicators.robot @@ -4,7 +4,6 @@ Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library String -Resource environment/vnfIndicators.txt Library REST ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT} ssl_verify=false *** Test Cases *** diff --git a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index 14cb88972..b25da0214 100644 --- a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -2,7 +2,6 @@ Documentation This resource represents VNF indicators related to a VNF instance. The client can use this resource to query multiple VNF indicators that are related to a particular VNF instance. Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/vnfIndicatorinVnfInstance.txt Library JSONLibrary Library String Library REST ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT} ssl_verify=false diff --git a/SOL002/VNFIndicator-API/environment/individualSubscription.txt b/SOL002/VNFIndicator-API/environment/individualSubscription.txt deleted file mode 100644 index 1ae759290..000000000 --- a/SOL002/VNFIndicator-API/environment/individualSubscription.txt +++ /dev/null @@ -1,5 +0,0 @@ -*** Variables *** -${subscriptionId} f3ae6df7-07e1-47c9-8924-9ebe10343586 -${erroneousSubscriptionId} 442e3ee5-0499-4849-9b31-eb91ce1638f1 # Not existing ID on the subscriptions -${response}= httpresponse -${origResponse}= httpresponse \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/environment/individualVnfIndicator.txt b/SOL002/VNFIndicator-API/environment/individualVnfIndicator.txt deleted file mode 100644 index 5e90a5d70..000000000 --- a/SOL002/VNFIndicator-API/environment/individualVnfIndicator.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${vnfInstanceId} 80b0deba-c398-445b-bef0-ac0fe733e3d0 -${indicatorId} 34e70855-a9d3-4fef-aece-76a3cd266ec8 -${notAllowedIndicatorId} notAllowedId -${erroneousIndicatorId} erroneousIndicatorId -${response}= httpresponse diff --git a/SOL002/VNFIndicator-API/environment/subscriptions.txt b/SOL002/VNFIndicator-API/environment/subscriptions.txt deleted file mode 100644 index ec4b63ac0..000000000 --- a/SOL002/VNFIndicator-API/environment/subscriptions.txt +++ /dev/null @@ -1,10 +0,0 @@ -*** Variables *** -${vnfInstanceId} 80b0deba-c398-445b-bef0-ac0fe733e3d0 -${indicatorId} 34e70855-a9d3-4fef-aece-76a3cd266ec8 -${erroneousIndicatorId} erroneousIndicatorId -${POS_FILTER} callbackUri=http://127.0.0.1/subscribe -${NEG_FILTER} callback=http://127.0.0.1/subscribe -${response}= httpresponse -${total_polling_time} 2 min -${polling_interval} 10 sec -${SEPERATOR} = \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/environment/variables.txt b/SOL002/VNFIndicator-API/environment/variables.txt index 22f32a1fb..b08433660 100644 --- a/SOL002/VNFIndicator-API/environment/variables.txt +++ b/SOL002/VNFIndicator-API/environment/variables.txt @@ -24,4 +24,28 @@ ${callback_port} 9091 ${callback_endpoint} /endpoint ${callback_endpoint_error} /endpoint_404 -${response} some_response_object \ No newline at end of file +${response} some_response_object + + +${subscriptionId} f3ae6df7-07e1-47c9-8924-9ebe10343586 +${erroneousSubscriptionId} 442e3ee5-0499-4849-9b31-eb91ce1638f1 # Not existing ID on the subscriptions +${origResponse}= httpresponse + +${vnfInstanceId} 80b0deba-c398-445b-bef0-ac0fe733e3d0 +${indicatorId} 34e70855-a9d3-4fef-aece-76a3cd266ec8 +${notAllowedIndicatorId} notAllowedId +${erroneousIndicatorId} erroneousIndicatorId + +${POS_FILTER} callbackUri=http://127.0.0.1/subscribe +${NEG_FILTER} callback=http://127.0.0.1/subscribe +${total_polling_time} 2 min +${polling_interval} 10 sec +${SEPERATOR} = + +${erroneousVnfInstanceId} erroneousVnfInstanceId +${POS_FIELDS} name=vnfIndicator +${NEG_FIELDS} wrongName=any_value + + +${vnfIndicators} = +${VAR_SEPERATOR} & \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/environment/vnfIndicatorinVnfInstance.txt b/SOL002/VNFIndicator-API/environment/vnfIndicatorinVnfInstance.txt deleted file mode 100644 index 8651dee3d..000000000 --- a/SOL002/VNFIndicator-API/environment/vnfIndicatorinVnfInstance.txt +++ /dev/null @@ -1,7 +0,0 @@ -*** Variables *** -${vnfInstanceId} 80b0deba-c398-445b-bef0-ac0fe733e3d0 -${erroneousVnfInstanceId} erroneousVnfInstanceId -${POS_FIELDS} name=vnfIndicator -${NEG_FIELDS} wrongName=any_value -${response}= httpresponse -${SEPERATOR} = \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/environment/vnfIndicators.txt b/SOL002/VNFIndicator-API/environment/vnfIndicators.txt deleted file mode 100644 index 847659079..000000000 --- a/SOL002/VNFIndicator-API/environment/vnfIndicators.txt +++ /dev/null @@ -1,8 +0,0 @@ -*** Variables *** -${POS_FIELDS} name=vnfIndicator&vnfInstanceId=80b0deba-c398-445b-bef0-ac0fe733e3d0 -${NEG_FIELDS} wrongName=wrongValue -${response} some_response_object -${vnfIndicators} = -${SEPERATOR} = -${VAR_SEPERATOR} & -${POS_FILTER} = \ No newline at end of file -- GitLab From 4d3c4cb7d6d1124b08e777e9a08ed7442699bb57 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 14 Oct 2020 16:44:50 +0200 Subject: [PATCH 092/580] adding missing update --- SOL002/VNFIndicator-API/IndividualSubscription.robot | 1 - 1 file changed, 1 deletion(-) diff --git a/SOL002/VNFIndicator-API/IndividualSubscription.robot b/SOL002/VNFIndicator-API/IndividualSubscription.robot index 4e75f80c7..68e5bb49d 100644 --- a/SOL002/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL002/VNFIndicator-API/IndividualSubscription.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/individualSubscription.txt Library OperatingSystem Library REST ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT} ssl_verify=false -- GitLab From 1c8f22e32e870e6b75a41223ad47eda0e08cea0c Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 14 Oct 2020 17:18:57 +0200 Subject: [PATCH 093/580] restored subscriptions tests in SOL002 VNF PM --- .../IndividualSubscription.robot | 98 ++++++ .../Subscriptions.robot | 175 +++++++++++ .../VNFPerformanceManagementKeywords.robot | 297 +++++++++++++++++- .../environment/variables.txt | 37 ++- 4 files changed, 602 insertions(+), 5 deletions(-) create mode 100644 SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot create mode 100644 SOL002/VNFPerformanceManagement-API/Subscriptions.robot diff --git a/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot b/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot new file mode 100644 index 000000000..1d9d2d429 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot @@ -0,0 +1,98 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Resource VNFPerformanceManagementKeywords.robot + +*** Test Cases *** +GET Individual VNF Performance Subscription + [Documentation] Test ID: 6.3.3.7.1 + ... Test title: GET Individual VNF Performance Subscription + ... Test objective: The objective is to test the retrieval of individual VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual VNF Performance Subscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmSubscription + Check HTTP Response Body Subscription Identifier matches the requested Subscription + +GET Individual VNF Performance Subscription with invalid resource identifier + [Documentation] Test ID: 6.3.3.7.2 + ... Test title: GET Individual VNF Performance Subscription with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of an individual VNF performance subscription fails when using an invalid resource identifier + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual VNF Performance Subscription with invalid resource identifier + Check HTTP Response Status Code Is 404 + +DELETE Individual VNF Performance Subscription + [Documentation] Test ID: 6.3.3.7.3 + ... Test title: DELETE Individual VNF Performance Subscription + ... Test objective: The objective is to test the deletion of an individual VNF performance subscription + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance Subscription is not available anymore in the VNFM + Send Delete request for individual VNF Performance Subscription + Check HTTP Response Status Code Is 204 + Check Postcondition VNF Performance Subscription is Deleted + +DELETE Individual VNF Performance Subscription with invalid resource identifier + [Documentation] Test ID: 6.3.3.7.4 + ... Test title: DELETE Individual VNF Performance Subscription with invalid resource identifier + ... Test objective: The objective is to test that the deletion of an individual VNF performance subscription fails when using an invalid resource identifier + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Send Delete request for individual VNF Performance Subscription with invalid resource identifier + Check HTTP Response Status Code Is 404 + +POST Individual VNF Performance Subscription - Method not implemented + [Documentation] Test ID: 6.3.3.7.5 + ... Test title: POST Individual VNF Performance Subscription - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Subscription + ... Pre-conditions: A VNF instance is instantiated + ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance Subscription is not created on the VNFM + Send Post request for individual VNF Performance Subscription + Check HTTP Response Status Code Is 405 + Check Postcondition VNF Performance Subscription is not Created + +PUT Individual VNF Performance Subscription - Method not implemented + [Documentation] Test ID: 6.3.3.7.6 + ... Test title: PUT Individual VNF Performance Subscription - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance subscription + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance subscription is not modified by the operation + Send Put request for individual VNF Performance Threshold + Check HTTP Response Status Code Is 405 + Check Postcondition VNF Performance Subscription is Unmodified (Implicit) + +PATCH Individual VNF Performance Subscription - Method not implemented + [Documentation] Test ID: 6.3.3.7.7 + ... Test title: PATCH Individual VNF Performance Subscription - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Performance subscription + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance subscription is not modified by the operation + Send Patch request for individual VNF Performance Threshold + Check HTTP Response Status Code Is 405 + Check Postcondition VNF Performance Subscription is Unmodified (Implicit) \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/Subscriptions.robot b/SOL002/VNFPerformanceManagement-API/Subscriptions.robot new file mode 100644 index 000000000..c9948009b --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/Subscriptions.robot @@ -0,0 +1,175 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Resource VNFPerformanceManagementKeywords.robot +Library MockServerLibrary +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true + +*** Test Cases *** +GET all VNF Performance Subscriptions + [Documentation] Test ID: 6.3.3.6.1 + ... Test title: GET all VNF Performance Subscriptions + ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions and perform a JSON schema validation of the returned subscriptions data structure + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get all VNF Performance Subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmSubscriptions + +GET VNF Performance Subscriptions with attribute-based filter + [Documentation] Test ID: 6.3.3.6.2 + ... Test title: GET VNF Performance Subscriptions with attribute-based filter + ... Test objective: The objective is to test the retrieval of VNF performance subscriptions using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get VNF Performance Subscriptions with attribute-based filters + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmSubscriptions + Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter + +GET VNF Performance Management Subscriptions with invalid attribute-based filter + [Documentation] Test ID: 6.3.3.6.3 + ... Test title: GET VNF Performance Management Subscriptions with invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get VNF Performance Subscriptions with invalid attribute-based filters + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET VNF Performance Subscriptions with invalid resource endpoint + [Documentation] Test ID: 6.3.3.6.4 + ... Test title: GET VNF Performance Subscriptions with invalid resource endpoint + ... Test objective: The objective is to test that the retrieval of all VNF performance subscriptions fails when using invalid resource endpoint. + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get VNF Performance Subscriptions with invalid resource endpoint + Check HTTP Response Status Code Is 404 + +Create new VNF Performance subscription + [Documentation] Test ID: 6.3.3.6.5 + ... Test title: Create new VNF Performance subscription + ... Test objective: The objective is to test the creation of a new VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure + ... Pre-conditions: A VNF instance is instantiated. + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF performance subscription is successfully set and it matches the issued subscription + Send Post Request for VNF Performance Subscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PmSubscription + Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription + Check Postcondition VNF Performance Subscription Is Set + + +Create duplicated VNF Performance subscription with VNFM not creating duplicated subscriptions + [Tags] no-duplicated-subs + [Documentation] Test ID: 6.3.3.6.6 + ... Test title: Create duplicated VNF Performance subscription with VNFM not creating duplicated subscriptions + ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF performance subscription and check that no new subscription is created by the VNFM and a link to the original subscription is returned + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM does not support the creation of duplicated subscriptions + ... Post-Conditions: The existing VNF performance subscription returned is available in the VNFM + Send Post Request for Duplicated VNF Performance Subscription + Check HTTP Response Status Code Is 303 + Check HTTP Response Body Is Empty + Check HTTP Response Header Contains Location + Check Postcondition Subscription Resource Returned in Location Header Is Available + +Create duplicated VNF Performance subscription with VNFM creating duplicated subscriptions + [Tags] duplicated-subs + [Documentation] Test ID: 6.3.3.6.7 + ... Test title: Create duplicated VNF Performance subscription with VNFM creating duplicated subscriptions + ... Test objective: The objective is to test the creation of a duplicated VNF performance subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM supports the creation of duplicated subscriptions + ... Post-Conditions: The duplicated VNF performance subscription is successfully set and it matches the issued subscription + Send Post Request for Duplicated VNF Performance Subscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PmSubscription + Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription + Check Postcondition VNF Performance Subscription Is Set + +PUT VNF Performance Subscriptions - Method not implemented + [Documentation] Test ID: 6.3.3.6.8 + ... Test title: PUT VNF Performance Subscriptions - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify VNF performance subscriptions + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Send Put Request for VNF Performance Subscriptions + Check HTTP Response Status Code Is 405 + +PATCH VNF Performance Subscriptions - Method not implemented + [Documentation] Test ID: 6.3.3.6.9 + ... Test title: PATCH VNF Performance Subscriptions - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update VNF performance subscriptions + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Send Patch Request for VNF Performance Subscriptions + Check HTTP Response Status Code Is 405 + +DELETE VNF Performance Subscriptions - Method not implemented + [Documentation] Test ID: 6.3.3.6.10 + ... Test title: DELETE VNF Performance Subscriptions - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF performance subscriptions + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF performance subscriptions are not deleted by the failed operation + Send Delete Request for VNF Performance Subscriptions + Check HTTP Response Status Code Is 405 + Check Postcondition VNF Performance Subscriptions Exists + +GET VNF Performance Subscriptions to get Paged Response + [Documentation] Test ID: 6.3.3.6.11 + ... Test title: GET VNF Performance Subscriptions to get Paged Response + ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions to get Paged Response + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get all VNF Performance Subscriptions + Check HTTP Response Status Code Is 200 + Check LINK in Header + +GET VNF Performance Management Subscriptions for Bad Request Response too big + [Documentation] Test ID: 6.3.3.6.12 + ... Test title: GET VNF Performance Management Subscriptions for Bad Request Response too big + ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get VNF Performance Subscriptions with invalid attribute-based filters + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index 394c97280..99da3d1a8 100644 --- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -1,8 +1,7 @@ *** Settings *** Library String Resource environment/variables.txt -Resource environment/subscriptions.txt -Resource environment/individualSubscription.txt + Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library MockServerLibrary Library OperatingSystem @@ -13,12 +12,263 @@ Library JSONSchemaLibrary schemas/ Library Process *** Keywords *** + +Get all VNF Performance Subscriptions + [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications + ... subscribed by the client. + ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, + ... request and response data structures, and response codes. + Set headers {"Accept": "application/json"} + Set headers {"Content-Type": "application/json"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + # Integer response status 200 + # Log Received a 200 OK as expected + # ${contentType}= Output response headers Content-Type + # Should Contain ${contentType} application/json + # ${result}= Output response body + # Validate Json PmSubscriptions.schema.json ${result} + # Log Validated PmSubscription schema + + + Get VNF Performance Subscriptions with attribute-based filters + [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications + ... subscribed by the client. + ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, + ... request and response data structures, and response codes. + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} + ${output}= Output response + Set Suite Variable ${response} ${output} + # Integer response status 200 + # Log Received a 200 OK as expected + # ${contentType}= Output response headers Content-Type + # Should Contain ${contentType} application/json + # ${result}= Output response body + # Validate Json PmSubscriptions.schema.json ${result} + # Log Validated PmSubscription schema + + + +Get VNF Performance Subscriptions with invalid attribute-based filters + [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications + ... subscribed by the client. + ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, + ... request and response data structures, and response codes. + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} + ${output}= Output response + Set Suite Variable ${response} ${output} + # Integer response status 400 + # Log Received a 400 Bad Request as expected + # ${contentType}= Output response headers Content-Type + # Should Contain ${contentType} application/json + # ${result}= Output response body + # Validate Json ProblemDetails.schema.json ${result} + # Log Validated ProblemDetails schema + + +Get VNF Performance Subscriptions with invalid resource endpoint + [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications + ... subscribed by the client. + ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, + ... request and response data structures, and response codes. + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription + ${output}= Output response + Set Suite Variable ${response} ${output} + # Integer response status 404 + # Log Received a 404 Not found as expected + # ${contentType}= Output response headers Content-Type + # Should Contain ${contentType} application/json + # ${result}= Output response body + # Validate Json ProblemDetails.schema.json ${result} + # Log Validated ProblemDetails schema + + + +Send Post Request for VNF Performance Subscription + [Documentation] The POST method creates a new subscription. + ... This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, + ... request and response data structures, and response codes. + ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance + ... degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases. + ... Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the + ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide + ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing + ... the existing subscription resource with the same filter and callbackUri). + Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + ${body_request}= Get File jsons/subscriptions.json + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + ${output}= Output response + Set Suite Variable ${response} ${output} + Run Keyword If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1 + ... Check Notification Endpoint + # Integer response status 201 + # Log Received a 201 Created as expected + # ${contentType}= Output response headers Content-Type + # Should Contain ${contentType} application/json + # ${result}= Output response body + # Validate Json PmSubscription.schema.json ${result} + # Log Validated PmSubscription schema + # Log Trying to validate the Location header + # ${headers}= Output response headers + # Should Contain ${headers} Location + + +Send Post Request for Duplicated VNF Performance Subscription + [Documentation] The POST method creates a new subscription. + ... This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, + ... request and response data structures, and response codes. + ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance + ... degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases. + ... Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the + ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide + ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing + ... the existing subscription resource with the same filter and callbackUri). + Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body_request}= Get File jsons/subscriptions.json + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + ${output}= Output response + Set Suite Variable ${response} ${output} + # Integer response status 303 + # Log Received a 303 See other as expected + # ${contentType}= Output response headers Content-Type + # Should Contain ${contentType} application/json + # ${result}= Output response body + # Should Be Empty ${result} + # Log Body is empty + # Log Trying to validate the Location header + # ${headers}= Output response headers + # Should Contain ${headers} Location + + + +Send Put Request for VNF Performance Subscriptions + [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method + ... Not Allowed" response as defined in Clause 4.3.5.4. + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + # Integer response status 405 + # Log Received 405 Method not implemented as expected + +Send Patch Request for VNF Performance Subscriptions + [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method + ... Not Allowed" response as defined in Clause 4.3.5.4. + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + # Integer response status 405 + # Log Received 405 Method not implemented as expected + +Send Delete Request for VNF Performance Subscriptions + [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method + ... Not Allowed" response as defined in Clause 4.3.5.4. + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + # Integer response status 405 + # Log Received 405 Method not implemented as expected + +Get Individual VNF Performance Subscription + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET individual VNF Performance Subscription with invalid resource identifier + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for individual VNF Performance Subscription + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for individual VNF Performance Subscription with invalid resource identifier + Log Trying to delete a subscription in the VNFM with invalid id + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Post request for individual VNF Performance Subscription + 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 Performance Threshold + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch request for individual VNF Performance Threshold + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition VNF Performance Subscription is Unmodified (Implicit) + Log Check postconidtion subscription not modified + GET individual VNF Performance Subscription + Log Check Response matches original VNF Threshold + ${subscription}= evaluate json.loads('''${response['body']}''') json + Should Be Equal As Strings ${origResponse['body']['id']} ${subscription.id} + Should Be Equal As Strings ${origResponse['body']['callbackUri']} ${subscription.callbackUri} + +Check Postcondition VNF Performance 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} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 404 + +Check Postcondition VNF Performance Subscription is Deleted + Log Check Postcondition Subscription is deleted + GET individual VNF Performance Subscription + Check HTTP Response Status Code Is 404 + +Check HTTP Response Body Subscription Identifier matches the requested Subscription + Log Trying to check response ID + Should Be Equal As Strings ${response['body']['id']} ${subscriptionId} + Log Subscription identifier as expected Check HTTP Response Status Code Is [Arguments] ${expected_status} Should Be Equal As Strings ${response['status']} ${expected_status} Log Status code validated + + Check HTTP Response Body Json Schema Is [Arguments] ${input} Should Contain ${response['headers']['Content-Type']} application/json @@ -26,9 +276,48 @@ Check HTTP Response Body Json Schema Is Validate Json ${schema} ${response['body']} Log Json Schema Validation OK + Check HTTP Response Body Is Empty Should Be Empty ${response['body']} - Log No json schema is provided. Validation OK + Log No json schema is provided. Validation OK + + +Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter + Log Check Response includes VNF Performance Management according to filter + Should Be Equal As Strings ${response['body'][0]['callbackUri']} ${callbackUri_Sub} + +Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription + Log Check Response matches subscription + ${body}= Get File jsons/subscriptions.json + ${subscription}= evaluate json.loads('''${body}''') json + Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} + +Check Postcondition VNF Performance Subscription Is Set + Log Check Postcondition subscription exist + Set Headers {"Accept": "${ACCEPT_JSON}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 200 + +Check Postcondition Subscription Resource Returned in Location Header Is Available + Log Going to check postcondition + GET ${response['headers']['Location']} + Integer response status 200 + Log Received a 200 OK as expected + ${contentType}= Output response headers Content-Type + Should Contain ${contentType} application/json + ${result}= Output response body + Validate Json PmSubscription.schema.json ${result} + Log Validated PmSubscription schema + ${body}= Get File jsons/subscriptions.json + ${subscription}= evaluate json.loads('''${body}''') json + Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} + Log Validated Issued subscription is same as original + +Check Postcondition VNF Performance Subscriptions Exists + Log Checking that subscriptions exists + Get all VNF Performance Subscriptions Check HTTP Response Header Contains [Arguments] ${CONTENT_TYPE} @@ -59,6 +348,6 @@ Check Notification Endpoint Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} -Check HTTP Response Header Contain Link +Check LINK in Header ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL002/VNFPerformanceManagement-API/environment/variables.txt b/SOL002/VNFPerformanceManagement-API/environment/variables.txt index c6f2f9a80..8636509cb 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/variables.txt @@ -27,4 +27,39 @@ ${response} http-response ${objectInstanceIds} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${subscribe} /subscribe \ No newline at end of file +${subscribe} /subscribe + + + +${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e +${erroneousPmJobId} erroneousPmJobId +${newPmJobId} newPmJobId +${OrigResponse}= httpresponse + +${thresholdId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${erroneousThresholdId} erroneousThresholdId +${newThresholdId} newThresholdId + +${POS_FILTER} objectInstanceIds=${objectInstanceIds} +${NEG_FILTER} criteriaPmJob=erroneousAttributeName +${fields} criteria,reports +${SEPERATOR} = + +${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 +${erroneousReportId} erroneousReportId +${newReportId} newReportId + + +${FILTER_OK} objectInstanceId=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${FILTER_KO} criterias=erroneousFilter + +${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa +${erroneousSubscriptionId} erroneousSubscriptionId +${newSubscriptionId} newSubsciptionId + +${callbackUri_Sub} http://172.22.1.7:9091/vnfpm/subscriptions +${filter_ok} callbackUri=${callbackUri_Sub} +${filter_ko} erroneousFilter=erroneous +${total_polling_time} 2 min +${polling_interval} 10 sec + -- GitLab From 5b3489351cb237ea8b095025882263457180a6df Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 14 Oct 2020 17:20:25 +0200 Subject: [PATCH 094/580] fix for issue #121 in SOL002-VNFPerformance-API --- SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot | 1 - .../VNFPerformanceManagement-API/IndividualReport.robot | 1 - .../IndividualThreshold.robot | 1 - SOL002/VNFPerformanceManagement-API/PMJobs.robot | 1 - SOL002/VNFPerformanceManagement-API/Thresholds.robot | 1 - .../environment/IndividualPmJob.txt | 6 ------ .../environment/individualThresholds.txt | 6 ------ .../VNFPerformanceManagement-API/environment/pmJobs.txt | 8 -------- .../VNFPerformanceManagement-API/environment/reports.txt | 7 ------- .../environment/thresholds.txt | 5 ----- 10 files changed, 37 deletions(-) delete mode 100644 SOL002/VNFPerformanceManagement-API/environment/IndividualPmJob.txt delete mode 100644 SOL002/VNFPerformanceManagement-API/environment/individualThresholds.txt delete mode 100644 SOL002/VNFPerformanceManagement-API/environment/pmJobs.txt delete mode 100644 SOL002/VNFPerformanceManagement-API/environment/reports.txt delete mode 100644 SOL002/VNFPerformanceManagement-API/environment/thresholds.txt diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index eeced512b..b95e714b4 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -2,7 +2,6 @@ Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Library JSONLibrary -Resource environment/IndividualPmJob.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem Library DependencyLibrary diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot index 7570068dd..b3205fa84 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/reports.txt Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index 003817da6..d5bed32bd 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -4,7 +4,6 @@ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem -Resource environment/individualThresholds.txt *** Test Cases *** GET Individual Threshold diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 62747fa37..160d12642 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -4,7 +4,6 @@ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library OperatingSystem Library String -Resource environment/pmJobs.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false *** Test Cases *** diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index 6dead1e56..98db5849e 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -4,7 +4,6 @@ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library String Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Resource environment/thresholds.txt Library OperatingSystem *** Test Cases *** diff --git a/SOL002/VNFPerformanceManagement-API/environment/IndividualPmJob.txt b/SOL002/VNFPerformanceManagement-API/environment/IndividualPmJob.txt deleted file mode 100644 index 3fc3b0a0d..000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/IndividualPmJob.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e -${erroneousPmJobId} erroneousPmJobId -${newPmJobId} newPmJobId -${response}= httpresponse -${OrigResponse}= httpresponse diff --git a/SOL002/VNFPerformanceManagement-API/environment/individualThresholds.txt b/SOL002/VNFPerformanceManagement-API/environment/individualThresholds.txt deleted file mode 100644 index 1efba79c6..000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/individualThresholds.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${thresholdId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${erroneousThresholdId} erroneousThresholdId -${newThresholdId} newThresholdId -${response}= httpresponse -${origResponse}= httpresponse \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/environment/pmJobs.txt b/SOL002/VNFPerformanceManagement-API/environment/pmJobs.txt deleted file mode 100644 index 7d16002b3..000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/pmJobs.txt +++ /dev/null @@ -1,8 +0,0 @@ -*** Settings *** -Resource variables.txt # Generic Parameters -*** Variables *** -${POS_FILTER} objectInstanceIds=${objectInstanceIds} -${NEG_FILTER} criteriaPmJob=erroneousAttributeName -${fields} criteria,reports -${response}= httpresponse -${SEPERATOR} = \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/environment/reports.txt b/SOL002/VNFPerformanceManagement-API/environment/reports.txt deleted file mode 100644 index 6ac5f7c0b..000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/reports.txt +++ /dev/null @@ -1,7 +0,0 @@ -*** Variables *** -${pmJobId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 -${erroneousReportId} erroneousReportId -${newReportId} newReportId -${response}= httpresponse -${OrigResponse}= httpresponse diff --git a/SOL002/VNFPerformanceManagement-API/environment/thresholds.txt b/SOL002/VNFPerformanceManagement-API/environment/thresholds.txt deleted file mode 100644 index b044c053e..000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/thresholds.txt +++ /dev/null @@ -1,5 +0,0 @@ -*** Variables *** -${FILTER_OK} objectInstanceId=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${FILTER_KO} criterias=erroneousFilter -${response}= httpresponse -${SEPERATOR} = \ No newline at end of file -- GitLab From 6a1d6c7a9e8bd5fb23face78b21247a44b616d4d Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 15 Oct 2020 11:41:41 +0500 Subject: [PATCH 095/580] fix for issue 131 --- .../NSLifecycleManagement-API/NotificationEndpoint.robot | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot b/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot index 9290ef85e..b2723439b 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot @@ -46,8 +46,8 @@ NS Identifier Creation Notification ... Applicability: none ... Post-Conditions: none Trigger the creation of a NS instance resource (external action) - Check NS Identifier Creation Notification Http POST Request Body Json Schema Is NsIdentifierDeletionNotification - Check NS Identifier Creation Notification Http POST Request Body notificationType attribute Is NsIdentifierDeletionNotification + Check NS Identifier Creation Notification Http POST Request Body Json Schema Is NsIdentifierCreationNotification + Check NS Identifier Creation Notification Http POST Request Body notificationType attribute Is NsIdentifierCreationNotification NS Identifier Deletion Notification [Documentation] Test ID: 5.3.2.17.4 @@ -59,8 +59,8 @@ NS Identifier Deletion Notification ... Applicability: none ... Post-Conditions: none Trigger the deletion of a NS instance resource (external action) - Check NS Identifier Deletion Notification Http POST Request Body Json Schema Is NsIdentifierCreationNotification - Check NS Identifier Deletion Notification Http POST Request Body notificationType attribute Is NsIdentifierCreationNotification + Check NS Identifier Deletion Notification Http POST Request Body Json Schema Is NsIdentifierDeletionNotification + Check NS Identifier Deletion Notification Http POST Request Body notificationType attribute Is NsIdentifierDeletionNotification *** Keywords *** Trigger a NS LCM operation (external action) -- GitLab From 7531ca18b18b33868840a3500f4980ce4a91b553 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 16 Oct 2020 12:01:19 +0500 Subject: [PATCH 096/580] 2.7.1 SOL005 NSD deltas and bugs fix added --- SOL005/NSDManagement-API/NSD.robot | 10 ++ ...DContent.robot => NSDArchiveContent.robot} | 84 +--------------- .../NSDManagementKeywords.robot | 99 ++++++------------- ...Content.robot => PNFDArchiveContent.robot} | 55 +++++++++-- SOL005/NSDManagement-API/Subscriptions.robot | 24 +++-- 5 files changed, 105 insertions(+), 167 deletions(-) create mode 100644 SOL005/NSDManagement-API/NSD.robot rename SOL005/NSDManagement-API/{NSDContent.robot => NSDArchiveContent.robot} (66%) rename SOL005/NSDManagement-API/{PNFDContent.robot => PNFDArchiveContent.robot} (69%) diff --git a/SOL005/NSDManagement-API/NSD.robot b/SOL005/NSDManagement-API/NSD.robot new file mode 100644 index 000000000..6271e3afe --- /dev/null +++ b/SOL005/NSDManagement-API/NSD.robot @@ -0,0 +1,10 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Resource environment/nsDescriptors.txt # Specific nsDescriptors Parameters +Resource NSDManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem + +*** Test Cases *** \ No newline at end of file diff --git a/SOL005/NSDManagement-API/NSDContent.robot b/SOL005/NSDManagement-API/NSDArchiveContent.robot similarity index 66% rename from SOL005/NSDManagement-API/NSDContent.robot rename to SOL005/NSDManagement-API/NSDArchiveContent.robot index aaf583164..1e6b6fb40 100644 --- a/SOL005/NSDManagement-API/NSDContent.robot +++ b/SOL005/NSDManagement-API/NSDArchiveContent.robot @@ -9,19 +9,6 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_veri Library OperatingSystem *** Test Cases *** -Get single file NSD Content in Plain Format - [Documentation] Test ID: 5.3.1.3.1 - ... Test title: Get single file NSD Content in Plain Format - ... Test objective: The objective is to test the retrieval of the NSD Content in plain format and perform a validation that returned content is in plain format - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NSD is implemented as a single file - ... Post-Conditions: none - Get single file NSD Content in Plain Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is text/plain - Get NSD Content in Zip Format [Documentation] Test ID: 5.3.1.3.2 ... Test title: Get NSD Content in Zip Format @@ -35,45 +22,6 @@ Get NSD Content in Zip Format Check HTTP Response Status Code Is 200 Check HTTP Response Header Content-Type Is application/zip -Get single file NSD Content in Plain or Zip Format - [Documentation] Test ID: 5.3.1.3.3 - ... Test title: Get single file NSD Content in Plain or Zip Format - ... Test objective: The objective is to test the retrieval of the single file NSD Content when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Plain or Zip format - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NSD Content is implemented as a single file - ... Post-Conditions: none - Get single file NSD Content in Plain or Zip Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is Any of text/plain application/zip - -Get multi file NSD Content in Plain or Zip Format - [Documentation] Test ID: 5.3.1.3.4 - ... Test title: Get multi file NSD Content in Plain or Zip Format - ... Test objective: The objective is to test the retrieval of the multi file NSD Content when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NSD is implemented as a multi file - ... Post-Conditions: none - Get multi file NSD Content in Plain or Zip Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get multi file NSD Content in Plain Format - [Documentation] Test ID: 5.3.1.3.5 - ... Test title: Get multi file NSD Content in Plain Format - ... Test objective: The objective is to test that the retrieval of the multi file NSD Content fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NSD Content is implemented as a multi file - ... Post-Conditions: none - Get multi file NSD Content in Plain Format - Check HTTP Response Status Code Is 406 - Check HTTP Response Body Json Schema Is ProblemDetails - Get NSD Content with invalid resource identifier [Documentation] Test ID: 5.3.1.3.6 ... Test title: Get NSD Content with invalid resource identifier @@ -85,6 +33,7 @@ Get NSD Content with invalid resource identifier ... Post-Conditions: none Get NSD Content with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails Get NSD Content with conflict due to onboarding state [Documentation] Test ID: 5.3.1.3.7 @@ -137,7 +86,8 @@ GET NSD Content with invalid Range Request ... Applicability: The NFVO supports range requests to return single range of bytes from the NSD file ... Post-Conditions: none GET NSD Content with invalid Range Request - Check HTTP Response Status Code Is 416 + Check HTTP Response Status Code Is 416 + Check HTTP Response Body Json Schema Is ProblemDetails Upload NSD Content as Zip file in asynchronous mode [Documentation] Test ID: 5.3.1.3.11 @@ -151,20 +101,6 @@ Upload NSD Content as Zip file in asynchronous mode Send PUT Request to upload NSD Content as zip file in asynchronous mode Check HTTP Response Status Code Is 202 Check Post Condition NSD Content has been Uploaded - - -Upload NSD Content as plain text file in asynchronous mode - [Documentation] Test ID: 5.3.1.3.12 - ... Test title: Upload NSD Content as plain text file in asynchronous mode - ... Test objective: The objective is to test the upload of an NSD Content in plain text format when the NFVO supports the asynchronous upload mode. - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO supports the upload of NSD contents in asynchronous mode - ... Post-Conditions: none - Send PUT Request to upload NSD Content as plain text file in asynchronous mode - Check HTTP Response Status Code Is 202 - Check Post Condition NSD Content has been Uploaded Upload NSD Content as Zip file in synchronous mode [Documentation] Test ID: 5.3.1.3.13 @@ -178,20 +114,6 @@ Upload NSD Content as Zip file in synchronous mode Send PUT Request to upload NSD Content as zip file in synchronous mode Check HTTP Response Status Code Is 204 Check Postcondition NSD Content is uploaded and available in the NFVO - -Upload NSD Content as plain text file in synchronous mode - [Documentation] Test ID: 5.3.1.3.14 - ... Test title: Upload NSD Content as plain text file in synchronous mode - ... Test objective: The objective is to test the upload of an NSD Content in plain text format when the NFVO supports the synchronous upload mode. - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO supports the upload of NSD contents in synchronous mode - ... Post-Conditions: The NSD content is successfully uploaded and available in the NFVO - Send PUT Request to upload NSD Content as plain text file in synchronous mode - Check HTTP Response Status Code Is 204 - Check Postcondition NSD Content is uploaded and available in the NFVO - Upload NSD Content with conflict due to onboarding state [Documentation] Test ID: 5.3.1.3.15 diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 9304e5e06..4304dc316 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -319,15 +319,7 @@ Check HTTP Response Header Content-Length Is Present and Matches the requested r Log Check Content-Length HTTP Header Should Contain ${response['headers']} Content-Length Should Be Equal As Integers ${response['headers']['Content-Length']} ${length} - Log Header Content-Length is present - -Get single file NSD Content 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}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content - ${output}= Output response - Set Suite Variable ${response} ${output} + Log Header Content-Length is present Get NSD Content in Zip Format Log Trying to get a NSD present in the NFVO Catalogue @@ -337,35 +329,8 @@ Get NSD Content in Zip Format ${output}= Output response Set Suite Variable ${response} ${output} -Get single file NSD Content in Plain or Zip Format - Log Trying to get a NSD present in the NFVO Catalogue - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content - ${output}= Output response - Set Suite Variable ${response} ${output} - -Get multi file NSD Content in Plain or Zip Format - Log Trying to get a VNFD from a given NSD Management present in the NFVO Catalogue - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content - ${output}= Output response - Set Suite Variable ${response} ${output} - -Get multi file NSD Content 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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content - ${output}= Output response - Set Suite Variable ${response} ${output} - Get NSD Content with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID - Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${erroneous_nsdInfoId}/nsd_content @@ -374,7 +339,6 @@ Get NSD Content with invalid resource identifier 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_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd_content @@ -410,18 +374,7 @@ Send PUT Request to upload NSD Content as zip file in asynchronous mode ${response}= Output response body Should Be Empty ${response} ${output}= Output response - Set Suite Variable ${response} ${output} - -Send PUT Request to upload NSD Content as plain text file in asynchronous mode - Log Trying to perform a PUT. This method upload the content of a NSD - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File ${contentPlainFile} - PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content ${body} - ${response}= Output response body - Should Be Empty ${response} - ${output}= Output response - Set Suite Variable ${response} ${output} + Set Suite Variable ${response} ${output} Send PUT Request to upload NSD Content as zip file in synchronous mode Log Trying to perform a PUT. This method upload the content of a NSD @@ -434,17 +387,6 @@ Send PUT Request to upload NSD Content as zip file in synchronous mode ${output}= Output response Set Suite Variable ${response} ${output} -Send PUT Request to upload NSD Content as plain text file in synchronous mode - Log Trying to perform a PUT. This method upload the content of a NSD - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File ${contentPlainFile} - PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content ${body} - ${response}= Output response body - Should Be Empty ${response} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check Post Condition NSD Content has been Uploaded Log Checking NsdOnboardingNotification Recieved Wait Until Keyword Succeeds ${retry} ${interval} Check Response is NsdOnboardingNotification @@ -458,7 +400,7 @@ Check Response is NsdOnboardingNotification Check Postcondition NSD Content is uploaded and available in the NFVO - Get single file NSD Content in Plain or Zip Format + Get NSD Content in Zip Format Check HTTP Response Status Code Is 200 Send PUT Request to upload NSD Content with conflict due to onboarding state @@ -718,7 +660,25 @@ Send PUT Request for Individual PNF Descriptor Get PNFD Content Log Trying to get a NSD present in the NFVO Catalogue - Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get PNFD Content with Range Request + Log Trying to get a NSD present in the NFVO Catalogue 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}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get PNFD Content with invalid Range Request + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${output}= Output response @@ -726,7 +686,7 @@ Get PNFD Content Get PNFD Content with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID - Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${erroneous_pnfdInfoId}/pnfd_content ${output}= Output response @@ -734,15 +694,15 @@ Get PNFD Content with invalid resource identifier Get PNFD Content with conflict due to onboarding state Log Trying to get a PNFD present in the NFVO Catalogue - Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${onboardingStatePnfdId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} -Send PUT Request to upload PNFD Content as plain text file +Send PUT Request to upload PNFD Content as zip file Log Trying to perform a PUT. This method upload the content of a PNFD - Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body}= Get File ${contentFilePnfd} PUT ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${body} @@ -753,7 +713,7 @@ Send PUT Request to upload PNFD Content as plain text file Send PUT Request to upload PNFD Content with conflict due to onboarding state Log Trying to perform a PUT. This method upload the content of a PNFD - Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body}= Get Binary File ${contentFilePnfd} PUT ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${creatingNsdInfoId}/pnfd_content ${body} @@ -1056,4 +1016,7 @@ 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}/${apiVersion}/ns_descriptors/${nsdInfoId} - Should Be Equal As Strings ${response['status']} 200 \ No newline at end of file + Should Be Equal As Strings ${response['status']} 200 + +Wait for individual grant successful notification + Wait Until Keyword Succeeds ${retry} ${interval} Get PNFD Content diff --git a/SOL005/NSDManagement-API/PNFDContent.robot b/SOL005/NSDManagement-API/PNFDArchiveContent.robot similarity index 69% rename from SOL005/NSDManagement-API/PNFDContent.robot rename to SOL005/NSDManagement-API/PNFDArchiveContent.robot index 740ef2a26..ccf003da8 100644 --- a/SOL005/NSDManagement-API/PNFDContent.robot +++ b/SOL005/NSDManagement-API/PNFDArchiveContent.robot @@ -12,7 +12,7 @@ Library OperatingSystem Get PNFD Content [Documentation] Test ID: 5.3.1.6.1 ... Test title: Get PNFD Content - ... Test objective: The objective is to test the retrieval of the PNFD Content in plain format and perform a validation that returned content is in plain format + ... Test objective: The objective is to test the retrieval of the PNFD Content in zip format and perform a validation that returned content is in plain format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO @@ -20,7 +20,7 @@ Get PNFD Content ... Post-Conditions: none Get PNFD Content Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is text/plain + Check HTTP Response Header Content-Type Is application/zip Get PNFD Content with invalid resource identifier [Documentation] Test ID: 5.3.1.6.2 @@ -47,27 +47,25 @@ Get PNFD Content with conflict due to onboarding state Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - -Upload PNFD Content as plain text file +Upload PNFD Content as zip file [Documentation] Test ID: 5.3.1.6.4 - ... Test title: Upload PNFD Content as plain text file + ... Test title: Upload PNFD Content as zip file ... Test objective: The objective is to test the upload of a PNFD Content in plain text format. ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The uploaded PNFD content is available in the NFVO - Send PUT Request to upload PNFD Content as plain text file + Send PUT Request to upload PNFD Content as zip file Check HTTP Response Status Code Is 204 Check Postcondition PNFD Content Exists - Upload PNFD Content with conflict due to onboarding state [Documentation] Test ID: 5.3.1.6.5 ... Test title: Upload PNFD Content with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the PNFD Content fails due to a conflict when the PNFD is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD for which the PNFD Content is requested is different from CREATED. - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -111,3 +109,42 @@ DELETE PNFD Content - Method not implemented Send DELETE Request for PNFD Content Check HTTP Response Status Code Is 405 Check Postcondition PNFD Content Exists + +Get PNFD Content with Range Request and NFVO supporting Range Requests + [Documentation] Test ID: 5.3.1.6.9 + ... Test title: Get PNFD Content with Range Request and NFVO supporting Range Requests + ... Test objective: The objective is to test the retrieval of the PNFD Content in plain format when using a range request to return single range of bytes from the file, with the NFVO supporting it + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD Content with Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Response Header Content-Type Is application/zip + Check HTTP Response Header Content-Range Is Present and Matches the requested range + +Get PNFD Content with invalid Range Request + [Documentation] Test ID: 5.3.1.6.10 + ... Test title: Get PNFD Content with invalid Range Request + ... Test objective: The objective is to test the retrieval of the PNFD Content in plain format and perform a validation that returned content is in plain format + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD Content with invalid Range Request + Check HTTP Response Status Code Is 416 + +Upload PNFD Archive Content + [Documentation] Test ID: 5.3.1.6.11 + ... Test title: Upload PNFD Archive Content + ... Test objective: The objective is to test the PNFD archive has been accepted for uploading, but the processing has not been completed. + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request to upload PNFD Content as zip file + Check HTTP Response Status Code Is 202 + Wait for individual grant successful notification \ No newline at end of file diff --git a/SOL005/NSDManagement-API/Subscriptions.robot b/SOL005/NSDManagement-API/Subscriptions.robot index d70615f82..131b7c2ff 100644 --- a/SOL005/NSDManagement-API/Subscriptions.robot +++ b/SOL005/NSDManagement-API/Subscriptions.robot @@ -24,7 +24,6 @@ Get All NSD Management Subscriptions Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsdmSubscriptions - Get NSD Management Subscriptions with attribute-based filter [Documentation] Test ID: 5.3.1.7.2 ... Test title: Get NSD Management Subscriptions with attribute-based filter @@ -39,7 +38,6 @@ Get NSD Management Subscriptions with attribute-based filter Check HTTP Response Body Json Schema Is NsdmSubscriptions Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter - Get NSD Management Subscriptions with invalid attribute-based filter [Documentation] Test ID: 5.3.1.7.3 ... Test title: Get NSD Management Subscriptions with attribute-based filters @@ -64,6 +62,7 @@ GET NSD Management Subscription with invalid resource endpoint ... Post-Conditions: none Get NSD Management Subscriptions with invalid resource endpoint Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails Create new NSD Management subscription [Documentation] Test ID: 5.3.1.7.5 @@ -80,7 +79,6 @@ Create new NSD Management subscription Check HTTP Response Body NsdmSubscription Attributes Values Match the Issued Subscription Check Postcondition NSD Management Subscription Is Set - Create duplicated NSD Management subscription with NFVO not creating duplicated subscriptions [Tags] no-duplicated-subs [Documentation] Test ID: 5.3.1.7.6 @@ -97,7 +95,6 @@ Create duplicated NSD Management subscription with NFVO not creating duplicated Check HTTP Response Header Contains Location Check Postcondition Subscription Resource Returned in Location Header Is Available - Create duplicated NSD Management subscription with NFVO creating duplicated subscriptions [Tags] duplicated-subs [Documentation] Test ID: 5.3.1.7.7 @@ -114,7 +111,6 @@ Create duplicated NSD Management subscription with NFVO creating duplicated subs Check HTTP Response Body NsdmSubscription Attributes Values Match the Issued Subscription Check Postcondition NSD Management Subscription Is Set - PUT NSD Management Subscriptions - Method not implemented [Documentation] Test ID: 5.3.1.7.8 ... Test title: PUT NSD Management Subscriptions - Method not implemented @@ -126,8 +122,7 @@ PUT NSD Management Subscriptions - Method not implemented ... Post-Conditions: none Send Put Request for NSD Management Subscriptions Check HTTP Response Status Code Is 405 - - + PATCH NSD Management Subscriptions - Method not implemented [Documentation] Test ID: 5.3.1.7.9 ... Test title: PATCH NSD Management Subscriptions - Method not implemented @@ -139,7 +134,6 @@ PATCH NSD Management Subscriptions - Method not implemented ... Post-Conditions: none Send Patch Request for NSD Management Subscriptions Check HTTP Response Status Code Is 405 - DELETE NSD Management Subscriptions - Method not implemented [Documentation] Test ID: 5.3.1.7.10 @@ -178,4 +172,16 @@ Get NSD Management Subscriptions - Bad Request Response too Big ... Post-Conditions: none Get all NSD Management Subscriptions Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +Create new NSD Management subscription - Unprocessable Entity + [Documentation] Test ID: 5.3.1.7.13 + ... Test title: Create new NSD Management subscription - Unprocessable Entity + ... Test objective: The objective is to test the creation of a new NSD Management subscription fials when content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed + ... Pre-conditions: none + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send Post Request for NSD Management Subscription + Check HTTP Response Status Code Is 422 \ No newline at end of file -- GitLab From 43547b7b4c4751fa22ca79ae617a57ee9dac4393 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 16 Oct 2020 12:02:12 +0500 Subject: [PATCH 097/580] TDs removed --- SOL005/NSDManagement-API/NSDArchiveContent.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL005/NSDManagement-API/NSDArchiveContent.robot b/SOL005/NSDManagement-API/NSDArchiveContent.robot index 1e6b6fb40..7a1e39016 100644 --- a/SOL005/NSDManagement-API/NSDArchiveContent.robot +++ b/SOL005/NSDManagement-API/NSDArchiveContent.robot @@ -163,4 +163,4 @@ DELETE NSD Content - Method not implemented ... Post-Conditions: The NSD content is not deleted by the failed operation Send DELETE Request for NSD Content Check HTTP Response Status Code Is 405 - Check Postcondition NSD Content Exists + Check Postcondition NSD Content Exists \ No newline at end of file -- GitLab From 632473819a5c7c4e58213c6f5b8ceac143489ce1 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 16 Oct 2020 15:06:10 +0500 Subject: [PATCH 098/580] New Resource NSD added --- SOL005/NSDManagement-API/NSD.robot | 142 +++++++++++++++++- .../NSDManagementKeywords.robot | 95 +++++++++++- 2 files changed, 234 insertions(+), 3 deletions(-) diff --git a/SOL005/NSDManagement-API/NSD.robot b/SOL005/NSDManagement-API/NSD.robot index 6271e3afe..2757b4872 100644 --- a/SOL005/NSDManagement-API/NSD.robot +++ b/SOL005/NSDManagement-API/NSD.robot @@ -7,4 +7,144 @@ Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library OperatingSystem -*** Test Cases *** \ No newline at end of file +*** Test Cases *** +*** Test Cases *** +Get single file NSD Content in Plain Format + [Documentation] Test ID: 5.3.1.10.1 + ... Test title: Get single file NSD in Plain Format + ... Test objective: The objective is to test the retrieval of the NSD in plain format within a NSD archive and perform a validation that returned content is in plain format + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NSD is implemented as a single file + ... Post-Conditions: none + Get single file NSD in Plain Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get NSD in Zip Format + [Documentation] Test ID: 5.3.1.10.2 + ... Test title: Get NSD in Zip Format + ... Test objective: The objective is to test the retrieval of the NSD in zip format within a NSD archive and perform a validation that returned content is in zip format + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD in Zip Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get single file NSD in Plain or Zip Format + [Documentation] Test ID: 5.3.1.10.3 + ... Test title: Get single file NSDin Plain or Zip Format + ... Test objective: The objective is to test the retrieval of the single file NSD within a NSD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that response is in Plain or Zip format + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NSD is implemented as a single file + ... Post-Conditions: none + Get single file NSD in Plain or Zip Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is Any of text/plain application/zip + +Get multi file NSD in Plain or Zip Format + [Documentation] Test ID: 5.3.1.10.4 + ... Test title: Get multi file NSD in Plain or Zip Format + ... Test objective: The objective is to test the retrieval of the multi file NSD within a NSD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NSD is implemented as a multi file + ... Post-Conditions: none + Get multi file NSD in Plain or Zip Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get multi file NSD in Plain Format + [Documentation] Test ID: 5.3.1.10.5 + ... Test title: Get multi file NSD in Plain Format + ... Test objective: The objective is to test that the retrieval of the multi file NSD within a NSD archive fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NSD is implemented as a multi file + ... Post-Conditions: none + Get multi file NSD in Plain Format + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get NSD Content with invalid resource identifier + [Documentation] Test ID: 5.3.1.10.6 + ... Test title: Get NSD Content with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of the NSD within a NSD archive fails when using an invalid resource identifier + ... Pre-conditions: none + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD with invalid resource identifier + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get NSD with conflict due to onboarding state + [Documentation] Test ID: 5.3.1.10.7 + ... Test title: Get NSD with conflict due to onboarding state + ... Test objective: The objective is to test that the retrieval of the NSD within a NSD archive fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the NSD is different from ONBOARDED. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD with conflict due to onboarding state + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST NSD - Method not implemented + [Documentation] Test ID: 5.3.1.10.8 + ... Test title: POST NSD - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor + ... Pre-conditions: none + ... Reference: Clause 5.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for NSD + Check HTTP Response Status Code Is 405 + +PUT NSD - Method not implemented + [Documentation] Test ID: 5.3.1.10.9 + ... Test title: PUT NSD - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor + ... Pre-conditions: none + ... Reference: Clause 5.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for NSD + Check HTTP Response Status Code Is 405 + +PATCH NSD Content - Method not implemented + [Documentation] Test ID: 5.3.1.10.10 + ... Test title: PATCH NSD Content - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor + ... Pre-conditions: none + ... Reference: Clause 5.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for NSD Content + Check HTTP Response Status Code Is 405 + +DELETE NSD Content - Method not implemented + [Documentation] Test ID: 5.3.1.10.11 + ... Test title: DELETE NSD Content - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor content + ... Pre-conditions: none + ... Reference: Clause 5.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: The NSD content is not deleted by the failed operation + Send DELETE Request for NSD Content + Check HTTP Response Status Code Is 405 + Check Postcondition NSD Content Exists \ No newline at end of file diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 4304dc316..9967ec48b 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -849,8 +849,7 @@ Check HTTP Response Status Code Is [Arguments] ${expected_status} Should Be Equal As Strings ${response['status']} ${expected_status} Log Status code validated - - + Check HTTP Response Body Json Schema Is [Arguments] ${input} Should Contain ${response['headers']['Content-Type']} application/json @@ -1020,3 +1019,95 @@ Check PostCondition GET Individual Network Service Descriptor Information Wait for individual grant successful notification Wait Until Keyword Succeeds ${retry} ${interval} Get PNFD Content + +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}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get single file NSD in Plain or Zip Format + Log Trying to get a NSD present in the NFVO Catalogue + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get multi file NSD in Plain or Zip Format + Log Trying to get a VNFD from a given NSD Management present in the NFVO Catalogue + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get NSD with invalid resource identifier + Log Trying to perform a negative get, using an erroneous package ID + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${erroneous_nsdInfoId}/nsd + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get NSD 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}"} + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + ${output}= Output response + Set Suite Variable ${response} ${output} -- GitLab From 0ec571627c324f442e5e1521f731178566718ea4 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 16 Oct 2020 15:07:55 +0500 Subject: [PATCH 099/580] minor bugs fixed --- SOL005/NSDManagement-API/NSD.robot | 18 ++++++++---------- .../NSDManagement-API/NSDArchiveContent.robot | 11 +++++------ .../NSDManagementKeywords.robot | 3 --- 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/SOL005/NSDManagement-API/NSD.robot b/SOL005/NSDManagement-API/NSD.robot index 2757b4872..e71c8d905 100644 --- a/SOL005/NSDManagement-API/NSD.robot +++ b/SOL005/NSDManagement-API/NSD.robot @@ -7,7 +7,6 @@ Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library OperatingSystem -*** Test Cases *** *** Test Cases *** Get single file NSD Content in Plain Format [Documentation] Test ID: 5.3.1.10.1 @@ -124,27 +123,26 @@ PUT NSD - Method not implemented Send PUT Request for NSD Check HTTP Response Status Code Is 405 -PATCH NSD Content - Method not implemented +PATCH NSD - Method not implemented [Documentation] Test ID: 5.3.1.10.10 - ... Test title: PATCH NSD Content - Method not implemented + ... Test title: PATCH NSD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor ... Pre-conditions: none ... Reference: Clause 5.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none - Send PATCH Request for NSD Content + Send PATCH Request for NSD Check HTTP Response Status Code Is 405 -DELETE NSD Content - Method not implemented +DELETE NSD - Method not implemented [Documentation] Test ID: 5.3.1.10.11 - ... Test title: DELETE NSD Content - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor content + ... Test title: DELETE NSD - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor ... Pre-conditions: none ... Reference: Clause 5.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NSD content is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for NSD Content - Check HTTP Response Status Code Is 405 - Check Postcondition NSD Content Exists \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSDManagement-API/NSDArchiveContent.robot b/SOL005/NSDManagement-API/NSDArchiveContent.robot index 7a1e39016..045c3f3af 100644 --- a/SOL005/NSDManagement-API/NSDArchiveContent.robot +++ b/SOL005/NSDManagement-API/NSDArchiveContent.robot @@ -94,7 +94,7 @@ Upload NSD Content as Zip file in asynchronous mode ... Test title: Upload NSD Content as Zip file in asynchronous mode ... Test objective: The objective is to test the upload of an NSD Content in Zip format when the NFVO supports the asynchronous upload mode. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the upload of NSD contents in asynchronous mode ... Post-Conditions: NSD Uploaded @@ -107,7 +107,7 @@ Upload NSD Content as Zip file in synchronous mode ... Test title: Upload NSD Content as Zip file in synchronous mode ... Test objective: The objective is to test the upload of an NSD Content in Zip format when the NFVO supports the synchronous upload mode. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the upload of NSD contents in synchronous mode ... Post-Conditions: The NSD content is successfully uploaded and available in the NFVO @@ -120,7 +120,7 @@ Upload NSD Content with conflict due to onboarding state ... Test title: Upload NSD Content with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the NSD Content fails due to a conflict when the NSD is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD for which the NSD Content is requested is different from ONBOARDED. - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,6 @@ DELETE NSD Content - Method not implemented ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NSD content is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for NSD Content - Check HTTP Response Status Code Is 405 - Check Postcondition NSD Content Exists \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 9967ec48b..61ec26c2b 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -436,9 +436,6 @@ Send DELETE Request for NSD Content ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition NSD Content Exists - Get NSD Content in Zip Format - GET all PNF Descriptors Information Log The GET method queries multiple PNF descriptors Set Headers {"Accept": "${ACCEPT_JSON}"} -- GitLab From 731933e071324078e0c4e17fd580df82ec0ccf17 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 16 Oct 2020 15:58:48 +0500 Subject: [PATCH 100/580] New Resource NSD Archive Manifest added --- SOL005/NSDManagement-API/NSD.robot | 25 ++++++-- .../NSDManagementKeywords.robot | 64 +++++++++++++++++++ 2 files changed, 83 insertions(+), 6 deletions(-) diff --git a/SOL005/NSDManagement-API/NSD.robot b/SOL005/NSDManagement-API/NSD.robot index e71c8d905..b70f7ab85 100644 --- a/SOL005/NSDManagement-API/NSD.robot +++ b/SOL005/NSDManagement-API/NSD.robot @@ -97,10 +97,23 @@ Get NSD with conflict due to onboarding state ... Post-Conditions: none Get NSD with conflict due to onboarding state Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails + Check HTTP Response Body Json Schema Is ProblemDetails + +Get NSD with security information + [Documentation] Test ID: 5.3.1.10.8 + ... Test title: Get NSD with security information + ... Test objective: The objective is to test the retrieval of the NSD within a NSD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip POST NSD - Method not implemented - [Documentation] Test ID: 5.3.1.10.8 + [Documentation] Test ID: 5.3.1.10.9 ... Test title: POST NSD - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor ... Pre-conditions: none @@ -112,7 +125,7 @@ POST NSD - Method not implemented Check HTTP Response Status Code Is 405 PUT NSD - Method not implemented - [Documentation] Test ID: 5.3.1.10.9 + [Documentation] Test ID: 5.3.1.10.10 ... Test title: PUT NSD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor ... Pre-conditions: none @@ -124,7 +137,7 @@ PUT NSD - Method not implemented Check HTTP Response Status Code Is 405 PATCH NSD - Method not implemented - [Documentation] Test ID: 5.3.1.10.10 + [Documentation] Test ID: 5.3.1.10.11 ... Test title: PATCH NSD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor ... Pre-conditions: none @@ -136,7 +149,7 @@ PATCH NSD - Method not implemented Check HTTP Response Status Code Is 405 DELETE NSD - Method not implemented - [Documentation] Test ID: 5.3.1.10.11 + [Documentation] Test ID: 5.3.1.10.12 ... Test title: DELETE NSD - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor ... Pre-conditions: none @@ -144,5 +157,5 @@ DELETE NSD - Method not implemented ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none - Send DELETE Request for NSD Content + Send DELETE Request for NSD Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 61ec26c2b..60d89bf45 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -1108,3 +1108,67 @@ Send DELETE Request for NSD DELETE ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} + +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}/${apiVersion}/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}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/manifest/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get NSD Archive Manifest 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}"} + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${notOnboardedNsdInfoId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file -- GitLab From 2a68cb3510b9800d284e58835e8071453f14fa5f Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 16 Oct 2020 16:00:40 +0500 Subject: [PATCH 101/580] file NSDArchiveManifest.robot added --- .../NSDArchiveManifest.robot | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 SOL005/NSDManagement-API/NSDArchiveManifest.robot diff --git a/SOL005/NSDManagement-API/NSDArchiveManifest.robot b/SOL005/NSDManagement-API/NSDArchiveManifest.robot new file mode 100644 index 000000000..3980452b9 --- /dev/null +++ b/SOL005/NSDManagement-API/NSDArchiveManifest.robot @@ -0,0 +1,96 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Resource environment/nsDescriptors.txt # Specific nsDescriptors Parameters +Resource NSDManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem + +*** Test Cases *** +Get NSD Archive Manifest + [Documentation] Test ID: 5.3.1.11.1 + ... Test title: Get NSD Archive Manifest + ... Test objective: The objective is to test that GET method reads the content of the manifest file within an NSD archive + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD Archive Manifest + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get NSD Archive Manifest with security information + [Documentation] Test ID: 5.3.1.11.2 + ... Test title: Get NSD Archive Manifest with security information + ... Test objective: The objective is to test the retrieval of content of the manifest file within an NSD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD Archive Manifest with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get NSD Archive Manifest with conflict due to onboarding state + [Documentation] Test ID: 5.3.1.11.3 + ... Test title: Get NSD Archive Manifest with conflict due to onboarding state + ... Test objective: The objective is to test that the retrieval of content of the manifest file within an NSD archive fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the NSD is different from ONBOARDED. + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD Archive Manifest with conflict due to onboarding state + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST NSD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.11.4 + ... Test title: POST NSD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for NSD Archive Manifest + Check HTTP Response Status Code Is 405 + +PUT NSD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.11.5 + ... Test title: PUT NSD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for NSD Archive Manifest + Check HTTP Response Status Code Is 405 + +PATCH NSD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.11.6 + ... Test title: PATCH NSD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for NSD Archive Manifest + Check HTTP Response Status Code Is 405 + +DELETE NSD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.11.7 + ... Test title: DELETE NSD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for NSD Archive Manifest + Check HTTP Response Status Code Is 405 \ No newline at end of file -- GitLab From 604b196ad9cbdf04c7075c786011491f1e5b9172 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 20 Oct 2020 15:28:11 +0500 Subject: [PATCH 102/580] New Resource PNFD added --- SOL005/NSDManagement-API/NSD.robot | 2 +- .../NSDManagementKeywords.robot | 102 ++++++++++- SOL005/NSDManagement-API/PNFD.robot | 162 ++++++++++++++++++ .../PNFDArchiveContent.robot | 5 +- 4 files changed, 267 insertions(+), 4 deletions(-) create mode 100644 SOL005/NSDManagement-API/PNFD.robot diff --git a/SOL005/NSDManagement-API/NSD.robot b/SOL005/NSDManagement-API/NSD.robot index b70f7ab85..f91965cae 100644 --- a/SOL005/NSDManagement-API/NSD.robot +++ b/SOL005/NSDManagement-API/NSD.robot @@ -8,7 +8,7 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_veri Library OperatingSystem *** Test Cases *** -Get single file NSD Content in Plain Format +Get single file NSD in Plain Format [Documentation] Test ID: 5.3.1.10.1 ... Test title: Get single file NSD in Plain Format ... Test objective: The objective is to test the retrieval of the NSD in plain format within a NSD archive and perform a validation that returned content is in plain format diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 60d89bf45..a07d543c9 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -1171,4 +1171,104 @@ Send DELETE Request for NSD Archive Manifest Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/manifest ${output}= Output response - Set Suite Variable ${response} ${output} \ No newline at end of file + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get single file PNFD in Plain or Zip Format + Log Trying to get a PNFD present in the NFVO Catalogue + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get multi file PNFD in Plain or Zip Format + Log Trying to get a VNFD from a given PNFD Management present in the NFVO Catalogue + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get PNFD with invalid resource identifier + Log Trying to perform a negative get, using an erroneous package ID + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${erroneous_PNFDInfoId}/pnfd + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get PNFD with conflict due to onboarding state + Log Trying to get a VNFD from a given PNFD Management present in the NFVO Catalogue + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${onboardingStatePnfdId}/pnfd + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + ${output}= Output response + Set Suite Variable ${response} ${output} diff --git a/SOL005/NSDManagement-API/PNFD.robot b/SOL005/NSDManagement-API/PNFD.robot new file mode 100644 index 000000000..e1bdb91ca --- /dev/null +++ b/SOL005/NSDManagement-API/PNFD.robot @@ -0,0 +1,162 @@ +*** Settings *** +Documentation This Clause defines the content of the individual NS descriptor, i.e. PNFD content +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Resource environment/pnfDescriptors.txt # Specific PNFDescriptors Parameters +Resource NSDManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem + +*** Test Cases *** +Get single file PNFD in Plain Format + [Documentation] Test ID: 5.3.1.11.1 + ... Test title: Get single file PNFD in Plain Format + ... Test objective: The objective is to test the retrieval of the PNFD in plain format within a PNFD archive and perform a validation that returned content is in plain format + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The PNFD is implemented as a single file + ... Post-Conditions: none + Get single file PNFD in Plain Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get PNFD in Zip Format + [Documentation] Test ID: 5.3.1.11.2 + ... Test title: Get PNFD in Zip Format + ... Test objective: The objective is to test the retrieval of the PNFD in zip format within a PNFD archive and perform a validation that returned content is in zip format + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD in Zip Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get single file PNFD in Plain or Zip Format + [Documentation] Test ID: 5.3.1.11.3 + ... Test title: Get single file PNFDin Plain or Zip Format + ... Test objective: The objective is to test the retrieval of the single file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that response is in Plain or Zip format + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The PNFD is implemented as a single file + ... Post-Conditions: none + Get single file PNFD in Plain or Zip Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is Any of text/plain application/zip + +Get multi file PNFD in Plain or Zip Format + [Documentation] Test ID: 5.3.1.11.4 + ... Test title: Get multi file PNFD in Plain or Zip Format + ... Test objective: The objective is to test the retrieval of the multi file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The PNFD is implemented as a multi file + ... Post-Conditions: none + Get multi file PNFD in Plain or Zip Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get multi file PNFD in Plain Format + [Documentation] Test ID: 5.3.1.11.5 + ... Test title: Get multi file PNFD in Plain Format + ... Test objective: The objective is to test that the retrieval of the multi file PNFD within a PNFD archive fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The PNFD is implemented as a multi file + ... Post-Conditions: none + Get multi file PNFD in Plain Format + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get PNFD Content with invalid resource identifier + [Documentation] Test ID: 5.3.1.11.6 + ... Test title: Get PNFD Content with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails when using an invalid resource identifier + ... Pre-conditions: none + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD with invalid resource identifier + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get PNFD with conflict due to onboarding state + [Documentation] Test ID: 5.3.1.11.7 + ... Test title: Get PNFD with conflict due to onboarding state + ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the PNFD is different from ONBOARDED. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD with conflict due to onboarding state + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get PNFD with security information + [Documentation] Test ID: 5.3.1.11.8 + ... Test title: Get PNFD with security information + ... Test objective: The objective is to test the retrieval of the PNFD within a PNFD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +POST PNFD - Method not implemented + [Documentation] Test ID: 5.3.1.11.9 + ... Test title: POST PNFD - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new PNFD + ... Pre-conditions: none + ... Reference: Clause 5.4.7a.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for PNFD + Check HTTP Response Status Code Is 405 + +PUT PNFD - Method not implemented + [Documentation] Test ID: 5.3.1.11.10 + ... Test title: PUT PNFD - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD + ... Pre-conditions: none + ... Reference: Clause 5.4.7a.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for PNFD + Check HTTP Response Status Code Is 405 + +PATCH PNFD - Method not implemented + [Documentation] Test ID: 5.3.1.11.11 + ... Test title: PATCH PNFD - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD + ... Pre-conditions: none + ... Reference: Clause 5.4.7a.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for PNFD + Check HTTP Response Status Code Is 405 + +DELETE PNFD - Method not implemented + [Documentation] Test ID: 5.3.1.11.12 + ... Test title: DELETE PNFD - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete PNFD + ... Pre-conditions: none + ... Reference: Clause 5.4.7a.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for PNFD + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSDManagement-API/PNFDArchiveContent.robot b/SOL005/NSDManagement-API/PNFDArchiveContent.robot index ccf003da8..7a1697cc0 100644 --- a/SOL005/NSDManagement-API/PNFDArchiveContent.robot +++ b/SOL005/NSDManagement-API/PNFDArchiveContent.robot @@ -33,6 +33,7 @@ Get PNFD Content with invalid resource identifier ... Post-Conditions: none Get PNFD Content with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails Get PNFD Content with conflict due to onboarding state [Documentation] Test ID: 5.3.1.6.3 @@ -105,10 +106,9 @@ DELETE PNFD Content - Method not implemented ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The PNFD content is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for PNFD Content Check HTTP Response Status Code Is 405 - Check Postcondition PNFD Content Exists Get PNFD Content with Range Request and NFVO supporting Range Requests [Documentation] Test ID: 5.3.1.6.9 @@ -135,6 +135,7 @@ Get PNFD Content with invalid Range Request ... Post-Conditions: none Get PNFD Content with invalid Range Request Check HTTP Response Status Code Is 416 + Check HTTP Response Body Json Schema Is ProblemDetails Upload PNFD Archive Content [Documentation] Test ID: 5.3.1.6.11 -- GitLab From 863f070cb9cb0ef763a26520f91f6ce1b8933146 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 21 Oct 2020 10:50:55 +0500 Subject: [PATCH 103/580] New Resource PNFD Archive Manifest addedand fix issues --- .../NSDManagementKeywords.robot | 56 +++++++++++ SOL005/NSDManagement-API/PNFD.robot | 24 ++--- .../PNFDArchiveManifest.robot | 96 +++++++++++++++++++ 3 files changed, 164 insertions(+), 12 deletions(-) create mode 100644 SOL005/NSDManagement-API/PNFDArchiveManifest.robot diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index a07d543c9..245cac747 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -1272,3 +1272,59 @@ Send DELETE Request for PNFD DELETE ${apiRoot}/${apiName}/${apiVersion}/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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/manifest/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get PNFD Archive Manifest with conflict due to onboarding state + Log Trying to get a PNFD Management present in the NFVO Catalogue + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${notOnboardedNsdInfoId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/PNFD.robot b/SOL005/NSDManagement-API/PNFD.robot index e1bdb91ca..c63bc467c 100644 --- a/SOL005/NSDManagement-API/PNFD.robot +++ b/SOL005/NSDManagement-API/PNFD.robot @@ -10,7 +10,7 @@ Library OperatingSystem *** Test Cases *** Get single file PNFD in Plain Format - [Documentation] Test ID: 5.3.1.11.1 + [Documentation] Test ID: 5.3.1.12.1 ... Test title: Get single file PNFD in Plain Format ... Test objective: The objective is to test the retrieval of the PNFD in plain format within a PNFD archive and perform a validation that returned content is in plain format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -23,7 +23,7 @@ Get single file PNFD in Plain Format Check HTTP Response Header Content-Type Is text/plain Get PNFD in Zip Format - [Documentation] Test ID: 5.3.1.11.2 + [Documentation] Test ID: 5.3.1.12.2 ... Test title: Get PNFD in Zip Format ... Test objective: The objective is to test the retrieval of the PNFD in zip format within a PNFD archive and perform a validation that returned content is in zip format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -36,7 +36,7 @@ Get PNFD in Zip Format Check HTTP Response Header Content-Type Is application/zip Get single file PNFD in Plain or Zip Format - [Documentation] Test ID: 5.3.1.11.3 + [Documentation] Test ID: 5.3.1.12.3 ... Test title: Get single file PNFDin Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that response is in Plain or Zip format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -49,7 +49,7 @@ Get single file PNFD in Plain or Zip Format Check HTTP Response Header Content-Type Is Any of text/plain application/zip Get multi file PNFD in Plain or Zip Format - [Documentation] Test ID: 5.3.1.11.4 + [Documentation] Test ID: 5.3.1.12.4 ... Test title: Get multi file PNFD in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -62,7 +62,7 @@ Get multi file PNFD in Plain or Zip Format Check HTTP Response Header Content-Type Is application/zip Get multi file PNFD in Plain Format - [Documentation] Test ID: 5.3.1.11.5 + [Documentation] Test ID: 5.3.1.12.5 ... Test title: Get multi file PNFD in Plain Format ... Test objective: The objective is to test that the retrieval of the multi file PNFD within a PNFD archive fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -75,7 +75,7 @@ Get multi file PNFD in Plain Format Check HTTP Response Body Json Schema Is ProblemDetails Get PNFD Content with invalid resource identifier - [Documentation] Test ID: 5.3.1.11.6 + [Documentation] Test ID: 5.3.1.12.6 ... Test title: Get PNFD Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails when using an invalid resource identifier ... Pre-conditions: none @@ -88,7 +88,7 @@ Get PNFD Content with invalid resource identifier Check HTTP Response Body Json Schema Is ProblemDetails Get PNFD with conflict due to onboarding state - [Documentation] Test ID: 5.3.1.11.7 + [Documentation] Test ID: 5.3.1.12.7 ... Test title: Get PNFD with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD is different from ONBOARDED. @@ -101,7 +101,7 @@ Get PNFD with conflict due to onboarding state Check HTTP Response Body Json Schema Is ProblemDetails Get PNFD with security information - [Documentation] Test ID: 5.3.1.11.8 + [Documentation] Test ID: 5.3.1.12.8 ... Test title: Get PNFD with security information ... Test objective: The objective is to test the retrieval of the PNFD within a PNFD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -114,7 +114,7 @@ Get PNFD with security information Check HTTP Response Header Content-Type Is application/zip POST PNFD - Method not implemented - [Documentation] Test ID: 5.3.1.11.9 + [Documentation] Test ID: 5.3.1.12.9 ... Test title: POST PNFD - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new PNFD ... Pre-conditions: none @@ -126,7 +126,7 @@ POST PNFD - Method not implemented Check HTTP Response Status Code Is 405 PUT PNFD - Method not implemented - [Documentation] Test ID: 5.3.1.11.10 + [Documentation] Test ID: 5.3.1.12.10 ... Test title: PUT PNFD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD ... Pre-conditions: none @@ -138,7 +138,7 @@ PUT PNFD - Method not implemented Check HTTP Response Status Code Is 405 PATCH PNFD - Method not implemented - [Documentation] Test ID: 5.3.1.11.11 + [Documentation] Test ID: 5.3.1.12.11 ... Test title: PATCH PNFD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD ... Pre-conditions: none @@ -150,7 +150,7 @@ PATCH PNFD - Method not implemented Check HTTP Response Status Code Is 405 DELETE PNFD - Method not implemented - [Documentation] Test ID: 5.3.1.11.12 + [Documentation] Test ID: 5.3.1.12.12 ... Test title: DELETE PNFD - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete PNFD ... Pre-conditions: none diff --git a/SOL005/NSDManagement-API/PNFDArchiveManifest.robot b/SOL005/NSDManagement-API/PNFDArchiveManifest.robot new file mode 100644 index 000000000..7c3e330db --- /dev/null +++ b/SOL005/NSDManagement-API/PNFDArchiveManifest.robot @@ -0,0 +1,96 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Resource environment/nsDescriptors.txt # Specific nsDescriptors Parameters +Resource NSDManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem + +*** Test Cases *** +Get PNFD Archive Manifest + [Documentation] Test ID: 5.3.1.13.1 + ... Test title: Get PNFD Archive Manifest + ... Test objective: The objective is to test that GET method reads the content of the manifest file within an PNFD archive + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD Archive Manifest + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get PNFD Archive Manifest with security information + [Documentation] Test ID: 5.3.1.13.2 + ... Test title: Get PNFD Archive Manifest with security information + ... Test objective: The objective is to test the retrieval of content of the manifest file within an PNFD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD Archive Manifest with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get PNFD Archive Manifest with conflict due to onboarding state + [Documentation] Test ID: 5.3.1.13.3 + ... Test title: Get PNFD Archive Manifest with conflict due to onboarding state + ... Test objective: The objective is to test that the retrieval of content of the manifest file within an PNFD archive fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the PNFD is different from ONBOARDED. + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD Archive Manifest with conflict due to onboarding state + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST PNFD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.13.4 + ... Test title: POST PNFD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.7b.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for PNFD Archive Manifest + Check HTTP Response Status Code Is 405 + +PUT PNFD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.13.5 + ... Test title: PUT PNFD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.7b.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for PNFD Archive Manifest + Check HTTP Response Status Code Is 405 + +PATCH PNFD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.13.6 + ... Test title: PATCH PNFD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.7b.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for PNFD Archive Manifest + Check HTTP Response Status Code Is 405 + +DELETE PNFD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.13.7 + ... Test title: DELETE PNFD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.7b.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for PNFD Archive Manifest + Check HTTP Response Status Code Is 405 \ No newline at end of file -- GitLab From 429f89d24c1f13e076cd52535d7d023de6e19c66 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 21 Oct 2020 11:44:42 +0500 Subject: [PATCH 104/580] reference updated --- .../ApiVersion.robot | 20 +++++------ .../CancelOperationTask.robot | 14 ++++---- .../CancelOperationWorkflow.robot | 4 +-- .../ChangeExternalVNFConnectivityTask.robot | 10 +++--- ...hangeExternalVNFConnectivityWorkflow.robot | 2 +- .../ChangeVNFFlavourTask.robot | 14 ++++---- .../ChangeVNFFlavourWorkflow.robot | 2 +- .../CreateVNFWorkflow.robot | 2 +- .../DeleteVNFWorkflow.robot | 2 +- .../FailOperationTask.robot | 14 ++++---- .../FailOperationWorkflow.robot | 2 +- .../HealVNFTask.robot | 14 ++++---- .../HealVNFWorkflow.robot | 2 +- .../IndividualSubscription.robot | 12 +++---- .../IndividualVNFInstance.robot | 18 +++++----- .../IndividualVnfLcmOperationOccurence.robot | 12 +++---- .../InstantiateVNFTask.robot | 12 +++---- .../InstantiateVNFTaskWorkflow.robot | 2 +- .../ModifyVNFInformationWorkflow.robot | 2 +- .../NotificationEndpoint.robot | 8 ++--- .../OperateVNFTask.robot | 14 ++++---- .../OperateVNFWorkflow.robot | 2 +- .../RetryOperationTask.robot | 14 ++++---- .../RetryOperationWorkflow.robot | 4 +-- .../RollBackOperationWorkflow.robot | 4 +-- .../RollbackOperationTask.robot | 14 ++++---- .../ScaleVNFTask.robot | 14 ++++---- .../ScaleVNFToLevelTask.robot | 14 ++++---- .../ScaleVNFToLevelWorkflow.robot | 2 +- .../ScaleVNFWorkflow.robot | 2 +- .../Subscriptions.robot | 32 ++++++++--------- .../TerminateVNFTask.robot | 12 +++---- .../TerminateVNFWorkflow.robot | 2 +- .../VNFInstances.robot | 34 +++++++++---------- .../VnfLcmOperationOccurences.robot | 28 +++++++-------- 35 files changed, 180 insertions(+), 180 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot index 9b644479d..dd202cb4f 100644 --- a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot @@ -12,7 +12,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot index a59afa065..cd2102c59 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -13,7 +13,7 @@ POST Cancel operation task ... Test title: POST Cancel operation task ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. ... Pre-conditions: the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance status equal to FAILED_TEMP @@ -26,7 +26,7 @@ POST Cancel operation task Conflict ... Test title: POST Cancel operation task Conflict ... Test objective: The POST method is NOT cancelling an ongoing VNF lifecycle operation due to the fact that the VNF instance resource is not in STARTING, PROCESSING or ROLLING_BACK state ... Pre-conditions: operation is not in STARTING, PROCESSING or ROLLING_BACK state - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Cancel operation task Not Found ... Test title: POST Cancel operation task Not Found ... Test objective: The objective is to test that POST method cannot cancel a VNF lifecycle operation because the resource is not found ... Pre-conditions: - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Cancel operation task - Method not implemented ... Test title: GET Cancel operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Cancel operation task - Method not implemented ... Test title: PUT Cancel operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Cancel operation task - Method not implemented ... Test title: PATCH Cancel operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Cancel operation task - Method not implemented ... Test title: DELETE Cancel operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot index b3a52eb84..aa7455d28 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot @@ -20,7 +20,7 @@ Cancel a VNF LCM Operation - STARTING ... Test title: Cancel a VNF LCM Operation - STARTING ... Test objective: The objective is to test the workflow for Cancelling a VNF LCM Operation being in the STARTING state ... Pre-conditions: The VNF lifecycle management operation occurrence is in STARTING state. NFVO is subscribed to VNF LCM Operation Occurrence notifications (Test ID 5.4.20.1) - ... Reference: Clause 5.4.17 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.17 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in ROLLED_BACK state @@ -36,7 +36,7 @@ Cancel a VNF LCM Operation - PROCESSING - ROLLING_BACK ... Test title: Cancel a VNF LCM Operation - PROCESSING - ROLLING_BACK ... Test objective: The objective is to test the workflow for Cancelling a VNF LCM Operation being either in the PROCESSIONG or ROLLING_BACK state ... Pre-conditions: The VNF lifecycle management operation occurrence is in PROCESSING or ROLLING_BACK state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index be2f16094..e2a527820 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -13,7 +13,7 @@ POST Change external VNF connectivity ... Test title: POST Change external VNF connectivity ... Test objective: The objective is to test that POST method trigger a change in VNF external connectivity ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ GET Change external VNF connectivity - Method not implemented ... Test title: GET Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT Change external VNF connectivity - Method not implemented ... Test title: PUT Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH Change external VNF connectivity - Method not implemented ... Test title: PATCH Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE Change external VNF connectivity - Method not implemented ... Test title: DELETE Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot index 5db4c928f..d5c9beabe 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot @@ -20,7 +20,7 @@ Change external connectivity of VNF Workflow ... Test title: Change external connectivity of VNF Workflow ... Test objective: The objective is to change the external connectivity of a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.4.11 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.11 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. The VNFD supports the external connectivity change ... Post-Conditions: VNF instance still in INSTANTIATED state and external connectivity of the VNF is changed diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 8ebf82909..630e70279 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -13,7 +13,7 @@ POST Change deployment flavour of a vnfInstance ... Test title: POST Change deployment flavour of a vnfInstance ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because of a conflict with the state of the VNF instance resource. (VNF instance resource is not in NOT-INSTANTIATED state) ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Change deployment flavour of a vnfInstance Not Found ... Test title: POST Change deployment flavour of a vnfInstance Not Found ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Change deployment flavour VNFInstance - Method not implemented ... Test title: GET Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Change deployment flavour VNFInstance - Method not implemented ... Test title: PUT Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Change deployment flavour VNFInstance - Method not implemented ... Test title: PATCH Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Change deployment flavour VNFInstance - Method not implemented ... Test title: DELETE Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot index 7d9d96b68..b2d6e3ebd 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot @@ -20,7 +20,7 @@ Change VNF Flavour Workflow ... Test title: Change VNF Flavour Workflow ... Test objective: The objective is to test the workflow for a change flavour of an existing VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state . NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.7 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.7 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: Multiple flavours are supported for the VNF (as capability in the VNFD). NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance still in INSTANTIATED state and the flavour is changed diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot index e5e3012df..36f53d1a7 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot @@ -20,7 +20,7 @@ Create VNF Instance Resource ... Test title: Create VNF Instance workflow ... Test objective: The objective is to test the workflow for the creation of a new VNF instance resource. ... Pre-conditions: NFVO is subscribed to VNF Identifier Creation notifications - ... Reference: Clause 5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF instance resource has been created in "NOT_INSTANTIATED" state. diff --git a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot index cf7d52867..3b1c6a1c0 100644 --- a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot @@ -20,7 +20,7 @@ Delete VNF Instance Resource ... Test title: Delete VNF Instance workflow ... Test objective: The objective is to test the workflow for the deleteion of an existing VNF instance resource ... Pre-conditions: The VNF Instance resource is in NOT_INSTANTIATED state. NFVO is subscribed to VNF Identifier Creation notifications - ... Reference: Clause 5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF instance resource is deleted on the VNFM. diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index a5db3b48d..2ff77eb5f 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -13,7 +13,7 @@ POST Fail operation task ... Test title: POST Fail operation task ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF resource state is FINALLY_FAILED @@ -28,7 +28,7 @@ Post Fail operation task Conflict (Not-FAILED_TEMP) ... Test title: Post Fail operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ Post Fail operation task Not Found ... Test title: Post Fail operation task Not Found ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Fail operation task - Method not implemented ... Test title: GET Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -66,7 +66,7 @@ PUT Fail operation task - Method not implemented ... Test title: PUT Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -78,7 +78,7 @@ PATCH Fail operation task - Method not implemented ... Test title: PATCH Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -90,7 +90,7 @@ DELETE Fail operation task - Method not implemented ... Test title: DELETE Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot index be9b602e0..5ef0573ea 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot @@ -20,7 +20,7 @@ Fail a VNF LCM Operation Workflow ... Test title: Fail a VNF LCM Operation Workflow ... Test objective: The objective is to test the workflow for a Fail VNF LCM Operation ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.16 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.16 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED state diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index c30791d82..1bc6354d1 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -13,7 +13,7 @@ POST Heal a vnfInstance ... Test title: POST Heal a vnfInstance ... Test objective: The objective is to test that POST method heal a VNF instance ... Pre-conditions: the VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ POST Heal a vnfInstance Not Found ... Test title: POST Heal a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET Heal VNFInstance - Method not implemented ... Test title: GET Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ PUT Heal VNFInstance - Method not implemented ... Test title: PUT Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ PATCH Heal VNFInstance - Method not implemented ... Test title: PATCH Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ DELETE Heal VNFInstance - Method not implemented ... Test title: DELETE Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot index 854f1aed9..e7f4775aa 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot @@ -20,7 +20,7 @@ Heal a VNF Instance ... Test title: Heal a VNF Instance ... Test objective: The objective is to heal a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.4.9 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.9 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Heal a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot index 9d00ce943..051cb878a 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the Get individual subscription ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription deleted from VNFM @@ -73,7 +73,7 @@ GET Individual Subscription - Not Found ... Test title: GET Individual Subscription - Not Found ... Test objective: The objective is to test the retrieval of individual subscription fails when subscription is not present ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index c1fd08129..8dd6e9662 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -18,7 +18,7 @@ Post Individual VNFInstance - Method not implemented ... Test title: Post Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ Get Information about an individual VNF Instance ... Test title: Get Information about an individual VNF Instance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ PUT Individual VNFInstance - Method not implemented ... Test title: PUT Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ PATCH Individual VNFInstance ... Test title: PATCH Individual VNFInstance ... Test objective: This method modifies an individual VNF instance resource ... Pre-conditions: an existing VNF instance resource - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance modified @@ -68,7 +68,7 @@ PATCH Individual VNFInstance Precondition failed ... Test title: PATCH Individual VNFInstance Precondition failed ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: ETag mismatch - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance not modified @@ -81,7 +81,7 @@ PATCH Individual VNFInstance Conflict ... Test title: PATCH Individual VNFInstance Conflict ... Test objective: The objective is to test the conflict while modifying a VNF instance resource ... Pre-conditions: another LCM operation is ongoing - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance not modified @@ -94,7 +94,7 @@ DELETE Individual VNFInstance ... Test title: DELETE Individual VNFInstance ... Test objective: The objective is to delete a VNF instance ... Pre-conditions: the VNF instance resource is existing - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance deleted @@ -106,7 +106,7 @@ DELETE Individual VNFInstance Conflict ... Test title: DELETE Individual VNFInstance Conflict ... Test objective: The objective is to verify that the deletion cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resources are not deleted @@ -120,7 +120,7 @@ Get Information about an individual VNF Instance - Not Found ... Test title: Get Information about an individual VNF Instance - Not Found ... Test objective: The objective is to test that the retrieval of an individual VNF Instance fails when instance is not present. ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 6dce74a23..2a61f566c 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -12,7 +12,7 @@ Post Individual VNF LCM Operation occurrences - Method not implemented ... Test title: Post Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Individual VNF LCM Operation occurrences ... Test title: Get Individual VNF LCM Operation occurrences ... Test objective: The objective is to test that this method retrieve information about a VNF lifecycle management operation occurrence ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT Individual VNF LCM Operation occurrences - Method not implemented ... Test title: PUT Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PATCH Individual VNF LCM Operation occurrences - Method not implemented ... Test title: PATCH Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ PATCH Individual VNF LCM Operation occurrences - Method not implemented ... Test title: DELETE Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ Get Individual VNF LCM Operation occurrences - Not Found ... Test title: Get Individual VNF LCM Operation occurrences - Not Found ... Test objective: The objective is to test that the retrieval of VNF lifecycle management operation occurrence fails when instance is not present. ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 87d127b99..843138eca 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -15,7 +15,7 @@ Instantiate a vnfInstance ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Instantiate a vnfInstance Conflict ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to verify that the instantiation of the vnf cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ GET Instantiate VNFInstance - Method not implemented ... Test title: GET Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ PUT Instantiate VNFInstance - Method not implemented ... Test title: PUT Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ PATCH Instantiate VNFInstance - Method not implemented ... Test title: PATCH Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ DELETE Instantiate VNFInstance - Method not implemented ... Test title: DELETE Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot index 839d28a97..3945ebd84 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot @@ -22,7 +22,7 @@ VNF Instantiation ... Test title: VNF Instantiation workflow ... Test objective: The objective is to test the workflow for the instantiation of a VNF instance ... Pre-conditions: VNF instance resources is already created. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance in INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot index 74cf83d73..a38a7f520 100644 --- a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot @@ -20,7 +20,7 @@ Modify info of a VNF Instance ... Test title: Update information about a VNF instance ... Test objective: The objective is to update information about a VNF instance. ... Pre-conditions: VNF instance is created - ... Reference: Clause 5.3.6 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.3.6 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Update information of a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance info is updated diff --git a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot index 271e2c094..b956fd49b 100644 --- a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF LCM Operation Occurrence Start Notification ... Test title: VNF LCM Operation Occurrence Start Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Start Notification when a new VNF LCM operation is started in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ VNF LCM Operation Occurrence Result Notification ... Test title: VNF LCM Operation Occurrence Result Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Result Notification when a VNF LCM operation is completed in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: An VNF LCM operation is in progress, and a subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Creation Notification when a new VNF instance resource is created in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Deletion Notification when a VNF instance resource is deleted in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance resource is created, and a subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index d7d01667b..e585852b2 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -15,7 +15,7 @@ POST Operate a vnfInstance ... Test title: POST Operate a vnfInstance ... Test objective: The objective is to test that POST method operate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ POST Operate a vnfInstance Not Found ... Test title: POST Operate a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed currently, because the resource is not existing ... Pre-conditions: the VNF instance resource is in not existing - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Operate VNFInstance - Method not implemented ... Test title: GET Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ PUT Operate VNFInstance - Method not implemented ... Test title: PUT Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ PATCH Operate VNFInstance - Method not implemented ... Test title: PATCH Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ DELETE Operate VNFInstance - Method not implemented ... Test title: DELETE Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot index c6812d3f2..422748ad2 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot @@ -20,7 +20,7 @@ Operate a VNF Instance ... Test title: Operate a VNF Instance ... Test objective: The objective is to test the workflow of operational change of a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: change the operational state of a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and the operational state is changed diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index eb8d440e9..c937f06ec 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -16,7 +16,7 @@ Post Retry operation task ... Test title: Post Retry operation task ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Post Retry operation task Conflict (Not-FAILED_TEMP) ... Test title: Post Retry operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that the retry operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. (i.e. the VNF instance resource is not in FAILED_TEMP state) ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ Post Retry operation task Not Found ... Test title: Post Retry operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Retry operation task - Method not implemented ... Test title: GET Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.14.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -66,7 +66,7 @@ PUT Retry operation task - Method not implemented ... Test title: PUT Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.14.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -78,7 +78,7 @@ PATCH Retry operation task - Method not implemented ... Test title: PATCH Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.14.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -90,7 +90,7 @@ DELETE Retry operation task - Method not implemented ... Test title: DELETE Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.14.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot index f9858ebea..dc216358e 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot @@ -18,7 +18,7 @@ Retry VNF LCM Operation - Successful ... Test title: Retry VNF LCM Operation - Successful ... Test objective: The objective is to test the workflow for a successful Retry VNF LCM Operation and the status notifications ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in COMPLETED state @@ -35,7 +35,7 @@ Retry VNF LCM Operation - Unsuccessful ... Test title: Retry VNF LCM Operation - Unsuccessful ... Test objective: The objective is to test the workflow for an unsuccesful Retry VNF LCM Operation and the status notifications ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot index 92734b6f9..1c3d4b935 100644 --- a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot @@ -20,7 +20,7 @@ Rollback a VNF LCM Operation - Successful ... Test title: Rollback VNF LCM Operation - Successful ... Test objective: The objective is to test the workflow for a Rolling Back a VNF LCM Operation and the operation is successful ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.11 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.3.11 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in ROLLED_BACK state @@ -37,7 +37,7 @@ Rollback VNF LCM Operation - Unsuccessful ... Test title: Rollback VNF LCM Operation - Unsuccessful ... Test objective: The objective is to test the workflow for a Rollback VNF LCM Operation and the operation is not successful ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index dcc5f288b..b68a10519 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -15,7 +15,7 @@ Post Rollback operation task ... Test title: Post Rollback operation task ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method initiates a rollback on a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ POST Rollback operation task Not Found ... Test title: POST Rollback operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Rollback operation task - Method not implemented ... Test title: GET Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -66,7 +66,7 @@ PUT Rollback operation task - Method not implemented ... Test title: PUT Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -78,7 +78,7 @@ PATCH Rollback operation task - Method not implemented ... Test title: PATCH Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -90,7 +90,7 @@ DELETE Rollback operation task - Method not implemented ... Test title: DELETE Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index b8caee904..815b95445 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -14,7 +14,7 @@ POST Scale a vnfInstance ... Test title: POST Scale a vnfInstance ... Test objective: The objective is to scale a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the scale operation cannot be executed ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ POST Scale a vnfInstance Not Found ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed currently, because the VNF instance resource is not found. ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET Scale VNFInstance - Method not implemented ... Test title: GET Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ PUT Scale VNFInstance - Method not implemented ... Test title: PUT Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ PATCH Scale VNFInstance - Method not implemented ... Test title: PATCH Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ DELETE Scale VNFInstance - Method not implemented ... Test title: DELETE Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resource are not deleted diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 6706ed342..a746bbaa9 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -13,7 +13,7 @@ POST Scale a vnfInstance to level ... Test title: POST Scale a vnfInstance to level ... Test objective: The objective is to scale a VNF instance to a target level. ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the scale operation cannot be executed because the resource is not instantiated ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ Scale a vnfInstance Not Found ... Test title: Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed , because the VNF instance resource cannot be found. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET Scale to level VNFInstance - Method not implemented ... Test title: GET Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ PUT Scale to level VNFInstance - Method not implemented ... Test title: PUT Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ PATCH Scale to level VNFInstance - Method not implemented ... Test title: PATCH Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ DELETE Scale to level VNFInstance - Method not implemented ... Test title: DELETE Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resources are not deleted diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot index 9b67474be..d4e8ac9b6 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot @@ -18,7 +18,7 @@ VNF Instance Scale To Level ... Test title: VNF Instance Scale To Level workflow ... Test objective: The objective is to test the workflow for the scale to level of a VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state . NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.6 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.6 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Scale operation is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and VNF is scaled to the new level diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot index 12ec5afef..30d813c84 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot @@ -18,7 +18,7 @@ VNF Instance Scale Out ... Test title: VNF Instance Scale Out workflow ... Test objective: The objective is to test the workflow for the scaling out a VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state (Test ID 5.4.4.1). NFVO is subscribed to VNF LCM Operation Occurrence notifications (Test ID 5.4.20.1) - ... Reference: Clause 5.4.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Scale operation is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and VNF is scaled out diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index 84cc91dbe..043af19b9 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -14,7 +14,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The POST method creates a new subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -27,7 +27,7 @@ Create a new Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The objective is to test request to create a duplicate (same cakkbackurl and filter) subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: duplication is supported by SUT ... Post-Conditions: in response header Location shall not be null @@ -40,7 +40,7 @@ Create a new Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The objective is to test the request that does not create a duplicate (same callbackurl and filter) subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: duplication is not supported by SUT ... Post-Conditions: in response header Location shall not be null @@ -53,7 +53,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ GET Subscription - Filter ... Test title: GET Subscriptions - Filter ... Test objective: The objective is Get the list of active subscriptions using a filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is Get the list of active subscriptions using an invalid filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET subscriptions with all_fields attribute selector ... Test title: GET subscriptions with all_fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ GET subscriptions with exclude_default attribute selector ... Test title: GET subscriptions with exclude_default attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -119,7 +119,7 @@ GET subscriptions with fields attribute selector ... Test title: GET subscriptions with fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -132,7 +132,7 @@ GET subscriptions with exclude_fields attribute selector ... Test title: GET subscriptions with exclude_fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -145,7 +145,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -157,7 +157,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription not modified @@ -169,7 +169,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription not deleted @@ -181,7 +181,7 @@ GET Subscriptions as a Paged Response ... Test title: GET Subscriptions as a Paged Response ... Test objective: The objective is Get the list of active subscriptions as a Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -194,7 +194,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of the list of active subscriptions fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -207,7 +207,7 @@ POST Create a new Subscription - Unprocessable Entity ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index 928f931a8..8246953b2 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -14,7 +14,7 @@ POST Terminate a vnfInstance ... Test title: POST Terminate a vnfInstance ... Test objective: The objective is to test that POST method terminate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the vnf Instance cannot be terminated ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET Terminate VNFInstance - Method not implemented ... Test title: GET Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ PUT Terminate VNFInstance - Method not implemented ... Test title: PUT Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PATCH Terminate VNFInstance - Method not implemented ... Test title: PATCH Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ DELETE Terminate VNFInstance - Method not implemented ... Test title: DELETE Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot index e502115cb..8b93074e7 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot @@ -18,7 +18,7 @@ Terminate a VNF Instance ... Test title: Terminate a VNF Instance ... Test objective: The objective is to terminate a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. ... Post-Conditions: VNF instance in NOT_INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index af57f75f0..6ce3b5eb4 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -14,7 +14,7 @@ POST Create a new vnfInstance ... Test title: POST Create a new vnfInstance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance created @@ -27,7 +27,7 @@ GET information about multiple VNF instances ... Test title: GET information about multiple VNF instances ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,8 +39,8 @@ GET information about multiple VNF instances Bad Request Invalid attribute-based [Documentation] Test ID: 7.3.1.1.3 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to query information about multiple VNF instances with Invalid attribute-based filtering parameters - ... Pre-conditions: A VNF is instantiated, a bad filter selector (filter selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v2.6.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Pre-conditions: A VNF is instantiated, a bad filter selector (filter selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v2.7.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,8 +53,8 @@ GET information about multiple VNF instances Bad Request Invalid attribute selec [Documentation] Test ID: 7.3.1.1.4 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute selector ... Test objective: The objective is to query information about multiple VNF instances with Invalid attribute selector - ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v2.6.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v2.7.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET information about multiple VNF instances with "all_fields" attribute selecto ... Test title: GET information about multiple VNF instances with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ GET information about multiple VNF instances with "exclude_default" attribute se ... Test title: GET information about multiple VNF instances with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET information about multiple VNF instances with "fields" attribute selector ... Test title: GET information about multiple VNF instances with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ GET information about multiple VNF instances with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF instances with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -119,7 +119,7 @@ PUT multiples VNFInstances - Method not implemented ... Test title: PUT multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -131,7 +131,7 @@ PATCH multiples VNFInstances - Method not implemented ... Test title: PATCH multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -143,7 +143,7 @@ DELETE VNFInstances - Method not implemented ... Test title: DELETE multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: resources are not deleted @@ -155,7 +155,7 @@ GET information about multiple VNF instances to get Paged Response ... Test title: GET information about multiple VNF instances to get Paged Response ... Test objective: The objective is to query information about multiple VNF instances to get Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -167,8 +167,8 @@ GET information about multiple VNF instances - Bad Request Response too Big [Documentation] Test ID: 7.3.1.1.13 ... Test title: GET information about multiple VNF instances - Bad Request Response too Big ... Test objective: The objective is to query information about multiple VNF instances fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. - ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v2.6.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v2.7.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -181,7 +181,7 @@ GET information about multiple VNF instances with "exclude_default" and "fields" ... Test title: GET information about multiple VNF instances with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index 4566da857..225d814bb 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -12,7 +12,7 @@ POST VNF LCM Operation occurrences - Method not implemented ... Test title: POST VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET status information about multiple VNF LCM Operation OCC ... Test title: GET status information about multiple VNF LCM Operation OCC ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ GET status information about multiple VNF LCM Operation OCC Bad Request Invalid ... Test title: GET status information about multiple VNF LCM Operation OCC Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ GET status information about multiple VNF LCM Operation OCC Bad Request Invalid ... Test title: GET status information about multiple VNF LCM Operation OCC Bad Request Invalid attribute selector ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test title: GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ GET status information about multiple VNF LCM Operation OCC with "exlude_default ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ GET status information about multiple VNF LCM Operation OCC with "fields" ... Test title: GET status information about multiple VNF LCM Operation OCC with "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_fields ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ PUT status information about multiple VNF LCM Operation OCC - Method not impleme ... Test title: PUT status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ PATCH status information about multiple VNF LCM Operation OCC - Method not imple ... Test title: PATCH status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -139,7 +139,7 @@ DELETE status information about multiple VNF LCM Operation OCC - Method not impl ... Test title: DELETE status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ GET status information about multiple VNF LCM Operation OCC to get Paged Respons ... Test title: GET status information about multiple VNF LCM Operation OCC to get Paged Response ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences to get a Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ GET status information about multiple VNF LCM Operation OCC - Bad Request Respon ... Test title: GET status information about multiple VNF LCM Operation OCC - Bad Request Response too Big ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -177,7 +177,7 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_defaul ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" and "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.6.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From b59fb74bd8c22537243392cd9a4209684cb411ce Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 21 Oct 2020 10:33:06 +0200 Subject: [PATCH 105/580] re-removed VNF PM subscriptions and updated index file --- .../IndividualSubscription.robot | 98 ---------- .../Subscriptions.robot | 175 ------------------ 2 files changed, 273 deletions(-) delete mode 100644 SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot delete mode 100644 SOL002/VNFPerformanceManagement-API/Subscriptions.robot diff --git a/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot b/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot deleted file mode 100644 index 1d9d2d429..000000000 --- a/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot +++ /dev/null @@ -1,98 +0,0 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Resource VNFPerformanceManagementKeywords.robot - -*** Test Cases *** -GET Individual VNF Performance Subscription - [Documentation] Test ID: 6.3.3.7.1 - ... Test title: GET Individual VNF Performance Subscription - ... Test objective: The objective is to test the retrieval of individual VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get Individual VNF Performance Subscription - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body Subscription Identifier matches the requested Subscription - -GET Individual VNF Performance Subscription with invalid resource identifier - [Documentation] Test ID: 6.3.3.7.2 - ... Test title: GET Individual VNF Performance Subscription with invalid resource identifier - ... Test objective: The objective is to test that the retrieval of an individual VNF performance subscription fails when using an invalid resource identifier - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET individual VNF Performance Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 - -DELETE Individual VNF Performance Subscription - [Documentation] Test ID: 6.3.3.7.3 - ... Test title: DELETE Individual VNF Performance Subscription - ... Test objective: The objective is to test the deletion of an individual VNF performance subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance Subscription is not available anymore in the VNFM - Send Delete request for individual VNF Performance Subscription - Check HTTP Response Status Code Is 204 - Check Postcondition VNF Performance Subscription is Deleted - -DELETE Individual VNF Performance Subscription with invalid resource identifier - [Documentation] Test ID: 6.3.3.7.4 - ... Test title: DELETE Individual VNF Performance Subscription with invalid resource identifier - ... Test objective: The objective is to test that the deletion of an individual VNF performance subscription fails when using an invalid resource identifier - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Send Delete request for individual VNF Performance Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 - -POST Individual VNF Performance Subscription - Method not implemented - [Documentation] Test ID: 6.3.3.7.5 - ... Test title: POST Individual VNF Performance Subscription - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Subscription - ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance Subscription is not created on the VNFM - Send Post request for individual VNF Performance Subscription - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscription is not Created - -PUT Individual VNF Performance Subscription - Method not implemented - [Documentation] Test ID: 6.3.3.7.6 - ... Test title: PUT Individual VNF Performance Subscription - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance subscription is not modified by the operation - Send Put request for individual VNF Performance Threshold - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscription is Unmodified (Implicit) - -PATCH Individual VNF Performance Subscription - Method not implemented - [Documentation] Test ID: 6.3.3.7.7 - ... Test title: PATCH Individual VNF Performance Subscription - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Performance subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance subscription is not modified by the operation - Send Patch request for individual VNF Performance Threshold - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscription is Unmodified (Implicit) \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/Subscriptions.robot b/SOL002/VNFPerformanceManagement-API/Subscriptions.robot deleted file mode 100644 index c9948009b..000000000 --- a/SOL002/VNFPerformanceManagement-API/Subscriptions.robot +++ /dev/null @@ -1,175 +0,0 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Resource VNFPerformanceManagementKeywords.robot -Library MockServerLibrary -Library Process -Suite Setup Create Sessions -Suite Teardown Terminate All Processes kill=true - -*** Test Cases *** -GET all VNF Performance Subscriptions - [Documentation] Test ID: 6.3.3.6.1 - ... Test title: GET all VNF Performance Subscriptions - ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions and perform a JSON schema validation of the returned subscriptions data structure - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get all VNF Performance Subscriptions - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscriptions - -GET VNF Performance Subscriptions with attribute-based filter - [Documentation] Test ID: 6.3.3.6.2 - ... Test title: GET VNF Performance Subscriptions with attribute-based filter - ... Test objective: The objective is to test the retrieval of VNF performance subscriptions using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with attribute-based filters - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscriptions - Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter - -GET VNF Performance Management Subscriptions with invalid attribute-based filter - [Documentation] Test ID: 6.3.3.6.3 - ... Test title: GET VNF Performance Management Subscriptions with invalid attribute-based filter - ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with invalid attribute-based filters - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET VNF Performance Subscriptions with invalid resource endpoint - [Documentation] Test ID: 6.3.3.6.4 - ... Test title: GET VNF Performance Subscriptions with invalid resource endpoint - ... Test objective: The objective is to test that the retrieval of all VNF performance subscriptions fails when using invalid resource endpoint. - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with invalid resource endpoint - Check HTTP Response Status Code Is 404 - -Create new VNF Performance subscription - [Documentation] Test ID: 6.3.3.6.5 - ... Test title: Create new VNF Performance subscription - ... Test objective: The objective is to test the creation of a new VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF performance subscription is successfully set and it matches the issued subscription - Send Post Request for VNF Performance Subscription - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription - Check Postcondition VNF Performance Subscription Is Set - - -Create duplicated VNF Performance subscription with VNFM not creating duplicated subscriptions - [Tags] no-duplicated-subs - [Documentation] Test ID: 6.3.3.6.6 - ... Test title: Create duplicated VNF Performance subscription with VNFM not creating duplicated subscriptions - ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF performance subscription and check that no new subscription is created by the VNFM and a link to the original subscription is returned - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: The VNFM does not support the creation of duplicated subscriptions - ... Post-Conditions: The existing VNF performance subscription returned is available in the VNFM - Send Post Request for Duplicated VNF Performance Subscription - Check HTTP Response Status Code Is 303 - Check HTTP Response Body Is Empty - Check HTTP Response Header Contains Location - Check Postcondition Subscription Resource Returned in Location Header Is Available - -Create duplicated VNF Performance subscription with VNFM creating duplicated subscriptions - [Tags] duplicated-subs - [Documentation] Test ID: 6.3.3.6.7 - ... Test title: Create duplicated VNF Performance subscription with VNFM creating duplicated subscriptions - ... Test objective: The objective is to test the creation of a duplicated VNF performance subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: The VNFM supports the creation of duplicated subscriptions - ... Post-Conditions: The duplicated VNF performance subscription is successfully set and it matches the issued subscription - Send Post Request for Duplicated VNF Performance Subscription - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription - Check Postcondition VNF Performance Subscription Is Set - -PUT VNF Performance Subscriptions - Method not implemented - [Documentation] Test ID: 6.3.3.6.8 - ... Test title: PUT VNF Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to modify VNF performance subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Send Put Request for VNF Performance Subscriptions - Check HTTP Response Status Code Is 405 - -PATCH VNF Performance Subscriptions - Method not implemented - [Documentation] Test ID: 6.3.3.6.9 - ... Test title: PATCH VNF Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update VNF performance subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Send Patch Request for VNF Performance Subscriptions - Check HTTP Response Status Code Is 405 - -DELETE VNF Performance Subscriptions - Method not implemented - [Documentation] Test ID: 6.3.3.6.10 - ... Test title: DELETE VNF Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF performance subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF performance subscriptions are not deleted by the failed operation - Send Delete Request for VNF Performance Subscriptions - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscriptions Exists - -GET VNF Performance Subscriptions to get Paged Response - [Documentation] Test ID: 6.3.3.6.11 - ... Test title: GET VNF Performance Subscriptions to get Paged Response - ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions to get Paged Response - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get all VNF Performance Subscriptions - Check HTTP Response Status Code Is 200 - Check LINK in Header - -GET VNF Performance Management Subscriptions for Bad Request Response too big - [Documentation] Test ID: 6.3.3.6.12 - ... Test title: GET VNF Performance Management Subscriptions for Bad Request Response too big - ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with invalid attribute-based filters - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails -- GitLab From 5ceae56bce8adb7ae951d3c1c53251e12441dfb1 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 21 Oct 2020 11:16:32 +0200 Subject: [PATCH 106/580] updated index file --- indexes/sol_002_index.csv | 90 +++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 46 deletions(-) diff --git a/indexes/sol_002_index.csv b/indexes/sol_002_index.csv index 52042c494..746258166 100644 --- a/indexes/sol_002_index.csv +++ b/indexes/sol_002_index.csv @@ -1,51 +1,49 @@ -6, Ve-Vnfm Reference Point, SOL002 -6.3.1, VNF Configuration Interface , VNFConfiguration-API -6.3.1.1, Configuration Resource Endpoint , Configuration.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, 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.6, Subscriptions Resource Endpoint , Subscriptions.robot -6.3.3.7, Individual Subscription Resource Endpoint , IndividualSubscription.robot -6.3.3.8, Notification Endpoint , ../VNFPerformanceManagementNotification-API/PerformanceManagementNotification.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.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, 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.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, 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 -- GitLab From ccb7df1ec468e02c96a8dd6fb6fc68224cb306f9 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 21 Oct 2020 11:23:12 +0200 Subject: [PATCH 107/580] fix for issue #121 in SOL003-VNFIndicator-API --- .../IndividualSubscription.robot | 1 - .../IndividualVNFindicator.robot | 1 - SOL003/VNFIndicator-API/Subscriptions.robot | 1 - SOL003/VNFIndicator-API/VNFIndicators.robot | 1 - .../VNFIndicatorsKeywords.robot | 5 ---- .../VnfIndicatorsInVnfInstanceId.robot | 1 - .../environment/individualSubscription.txt | 7 ----- .../environment/individualVnfIndicator.txt | 7 ----- .../environment/subscriptions.txt | 7 ----- .../environment/variables.txt | 27 ++++++++++++++++++- .../environment/vnfIndicatorinVnfInstance.txt | 5 ---- .../environment/vnfIndicators.txt | 5 ---- 12 files changed, 26 insertions(+), 42 deletions(-) delete mode 100644 SOL003/VNFIndicator-API/environment/individualSubscription.txt delete mode 100644 SOL003/VNFIndicator-API/environment/individualVnfIndicator.txt delete mode 100644 SOL003/VNFIndicator-API/environment/subscriptions.txt delete mode 100644 SOL003/VNFIndicator-API/environment/vnfIndicatorinVnfInstance.txt delete mode 100644 SOL003/VNFIndicator-API/environment/vnfIndicators.txt diff --git a/SOL003/VNFIndicator-API/IndividualSubscription.robot b/SOL003/VNFIndicator-API/IndividualSubscription.robot index 839ed3e9c..cf162f22b 100644 --- a/SOL003/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL003/VNFIndicator-API/IndividualSubscription.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/individualSubscription.txt Resource VNFIndicatorsKeywords.robot Library OperatingSystem Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFIndicator-API/IndividualVNFindicator.robot b/SOL003/VNFIndicator-API/IndividualVNFindicator.robot index 52b04e414..916331fbb 100644 --- a/SOL003/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL003/VNFIndicator-API/IndividualVNFindicator.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/individualVnfIndicator.txt Resource VNFIndicatorsKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFIndicator-API/Subscriptions.robot b/SOL003/VNFIndicator-API/Subscriptions.robot index 18cda29a4..f20c0f888 100644 --- a/SOL003/VNFIndicator-API/Subscriptions.robot +++ b/SOL003/VNFIndicator-API/Subscriptions.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/subscriptions.txt Resource VNFIndicatorsKeywords.robot Library OperatingSystem Library JSONLibrary diff --git a/SOL003/VNFIndicator-API/VNFIndicators.robot b/SOL003/VNFIndicator-API/VNFIndicators.robot index 5eb2cf7b7..66a032edf 100644 --- a/SOL003/VNFIndicator-API/VNFIndicators.robot +++ b/SOL003/VNFIndicator-API/VNFIndicators.robot @@ -2,7 +2,6 @@ Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Library JSONLibrary -Resource environment/vnfIndicators.txt Resource VNFIndicatorsKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot index d39f925d5..1623f460c 100644 --- a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot +++ b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot @@ -1,10 +1,5 @@ *** Settings *** Resource environment/variables.txt -Resource environment/subscriptions.txt -Resource environment/vnfIndicators.txt -Resource environment/vnfIndicatorinVnfInstance.txt -Resource environment/individualVnfIndicator.txt -Resource environment/individualSubscription.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library MockServerLibrary Library OperatingSystem diff --git a/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index c2e54e5dd..0c8b3fffb 100644 --- a/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/vnfIndicatorinVnfInstance.txt Resource VNFIndicatorsKeywords.robot Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFIndicator-API/environment/individualSubscription.txt b/SOL003/VNFIndicator-API/environment/individualSubscription.txt deleted file mode 100644 index a85388af9..000000000 --- a/SOL003/VNFIndicator-API/environment/individualSubscription.txt +++ /dev/null @@ -1,7 +0,0 @@ -*** Variables *** -${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa -${erroneousSubscriptionId} erroneousSubscriptionId -${newSubscriptionId} newSubsciptionId -${response} httpresponse -${origResponse} httpresponse - diff --git a/SOL003/VNFIndicator-API/environment/individualVnfIndicator.txt b/SOL003/VNFIndicator-API/environment/individualVnfIndicator.txt deleted file mode 100644 index 010a634eb..000000000 --- a/SOL003/VNFIndicator-API/environment/individualVnfIndicator.txt +++ /dev/null @@ -1,7 +0,0 @@ -*** Variables *** -${vnfInstanceId} 80b0deba-c398-445b-bef0-ac0fe733e3d0 -${indicatorId} 34e70855-a9d3-4fef-aece-76a3cd266ec8 -${notAllowedIndicatorId} notAllowedId -${erroneousIndicatorId} erroneousIndicatorId -${response}= httpresponse - diff --git a/SOL003/VNFIndicator-API/environment/subscriptions.txt b/SOL003/VNFIndicator-API/environment/subscriptions.txt deleted file mode 100644 index 5dea0892b..000000000 --- a/SOL003/VNFIndicator-API/environment/subscriptions.txt +++ /dev/null @@ -1,7 +0,0 @@ -*** Variables *** -${filter_ok} callbackUri=${callbackUri} -${filter_ko} erroneousFilter=erroneous -${callbackUri} http://172.22.1.7:9091/vnfind/subscriptions -${total_polling_time} 2 min -${polling_interval} 10 sec - diff --git a/SOL003/VNFIndicator-API/environment/variables.txt b/SOL003/VNFIndicator-API/environment/variables.txt index 6cc6ab92c..9fb63250b 100644 --- a/SOL003/VNFIndicator-API/environment/variables.txt +++ b/SOL003/VNFIndicator-API/environment/variables.txt @@ -35,4 +35,29 @@ ${notification_response} [] ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar ${callback} http://172.22.1.7:${callback_port} -${callback_subscribe} /vnfind/subscribes \ No newline at end of file +${callback_subscribe} /vnfind/subscribes + + +${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa +${erroneousSubscriptionId} erroneousSubscriptionId +${newSubscriptionId} newSubsciptionId +${origResponse} httpresponse + + +${vnfInstanceId} 80b0deba-c398-445b-bef0-ac0fe733e3d0 +${indicatorId} 34e70855-a9d3-4fef-aece-76a3cd266ec8 +${notAllowedIndicatorId} notAllowedId +${erroneousIndicatorId} erroneousIndicatorId + + +${filter_ok} callbackUri=${callbackUri} +${filter_ko} erroneousFilter=erroneous + + +${erroneousVnfInstanceId} erroneousVnfInstanceId +${POS_FIELDS} name=vnfIndicator +${NEG_FIELDS} wrongName=any_value + + +${SEPERATOR} = +${VAR_SEPERATOR} & \ No newline at end of file diff --git a/SOL003/VNFIndicator-API/environment/vnfIndicatorinVnfInstance.txt b/SOL003/VNFIndicator-API/environment/vnfIndicatorinVnfInstance.txt deleted file mode 100644 index 13ef83d69..000000000 --- a/SOL003/VNFIndicator-API/environment/vnfIndicatorinVnfInstance.txt +++ /dev/null @@ -1,5 +0,0 @@ -*** Variables *** -${vnfInstanceId} 80b0deba-c398-445b-bef0-ac0fe733e3d0 -${erroneousVnfInstanceId} erroneousVnfInstanceId -${POS_FIELDS} name=vnfIndicator -${NEG_FIELDS} wrongName=any_value diff --git a/SOL003/VNFIndicator-API/environment/vnfIndicators.txt b/SOL003/VNFIndicator-API/environment/vnfIndicators.txt deleted file mode 100644 index b4ca7ceaa..000000000 --- a/SOL003/VNFIndicator-API/environment/vnfIndicators.txt +++ /dev/null @@ -1,5 +0,0 @@ -*** Variables *** -${POS_FIELDS} name=vnfIndicator&vnfInstanceId=80b0deba-c398-445b-bef0-ac0fe733e3d0 -${NEG_FIELDS} wrongName=wrongValue -${SEPERATOR} = -${VAR_SEPERATOR} & \ No newline at end of file -- GitLab From 914a5823a26ffe725442aa36de72e18782771fd8 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 21 Oct 2020 15:05:49 +0500 Subject: [PATCH 108/580] bugs fix added and redundant keywords removed --- .../CancelOperationTask.robot | 26 +----------- .../CancelOperationWorkflow.robot | 8 +--- .../ChangeExternalVNFConnectivityTask.robot | 18 +------- ...hangeExternalVNFConnectivityWorkflow.robot | 11 +---- .../ChangeVNFFlavourTask.robot | 40 +----------------- .../ChangeVNFFlavourWorkflow.robot | 14 +------ .../CreateVNFWorkflow.robot | 4 +- .../DeleteVNFWorkflow.robot | 1 - .../FailOperationTask.robot | 23 +---------- .../FailOperationWorkflow.robot | 13 +----- .../HealVNFTask.robot | 36 +--------------- .../HealVNFWorkflow.robot | 11 +---- .../IndividualSubscription.robot | 9 +--- .../IndividualVNFInstance.robot | 22 +--------- .../IndividualVnfLcmOperationOccurence.robot | 3 +- .../InstantiateVNFTask.robot | 19 +-------- .../InstantiateVNFTaskWorkflow.robot | 1 - .../ModifyVNFInformationWorkflow.robot | 14 +------ .../OperateVNFTask.robot | 26 +----------- .../OperateVNFWorkflow.robot | 10 +---- .../RetryOperationTask.robot | 22 +++------- .../RetryOperationWorkflow.robot | 12 +----- .../RollBackOperationWorkflow.robot | 9 +--- .../RollbackOperationTask.robot | 23 +++-------- .../ScaleVNFTask.robot | 29 +------------ .../ScaleVNFToLevelTask.robot | 41 ++----------------- .../ScaleVNFToLevelWorkflow.robot | 16 +------- .../ScaleVNFWorkflow.robot | 17 +------- .../Subscriptions.robot | 6 +-- .../TerminateVNFTask.robot | 24 +---------- .../TerminateVNFWorkflow.robot | 15 +------ .../VNFInstances.robot | 4 +- .../VnfLcmMntOperationKeywords.robot | 3 +- .../VnfLcmOperationOccurences.robot | 2 +- 34 files changed, 56 insertions(+), 476 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot index cd2102c59..e85b9a2e6 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -35,7 +35,6 @@ POST Cancel operation task Conflict Check HTTP Response Body Json Schema Is ProblemDetails POST Cancel operation task Not Found - # TODO: Need to create a vnfInstance which's instantiatedVnfInfo.scaleStatus is absent [Documentation] Test ID: 7.3.1.16.3 ... Test title: POST Cancel operation task Not Found ... Test objective: The objective is to test that POST method cannot cancel a VNF lifecycle operation because the resource is not found @@ -46,6 +45,7 @@ POST Cancel operation task Not Found ... Post-Conditions: none POST Cancel operation task Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Cancel operation task - Method not implemented [Documentation] Test ID: 7.3.1.16.4 @@ -93,26 +93,4 @@ DELETE Cancel operation task - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Cancel operation task - Check HTTP Response Status Code Is 405 - -*** Keywords *** -Check resource existence - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - Integer response status 200 - -Launch another error handling action - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry - Integer response status 202 - -Check Fail not supported - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - # how to check if Fail is not supported? - -Check resource FAILED_TEMP - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - String response body operationState FAILED_TEMP \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot index aa7455d28..bcf53de2d 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot @@ -58,11 +58,6 @@ Precondition Checks - STARTING Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState STARTING -Precondition Checks - PROCESSING - ROLLING_BACK - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - String response body operationState PROCESSING - Check Postcondition VNF Cancel - STARTING Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} @@ -75,5 +70,4 @@ Check Postcondition VNF Cancel - PROCESSING - ROLLING_BACK Check Operation Notification For Cancel [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - \ No newline at end of file + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index e2a527820..6262d1130 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -67,20 +67,4 @@ DELETE Change external VNF connectivity - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Change External VNF Connectivity - Check HTTP Response Status Code Is 405 - -*** Keywords *** -Check resource existence - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} - Integer response status 202 \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot index d5c9beabe..2da0b56e2 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot @@ -13,7 +13,6 @@ Library Process Suite Setup Initialize System Suite Teardown Terminate All Processes kill=true - *** Test Cases *** Change external connectivity of VNF Workflow [Documentation] Test ID: 7.3.1.20.1 @@ -39,19 +38,11 @@ Initialize System ${body}= Get File jsons/changeExtVnfConnectivityRequest.json ${changeVnfExtConnectivityRequest}= evaluate json.loads('''${body}''') json -Precondition Checks - Check resource instantiated - ${LccnSubscriptions}= Check subscriptions about one VNFInstance and operation type ${vnfInstanceId} VnfLcmOperationOccurrenceNotification operationType=SCALE - Check Postcondition VNF Change Ext Connectivity Check resource instantiated ${extVLId}= Get Vnf Ext Link Id ${vnfInstanceId} Should be Equal ${changeVnfExtConnectivityRequest["extVirtualLinks"][0]["id"]} ${extVLId} -Create a new Grant - Sync - OPERATE - Create a new Grant - Synchronous mode ${vnfInstanceId} ${vnfLcmOpOccId} OPERATE - Check Operation Notification For Change Ext Connectivity [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - \ No newline at end of file + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 630e70279..dab045065 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -35,7 +35,6 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) Check HTTP Response Body Json Schema Is ProblemDetails POST Change deployment flavour of a vnfInstance Not Found - # TODO: Need to create a vnfInstance which's instantiatedVnfInfo.scaleStatus is absent [Documentation] Test ID: 7.3.1.6.3 ... Test title: POST Change deployment flavour of a vnfInstance Not Found ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because the VNF instance resource is not found. @@ -94,41 +93,4 @@ DELETE Change deployment flavour VNFInstance - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Change VNF deployment flavour - Check HTTP Response Status Code Is 405 - -*** Keywords *** -Check resource existence - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource not instantiated - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - String response body instantiationState NOT_INSTANTIATED - -Check resource instantiated - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - String response body instantiationState INSTANTIATED - -Check change flavour not supported - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - # how to check if change floavour is not supported? "flavourId" doesn't exist? - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} - Integer response status 202 \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot index b2d6e3ebd..bccd69dca 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot @@ -13,7 +13,6 @@ Library Process Suite Setup Initialize System Suite Teardown Terminate All Processes kill=true - *** Test Cases *** Change VNF Flavour Workflow [Documentation] Test ID: 7.3.1.21.1 @@ -42,21 +41,12 @@ Initialize System ${body}= Get File jsons/changeVnfFlavourRequest.json ${changeVnfFlavourRequest}= evaluate json.loads('''${body}''') json ${requestedFlavour}= Get Value From Json ${changeVnfFlavourRequest} $..newFlavourId - -Precondition Checks - Check resource instantiated - ${LccnSubscriptions}= Check subscriptions about one VNFInstance and operation type ${vnfInstanceId} VnfLcmOperationOccurrenceNotification operationType=SCALE - ${scaleInfo}= Get Vnf Scale Info ${vnfInstanceId} Check Postcondition VNF Flavor Changed Check resource instantiated ${newFlavour}= Get Vnf Flavour Info ${vnfInstanceId} Should be Equal ${requestedFlavour} ${newFlavour} - -Create a new Grant - Sync - CHANGE_FLAVOUR - Create a new Grant - Synchronous mode ${vnfInstanceId} ${vnfLcmOpOccId} CHANGE_FLAVOUR - + Check Operation Notification For Change Flavour [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - \ No newline at end of file + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot index 36f53d1a7..5adab1398 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot @@ -13,7 +13,6 @@ Library Process Suite Setup Initialize System Suite Teardown Terminate All Processes kill=true - *** Test Cases *** Create VNF Instance Resource [Documentation] Test ID: 7.3.1.22.1 @@ -42,5 +41,4 @@ Check Postcondition VNF Instance Created status is Check VNF Status ${response['body']['instantiationState']} ${status} Check Operation Notification For VNF Instance Creation - Check VNF Instance Operation Notification VnfIdentifierCreationNotification ${vnfInstanceId} - \ No newline at end of file + Check VNF Instance Operation Notification VnfIdentifierCreationNotification ${vnfInstanceId} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot index 3b1c6a1c0..1322e1cb3 100644 --- a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot @@ -13,7 +13,6 @@ Library Process Suite Setup Initialize System Suite Teardown Terminate All Processes kill=true - *** Test Cases *** Delete VNF Instance Resource [Documentation] Test ID: 7.3.1.23.1 diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index 2ff77eb5f..116bea793 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -23,7 +23,6 @@ POST Fail operation task Check operation resource state is FINALLY_FAILED Post Fail operation task Conflict (Not-FAILED_TEMP) - # TODO: Need to set the pre-condition of the test. VNF instance shall be in INSTANTIATED state [Documentation] Test ID: 7.3.1.15.2 ... Test title: Post Fail operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation @@ -37,17 +36,17 @@ Post Fail operation task Conflict (Not-FAILED_TEMP) Check HTTP Response Body Json Schema Is ProblemDetails Post Fail operation task Not Found - # TODO: Need to create a vnfInstance which's instantiatedVnfInfo.scaleStatus is absent [Documentation] Test ID: 7.3.1.15.3 ... Test title: Post Fail operation task Not Found ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation because the operation is not supported - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none Post Fail operation Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Fail operation task - Method not implemented [Documentation] Test ID: 7.3.1.15.4 @@ -96,21 +95,3 @@ DELETE Fail operation task - Method not implemented ... Post-Conditions: Delete Fail operation Check HTTP Response Status Code Is 405 - -*** Keywords *** -Check resource existence - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - Integer response status 200 - -Launch another error handling action - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry - Integer response status 202 - -Check Fail not supported - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - # how to check if Fail is not supported? - diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot index 5ef0573ea..2f63dc674 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot @@ -13,7 +13,6 @@ Library Process Suite Setup Initialize System Suite Teardown Terminate All Processes kill=true - *** Test Cases *** Fail a VNF LCM Operation Workflow [Documentation] Test ID: 7.3.1.24.1 @@ -26,18 +25,12 @@ Fail a VNF LCM Operation Workflow ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED state Send Fail Operation Request Check Operation Notification For Fail FAILED - Check HTTP Response Status Code Is 200 #the order of notification and the response code is not defined. How to implement this? + Check HTTP Response Status Code Is 200 Check Postcondition VNF Fail - *** Keywords *** Initialize System Create Sessions - -Precondition Checks - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - String response body operationState FAILED_TEMP Check Postcondition VNF Fail Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -46,6 +39,4 @@ Check Postcondition VNF Fail Check Operation Notification For Fail [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - - \ No newline at end of file + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index 1bc6354d1..6c485bd86 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -22,7 +22,6 @@ POST Heal a vnfInstance Check Operation Occurrence Id existence POST Heal a vnfInstance Conflict (Not-Instantiated) - # TODO: Need to set the pre-condition of the test. VNF instance shall be in INSTANTIATED state [Documentation] Test ID: 7.3.1.8.2 ... Test title: POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. @@ -34,8 +33,6 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) POST Heal VNF Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - - POST Heal a vnfInstance Not Found [Documentation] Test ID: 7.3.1.8.3 @@ -50,7 +47,6 @@ POST Heal a vnfInstance Not Found Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails - GET Heal VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.8.4 ... Test title: GET Heal a vnfInstance - Method not implemented @@ -97,34 +93,4 @@ DELETE Heal VNFInstance - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Heal VNF - Check HTTP Response Status Code Is 405 - -*** Keywords *** -Check resource existence - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource not instantiated - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - String response body instantiationState NOT_INSTANTIATED - -Check heal not supported - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - # how to check if heal is not supported? "flavourId" doesn't exist? - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} - Integer response status 202 \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot index e7f4775aa..79b84a89a 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot @@ -13,7 +13,6 @@ Library Process Suite Setup Initialize System Suite Teardown Terminate All Processes kill=true - *** Test Cases *** Heal a VNF Instance [Documentation] Test ID: 7.3.1.25.1 @@ -38,17 +37,9 @@ Heal a VNF Instance Initialize System Create Sessions -Precondition Checks - Check resource instantiated - ${LccnSubscriptions}= Check subscriptions about one VNFInstance and operation type ${vnfInstanceId} VnfLcmOperationOccurrenceNotification operationType=SCALE - Check Postcondition VNF Heal Check resource Instantiated -Create a new Grant - Sync - OPERATE - Create a new Grant - Synchronous mode ${vnfInstanceId} ${vnfLcmOpOccId} OPERATE - Check Operation Notification For Heal [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - \ No newline at end of file + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot index 051cb878a..1d2450c71 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -79,11 +79,4 @@ GET Individual Subscription - Not Found ... Post-Conditions: none Get Individual Subscription Check HTTP Response Status Code Is 404 - -*** Keywords *** -Check resource existence - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 8dd6e9662..5b2aa5f12 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -1,6 +1,5 @@ *** Settings *** Resource environment/configuration.txt -# Suite setup Expect spec SOL003-VNFLifecycleManagement-API.yaml Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Resource VnfLcmMntOperationKeywords.robot @@ -126,6 +125,7 @@ Get Information about an individual VNF Instance - Not Found ... Post-Conditions: none GET individual vnfInstance Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Check resource existence @@ -133,22 +133,4 @@ Check resource existence Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource instantiated - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - String response body instantiationState INSTANTIATED - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfToLevelRequest.json - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} - Integer response status 202 -SET etag - ${etag} Output response headers ETag - Set Suite Variable ${original_etag} ${etag} + Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 2a61f566c..a9c88fac1 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -78,4 +78,5 @@ Get Individual VNF LCM Operation occurrences - Not Found ... Applicability: none ... Post-Conditions: none Get Individual VNF LCM Operation occurrences - Check HTTP Response Status Code Is 404 \ No newline at end of file + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 843138eca..9527fce9d 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -8,7 +8,6 @@ Library JSONLibrary Library JSONSchemaLibrary schemas/ Resource VnfLcmMntOperationKeywords.robot - *** Test Cases *** Instantiate a vnfInstance [Documentation] Test ID: 7.3.1.3.1 @@ -24,7 +23,6 @@ Instantiate a vnfInstance Check Operation Occurrence Id existence Instantiate a vnfInstance Conflict - # TODO: Need to set the pre-condition of the test. VNF instance shall be in INSTANTIATED state [Documentation] Test ID: 7.3.1.3.2 ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to verify that the instantiation of the vnf cannot be executed currently, due to a conflict with the state of the VNF instance resource. @@ -83,19 +81,4 @@ DELETE Instantiate VNFInstance - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE instantiate individual vnfInstance - Check HTTP Response Status Code Is 405 - -*** Keywords *** -Check resource existence - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource instantiated - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - String response body instantiationState INSTANTIATED \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot index 3945ebd84..51565ab17 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot @@ -15,7 +15,6 @@ Library JSONSchemaLibrary schemas/ Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false - *** Test Cases *** VNF Instantiation [Documentation] Test ID: 7.3.1.26.1 diff --git a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot index a38a7f520..c92809306 100644 --- a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot @@ -13,7 +13,6 @@ Library Process Suite Setup Initialize System Suite Teardown Terminate All Processes kill=true - *** Test Cases *** Modify info of a VNF Instance [Documentation] Test ID: 7.3.1.27.1 @@ -39,19 +38,10 @@ Initialize System ${body}= Get File jsons/patchBodyRequest.json ${patchBodyRequest}= evaluate json.loads('''${body}''') json -Precondition Checks - Check resource instantiated - ${LccnSubscriptions}= Check subscriptions about one VNFInstance and operation type ${vnfInstanceId} VnfLcmOperationOccurrenceNotification operationType=SCALE - Check Postcondition VNF Modify Info Check VNF Instance ${vnfInstanceId} Check HTTP Response Status Code Is 200 - #do we need to compare the modified info in the updated VNF instance with the values in the request? - -Create a new Grant - Sync - OPERATE - Create a new Grant - Synchronous mode ${vnfInstanceId} ${vnfLcmOpOccId} OPERATE - + Check Operation Notification For Modify Info [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - \ No newline at end of file + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index e585852b2..4c62df07c 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -46,7 +46,7 @@ POST Operate a vnfInstance Not Found ... Applicability: none ... Post-Conditions: none POST Operate VNF - Check HTTP Response Status Code Is 409 + Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails GET Operate VNFInstance - Method not implemented @@ -96,7 +96,7 @@ DELETE Operate VNFInstance - Method not implemented ... Post-Conditions: none DELETE Operate VNF Check HTTP Response Status Code Is 405 - + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} @@ -104,25 +104,3 @@ Check resource existence Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 - -Check resource not instantiated - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - String response body instantiationState NOT_INSTANTIATED - -Check operate not supported - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - # how to check if operate is not supported? "flavourId" doesn't exist? - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} - Integer response status 202 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot index 422748ad2..e8eb5628d 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot @@ -40,19 +40,11 @@ Initialize System ${changeVnfOperateRequest}= evaluate json.loads('''${body}''') json ${requestedState}= Get Value From Json ${changeVnfOperateRequest} $..changeStateTo -Precondition Checks - Check resource instantiated - ${LccnSubscriptions}= Check subscriptions about one VNFInstance and operation type ${vnfInstanceId} VnfLcmOperationOccurrenceNotification operationType=SCALE - Check Postcondition VNF OPERATE Check resource instantiated ${newState}= Get Vnf Operational State Info ${vnfInstanceId} Should be Equal ${requestedState} ${newState} -Create a new Grant - Sync - OPERATE - Create a new Grant - Synchronous mode ${vnfInstanceId} ${vnfLcmOpOccId} OPERATE - Check Operation Notification For Operate [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - \ No newline at end of file + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index c937f06ec..2d2843bc6 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -48,6 +48,7 @@ Post Retry operation task Not Found ... Post-Conditions: none Post Retry operation Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Retry operation task - Method not implemented [Documentation] Test ID: 7.3.1.13.4 @@ -57,7 +58,7 @@ GET Retry operation task - Method not implemented ... Reference: Clause 5.4.14.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Get Retry operation Check HTTP Response Status Code Is 405 @@ -69,7 +70,7 @@ PUT Retry operation task - Method not implemented ... Reference: Clause 5.4.14.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Put Retry operation Check HTTP Response Status Code Is 405 @@ -81,7 +82,7 @@ PATCH Retry operation task - Method not implemented ... Reference: Clause 5.4.14.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Patch Retry operation Check HTTP Response Status Code Is 405 @@ -93,7 +94,7 @@ DELETE Retry operation task - Method not implemented ... Reference: Clause 5.4.14.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Delete Retry operation Check HTTP Response Status Code Is 405 @@ -102,15 +103,4 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - Integer response status 200 - -Launch another error handling action - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback - Integer response status 202 - -Check retry not supported - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - # how to check if retry is not supported? - + Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot index dc216358e..2ca45a10c 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot @@ -11,7 +11,6 @@ Library Collections Library JSONLibrary Library Process - *** Test Cases *** Retry VNF LCM Operation - Successful [Documentation] Test ID: 7.3.1.29.1 @@ -48,14 +47,6 @@ Retry VNF LCM Operation - Unsuccessful Check Postcondition VNF Retry Unsuccessful *** Keywords *** -Initialize System - Create Sessions - -Precondition Checks - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - String response body operationState FAILED_TEMP - Check Postcondition VNF Retry Successful Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} @@ -68,5 +59,4 @@ Check Postcondition VNF Retry Unsuccessful Check Operation Notification For Retry [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - \ No newline at end of file + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot index 1c3d4b935..611dd0707 100644 --- a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot @@ -13,7 +13,6 @@ Library Process Suite Setup Initialize System Suite Teardown Terminate All Processes kill=true - *** Test Cases *** Rollback a VNF LCM Operation - Successful [Documentation] Test ID: 7.3.1.30.1 @@ -53,11 +52,6 @@ Rollback VNF LCM Operation - Unsuccessful Initialize System Create Sessions - -Precondition Checks - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - String response body operationState FAILED_TEMP Check Postcondition VNF Roll Back Successful Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -71,5 +65,4 @@ Check Postcondition VNF Roll Back Unsuccessful Check Operation Notification For Roll Back [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - \ No newline at end of file + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index b68a10519..c6cb4aecc 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -24,7 +24,6 @@ Post Rollback operation task Check Operation Occurrence Id existence POST Rollback operation task Conflict (Not-FAILED_TEMP) - # TODO: Need to set the pre-condition of the test. VNF instance shall be in INSTANTIATED state [Documentation] Test ID: 7.3.1.14.2 ... Test title: POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method initiates a rollback on a VNF lifecycle operation @@ -48,6 +47,7 @@ POST Rollback operation task Not Found ... Post-Conditions: none Post Rollback operation Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Rollback operation task - Method not implemented [Documentation] Test ID: 7.3.1.14.4 @@ -57,7 +57,7 @@ GET Rollback operation task - Method not implemented ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Get Rollback operation Check HTTP Response Status Code Is 405 @@ -69,7 +69,7 @@ PUT Rollback operation task - Method not implemented ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Put Rollback operation Check HTTP Response Status Code Is 405 @@ -81,7 +81,7 @@ PATCH Rollback operation task - Method not implemented ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Patch Rollback operation Check HTTP Response Status Code Is 405 @@ -93,7 +93,7 @@ DELETE Rollback operation task - Method not implemented ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Delete Rollback operation Check HTTP Response Status Code Is 405 @@ -102,15 +102,4 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - Integer response status 200 - -Launch another error handling action - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry - Integer response status 202 - -Check Rollback not supported - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - # how to check if Rollback is not supported? - + Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index 815b95445..cd9eca136 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -23,7 +23,6 @@ POST Scale a vnfInstance Check Operation Occurrence Id existence POST Scale a vnfInstance Conflict (Not-Instantiated) - # TODO: Need to set the pre-condition of the test. VNF instance shall be in INSTANTIATED state [Documentation] Test ID: 7.3.1.4.2 ... Test title: POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the scale operation cannot be executed @@ -37,7 +36,6 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) Check HTTP Response Body Json Schema Is ProblemDetails POST Scale a vnfInstance Not Found - # TODO: Need to create a vnfInstance which's instantiatedVnfInfo.scaleStatus is absent [Documentation] Test ID: 7.3.1.4.3 ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed currently, because the VNF instance resource is not found. @@ -94,10 +92,9 @@ DELETE Scale VNFInstance - Method not implemented ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: Resource are not deleted + ... Post-Conditions: none DELETE Scale vnfInstance Check HTTP Response Status Code Is 405 - Check resource existence *** Keywords *** Check resource existence @@ -105,26 +102,4 @@ Check resource existence Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource not instantiated - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - String response body instantiationState NOT_INSTANTIATED - -Check scale not supported - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - Missing response body instantiatedVnfInfo scaleStatus - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfToLevelRequest.json - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} - Integer response status 202 \ No newline at end of file + Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index a746bbaa9..7c4dd0996 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -22,7 +22,6 @@ POST Scale a vnfInstance to level Check Operation Occurrence Id existence POST Scale a vnfInstance to level Conflict (Not-Instantiated) - # TODO: Need to set the pre-condition of the test. VNF instance shall be in INSTANTIATED state [Documentation] Test ID: 7.3.1.5.2 ... Test title: POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the scale operation cannot be executed because the resource is not instantiated @@ -35,9 +34,7 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - Scale a vnfInstance Not Found - # TODO: Need to create a vnfInstance which's instantiatedVnfInfo.scaleStatus is absent [Documentation] Test ID: 7.3.1.5.3 ... Test title: Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed , because the VNF instance resource cannot be found. @@ -47,10 +44,9 @@ Scale a vnfInstance Not Found ... Applicability: none ... Post-Conditions: none POST Scale vnfInstance to level - Check HTTP Response Status Code Is 409 + Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails - GET Scale to level VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.5.4 ... Test title: GET Scale to level VNFInstance - Method not implemented @@ -95,37 +91,6 @@ DELETE Scale to level VNFInstance - Method not implemented ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: Resources are not deleted + ... Post-Conditions: none DELETE Scale vnfInstance to level - Check HTTP Response Status Code Is 405 - Check resource existence - -*** Keywords *** -Check resource existence - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource not instantiated - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId} - String response body instantiationState NOT_INSTANTIATED - - Check scale to level not supported - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - Missing response body instantiatedVnfInfo scaleStatus - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} - Integer response status 202 \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot index d4e8ac9b6..2ecbe5327 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot @@ -11,7 +11,6 @@ Library Collections Library JSONLibrary Library Process - *** Test Cases *** VNF Instance Scale To Level [Documentation] Test ID: 7.3.1.31.1 @@ -34,14 +33,6 @@ VNF Instance Scale To Level #Create a new Grant - Sync - Scale REMOVED *** Keywords *** - -Initialize System - Create Sessions - ${body}= Get File jsons/scaleVnfToLevelRequest.json - ${scaleVnfToLevelRequest}= evaluate json.loads('''${body}''') json - ${instantiationLevelId}= Get Value From Json ${scaleVnfToLevelRequest} $..instantiationLevelId #How to use this info to get the instantiation scale level? - ${scaleInfo}= Get Value From Json ${scaleVnfToLevelRequest} $..scaleInfo - Check Postcondition VNF Scaled To New Level Check resource instantiated ${newScaleInfo}= Get Vnf Scale Info ${vnfInstanceId} @@ -59,11 +50,6 @@ Compare ScaleInfos END Should be true ${old_level_value}==${new_level_value} - -Create a new Grant - Sync - ScaleToLevel - Create a new Grant - Synchronous mode ${vnfInstanceId} ${vnfLcmOpOccId} SCALE_TO_LEVEL - Check Operation Notification For Scale [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - \ No newline at end of file + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot index 30d813c84..03bfe773c 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot @@ -11,7 +11,6 @@ Library Collections Library JSONLibrary Library Process - *** Test Cases *** VNF Instance Scale Out [Documentation] Test ID: 7.3.1.32.1 @@ -34,16 +33,6 @@ VNF Instance Scale Out #Create a new Grant - Sync - Scale REMOVED *** Keywords *** - -Initialize System - Create Sessions - ${scaleInfo}= Get Vnf Scale Info ${vnfInstanceId} - -Precondition Checks - Check resource instantiated - ${LccnSubscriptions}= Check subscriptions about one VNFInstance and operation type ${vnfInstanceId} VnfLcmOperationOccurrenceNotification operationType=SCALE - ${scaleInfo}= Get Vnf Scale Info ${vnfInstanceId} - Check Postcondition VNF [Arguments] ${operation} Check resource instantiated @@ -62,11 +51,7 @@ Compare ScaleInfos END Run Keyword If ${type}==SCALE_OUT Should Be True ${old_level_value}<${new_level_value} ... ELSE Should Be True ${old_level_value}<${new_level_value} - -Create a new Grant - Sync - Scale - Create a new Grant - Synchronous mode ${vnfInstanceId} ${vnfLcmOpOccId} SCALE Check Operation Notification For Scale [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - \ No newline at end of file + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index 043af19b9..5b211923b 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -160,7 +160,7 @@ PATCH subscriptions - Method not implemented ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: subscription not modified + ... Post-Conditions: none PATCH subscriptions Check HTTP Response Status Code Is 405 @@ -172,7 +172,7 @@ DELETE subscriptions - Method not implemented ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: subscription not deleted + ... Post-Conditions: none DELETE subscriptions Check HTTP Response Status Code Is 405 @@ -187,7 +187,7 @@ GET Subscriptions as a Paged Response ... Post-Conditions: none Get subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET subscriptions - Bad Request Response too Big [Documentation] Test ID: 7.3.1.17.15 diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index 8246953b2..01df5e9f6 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -90,26 +90,4 @@ Check resource existence Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - Integer response status 200 - -Check resource not instantiated - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - String response body instantiationState NOT_INSTANTIATED - -Check change flavour not supported - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} - # how to check if change floavour is not supported? "flavourId" doesn't exist? - -Launch another LCM operation - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/scaleVnfRequest.json - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} - Integer response status 202 \ No newline at end of file + Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot index 8b93074e7..02c04ac89 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot @@ -11,7 +11,6 @@ Library Collections Library JSONLibrary Library Process - *** Test Cases *** Terminate a VNF Instance [Documentation] Test ID: 7.3.1.33.1 @@ -32,21 +31,9 @@ Terminate a VNF Instance Check Postcondition VNF Terminate *** Keywords *** - -Initialize System - Create Sessions - -Precondition Checks - Check resource instantiated - ${LccnSubscriptions}= Check subscriptions about one VNFInstance and operation type ${vnfInstanceId} VnfLcmOperationOccurrenceNotification operationType=SCALE - Check Postcondition VNF Terminate Check resource not Instantiated - -Create a new Grant - Sync - OPERATE - Create a new Grant - Synchronous mode ${vnfInstanceId} ${vnfLcmOpOccId} OPERATE Check Operation Notification For Terminate [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - \ No newline at end of file + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index 6ce3b5eb4..195e790b5 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -146,7 +146,7 @@ DELETE VNFInstances - Method not implemented ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: resources are not deleted + ... Post-Conditions: none DELETE VNFInstances Check HTTP Response Status Code Is 405 @@ -161,7 +161,7 @@ GET information about multiple VNF instances to get Paged Response ... Post-Conditions: none GET multiple vnfInstances Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET information about multiple VNF instances - Bad Request Response too Big [Documentation] Test ID: 7.3.1.1.13 diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 723712d75..ba6f5f4c7 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -12,7 +12,6 @@ Library Collections Library JSONSchemaLibrary schemas/ *** Keywords *** - Get Vnf Instance [Arguments] ${vnfInstanceId} Set Headers {"Accept":"${ACCEPT}"} @@ -1180,6 +1179,6 @@ GET test endpoint Verify Mock Expectation ${req} Clear Requests ${callback_endpoint} -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index 225d814bb..286bd75f9 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -157,7 +157,7 @@ GET status information about multiple VNF LCM Operation OCC to get Paged Respons ... Post-Conditions: none GET VNF LCM Operation occurrences Check HTTP Response Status Code Is 202 - Check LINK in Header + Check HTTP Response Header Contain Link GET status information about multiple VNF LCM Operation OCC - Bad Request Response too Big [Documentation] Test ID: 7.3.1.11.13 -- GitLab From 6c4068ff80200367243723aa5371f1e42c6510fb Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 21 Oct 2020 12:06:33 +0200 Subject: [PATCH 109/580] fix for issue #121 in SOL003-VNFLCM-API --- .../ApiVersion.robot | 1 - .../CancelOperationTask.robot | 1 - .../CancelOperationWorkflow.robot | 2 - .../ChangeExternalVNFConnectivityTask.robot | 1 - ...hangeExternalVNFConnectivityWorkflow.robot | 2 - .../ChangeVNFFlavourTask.robot | 1 - .../ChangeVNFFlavourWorkflow.robot | 2 - .../CreateVNFWorkflow.robot | 2 - .../DeleteVNFWorkflow.robot | 2 - .../FailOperationTask.robot | 3 +- .../FailOperationWorkflow.robot | 2 - .../HealVNFTask.robot | 3 +- .../HealVNFWorkflow.robot | 2 - .../IndividualSubscription.robot | 3 +- .../IndividualVNFInstance.robot | 4 +- .../IndividualVnfLcmOperationOccurence.robot | 3 +- .../InstantiateVNFTask.robot | 3 +- .../InstantiateVNFTaskWorkflow.robot | 1 - .../ModifyVNFInformationWorkflow.robot | 2 - .../OperateVNFTask.robot | 3 +- .../OperateVNFWorkflow.robot | 2 - .../RetryOperationTask.robot | 1 - .../RetryOperationWorkflow.robot | 2 - .../RollBackOperationWorkflow.robot | 2 - .../RollbackOperationTask.robot | 3 +- .../ScaleVNFTask.robot | 3 +- .../ScaleVNFToLevelTask.robot | 3 +- .../ScaleVNFToLevelWorkflow.robot | 2 - .../ScaleVNFWorkflow.robot | 2 - .../Subscriptions.robot | 3 +- .../TerminateVNFTask.robot | 3 +- .../TerminateVNFWorkflow.robot | 2 - .../VNFInstances.robot | 3 +- .../VnfLcmOperationOccurences.robot | 3 +- .../environment/configuration.txt | 39 ---------------- .../environment/scaleVariables.txt | 6 --- .../environment/variables.txt | 44 ++++++++++++++++++- 37 files changed, 57 insertions(+), 109 deletions(-) delete mode 100644 SOL003/VNFLifecycleManagement-API/environment/configuration.txt delete mode 100644 SOL003/VNFLifecycleManagement-API/environment/scaleVariables.txt diff --git a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot index dd202cb4f..5c2816ed6 100644 --- a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot @@ -1,5 +1,4 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library DependencyLibrary diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot index cd2102c59..4a3e7202d 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -1,5 +1,4 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt Resource VnfLcmMntOperationKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot index aa7455d28..2d1849cc9 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index e2a527820..3252c6484 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -1,5 +1,4 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Resource VnfLcmMntOperationKeywords.robot diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot index d5c9beabe..6025d66e9 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 630e70279..abb59aa3f 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -1,5 +1,4 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Resource VnfLcmMntOperationKeywords.robot diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot index b2d6e3ebd..db0cb476a 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot index 36f53d1a7..cbf8f1dfd 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot index 3b1c6a1c0..c75d4d55c 100644 --- a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index 2ff77eb5f..e3df8f3b8 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -1,6 +1,5 @@ *** Settings *** -Resource environment/configuration.txt -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library DependencyLibrary Library JSONLibrary diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot index 5ef0573ea..271e9f070 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index 1bc6354d1..50126d5c5 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -1,6 +1,5 @@ *** Settings *** -Resource environment/configuration.txt -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot index e7f4775aa..89091e1fc 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot index 051cb878a..67978fc04 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -1,6 +1,5 @@ *** Settings *** -Resource environment/configuration.txt -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library JSONLibrary Library JSONSchemaLibrary schemas/ diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 8dd6e9662..9d7cdba70 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt -# Suite setup Expect spec SOL003-VNFLifecycleManagement-API.yaml -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Resource VnfLcmMntOperationKeywords.robot Library OperatingSystem diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 2a61f566c..4a4be4b8f 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -1,6 +1,5 @@ *** Settings *** -Resource environment/configuration.txt -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library JSONLibrary Library JSONSchemaLibrary schemas/ diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 843138eca..9c9d3eedb 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -1,6 +1,5 @@ *** Settings *** -Resource environment/configuration.txt -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library DependencyLibrary Library OperatingSystem diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot index 3945ebd84..3a0aa1c13 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot @@ -1,7 +1,6 @@ *** Setting *** Suite Setup Initialize System Suite Teardown Terminate All Processes kill=true -Resource environment/configuration.txt Resource environment/variables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot diff --git a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot index a38a7f520..d105e6032 100644 --- a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index e585852b2..aa9b32b80 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -1,6 +1,5 @@ *** Settings *** -Resource environment/configuration.txt -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot index 422748ad2..ccd2069ce 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index c937f06ec..6b629e78f 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -1,5 +1,4 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library DependencyLibrary diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot index dc216358e..264e6bd32 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot index 1c3d4b935..b9f0ad26f 100644 --- a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index b68a10519..59321c145 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -1,6 +1,5 @@ *** Settings *** -Resource environment/configuration.txt -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library DependencyLibrary Library JSONLibrary diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index 815b95445..fe9baf3a5 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -1,6 +1,5 @@ *** Settings *** -Resource environment/configuration.txt -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index a746bbaa9..fb0f479b2 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -1,6 +1,5 @@ *** Settings *** -Resource environment/configuration.txt -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot index d4e8ac9b6..0fafb57ce 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot index 30d813c84..849fcfe84 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index 043af19b9..bd8f8c780 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -1,6 +1,5 @@ *** Settings *** -Resource environment/configuration.txt -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index 8246953b2..19f63180b 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -1,6 +1,5 @@ *** Settings *** -Resource environment/configuration.txt -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Resource VnfLcmMntOperationKeywords.robot Library OperatingSystem diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot index 8b93074e7..af73db5e8 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot @@ -1,7 +1,5 @@ *** Settings *** -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Resource VnfLcmMntOperationKeywords.robot Resource SubscriptionKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index 6ce3b5eb4..1f6e720d6 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -1,7 +1,6 @@ *** Settings *** # Suite setup Expect spec SOL003-VNFLifecycleManagement-API.yaml -Resource environment/configuration.txt -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Resource VnfLcmMntOperationKeywords.robot Library OperatingSystem diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index 225d814bb..62c450e5a 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -1,6 +1,5 @@ *** Settings *** -Resource environment/configuration.txt -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library JSONLibrary Library JSONSchemaLibrary schemas/ diff --git a/SOL003/VNFLifecycleManagement-API/environment/configuration.txt b/SOL003/VNFLifecycleManagement-API/environment/configuration.txt deleted file mode 100644 index 91cc810be..000000000 --- a/SOL003/VNFLifecycleManagement-API/environment/configuration.txt +++ /dev/null @@ -1,39 +0,0 @@ -*** Variables *** -${VNFM_HOST} localhost # Hostname of the VNFM -${VNFM_PORT} 8080 # Listening port of the VNFM -${VNFM_SCHEMA} https -${ACCEPT} application/json -${ACCEPT_JSON} application/json -${CONTENT_TYPE} application/json -${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== -${AUTH_USAGE} 1 -${CONTENT_TYPE_PATCH} application/merge-patch+json - -${apiRoot} / -${apiName} vnflcm -${apiMajorVersion} v1 - -${CancelMode} GRACEFUL -${VNFM_DUPLICATION} 0 - - - - - -${NFVO_HOST} localhost # Hostname of the NFVO -${NFVO_PORT} 8081 # Listening port of the NFVO -${NFVO_SCHEMA} https -${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX -${SINGLE_FILE_VNFD} 1 # If VNFD is PLAIN TEXT -${ACCEPT_PLAIN} text/plain -${ACCEPT_ZIP} application/zip -${vnfPkgId_processing} 007c111c-38a1-42c0-a666-7475ecb1567c -${ARTIFACT_TYPE} application/octet-stream -${ARTIFACT_ID} artifactId -${WRONG_ACCEPT} application/json -${vnfLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d -${SYNC_MODE} 0 -${sleep_interval} 20s -${callback_uri} http://localhost -${callback_port} 9091 -${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/environment/scaleVariables.txt b/SOL003/VNFLifecycleManagement-API/environment/scaleVariables.txt deleted file mode 100644 index d8e260b92..000000000 --- a/SOL003/VNFLifecycleManagement-API/environment/scaleVariables.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** variables *** -${LccnSubscriptions} -${scaleInfo} -${element} -${aspectId} -${scaleOutResponse} diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 2697018f6..446b1f496 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -1,4 +1,38 @@ *** Variables *** +${VNFM_HOST} localhost # Hostname of the VNFM +${VNFM_PORT} 8080 # Listening port of the VNFM +${VNFM_SCHEMA} https +${ACCEPT} application/json +${ACCEPT_JSON} application/json +${CONTENT_TYPE} application/json +${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${AUTH_USAGE} 1 +${CONTENT_TYPE_PATCH} application/merge-patch+json + +${apiRoot} / +${apiName} vnflcm +${apiMajorVersion} v1 + +${CancelMode} GRACEFUL +${VNFM_DUPLICATION} 0 + + + + + +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO +${NFVO_SCHEMA} https +${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX +${SINGLE_FILE_VNFD} 1 # If VNFD is PLAIN TEXT +${ACCEPT_PLAIN} text/plain +${ACCEPT_ZIP} application/zip +${ARTIFACT_TYPE} application/octet-stream +${ARTIFACT_ID} artifactId +${WRONG_ACCEPT} application/json +${SYNC_MODE} 0 + + ${vnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${vnfLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d @@ -58,4 +92,12 @@ ${healingCause} a new cause ${changeStateTo} STOPPED ${stopType} FORCEFUL -${terminationType} GRACEFUL \ No newline at end of file +${terminationType} GRACEFUL + + +${LccnSubscriptions} +${scaleInfo} +${element} +${aspectId} +${scaleOutResponse} + -- GitLab From 7af7b21b8203f18f721ba3e22b7b3627d06965a2 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 21 Oct 2020 12:21:58 +0200 Subject: [PATCH 110/580] fix --- .../VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot | 2 -- 1 file changed, 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index ba6f5f4c7..f01d3b2d9 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1,8 +1,6 @@ *** Settings *** Library String -Resource environment/configuration.txt Resource environment/variables.txt -Resource environment/scaleVariables.txt Library MockServerLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem -- GitLab From 651981b76d085cba69c86b880754c660b71dc2af Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 21 Oct 2020 12:48:05 +0200 Subject: [PATCH 111/580] fix for issue #121 in SOL003-VNFPckMgmt-API --- .../IndividualSubscription.robot | 1 - .../IndividualVNFPackage.robot | 1 - .../IndividualVNFPackageArtifacts.robot | 1 - .../Subscriptions.robot | 1 - .../VNFDInIndividualVNFPackage.robot | 1 - .../VNFPackageContent.robot | 1 - .../VNFPackageManagementKeywords.robot | 7 --- .../VNFPackages.robot | 1 - .../environment/individualSubscription.txt | 6 --- .../environment/individualVnfPackage.txt | 3 -- .../environment/subscriptions.txt | 7 --- .../environment/variables.txt | 48 ++++++++++++++++++- .../environment/vnfPackageArtifacts.txt | 10 ---- .../environment/vnfPackageContent.txt | 8 ---- .../environment/vnfPackages.txt | 7 --- .../vnfdInIndividualVnfPackage.txt | 9 ---- 16 files changed, 46 insertions(+), 66 deletions(-) delete mode 100644 SOL003/VNFPackageManagement-API/environment/individualSubscription.txt delete mode 100644 SOL003/VNFPackageManagement-API/environment/individualVnfPackage.txt delete mode 100644 SOL003/VNFPackageManagement-API/environment/subscriptions.txt delete mode 100644 SOL003/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt delete mode 100644 SOL003/VNFPackageManagement-API/environment/vnfPackageContent.txt delete mode 100644 SOL003/VNFPackageManagement-API/environment/vnfPackages.txt delete mode 100644 SOL003/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt diff --git a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot index 495e972ec..346b954dc 100644 --- a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/individualSubscription.txt Resource VNFPackageManagementKeywords.robot Library OperatingSystem Library JSONLibrary diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot index a5409db81..6732e9cb8 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/individualVnfPackage.txt Resource VNFPackageManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot index ae798271a..cab10266e 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/vnfPackageArtifacts.txt Resource VNFPackageManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL003/VNFPackageManagement-API/Subscriptions.robot b/SOL003/VNFPackageManagement-API/Subscriptions.robot index 174ab56d4..534beaa72 100644 --- a/SOL003/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL003/VNFPackageManagement-API/Subscriptions.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/subscriptions.txt Resource VNFPackageManagementKeywords.robot Library OperatingSystem Library JSONLibrary diff --git a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index dce75ae61..ecac9cb58 100644 --- a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/vnfdInIndividualVnfPackage.txt Resource VNFPackageManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot index 8a9d9c332..dc8a2c3b7 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/vnfPackageContent.txt Resource VNFPackageManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 1cbc4b7a7..dc0f8ccf4 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1,12 +1,5 @@ *** Settings *** Resource environment/variables.txt -Resource environment/subscriptions.txt -Resource environment/individualSubscription.txt -Resource environment/vnfPackages.txt -Resource environment/individualVnfPackage.txt -Resource environment/vnfPackageContent.txt -Resource environment/vnfPackageArtifacts.txt -Resource environment/vnfdInIndividualVnfPackage.txt Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library MockServerLibrary Library OperatingSystem diff --git a/SOL003/VNFPackageManagement-API/VNFPackages.robot b/SOL003/VNFPackageManagement-API/VNFPackages.robot index 982c0eef9..77773430d 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackages.robot @@ -1,5 +1,4 @@ *** Settings *** -Resource environment/vnfPackages.txt # VNF Packages specific parameters Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Resource VNFPackageManagementKeywords.robot diff --git a/SOL003/VNFPackageManagement-API/environment/individualSubscription.txt b/SOL003/VNFPackageManagement-API/environment/individualSubscription.txt deleted file mode 100644 index caf1c582e..000000000 --- a/SOL003/VNFPackageManagement-API/environment/individualSubscription.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${subscriptionId} f3ae6df7-07e1-47c9-8924-9ebe10343586 -${erroneousSubscriptionId} 442e3ee5-0499-4849-9b31-eb91ce1638f1 # Not existing ID on the subscriptions -${newSubscriptionId} newSubsciptionId -${response} httpresponse -${origResponse} httpresponse diff --git a/SOL003/VNFPackageManagement-API/environment/individualVnfPackage.txt b/SOL003/VNFPackageManagement-API/environment/individualVnfPackage.txt deleted file mode 100644 index 43f793bdd..000000000 --- a/SOL003/VNFPackageManagement-API/environment/individualVnfPackage.txt +++ /dev/null @@ -1,3 +0,0 @@ -*** Variables *** -${erroneousVnfPackageId} erroneousVnfPackageId # Given ID for vnfPkg not present in database -${erroneousVnfdId} erroneousVnfdId \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/environment/subscriptions.txt b/SOL003/VNFPackageManagement-API/environment/subscriptions.txt deleted file mode 100644 index ca34ee831..000000000 --- a/SOL003/VNFPackageManagement-API/environment/subscriptions.txt +++ /dev/null @@ -1,7 +0,0 @@ -*** Variables *** -${filter_ok} callbackUri=http://172.22.1.7:9091/vnfpkgm/subscriptions -${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based -${callbackUri} http://172.22.1.7:9091/vnfpkgm/subscriptions -${total_polling_time} 2 min -${polling_interval} 10 sec -${SEPERATOR} = \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 2639b8457..659a3e8e3 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -22,7 +22,7 @@ ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the F ${NFVO_ALLOWS_DUPLICATE_SUBS} 1 -${response} +${response} httpresponse ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar @@ -40,4 +40,48 @@ ${notification_request} [] ${notification_response} [] ${NFVO_non-MANO_OK} 1 # If 1 means that non-MANO artifacts are supported by the NFVO -${non_mano_artifact_sets} \ No newline at end of file +${non_mano_artifact_sets} + + +${subscriptionId} f3ae6df7-07e1-47c9-8924-9ebe10343586 +${erroneousSubscriptionId} 442e3ee5-0499-4849-9b31-eb91ce1638f1 # Not existing ID on the subscriptions +${newSubscriptionId} newSubsciptionId + +${origResponse} httpresponse + + +${erroneousVnfPackageId} erroneousVnfPackageId # Given ID for vnfPkg not present in database +${erroneousVnfdId} erroneousVnfdId + + +${filter_ok} callbackUri=http://172.22.1.7:9091/vnfpkgm/subscriptions +${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based +${SEPERATOR} = + + +${ACCEPT_PLAIN} text/plain +${CONTENT_TYPE_PLAIN} text/plain +${vnfPkgPlainVNFD} c26ad7fb-072b-48c4-a663-7d71646d9e98 # The VNF Pakcage contains a VNFD which is a Single Plain File +${ACCEPT_ZIP} application/zip +${CONTENT_TYPE_ZIP} application/zip +${vnfPkgZipVNFD} f5b220d4-6177-4ebb-a554-a43311e16075 # The VNF Package contains a VNFD composed by multiple files +${erroneousVnfPkgId} erroneousVnfPackageId # Given ID for vnfPkg not present in database +${vndIdZipVnfd} f5b220d4-6177-4ebb-a554-a43311e16075 + + +${artifactPath} artifactPath +${CONTENT_TYPE_OCTET} application/octet-stream +${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO +${range} bytes=0-1023 +${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes +${vnfPackageOctetStreamId} octetStreamPkgId +${vnfdOctetStreamId} octetStreamVnfdId +${vndEncryptedArtifactID} encryptedId + + +${length} 1024 + +${POS_FILTER} vnfdId=41fdd38a-3d4c-465c-83e0-f80e014425f8 ,vnfProvider=NXW # Positive case, suing compiant fields name for filtering get request +${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field +${fields} softwareImages,additionalArtifacts +${VAR_SEPERATOR} & diff --git a/SOL003/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt b/SOL003/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt deleted file mode 100644 index 9560a81a2..000000000 --- a/SOL003/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt +++ /dev/null @@ -1,10 +0,0 @@ -*** Variables *** -${artifactPath} artifactPath -${CONTENT_TYPE_OCTET} application/octet-stream -${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO -${range} bytes=0-1023 -${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes -${erroneousVnfPkgId} erroneousPkgId -${vnfPackageOctetStreamId} octetStreamPkgId -${vnfdOctetStreamId} octetStreamVnfdId -${vndEncryptedArtifactID} encryptedId \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/environment/vnfPackageContent.txt b/SOL003/VNFPackageManagement-API/environment/vnfPackageContent.txt deleted file mode 100644 index a79a251ee..000000000 --- a/SOL003/VNFPackageManagement-API/environment/vnfPackageContent.txt +++ /dev/null @@ -1,8 +0,0 @@ -*** Variables *** -${ACCEPT_ZIP} application/zip -${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO -${range} bytes=0-1023 -${length} 1024 -${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes -${erroneousVnfPkgId} erroneousPkgId -${CONTENT_TYPE_ZIP} application/zip \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/environment/vnfPackages.txt b/SOL003/VNFPackageManagement-API/environment/vnfPackages.txt deleted file mode 100644 index ff87485e0..000000000 --- a/SOL003/VNFPackageManagement-API/environment/vnfPackages.txt +++ /dev/null @@ -1,7 +0,0 @@ -*** Variables *** -${POS_FILTER} vnfdId=41fdd38a-3d4c-465c-83e0-f80e014425f8 ,vnfProvider=NXW # Positive case, suing compiant fields name for filtering get request -${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field -${fields} softwareImages,additionalArtifacts -${response} httpresponse -${SEPERATOR} = -${VAR_SEPERATOR} & \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt b/SOL003/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt deleted file mode 100644 index b1100153b..000000000 --- a/SOL003/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt +++ /dev/null @@ -1,9 +0,0 @@ -*** Variables *** -${ACCEPT_PLAIN} text/plain -${CONTENT_TYPE_PLAIN} text/plain -${vnfPkgPlainVNFD} c26ad7fb-072b-48c4-a663-7d71646d9e98 # The VNF Pakcage contains a VNFD which is a Single Plain File -${ACCEPT_ZIP} application/zip -${CONTENT_TYPE_ZIP} application/zip -${vnfPkgZipVNFD} f5b220d4-6177-4ebb-a554-a43311e16075 # The VNF Package contains a VNFD composed by multiple files -${erroneousVnfPkgId} erroneousVnfPackageId # Given ID for vnfPkg not present in database -${vndIdZipVnfd} f5b220d4-6177-4ebb-a554-a43311e16075 -- GitLab From 74037e12d468a515b404b27f8e753ee8de1453bd Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 21 Oct 2020 13:09:26 +0200 Subject: [PATCH 112/580] fix for issue #121 in SOL003-VNFPM-API --- .../IndividualPmJob.robot | 1 - .../IndividualReport.robot | 1 - .../IndividualThreshold.robot | 1 - .../VNFPerformanceManagement-API/PMJobs.robot | 1 - .../PerformanceManagementNotification.robot | 1 - .../Thresholds.robot | 1 - .../environment/IndividualPmJob.txt | 6 ---- .../environment/individualThresholds.txt | 6 ---- .../environment/notifications.txt | 12 ------- .../environment/pmJobs.txt | 8 ----- .../environment/reports.txt | 7 ---- .../environment/thresholds.txt | 6 ---- .../environment/variables.txt | 35 +++++++++++++++++-- 13 files changed, 33 insertions(+), 53 deletions(-) delete mode 100644 SOL003/VNFPerformanceManagement-API/environment/IndividualPmJob.txt delete mode 100644 SOL003/VNFPerformanceManagement-API/environment/individualThresholds.txt delete mode 100644 SOL003/VNFPerformanceManagement-API/environment/notifications.txt delete mode 100644 SOL003/VNFPerformanceManagement-API/environment/pmJobs.txt delete mode 100644 SOL003/VNFPerformanceManagement-API/environment/reports.txt delete mode 100644 SOL003/VNFPerformanceManagement-API/environment/thresholds.txt diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index f93eae424..d8324e537 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -3,7 +3,6 @@ Library OperatingSystem Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Library JSONLibrary -Resource environment/IndividualPmJob.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false *** Test Cases *** diff --git a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot index 4a4837916..62be3b6fc 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/reports.txt Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false diff --git a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot index a1372c72d..b34edb3a9 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -4,7 +4,6 @@ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem -Resource environment/individualThresholds.txt *** Test Cases *** GET Individual Threshold diff --git a/SOL003/VNFPerformanceManagement-API/PMJobs.robot b/SOL003/VNFPerformanceManagement-API/PMJobs.robot index 978e21542..5ef0d5a24 100644 --- a/SOL003/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL003/VNFPerformanceManagement-API/PMJobs.robot @@ -4,7 +4,6 @@ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library OperatingSystem Library String -Resource environment/pmJobs.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library MockServerLibrary diff --git a/SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot b/SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot index a2e02a858..fc6f7035b 100644 --- a/SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot +++ b/SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot @@ -1,5 +1,4 @@ *** Setting *** -Resource environment/notifications.txt Resource environment/variables.txt Suite Setup Create Sessions Suite Teardown Terminate All Processes kill=true diff --git a/SOL003/VNFPerformanceManagement-API/Thresholds.robot b/SOL003/VNFPerformanceManagement-API/Thresholds.robot index 945547029..d60f477cb 100644 --- a/SOL003/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL003/VNFPerformanceManagement-API/Thresholds.robot @@ -4,7 +4,6 @@ Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Resource environment/thresholds.txt Library OperatingSystem *** Test Cases *** diff --git a/SOL003/VNFPerformanceManagement-API/environment/IndividualPmJob.txt b/SOL003/VNFPerformanceManagement-API/environment/IndividualPmJob.txt deleted file mode 100644 index b3616b30f..000000000 --- a/SOL003/VNFPerformanceManagement-API/environment/IndividualPmJob.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e -${erroneousPmJobId} erroneousPmJobId -${newPmJobId} newPmJobId -${response}= httpresponse -${OrigResponse}= httpresponse \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/environment/individualThresholds.txt b/SOL003/VNFPerformanceManagement-API/environment/individualThresholds.txt deleted file mode 100644 index 1efba79c6..000000000 --- a/SOL003/VNFPerformanceManagement-API/environment/individualThresholds.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${thresholdId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${erroneousThresholdId} erroneousThresholdId -${newThresholdId} newThresholdId -${response}= httpresponse -${origResponse}= httpresponse \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/environment/notifications.txt b/SOL003/VNFPerformanceManagement-API/environment/notifications.txt deleted file mode 100644 index cd1193ae5..000000000 --- a/SOL003/VNFPerformanceManagement-API/environment/notifications.txt +++ /dev/null @@ -1,12 +0,0 @@ -*** Variables *** -${callback_uri} http://localhost -${callback_port} 9091 -${callback_endpoint} /endpoint -${callback_endpoint_fwd} /endpoint/check -${callback_endpoint_error} /endpoint_404 -${sleep_interval} 20s -${total_polling_time} 2 min -${polling_interval} 10 sec - -${notification_request} [] -${notification_response} [] \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/environment/pmJobs.txt b/SOL003/VNFPerformanceManagement-API/environment/pmJobs.txt deleted file mode 100644 index bccab232a..000000000 --- a/SOL003/VNFPerformanceManagement-API/environment/pmJobs.txt +++ /dev/null @@ -1,8 +0,0 @@ -*** Settings *** -Resource variables.txt -*** Variables *** -${POS_FILTER} objectInstanceIds=${objectInstanceIds} -${NEG_FILTER} criteriaPmJob=erroneousAttributeName -${fields} criteria,objectInstanceIds -${response} httpresponse -${SEPERATOR} = \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/environment/reports.txt b/SOL003/VNFPerformanceManagement-API/environment/reports.txt deleted file mode 100644 index 6ac5f7c0b..000000000 --- a/SOL003/VNFPerformanceManagement-API/environment/reports.txt +++ /dev/null @@ -1,7 +0,0 @@ -*** Variables *** -${pmJobId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 -${erroneousReportId} erroneousReportId -${newReportId} newReportId -${response}= httpresponse -${OrigResponse}= httpresponse diff --git a/SOL003/VNFPerformanceManagement-API/environment/thresholds.txt b/SOL003/VNFPerformanceManagement-API/environment/thresholds.txt deleted file mode 100644 index 18b3f32f4..000000000 --- a/SOL003/VNFPerformanceManagement-API/environment/thresholds.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Settings *** -Resource variables.txt -*** Variables *** -${FILTER_OK} objectInstanceId=${objectInstanceIds} -${FILTER_KO} criterias=erroneousFilter -${response}= httpresponse \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/environment/variables.txt b/SOL003/VNFPerformanceManagement-API/environment/variables.txt index 348ad4738..6eaca448f 100644 --- a/SOL003/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL003/VNFPerformanceManagement-API/environment/variables.txt @@ -30,6 +30,37 @@ ${polling_interval} 10 sec ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -${response} +${objectInstanceIds} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${objectInstanceIds} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a \ No newline at end of file + +${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e +${erroneousPmJobId} erroneousPmJobId +${newPmJobId} newPmJobId +${response}= httpresponse +${OrigResponse}= httpresponse + + +${thresholdId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${erroneousThresholdId} erroneousThresholdId +${newThresholdId} newThresholdId + + +${callback_endpoint_fwd} /endpoint/check + + +${notification_request} [] +${notification_response} [] + + +${POS_FILTER} objectInstanceIds=${objectInstanceIds} +${NEG_FILTER} criteriaPmJob=erroneousAttributeName +${fields} criteria,objectInstanceIds +${SEPERATOR} = + + +${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 +${erroneousReportId} erroneousReportId +${newReportId} newReportId + +${FILTER_OK} objectInstanceId=${objectInstanceIds} +${FILTER_KO} criterias=erroneousFilter \ No newline at end of file -- GitLab From 139875a3de52da3d18f1fce6821fe5c465a064b5 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 21 Oct 2020 14:21:45 +0200 Subject: [PATCH 113/580] updated index file --- indexes/sol_003_index.csv | 2 -- 1 file changed, 2 deletions(-) diff --git a/indexes/sol_003_index.csv b/indexes/sol_003_index.csv index 922ac9509..b862493eb 100644 --- a/indexes/sol_003_index.csv +++ b/indexes/sol_003_index.csv @@ -55,8 +55,6 @@ 7.3.4.3,Individual Performance Report Resource Endpoint, IndividualReport.robot 7.3.4.4,Thresholds Resource Endpoint, Thresholds.robot 7.3.4.5,Individual Threshold Resource Endpoint, IndividualThreshold.robot -7.3.4.6,Subscriptions, Subscriptions.robot -7.3.4.7,Individual Subscription Resource Endpoint, IndividualSubscription.robot 7.3.4.8,Notification Endpoint, PerformanceManagementNotification.robot 7.3.4.9,API Version Resource Endpoint, ApiVersion.robot 7.3.5,VNF Fault Management interface, VNFFaultManagement-API -- GitLab From dbca055d53a69440c59d8516e24e5cc8fb0c7b60 Mon Sep 17 00:00:00 2001 From: Sana Zulfiqar Date: Thu, 22 Oct 2020 12:46:14 +0200 Subject: [PATCH 114/580] Updated post-condition.robot --- SOL003/VNFFaultManagement-API/IndividualSubscription.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL003/VNFFaultManagement-API/IndividualSubscription.robot b/SOL003/VNFFaultManagement-API/IndividualSubscription.robot index 6ff137758..f69237167 100644 --- a/SOL003/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFFaultManagement-API/IndividualSubscription.robot @@ -63,7 +63,7 @@ DELETE an individual subscription ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: subscription is not deleted + ... Post-Conditions: subscription is deleted DELETE Individual Subscription Check HTTP Response Status Code Is 204 Check Individual Subscription deleted -- GitLab From 286e6fbb3d7d2ca62ba93cbc3a455495875e44ff Mon Sep 17 00:00:00 2001 From: Sana Zulfiqar Date: Thu, 22 Oct 2020 12:51:53 +0200 Subject: [PATCH 115/580] minor fixes.robot --- SOL003/VNFFaultManagement-API/IndividualAlarm.robot | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot index bb3b81d10..a958e5e31 100644 --- a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot @@ -1,5 +1,5 @@ *** Settings *** -# Suite setup Expect spec SOL003-VNFLifecycleManagement-API.yaml + Resource environment/variables.txt Resource FaultManagement-APIKeyword.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false @@ -37,8 +37,8 @@ Get information about an fault management individual alarm PUT Alarm - Method not implemented [Documentation] Test ID: 7.3.5.2.3 ... Test title: PUT Alarm - Method not implemented - ... Test objective: he objective is to test that PUT method is not allowed to for Fault management individual alarm on VNF - ... Pre-conditions: The related alarm exists + ... Test objective: The objective is to test that PUT method is not allowed to for Fault management individual alarm on VNF + ... Pre-conditions: none ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none @@ -93,7 +93,7 @@ DELETE Alarm - Method not implemented [Documentation] Test ID: 7.3.5.2.7 ... Test title: DELETE Alarm - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management individual alarm on VNF - ... Pre-conditions: nona + ... Pre-conditions: none ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none -- GitLab From 9a6bea2abbb1429bf38e699c10217853973ef9c7 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 27 Oct 2020 11:51:16 +0500 Subject: [PATCH 116/580] added majorApiVersion --- SOL005/NSDManagement-API/ApiVersion.robot | 10 +- .../NSDManagementKeywords.robot | 252 +++++++++--------- .../environment/variables.txt | 7 +- 3 files changed, 133 insertions(+), 136 deletions(-) diff --git a/SOL005/NSDManagement-API/ApiVersion.robot b/SOL005/NSDManagement-API/ApiVersion.robot index ed10f38f5..40a46a3a5 100644 --- a/SOL005/NSDManagement-API/ApiVersion.robot +++ b/SOL005/NSDManagement-API/ApiVersion.robot @@ -169,35 +169,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 245cac747..f179e961a 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -19,7 +19,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}/${apiVersion}/ns_descriptors + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -27,7 +27,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}/${apiVersion}/ns_descriptors?${NSD_NAME} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?${NSD_NAME} ${output}= Output response Set Suite Variable ${response} ${output} @@ -40,7 +40,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}/${apiVersion}/ns_descriptors?${NEG_FIELDS} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -50,7 +50,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}/${apiVersion}/ns_descriptors + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -59,7 +59,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}/${apiVersion}/ns_descriptors + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -69,7 +69,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}/${apiVersion}/ns_descriptors + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -77,7 +77,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}/${apiVersion}/ns_descriptors?all_fields + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -91,7 +91,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}/${apiVersion}/ns_descriptors?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -106,7 +106,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}/${apiVersion}/ns_descriptors?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -121,7 +121,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}/${apiVersion}/ns_descriptors?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -137,7 +137,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}/${apiVersion}/ns_descriptors ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -145,7 +145,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}/${apiVersion}/ns_descriptors/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -156,7 +156,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}/${apiVersion}/ns_descriptors + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -165,7 +165,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}/${apiVersion}/ns_descriptors + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -174,7 +174,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}/${apiVersion}/ns_descriptors + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -186,7 +186,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}/${apiVersion}/ns_descriptors/${nsdInfoId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -199,7 +199,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}/${apiVersion}/ns_descriptors/${erroneous_nsdInfoId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId} Integer response status 404 ${output}= Output response Set Suite Variable ${response} ${output} @@ -212,7 +212,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}/${apiVersion}/ns_descriptors/${nsdInfoId} ${body} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -232,7 +232,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}/${apiVersion}/ns_descriptors/${nsdInfoId} ${body} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -243,7 +243,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}/${apiVersion}/ns_descriptors/${notOnboardedNsdInfoId} ${body} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -254,7 +254,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}/${apiVersion}/ns_descriptors/${nsdInfoId} ${body} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -262,21 +262,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}/${apiVersion}/ns_descriptors/${disabledNsdInfoId} + 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}/${apiVersion}/ns_descriptors/${disabledNsdInfoId} + 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}/${apiVersion}/ns_descriptors/${nsdInfoId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -288,7 +288,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}/${apiVersion}/ns_descriptors/${nsdInfoId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -297,7 +297,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}/${apiVersion}/ns_descriptors/${nsdInfoId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -325,7 +325,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -333,7 +333,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}/${apiVersion}/ns_descriptors/${erroneous_nsdInfoId}/nsd_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -341,7 +341,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}/${apiVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -351,7 +351,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -361,7 +361,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -370,7 +370,7 @@ Send PUT Request to upload NSD Content as zip file in asynchronous mode Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body}= Get File ${contentZipFile} - PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${body} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${body} ${response}= Output response body Should Be Empty ${response} ${output}= Output response @@ -381,7 +381,7 @@ Send PUT Request to upload NSD Content as zip file in synchronous mode Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body}= Get File ${contentZipFile} - PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${body} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${body} ${response}= Output response body Should Be Empty ${response} ${output}= Output response @@ -408,7 +408,7 @@ Send PUT Request to upload NSD 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 ${contentZipFile} - PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${creatingNsdInfoId}/nsd_content ${body} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${creatingNsdInfoId}/nsd_content ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -416,7 +416,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -424,7 +424,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -432,7 +432,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -440,7 +440,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}/${apiVersion}/pnf_descriptors + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -448,7 +448,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}/${apiVersion}/pnf_descriptors?${PNFD_NAME} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?${PNFD_NAME} ${output}= Output response Set Suite Variable ${response} ${output} @@ -461,7 +461,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}/${apiVersion}/pnf_descriptors?${NEG_FIELDS} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -469,7 +469,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}/${apiVersion}/pnf_descriptors?all_fields + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -483,7 +483,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}/${apiVersion}/pnf_descriptors?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -498,7 +498,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}/${apiVersion}/pnf_descriptors?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -513,7 +513,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}/${apiVersion}/pnf_descriptors?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -529,7 +529,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}/${apiVersion}/pnf_descriptors ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -537,7 +537,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}/${apiVersion}/pnf_descriptors/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -548,7 +548,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}/${apiVersion}/ns_descriptors + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -557,7 +557,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}/${apiVersion}/pnf_descriptors + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -566,7 +566,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}/${apiVersion}/pnf_descriptors + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -578,7 +578,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}/${apiVersion}/pnf_descriptors/${pnfdInfoId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -591,7 +591,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}/${apiVersion}/pnf_descriptors/${erroneous_pnfdInfoId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${erroneous_pnfdInfoId} Integer response status 404 ${output}= Output response Set Suite Variable ${response} ${output} @@ -603,7 +603,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}/${apiVersion}/pnf_descriptors/${pnfdInfoId} ${body} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} Set Suite Variable ${body["userDefinedData"]} ${userDefinedDataSet} @@ -619,7 +619,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}/${apiVersion}/pnf_descriptors/${pnfdInfoId} ${body} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -627,14 +627,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}/${apiVersion}/pnf_descriptors/${pnfdInfoId} + 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}/${apiVersion}/pnf_descriptors/${pnfdInfoId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} Integer response status 404 Send POST Request for Individual PNF Descriptor @@ -642,7 +642,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}/${apiVersion}/pnf_descriptors/${pnfdInfoId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -651,7 +651,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}/${apiVersion}/pnf_descriptors/${pnfdInfoId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -659,7 +659,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}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -668,7 +668,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}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -677,7 +677,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}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -685,7 +685,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}/${apiVersion}/pnf_descriptors/${erroneous_pnfdInfoId}/pnfd_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${erroneous_pnfdInfoId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -693,7 +693,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}/${apiVersion}/pnf_descriptors/${onboardingStatePnfdId}/pnfd_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${onboardingStatePnfdId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -702,7 +702,7 @@ Send PUT Request to upload PNFD Content as zip file Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body}= Get File ${contentFilePnfd} - PUT ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${body} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${body} ${response}= Output response body Should Be Empty ${response} ${output}= Output response @@ -713,7 +713,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}/${apiVersion}/pnf_descriptors/${creatingNsdInfoId}/pnfd_content ${body} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${creatingNsdInfoId}/pnfd_content ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -721,7 +721,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}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -729,7 +729,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}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -737,7 +737,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}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -750,7 +750,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}/${apiVersion}/subscriptions + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -758,7 +758,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}/${apiVersion}/subscriptions?${filter_ok} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} @@ -767,7 +767,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}/${apiVersion}/subscriptions?${filter_ko} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} @@ -776,7 +776,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}/${apiVersion}/subscription + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -789,7 +789,7 @@ Send Post Request for NSD Management Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body}= Get File jsons/subscriptions.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 @@ -802,7 +802,7 @@ Send Post Request for Duplicated NSD Management Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body}= Get File jsons/subscriptions.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 @@ -815,7 +815,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}/${apiVersion}/subscriptions + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -825,7 +825,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}/${apiVersion}/subscriptions + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -834,7 +834,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}/${apiVersion}/subscriptions + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -876,7 +876,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}/${apiVersion}/subscriptions/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -902,7 +902,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}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -910,7 +910,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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -918,7 +918,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}/${apiVersion}/subscriptions/${subscriptionId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -931,31 +931,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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + 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}/${apiVersion}/subscriptions/${newSubscriptionId} + 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}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + 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}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -971,7 +971,7 @@ Check Postcondition NSD Management 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}/${apiVersion}/subscriptions/${newSubscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 404 @@ -1011,7 +1011,7 @@ Check LINK in Header 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}/${apiVersion}/ns_descriptors/${nsdInfoId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} Should Be Equal As Strings ${response['status']} 200 Wait for individual grant successful notification @@ -1021,7 +1021,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}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1029,7 +1029,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1038,7 +1038,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}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1047,7 +1047,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1055,7 +1055,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1064,7 +1064,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}/${apiVersion}/ns_descriptors/${erroneous_nsdInfoId}/nsd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1073,7 +1073,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}/${apiVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1081,7 +1081,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1089,7 +1089,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1097,7 +1097,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1105,7 +1105,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1113,14 +1113,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd/include_signatures + 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}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/manifest + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdPlain}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1128,7 +1128,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/manifest/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1137,7 +1137,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}/${apiVersion}/ns_descriptors/${notOnboardedNsdInfoId}/manifest + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1145,7 +1145,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/manifest + POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1153,7 +1153,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/manifest + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1161,7 +1161,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/manifest + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1169,7 +1169,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}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/manifest + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1177,7 +1177,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1185,7 +1185,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1194,7 +1194,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1203,7 +1203,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1211,7 +1211,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1220,7 +1220,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}/${apiVersion}/ns_descriptors/${erroneous_PNFDInfoId}/pnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_PNFDInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1229,7 +1229,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}/${apiVersion}/ns_descriptors/${onboardingStatePnfdId}/pnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${onboardingStatePnfdId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1237,7 +1237,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1245,7 +1245,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1253,7 +1253,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1261,7 +1261,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1269,14 +1269,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/pnfd + 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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/manifest + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1284,7 +1284,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/manifest/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1293,7 +1293,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}/${apiVersion}/ns_descriptors/${notOnboardedNsdInfoId}/manifest + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1301,7 +1301,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/manifest + POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1309,7 +1309,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/manifest + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1317,7 +1317,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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/manifest + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1325,6 +1325,6 @@ 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}/${apiVersion}/ns_descriptors/${pnfdInfoId}/manifest + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index 9de189269..62609ee28 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -8,7 +8,7 @@ ${ACCEPT_JSON} application/json ${apiRoot} / ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken -${apiVersion} v1 +${apiMajorVersion} v1 ${apiName} nsd ${FIELD_USAGE} 1 ${NFVO_AUTHENTICATION} Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 @@ -21,10 +21,7 @@ ${callback_uri} http://172.22.1.7:${callback_port} ${callback_endpoint} /nsd/subscriptions ${callback_endpoint_error} /subs_404 ${callback_endpoint_fwd} /endpoint/check -${callback_endpoint_error} /endpoint_404 ${sleep_interval} 20s -${total_polling_time} 2 min -${polling_interval} 10 sec ${notification_request} [] ${notification_response} [] @@ -36,6 +33,6 @@ ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the F ${NFVO_ALLOWS_DUPLICATE_SUBS} 1 ${total_polling_time} 2 min ${polling_interval} 10 sec -${response} +${response} {} ${retry} 5x ${interval} 5 sec \ No newline at end of file -- GitLab From 9ed17d9908932e505de34231875f77ccf0111280 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 27 Oct 2020 12:56:56 +0500 Subject: [PATCH 117/580] minor bugs fixed and new testcases added --- .../IndividualNSDescriptor.robot | 1 + .../IndividualPnfDescriptor.robot | 4 +- .../IndividualSubscription.robot | 12 +++-- .../NSDManagementKeywords.robot | 45 ++++++++----------- .../NSDManagementNotification.robot | 1 - SOL005/NSDManagement-API/NSDescriptors.robot | 18 +++++++- SOL005/NSDManagement-API/PNFDescriptors.robot | 27 ++++++++--- SOL005/NSDManagement-API/Subscriptions.robot | 2 +- .../jsons/subscriptions.json | 4 +- 9 files changed, 66 insertions(+), 48 deletions(-) diff --git a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot index 97654d362..a40de6a1f 100644 --- a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot @@ -36,6 +36,7 @@ GET Individual Network Service Descriptor Information with invalid resource iden ... Post-Conditions: none GET Individual Network Service Descriptor Information with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails Disable Individual Network Service Descriptor [Documentation] Test ID: 5.3.1.2.3 diff --git a/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot b/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot index eb15a97c2..25e264186 100644 --- a/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot @@ -35,6 +35,7 @@ GET Individual PNF Descriptor Information with invalid resource identifier ... Post-Conditions: none GET Individual PNF Descriptor Information with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is problemDetails Update Individual PNF Descriptor [Documentation] Test ID: 5.3.1.5.3 @@ -50,7 +51,6 @@ Update Individual PNF Descriptor Check HTTP Response Body Json Schema Is PnfdInfoModification Check Postcondition PNF Descriptor is modified according to the requested update - Update Individual PNF Descriptor with HTTP Etag precondition failure [Documentation] Test ID: 5.3.1.5.4 ... Test title: Update Individual PNF Descriptor with HTTP Etag precondition failure @@ -79,7 +79,7 @@ PUT Individual PNF Descriptor - Method not implemented [Documentation] Test ID: 5.3.1.5.6 ... Test title: PUT Individual PNF Descriptor - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a new PNF Descriptor - ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. + ... Pre-conditions: none ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none diff --git a/SOL005/NSDManagement-API/IndividualSubscription.robot b/SOL005/NSDManagement-API/IndividualSubscription.robot index 655572bc8..2b3ef1c62 100644 --- a/SOL005/NSDManagement-API/IndividualSubscription.robot +++ b/SOL005/NSDManagement-API/IndividualSubscription.robot @@ -33,6 +33,7 @@ GET Individual NSD Management Subscription with invalid resource identifier ... Post-Conditions: none GET individual NSD Management Subscription with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails DELETE Individual NSD Management Subscription with invalid resource identifier [Documentation] Test ID: 5.3.1.8.3 @@ -54,23 +55,21 @@ POST Individual NSD Management Subscription - Method not implemented ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NSD Management Subscription is not created on the NFVO + ... Post-Conditions: none Send Post request for individual NSD Management Subscription Check HTTP Response Status Code Is 405 - Check Postcondition NSD Management Subscription is not Created PUT Individual NSD Management Subscription - Method not implemented [Documentation] Test ID: 5.3.1.8.5 ... Test title: PUT Individual NSD Management Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NSD Management subscription - ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. + ... Pre-conditions: none ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NSD Management subscription is not modified by the operation + ... Post-Conditions: none Send Put request for individual NSD Management Subscription Check HTTP Response Status Code Is 405 - Check Postcondition NSD Management Subscription is Unmodified (Implicit) PATCH Individual NSD Management Subscription - Method not implemented [Documentation] Test ID: 5.3.1.8.6 @@ -80,10 +79,9 @@ PATCH Individual NSD Management Subscription - Method not implemented ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NSD Management subscription is not modified by the operation + ... Post-Conditions: none Send Patch request for individual NSD Management Subscription Check HTTP Response Status Code Is 405 - Check Postcondition NSD Management Subscription is Unmodified (Implicit) DELETE Individual NSD Management Subscription [Documentation] Test ID: 5.3.1.8.7 diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index a9cf9cb6d..2b73948e7 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -102,14 +102,21 @@ Check HTTP Response Body NsdInfos Matches the requested exclude_default selector Should Be Empty ${user} Log Reports element is empty as expected - 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} ${output}= Output response - Set Suite Variable ${response} ${output} + Set Suite Variable ${response} ${output} + +GET all Network Service Descriptors Information with exclude_default and 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?exclude_default&fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} Check HTTP Response Body NsdInfos Matches the requested fields selector Log Validating user defined data schema @@ -487,14 +494,21 @@ Check HTTP Response Body PnfdInfos Matches the requested exclude_default selecto Should Be Empty ${user} Log Reports element is empty as expected - 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} ${output}= Output response - Set Suite Variable ${response} ${output} + Set Suite Variable ${response} ${output} + +GET all PNF Descriptors Information with exclude_default and 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?exclude_default&fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} Check HTTP Response Body PnfdInfos Matches the requested fields selector Log Validating user defined data schema @@ -564,10 +578,6 @@ Send DELETE Request for all PNF Descriptors ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition PNF Descriptors Exist - Log Checking that PNFD still exists - GET all PNF Descriptors Information - GET Individual PNF Descriptor Information Log The GET method reads information about an individual PNF descriptor Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -954,23 +964,6 @@ Send Patch request for individual NSD Management Subscription PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition NSD Management Subscription is Unmodified (Implicit) - Log Check postconidtion subscription not modified - GET individual NSD Management Subscription - Log Check Response matches original VNF Threshold - ${subscription}= evaluate json.loads('''${response['body']}''') json - Should Be Equal ${origResponse['body']['id']} ${subscription.id} - Should Be Equal ${origResponse['body']['callbackUri']} ${subscription.callbackUri} - -Check Postcondition NSD Management 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} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 Check HTTP Response Body Subscription Identifier matches the requested Subscription Log Trying to check response ID @@ -1000,7 +993,7 @@ Check Notification Endpoint Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL005/NSDManagement-API/NSDManagementNotification.robot b/SOL005/NSDManagement-API/NSDManagementNotification.robot index 60dee5ab9..0648fb198 100644 --- a/SOL005/NSDManagement-API/NSDManagementNotification.robot +++ b/SOL005/NSDManagement-API/NSDManagementNotification.robot @@ -9,7 +9,6 @@ Library BuiltIn Library Collections Library String - *** Test Cases *** NSD Onboarding Notification [Documentation] Test ID: 5.3.1.9.1 diff --git a/SOL005/NSDManagement-API/NSDescriptors.robot b/SOL005/NSDManagement-API/NSDescriptors.robot index 4f0789aae..f0460c39b 100644 --- a/SOL005/NSDManagement-API/NSDescriptors.robot +++ b/SOL005/NSDManagement-API/NSDescriptors.robot @@ -204,7 +204,7 @@ GET all Network Service Descriptors Information as Paged Response ... Post-Conditions: none GET all Network Service Descriptors Information Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link Get all Network Service Descriptors Information - Bad Request Response too Big [Documentation] Test ID: 5.3.1.1.16 @@ -217,4 +217,18 @@ Get all Network Service Descriptors Information - Bad Request Response too Big ... Post-Conditions: none GET all Network Service Descriptors Information Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +GET all Network Service Descriptors Information with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 5.3.1.1.17 + ... Test title: GET all Network Service Descriptors Information with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to test the retrieval of all Network Service Descriptors Information with "exclude_default" and "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" and "fields" selector + ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports the use of "exclude_default" and "fields" attribute selector + ... Post-Conditions: none + GET all Network Service Descriptors Information with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NsdInfos + Check HTTP Response Body NsdInfos Matches the requested fields selector \ No newline at end of file diff --git a/SOL005/NSDManagement-API/PNFDescriptors.robot b/SOL005/NSDManagement-API/PNFDescriptors.robot index 194c173fc..6d6b84239 100644 --- a/SOL005/NSDManagement-API/PNFDescriptors.robot +++ b/SOL005/NSDManagement-API/PNFDescriptors.robot @@ -124,7 +124,7 @@ PUT all PNF Descriptors - Method not implemented [Documentation] Test ID: 5.3.1.4.9 ... Test title: PUT all PNF Descriptors Information - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify PNF Descriptors Information - ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. + ... Pre-conditions: none ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none @@ -136,7 +136,7 @@ PATCH all PNF Descriptors - Method not implemented [Documentation] Test ID: 5.3.1.4.10 ... Test title: PATCH all PNF Descriptors Information - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NF Descriptors Information - ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. + ... Pre-conditions: none ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none @@ -148,14 +148,13 @@ DELETE all PNF Descriptors - Method not implemented [Documentation] Test ID: 5.3.1.4.11 ... Test title: DELETE all PNF Descriptors Information - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete PNF Descriptors Information - ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. + ... Pre-conditions: none ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The PNF Descriptors are not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for all PNF Descriptors Check HTTP Response Status Code Is 405 - Check Postcondition PNF Descriptors Exist GET all PNF Descriptors Information as Paged Response [Documentation] Test ID: 5.3.1.4.12 @@ -168,7 +167,7 @@ GET all PNF Descriptors Information as Paged Response ... Post-Conditions: none GET all PNF Descriptors Information Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET PNF Descriptors Information - Bad Request Response too Big [Documentation] Test ID: 5.3.1.4.13 @@ -181,4 +180,18 @@ GET PNF Descriptors Information - Bad Request Response too Big ... Post-Conditions: none GET all PNF Descriptors Information Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +GET all PNF Descriptors Information with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 5.3.1.4.14 + ... Test title: GET all PNF Descriptors Information with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "exclude_default" and "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" and "fields" selector + ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports the use of "exclude_default" and "fields" attribute selector + ... Post-Conditions: none + GET all PNF Descriptors Information with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PnfdInfos + Check HTTP Response Body PnfdInfos Matches the requested fields selector \ No newline at end of file diff --git a/SOL005/NSDManagement-API/Subscriptions.robot b/SOL005/NSDManagement-API/Subscriptions.robot index 131b7c2ff..1f1ae1249 100644 --- a/SOL005/NSDManagement-API/Subscriptions.robot +++ b/SOL005/NSDManagement-API/Subscriptions.robot @@ -159,7 +159,7 @@ Get All NSD Management Subscriptions as Paged Response ... Post-Conditions: none Get all NSD Management Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link Get NSD Management Subscriptions - Bad Request Response too Big [Documentation] Test ID: 5.3.1.7.12 diff --git a/SOL005/NSDManagement-API/jsons/subscriptions.json b/SOL005/NSDManagement-API/jsons/subscriptions.json index 92a9db1b0..7aa8965f3 100644 --- a/SOL005/NSDManagement-API/jsons/subscriptions.json +++ b/SOL005/NSDManagement-API/jsons/subscriptions.json @@ -1,3 +1,3 @@ -{ +{{ "callbackUri": "{notifCallbackUri}" -} \ No newline at end of file +}} \ No newline at end of file -- GitLab From f7517bd8998178a91beaf705dd29e5f8c343e937 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 27 Oct 2020 15:58:00 +0500 Subject: [PATCH 118/580] new testcases and minor bugs fix added --- .../CreateNSInstanceWorkflow.robot | 2 +- .../NSLCMOperationKeywords.robot | 2 +- .../Subscriptions.robot | 21 ++++++++++++++----- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot index 47ee23b65..643bb48c7 100644 --- a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot @@ -22,7 +22,7 @@ NS Instance Creation Check HTTP Response Status Code Is 201 Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is NsInstance - Check resource not_instantiated 1 + Check resource not_instantiated NS Instance Creation with DISABLED Network Service Descriptor [Documentation] Test ID: 5.3.2.18.2 diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 30952bc57..44348a964 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -1137,6 +1137,6 @@ PUT notification Log Cleaning the endpoint Clear Requests ${callback_endpoint} -Check LINK in Header +Check HTTP Response Header Contains Location ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL005/NSLifecycleManagement-API/Subscriptions.robot b/SOL005/NSLifecycleManagement-API/Subscriptions.robot index ff62a7c04..d2d0010ce 100644 --- a/SOL005/NSLifecycleManagement-API/Subscriptions.robot +++ b/SOL005/NSLifecycleManagement-API/Subscriptions.robot @@ -21,7 +21,6 @@ POST Create a new subscription Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is subscription - POST Create a new Subscription - DUPLICATION [Documentation] Test ID: 5.3.2.15.2 ... Test title: POST Create a new subscription - DUPLICATION @@ -172,7 +171,7 @@ DELETE subscriptions - Method not implemented ... Reference: Clause 6.4.16.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: Subscription is not deleted + ... Post-Conditions: none DELETE subscriptions Check HTTP Response Status Code Is 405 @@ -187,7 +186,7 @@ GET Subscriptions as Paged Response ... Post-Conditions: none GET Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Location GET subscriptions - Bad Request Response too Big [Documentation] Test ID: 5.3.2.15.15 @@ -198,6 +197,18 @@ GET subscriptions - Bad Request Response too Big ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - GET Subscriptions + GET Subscriptions Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Create a new subscription - Unprocessable Entity + [Documentation] Test ID: 5.3.2.15.16 + ... Test title: POST Create a new subscription - Unprocessable Entity + ... Test objective: The objective is to test the creation of a new lifecycle management subscription fials when content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed + ... Pre-conditions: none + ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST subscriptions + Check HTTP Response Status Code Is 422 \ No newline at end of file -- GitLab From 038650c73a0bb28dc9ef05df99c1dfa9e7e7bb66 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 27 Oct 2020 16:58:07 +0500 Subject: [PATCH 119/580] added majorApiVersion --- .../ApiVersion.robot | 10 +- .../FailOperationTask.robot | 1 - .../NSInstances.robot | 2 +- .../NSLCMOccurences.robot | 2 +- .../NSLCMOperationKeywords.robot | 248 +++++++++--------- .../environment/variables.txt | 2 +- 6 files changed, 132 insertions(+), 133 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/ApiVersion.robot b/SOL005/NSLifecycleManagement-API/ApiVersion.robot index 9a1f0c8bc..7fe40a640 100644 --- a/SOL005/NSLifecycleManagement-API/ApiVersion.robot +++ b/SOL005/NSLifecycleManagement-API/ApiVersion.robot @@ -169,35 +169,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/FailOperationTask.robot b/SOL005/NSLifecycleManagement-API/FailOperationTask.robot index e4c017684..b87ddc4d8 100644 --- a/SOL005/NSLifecycleManagement-API/FailOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/FailOperationTask.robot @@ -21,7 +21,6 @@ POST Fail operation task Check HTTP Response Status Code Is 202 Check resource is finally failed - POST Fail operation task Not Found [Documentation] Test ID: 5.3.2.13.2 ... Test title: POST Fail operation task Not Found diff --git a/SOL005/NSLifecycleManagement-API/NSInstances.robot b/SOL005/NSLifecycleManagement-API/NSInstances.robot index 106da04e8..e76837554 100644 --- a/SOL005/NSLifecycleManagement-API/NSInstances.robot +++ b/SOL005/NSLifecycleManagement-API/NSInstances.robot @@ -158,7 +158,7 @@ GET information about multiple NS instances as Paged Response ... Post-Conditions: none. GET NsInstances Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Location GET information about multiple NS instances - Bad Request Response too Big [Documentation] Test ID: 5.3.2.1.13 diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot index 3a6aa7eae..1c434a168 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot @@ -157,7 +157,7 @@ GET status information about multiple NS LCM occurrences as Paged Response ... Post-Conditions: none GET NS LCM OP Occurrences Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Location GET status information about multiple NS LCM occurrences - Bad Request Response too Big [Documentation] Test ID: 5.3.2.8.13 diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 44348a964..b9d4fc363 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -28,50 +28,50 @@ Check subscription existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Check Instance Deleted Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} Integer response status 404 Check Fail not supported Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} # how to check if Fail is not supported? Also In Sol002 Check Cancel not supported Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} # how to check if Cancel is not supported? Also In Sol002 Check Continue not supported Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} # how to check if Continue is not supported? Also In Sol002 Check retry not supported Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} # how to check if retry is not supported? Also In Sol002 Check Rollback not supported Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} # how to check if rollback is not supported? Also In Sol002 Check resource FAILED_TEMP Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} String response body operationState FAILED_TEMP Check resource not [Arguments] ${status} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} Should Not Be Equal As Strings response body operationState ${status} Check Operation Notification Status is @@ -119,7 +119,7 @@ Probe resource Instantiated Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} String response body nsState INSTANTIATED Check resource not_instantiated @@ -132,14 +132,14 @@ Probe resource not_instantiated Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log ${fresh_resource} ${instanceId}= Set Variable If ${fresh_resource} == 0 ${nsInstanceId} ${response['body']['id']} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${instanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${instanceId} String response body nsState NOT_INSTANTIATED Check operation resource state is FAILED_TEMP Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} String response body instantiationState FAILED_TEMP Check operation resource state is not FAILED_TEMP @@ -147,14 +147,14 @@ Check operation resource state is not FAILED_TEMP Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} String response body instantiationState not FAILED_TEMP Check resource is finally failed Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} String response body instantiationState FINALLY_FAILED Launch another LCM operation @@ -163,21 +163,21 @@ Launch another LCM operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/scaleNsToLevelRequest.json ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} - Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale_to_level ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale_to_level ${body} Integer response status 202 Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} Integer response status 200 Check Postcondition NS Instance is not created Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nonExistentNsId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nonExistentNsId} Integer response status 404 Check HTTP Response Status Code Is @@ -190,7 +190,7 @@ Check Postcondition NS Instance is deleted Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${disabledNsdId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${disabledNsdId} Integer response status 404 Check Postcondition NS Instance is not modified @@ -215,7 +215,7 @@ Check Postcondition NS Instance is not deleted Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} Integer response status 200 Check HTTP Response Header ContentType is @@ -225,24 +225,24 @@ Check HTTP Response Header ContentType is Log Content Type validated POST New nsInstance - Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiVersion}/ns_instances + Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/CreateNsRequest.json ${body}= Format String ${template} nsdId=${nsdId} nsInstanceName=${nsInstanceName} vimAccountId=${vimAccountId} nsInstanceDescription=${nsInstanceDescription} - Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST New nsInstance with DISABLED nsd - Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiVersion}/ns_instances + Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/CreateNsRequest.json ${body}= Format String ${template} nsdId=${disabledNsdId} nsInstanceName=${nsInstanceName} vimAccountId=${vimAccountId} nsInstanceDescription=${nsInstanceDescription} - Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -251,7 +251,7 @@ GET NsInstances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -261,7 +261,7 @@ GET NsInstance Invalid Attribute-Based filtering parameter Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances?attribute_not_exist=some_value + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?attribute_not_exist=some_value ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -270,7 +270,7 @@ GET NsInstance Invalid Attribute Selector Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances?fields=wrong_field + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?fields=wrong_field ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -278,28 +278,28 @@ Get NSInstances with all_fields attribute selector Log Get the list of NSInstances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/ns_instances?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get NSInstances with exclude_default attribute selector Log Get the list of NSInstances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/ns_instances?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get NSInstances with fields attribute selector Log Get the list of NSInstances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/ns_instances?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get NSInstances with exclude_fields attribute selector Log Get the list of NSInstances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/ns_instances?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -308,7 +308,7 @@ PUT NSInstances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -317,7 +317,7 @@ PATCH NSInstances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -326,7 +326,7 @@ DELETE NSInstances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/ns_instances + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -335,7 +335,7 @@ POST IndividualNSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nonExistentNsId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nonExistentNsId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -344,7 +344,7 @@ GET IndividualNSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} ${Etag}= Output response headers ETag ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -355,7 +355,7 @@ PUT IndividualNSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -364,14 +364,14 @@ PATCH IndividualNSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE IndividualNSInstance log Trying to delete an individual VNF instance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -379,7 +379,7 @@ DELETE IndividualNSInstance DELETE IndividualNSInstance Conflict log Trying to delete an individual VNF instance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${ConflictNsInstanceId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${ConflictNsInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -387,7 +387,7 @@ DELETE IndividualNSInstance Conflict DELETE Instantiate NSInstance log Trying to delete an instantiate NS instance. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/instantiate + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -396,7 +396,7 @@ DELETE Instantiate NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/instantiate + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -405,7 +405,7 @@ PUT Instantiate NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/instantiate + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -414,7 +414,7 @@ GET Instantiate NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/instantiate + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -425,14 +425,14 @@ GET Instantiate NSInstance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/InstantiateNs.json ${body}= Format String ${template} nsFlavourId=${nsFlavourId} vimAccountId=${vimAccountId} nsdId=${nsdId} - Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/instantiate ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/instantiate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Scale NSInstance log Trying to delete an Scale NS instance. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -441,7 +441,7 @@ DELETE Scale NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -450,7 +450,7 @@ PUT Scale NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -459,7 +459,7 @@ GET Scale NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -470,14 +470,14 @@ POST scale nsInstance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/ScaleNs.json ${body}= Format String ${template} scaleType=${scaleType} scaleTimeout=${scaleTimeout} scaleVnfType=${scaleVnfType} scaleGroupDescriptor=${scaleGroupDescriptor} scaleMemberVnfIndex=${scaleMemberVnfIndex} - Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Update NSInstance log Trying to delete an Update NS instance. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/update + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -486,7 +486,7 @@ DELETE Update NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/update + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -495,7 +495,7 @@ PUT Update NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/update + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -504,7 +504,7 @@ GET Update NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/update + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -515,14 +515,14 @@ POST Update NSInstance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/UpdateNsRequest.json ${body}= Format String ${template} vnfUpdateType=${vnfUpdateType} - Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/update ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Heal NSInstance log Trying to Delete an Heal NS instance. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/heal + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -531,7 +531,7 @@ DELETE Heal NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/heal + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -540,7 +540,7 @@ PUT Heal NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/heal + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -549,7 +549,7 @@ GET Heal NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/heal + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -560,14 +560,14 @@ POST Heal NSInstance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/HealNsRequest.json ${body}= Format String ${template} nsDegreeHealing=${nsDegreeHealing} - Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/heal ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/heal ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Terminate NSInstance log Trying to Delete an Terminate NS instance. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/terminate + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -576,7 +576,7 @@ PATCH Terminate NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/terminate + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -585,7 +585,7 @@ PUT Terminate NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/terminate + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -594,7 +594,7 @@ GET Terminate NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/terminate + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -604,7 +604,7 @@ POST Terminate NSInstance Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/TerminateNsRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/terminate ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/terminate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -612,7 +612,7 @@ POST NS LCM OP Occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -620,7 +620,7 @@ PUT NS LCM OP Occurrences log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -628,7 +628,7 @@ PATCH NS LCM OP Occurrences log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -636,7 +636,7 @@ DELETE NS LCM OP Occurrences log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -645,7 +645,7 @@ GET NS LCM OP Occurrences Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -653,7 +653,7 @@ GET NS LCM OP Occurrences Invalid attribute-based filtering parameters Log Query status information about multiple NS lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs?${NEG_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?${NEG_FILTER} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -661,35 +661,35 @@ GET NS LCM OP Occurrences Invalid attribute selector Log Query status information about multiple NS lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs?${NEG_SELECTOR} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?${NEG_SELECTOR} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get NS LCM OP Occurrences with all_fields attribute selector Log Query status information about multiple NS lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get NS LCM OP Occurrences with exclude_default attribute selector Log Query status information about multiple NS lifecycle management operation occurrences using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get NS LCM OP Occurrences with fields attribute selector Log Query status information about multiple NS lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get NS LCM OP Occurrences with exclude_fields attribute selector Log Query status information about multiple NS lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -697,7 +697,7 @@ POST Individual NS LCM OP Occurrence log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -705,7 +705,7 @@ PUT Individual NS LCM OP Occurrence log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -713,7 +713,7 @@ PATCH Individual NS LCM OP Occurrence log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -721,7 +721,7 @@ DELETE Individual NS LCM OP Occurrence log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -730,35 +730,35 @@ GET Individual NS LCM OP Occurrence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Retry operation task log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Retry operation task log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Retry operation task log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Retry operation task 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}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -766,35 +766,35 @@ POST Retry operation task Log Retry a NS lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Post ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Rollback operation task log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Rollback operation task log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Rollback operation task log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Rollback operation task 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}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -802,35 +802,35 @@ POST Rollback operation task Log Rollback a NS lifecycle operation task Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Post ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Continue operation task log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Continue operation task log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Continue operation task log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Continue operation task 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}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -838,35 +838,35 @@ POST Continue operation task Log Continue a NS lifecycle operation task Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Post ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Fail operation task log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Fail operation task log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Fail operation task log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Fail operation task 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}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -874,35 +874,35 @@ POST Fail operation task Log Fail a NS lifecycle operation task Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Post ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Cancel operation task log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Cancel operation task log Trying to perform a PUT. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel + Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Cancel operation task Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Cancel operation task 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}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -910,7 +910,7 @@ POST Cancel operation task Log Cancel a NS lifecycle operation task Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Post ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -919,7 +919,7 @@ PUT subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -928,7 +928,7 @@ PATCH subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -937,18 +937,18 @@ DELETE subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST subscriptions - Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} 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} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${nsdId} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -960,7 +960,7 @@ POST subscriptions DUPLICATION Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/LccnSubscriptionRequest.json ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${nsdId} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -972,7 +972,7 @@ POST subscriptions NO DUPLICATION Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/LccnSubscriptionRequest.json ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${nsdId} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -983,7 +983,7 @@ GET Subscriptions Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -991,28 +991,28 @@ Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?all_fields + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?all_fields ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1020,7 +1020,7 @@ GET subscriptions with filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1028,7 +1028,7 @@ Get subscriptions - invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1037,7 +1037,7 @@ POST Individual Subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1046,7 +1046,7 @@ PUT Individual Subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1055,7 +1055,7 @@ PATCH Individual Subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1063,7 +1063,7 @@ GET Individual subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1071,7 +1071,7 @@ DELETE Individual subscription log Try to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index d58f1074f..c9c31a4ce 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -13,7 +13,7 @@ ${ACCEPT_JSON} application/json ${ACCEPT} application/json ${apiRoot} / ${apiName} nslcm -${apiVersion} v1 +${apiMajorVersion} v1 ${AUTH_USAGE} 1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX ${nsInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -- GitLab From 626bf0cf522e627a3c42be9f73fe98f5bd050ad1 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 29 Oct 2020 15:41:31 +0500 Subject: [PATCH 120/580] new testcacse added, postcondition fixed --- .../CancelOperationTask.robot | 4 +- .../CreateNSInstanceWorkflow.robot | 2 - .../IndividualNSInstance.robot | 11 ++--- .../IndividualNSLCMOccurences.robot | 15 ++---- .../IndividualSubscription.robot | 6 +-- .../NSInstances.robot | 48 ++++++++++++------- .../NSLCMOccurences.robot | 15 +++++- .../NSLCMOperationKeywords.robot | 28 +++++------ .../TerminateNSTask.robot | 10 ++-- .../UpdateNSTask.robot | 10 ++-- 10 files changed, 80 insertions(+), 69 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot b/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot index a930030d4..e50e2fcf6 100644 --- a/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot @@ -93,6 +93,4 @@ DELETE Cancel operation task - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Cancel operation task - Check HTTP Response Status Code Is 405 - - \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot index 643bb48c7..a1dda903c 100644 --- a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot @@ -6,9 +6,7 @@ Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ - *** Test Cases *** - NS Instance Creation [Documentation] Test ID: 5.3.2.18.1 ... Test title: NS Instance Creation diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot index cd4345a1a..32285a8d4 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot @@ -16,10 +16,9 @@ POST Individual NSInstance - Method not implemented ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: Check Postcondition NS Instance is not created + ... Post-Conditions: none POST IndividualNSInstance Check HTTP Response Status Code Is 405 - Check Postcondition NS Instance is not created GET Information about an individual NS Instance [Documentation] Test ID: 5.3.2.2.2 @@ -42,10 +41,9 @@ PUT Individual NSInstance - Method not implemented ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: Check Postcondition NS Instance is not modified + ... Post-Conditions: none PUT IndividualNSInstance Check HTTP Response Status Code Is 405 - Check Postcondition NS Instance is not modified PATCH Individual NSInstance - Method not implemented [Documentation] Test ID: 5.3.2.2.4 @@ -55,10 +53,9 @@ PATCH Individual NSInstance - Method not implemented ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: Check Postcondition NS Instance is not modified + ... Post-Conditions: none PATCH IndividualNSInstance Check HTTP Response Status Code Is 405 - Check Postcondition NS Instance is not modified DELETE Individual NSInstance [Documentation] Test ID: 5.3.2.2.5 @@ -85,4 +82,4 @@ DELETE Individual NSInstance Conflict DELETE IndividualNSInstance Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - Check Postcondition NS Instance is not deleted + Check Postcondition NS Instance is not deleted \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot index fd9eeea93..b0e32dba8 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot @@ -15,7 +15,7 @@ Post Individual NS LCM occurrences - Method not implemented ... Reference: Clause 6.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance is not created in the NFVO + ... Post-Conditions: none POST Individual NS LCM OP Occurrence Check HTTP Response Status Code Is 405 @@ -40,7 +40,7 @@ PUT status information about Individual NS LCM occurrences - Method not implemen ... Reference: Clause 6.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance is not modified from the NFVO + ... Post-Conditions: none PUT Individual NS LCM OP Occurrence Check HTTP Response Status Code Is 405 @@ -52,7 +52,7 @@ PATCH status information about Individual NS LCM occurrences - Method not implem ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance is not modified from the NFVO + ... Post-Conditions: none PATCH Individual NS LCM OP Occurrence Check HTTP Response Status Code Is 405 @@ -64,11 +64,6 @@ DELETE status information about Individual NS LCM occurrences - Method not imple ... Reference: Clause 6.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance is not deleted from the NFVO + ... Post-Conditions: none DELETE Individual NS LCM OP Occurrence - Check HTTP Response Status Code Is 405 - - - - - \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot b/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot index 64105600e..44191a80e 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot @@ -17,7 +17,7 @@ POST Individual Subscription - Method not implemented ... Reference: Clause 6.4.17.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS lifecycle management subscription is not created on the NFVO + ... Post-Conditions: none POST Individual Subscription Check HTTP Response Status Code Is 405 @@ -42,7 +42,7 @@ PUT an individual subscription - Method not implemented ... Reference: Clause 6.4.17.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS lifecycle management subscription is not modified by the operation + ... Post-Conditions: none PUT Individual Subscription Check HTTP Response Status Code Is 405 @@ -54,7 +54,7 @@ PATCH an individual subscription - Method not implemented ... Reference: Clause 6.4.17.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS lifecycle management subscription is not modified by the operation + ... Post-Conditions: none PATCH Individual Subscription Check HTTP Response Status Code Is 405 diff --git a/SOL005/NSLifecycleManagement-API/NSInstances.robot b/SOL005/NSLifecycleManagement-API/NSInstances.robot index e76837554..8c662bcab 100644 --- a/SOL005/NSLifecycleManagement-API/NSInstances.robot +++ b/SOL005/NSLifecycleManagement-API/NSInstances.robot @@ -11,7 +11,7 @@ POST Create a new NsInstance [Documentation] Test ID: 5.3.2.1.1 ... Test title: POST Create a new NsInstance ... Test objective: The objective is to test the creation of a new Ns Instances and perform a JSON schema validation of the collected instance data structure - ... Pre-conditions: None. + ... Pre-conditions: none. ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none. @@ -59,15 +59,16 @@ GET information about multiple NS instances Bad Request Invalid attribute select GET NsInstance Invalid Attribute Selector Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails + GET NSInstances with "all_fields" attribute selector [Documentation] Test ID: 5.3.2.1.5 ... Test title: GET NSInstances with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get NSInstances with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsInstances @@ -76,11 +77,11 @@ GET NSInstances with "exclude_default" attribute selector [Documentation] Test ID: 5.3.2.1.6 ... Test title: GET NSInstances with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get NSInstances with exclude_default attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsInstances @@ -89,11 +90,11 @@ GET NSInstances with "fields" attribute selector [Documentation] Test ID: 5.3.2.1.7 ... Test title: GET NSInstances with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get NSInstances with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsInstances @@ -102,11 +103,11 @@ GET NSInstances with "exclude_fields" attribute selector [Documentation] Test ID: 5.3.2.1.8 ... Test title: GET NSInstances with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get NSInstances with exclude_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsInstances @@ -119,7 +120,7 @@ PUT NSInstances - Method not implemented ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance is not modified by the operation + ... Post-Conditions: none PUT NSInstances Check HTTP Response Status Code Is 405 @@ -131,7 +132,7 @@ PATCH NSInstances - Method not implemented ... Reference: Clause 6.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance is not modified by the operation + ... Post-Conditions: none PATCH NSInstances Check HTTP Response Status Code Is 405 @@ -143,7 +144,7 @@ DELETE NSInstances - Method not implemented ... Reference: Clause 6.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance is not deleted by the operation + ... Post-Conditions: none DELETE NSInstances Check HTTP Response Status Code Is 405 @@ -171,4 +172,17 @@ GET information about multiple NS instances - Bad Request Response too Big ... Post-Conditions: none. GET NsInstances Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +GET NSInstances with "fields" and "exclude_default" attribute selector + [Documentation] Test ID: 5.3.2.1.14 + ... Test title: GET NSInstances with "fields" and "exclude_default" attribute selector + ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector list and exclude_default + ... Pre-conditions: none + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSInstances with fields and exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NsInstances \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot index 1c434a168..2ba76b8f0 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot @@ -170,4 +170,17 @@ GET status information about multiple NS LCM occurrences - Bad Request Response ... Post-Conditions: none GET NS LCM OP Occurrences Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +GET status information about multiple NS LCM occurrences with "fields" and "exclude_default" + [Documentation] Test ID: 5.3.2.8.14 + ... Test title: GET status information about multiple NS LCM occurrences with "fields" and "exclude_default" + ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS + ... Pre-conditions: At least one LCM occurrences available in the NFVO + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NS LCM OP Occurrences with fields and exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NsLcmOpOccs \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index b9d4fc363..b871442b7 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -173,13 +173,6 @@ Check resource existence Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} Integer response status 200 -Check Postcondition NS Instance is not created - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nonExistentNsId} - Integer response status 404 - Check HTTP Response Status Code Is [Arguments] ${expected_status} Log Validate Status code @@ -193,13 +186,6 @@ Check Postcondition NS Instance is deleted Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${disabledNsdId} Integer response status 404 -Check Postcondition NS Instance is not modified - GET IndividualNSInstance - ${resp_dict}= evaluate json.loads('''${response['body']}''') json - ${template}= Get File jsons/CreateNsRequest.json - ${body}= Format String ${template} nsdId=${nsdId} nsInstanceName=${nsInstanceName} vimAccountId=${vimAccountId} nsInstanceDescription=${nsInstanceDescription} - Dictionaries Should Be Equal ${resp_dict} ${body} values=True - Check HTTP Response Header Contains [Arguments] ${HEADER_TOCHECK} Should Contain ${response['headers']} ${HEADER_TOCHECK} @@ -294,6 +280,13 @@ Get NSInstances with fields attribute selector Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?fields=${fields} ${output}= Output response + Set Suite Variable ${response} ${output} +Get NSInstances with fields and exclude_default attribute selector + Log Get the list of NSInstances, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?fields=${fields}&exclude_default + ${output}= Output response Set Suite Variable ${response} ${output} Get NSInstances with exclude_fields attribute selector Log Get the list of NSInstances, using fields @@ -684,6 +677,13 @@ Get NS LCM OP Occurrences with fields attribute selector Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?fields=${fields} ${output}= Output response + Set Suite Variable ${response} ${output} +Get NS LCM OP Occurrences with fields and exclude_default attribute selector + Log Query status information about multiple NS lifecycle management operation occurrences, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?fields=${fields}&exclude_default + ${output}= Output response Set Suite Variable ${response} ${output} Get NS LCM OP Occurrences with exclude_fields attribute selector Log Query status information about multiple NS lifecycle management operation occurrences, using fields diff --git a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot index 942c47487..5f5ad8950 100644 --- a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot @@ -55,7 +55,7 @@ PUT Terminate NSInstance - Method not implemented ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: resource state not modified + ... Post-Conditions: none PUT Terminate NSInstance Check HTTP Response Status Code Is 405 @@ -67,7 +67,7 @@ PATCH Terminate NSInstance - Method not implemented ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: resource state not modified + ... Post-Conditions: none PATCH Terminate NSInstance Check HTTP Response Status Code Is 405 @@ -79,8 +79,6 @@ DELETE Terminate NSInstance - Method not implemented ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: resource state not modified + ... Post-Conditions: none DELETE Terminate NSInstance - Check HTTP Response Status Code Is 405 - - \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot b/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot index 171fac57a..eafae6ae1 100644 --- a/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot @@ -54,7 +54,7 @@ PUT Update NSInstance - Method not implemented ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance is not updated on the NFVO + ... Post-Conditions: none PUT Update NSInstance Check HTTP Response Status Code Is 405 @@ -66,7 +66,7 @@ PATCH Update NSInstance - Method not implemented ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance is not updated on the NFVO + ... Post-Conditions: none PATCH Update NSInstance Check HTTP Response Status Code Is 405 @@ -78,8 +78,6 @@ DELETE Update NSInstance - Method not implemented ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance is not deleted on the NFVO + ... Post-Conditions: none DELETE Update NSInstance - Check HTTP Response Status Code Is 405 - - \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file -- GitLab From 9dd75a2933a81b6ebb604ee1ba9577ba9c2d1c36 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 2 Nov 2020 12:53:02 +0500 Subject: [PATCH 121/580] deltas for 2.7.1 SOL005 PM added --- .../IndividualPmJob.robot | 26 ++- .../IndividualSubscription.robot | 102 ---------- .../IndividualThreshold.robot | 31 ++- .../NSPerformanceManagementKeywords.robot | 24 +-- .../Subscriptions.robot | 182 ------------------ .../environment/individualSubscription.txt | 6 - .../environment/subscriptions.txt | 4 - .../environment/variables.txt | 5 +- .../jsons/PmJobModifications.json | 3 + .../jsons/ThresholdModifications.json | 3 + .../jsons/subscriptions.json | 6 - .../schemas/PmJobModifications.json | 64 ++++++ .../schemas/PmSubscription.schema.json | 105 ---------- .../schemas/PmSubscriptions.schema.json | 108 ----------- .../schemas/ThresholdModifications.json | 64 ++++++ 15 files changed, 188 insertions(+), 545 deletions(-) delete mode 100644 SOL005/NSPerformanceManagement-API/IndividualSubscription.robot delete mode 100644 SOL005/NSPerformanceManagement-API/Subscriptions.robot delete mode 100644 SOL005/NSPerformanceManagement-API/environment/individualSubscription.txt delete mode 100644 SOL005/NSPerformanceManagement-API/environment/subscriptions.txt create mode 100644 SOL005/NSPerformanceManagement-API/jsons/PmJobModifications.json create mode 100644 SOL005/NSPerformanceManagement-API/jsons/ThresholdModifications.json delete mode 100644 SOL005/NSPerformanceManagement-API/jsons/subscriptions.json create mode 100644 SOL005/NSPerformanceManagement-API/schemas/PmJobModifications.json delete mode 100644 SOL005/NSPerformanceManagement-API/schemas/PmSubscription.schema.json delete mode 100644 SOL005/NSPerformanceManagement-API/schemas/PmSubscriptions.schema.json create mode 100644 SOL005/NSPerformanceManagement-API/schemas/ThresholdModifications.json diff --git a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot index 7ab7999b9..8eb28fd4a 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot @@ -70,17 +70,18 @@ PUT Individual NS Performance Job - Method not implemented Send Put request for individual NS Performance Job Check HTTP Response Status Code Is 405 -PATCH Individual NS Performance Job - Method not implemented +PATCH Individual NS Performance Job [Documentation] Test ID: 5.3.4.2.6 - ... Test title: PATCH Individual NS Performance Job - method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new NS Performance Monitoring Job + ... Test title: PATCH Individual NS Performance Job + ... Test objective: The objective is to test that PATCH method modify an existing new NS Performance Monitoring Job ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: none + ... Post-Conditions: Resource modified Send Patch request for individual NS Performance Job - Check HTTP Response Status Code Is 405 + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJobModifications DELETE Individual NS Performance Job [Documentation] Test ID: 5.3.4.2.7 @@ -93,4 +94,17 @@ DELETE Individual NS Performance Job ... Post-Conditions: The NS Performance Job is no more available in the NFVO Send Delete request for individual NS Performance Job Check HTTP Response Status Code Is 204 - Check Postcondition NS Pm Job is Deleted \ No newline at end of file + Check Postcondition NS Pm Job is Deleted + +PATCH Individual NS Performance Job - Precondition failed + [Documentation] Test ID: 5.3.4.2.8 + ... Test title: PATCH Individual NS Performance Job - Precondition failed + ... Test objective: The objective is to attempt to Modify an individual NS Performance job fails, where the precondition was not met + ... Pre-conditions: The related job already exsisit + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: The resource is not modified + Send Patch request for individual NS Performance Job + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/IndividualSubscription.robot b/SOL005/NSPerformanceManagement-API/IndividualSubscription.robot deleted file mode 100644 index 02370945f..000000000 --- a/SOL005/NSPerformanceManagement-API/IndividualSubscription.robot +++ /dev/null @@ -1,102 +0,0 @@ -*** Settings *** -Documentation This resource represents an individual subscription for notifications about performance management related events. -... The client can use this resource to read and to terminate a subscription to notifications related to NS performance -... management. -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Resource NSPerformanceManagementKeywords.robot -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Resource environment/individualSubscription.txt - -*** Test Cases *** -GET Individual NS Performance Subscription - [Documentation] Test ID: 5.3.4.7.1 - ... Test title: GET Individual NS Performance Subscription - ... Test objective: The objective is to test the retrieval of individual NS Performance subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Individual NS Performance 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 - -GET Individual NS Performance Subscription with invalid resource identifier - [Documentation] Test ID: 5.3.4.7.2 - ... Test title: GET Individual NS Performance Subscription with invalid resource identifier - ... Test objective: The objective is to test that the retrieval of an individual NS Performance subscription fails when using an invalid resource identifier - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - GET individual NS Performance Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 - -DELETE Individual NS Performance Subscription with invalid resource identifier - [Documentation] Test ID: 5.3.4.7.3 - ... Test title: DELETE Individual NS Performance Subscription with invalid resource identifier - ... Test objective: The objective is to test that the deletion of an individual NS Performance subscription fails when using an invalid resource identifier - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for individual NS Performance Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 - -POST Individual NS Performance Subscription - Method not implemented - [Documentation] Test ID: 5.3.4.7.4 - ... Test title: POST Individual NS Performance Subscription - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new NS Performance Subscription - ... Pre-conditions: none - ... Reference: Clause 7.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: The NS Performance Subscription is not created on the NFVO - Send Post request for individual NS Performance Subscription - Check HTTP Response Status Code Is 405 - Check Postcondition NS Performance Subscription is not Created - -PUT Individual NS Performance Subscription - Method not implemented - [Documentation] Test ID: 5.3.4.7.5 - ... Test title: PUT Individual NS Performance Subscription - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to update an existing NS Performance subscription - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: The NS Performance subscription is not modified by the operation - Send Put request for individual NS Performance Subscription - Check HTTP Response Status Code Is 405 - Check Postcondition NS Performance Subscription is Unmodified (Implicit) - -PATCH Individual NS Performance Subscription - Method not implemented - [Documentation] Test ID: 5.3.4.7.6 - ... Test title: PATCH Individual NS Performance Subscription - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NS Performance subscription - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: The NS Performance subscription is not modified by the operation - Send Patch request for individual NS Performance Subscription - Check HTTP Response Status Code Is 405 - Check Postcondition NS Performance Subscription is Unmodified (Implicit) - -DELETE Individual NS Performance Subscription - [Documentation] Test ID: 5.3.4.7.7 - ... Test title: DELETE Individual NS Performance Subscription - ... Test objective: The objective is to test the deletion of an individual NS Performance subscription - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: The NS Performance Subscription is not available anymore in the NFVO - Send Delete request for individual NS Performance Subscription - Check HTTP Response Status Code Is 204 - Check Postcondition NS Performance Subscription is Deleted \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot b/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot index 2be5fdb3e..57458c1b0 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot @@ -34,6 +34,7 @@ GET Individual Threshold with invalid resource identifier ... Post-Conditions: none GET individual NS performance Threshold with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails DELETE Individual Threshold with invalid resource identifier [Documentation] Test ID: 5.3.4.5.3 @@ -55,10 +56,9 @@ POST Individual Threshold - Method not implemented ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS performance Threshold is not created on the NFVO + ... Post-Conditions: none Send Post request for individual NS performance Threshold Check HTTP Response Status Code Is 405 - Check Postcondition NS performance Threshold is not Created PUT Individual Threshold - Method not implemented [Documentation] Test ID: 5.3.4.5.5 @@ -68,22 +68,22 @@ PUT Individual Threshold - Method not implemented ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS performance Threshold is not modified by the operation + ... Post-Conditions: none Send Put request for individual NS performance Threshold Check HTTP Response Status Code Is 405 - Check Postcondition NS performance Threshold is Unmodified (Implicit) -PATCH Individual Threshold - Method not implemented +PATCH Individual Threshold [Documentation] Test ID: 5.3.4.5.6 - ... Test title: PATCH Individual Threshold - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NS performance threshold + ... Test title: PATCH Individual Threshold + ... Test objective: The objective is to test that PATCH method modify an existing NS performance threshold ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS performance Threshold is not modified by the operation + ... Post-Conditions: The NS performance Threshold is modified by the operation Send Patch request for individual NS performance Threshold - Check HTTP Response Status Code Is 405 + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ThresholdModifications Check Postcondition NS performance Threshold is Unmodified (Implicit) DELETE Individual Threshold @@ -99,3 +99,16 @@ DELETE Individual Threshold Check HTTP Response Status Code Is 204 Check Postcondition NS performance Threshold is Deleted +PATCH Individual Threshold - Precondition failed + [Documentation] Test ID: 5.3.4.5.8 + ... Test title: PATCH Individual Threshold - Precondition failed + ... Test objective: The objective is to attempt to Modify an individual NS Performance threshold fails, where the precondition was not met + ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. + ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: The NS performance Threshold is not modified by the operation + Send Patch request for individual NS performance Threshold + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails + Check Postcondition NS performance Threshold is Unmodified (Implicit) \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index fcf0c3523..0d50c014e 100644 --- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot +++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot @@ -236,10 +236,12 @@ Send Put request for individual NS Performance Job Set Suite Variable ${response} ${output} Send Patch request for individual NS Performance Job - Log Trying to perform a PATCH (method should not be implemented) + Log Trying to perform a PATCH Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + ${body}= Get File jsons/PmJobModifications.json + PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -380,7 +382,7 @@ Send Post Request Create new Performance Threshold Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/CreateThresholdRequest.json ${body}= Format String ${template} pmJobId=${pmJobId} - POST ${apiRoot}/${apiName}/${apiVersion}/thresholds ${request} + POST ${apiRoot}/${apiName}/${apiVersion}/thresholds ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -480,11 +482,10 @@ Send Put request for individual NS performance Threshold Send Patch request for individual NS performance Threshold Log Trying to PUT threshold Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} - ${origOutput}= Output response - Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + ${body}= Get File jsons/ThresholdModifications.json + PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -495,15 +496,6 @@ Check Postcondition NS performance Threshold is Unmodified (Implicit) ${threshold}= evaluate json.loads('''${response['body']}''') json Should Be Equal ${origresponse['body']['id']} ${threshold.id} Should Be Equal ${origresponse['body']['criteria']} ${threshold.criteria} - -Check Postcondition NS performance Threshold is not Created - Log Trying to get a new Threshold - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${newThresholdId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 Check Postcondition NS performance Threshold is Deleted Log Check Postcondition Threshold is deleted diff --git a/SOL005/NSPerformanceManagement-API/Subscriptions.robot b/SOL005/NSPerformanceManagement-API/Subscriptions.robot deleted file mode 100644 index 3f97d8afe..000000000 --- a/SOL005/NSPerformanceManagement-API/Subscriptions.robot +++ /dev/null @@ -1,182 +0,0 @@ -*** Settings *** -Resource environment/variables.txt # Generic Parameters -Resource environment/subscriptions.txt -Resource NSPerformanceManagementKeywords.robot -Library OperatingSystem -Library JSONSchemaLibrary schemas/ -Library JSONLibrary -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library MockServerLibrary -Library Process -Suite Setup Create Sessions -Suite Teardown Terminate All Processes kill=true - -*** Test Cases *** -Get All NS Performance Subscriptions - [Documentation] Test ID: 5.3.4.6.1 - ... Test title: Get All NS Performance Subscriptions - ... Test objective: The objective is to test the retrieval of all NS Performance subscriptions and perform a JSON schema validation of the returned subscriptions data structure - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get all NS Performance Subscriptions - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscriptions - - -Get NS Performance Subscriptions with attribute-based filter - [Documentation] Test ID: 5.3.4.6.2 - ... Test title: Get NS Performance Subscriptions with attribute-based filter - ... Test objective: The objective is to test the retrieval of NS Performance subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get NS Performance Subscriptions with attribute-based filters - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscriptions - Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter - - -Get NS Performance Subscriptions with invalid attribute-based filter - [Documentation] Test ID: 5.3.4.6.3 - ... Test title: Get NS Performance Subscriptions with attribute-based filters - ... Test objective: The objective is to test that the retrieval of NS Performance subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get NS Performance Subscriptions with invalid attribute-based filters - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - - -GET NS Performance Subscription with invalid resource endpoint - [Documentation] Test ID: 5.3.4.6.4 - ... Test title: GET NS Performance Subscription with invalid resource endpoint - ... Test objective: The objective is to test that the retrieval of all NS Performance subscriptions fails when using invalid resource endpoint. - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get NS Performance Subscriptions with invalid resource endpoint - Check HTTP Response Status Code Is 404 - - -Create new NS Performance subscription - [Documentation] Test ID: 5.3.4.6.5 - ... Test title: Create new NS Performance subscription - ... Test objective: The objective is to test the creation of a new NS Performance subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: none - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: The NS Performance subscription is successfully set and it matches the issued subscription - Send Post Request for NS Performance Subscription - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription - Check Postcondition NS Performance Subscription Is Set - - -Create duplicated NS Performance subscription with NFVO not creating duplicated subscriptions - [Tags] no-duplicated-subs - [Documentation] Test ID: 5.3.4.6.6 - ... Test title: Create duplicated NS Performance subscription with NFVO not creating duplicated subscriptions - ... Test objective: The objective is to test the attempt of a creation of a duplicated NS Performance subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO does not support the creation of duplicated subscriptions - ... Post-Conditions: The existing NS Performance subscription returned is available in the NFVO - Send Post Request for Duplicated NS Performance Subscription - Check HTTP Response Status Code Is 303 - Check HTTP Response Body Is Empty - Check HTTP Response Header Contains Location - Check Postcondition Subscription Resource URI Returned in Location Header Is Available - -Create duplicated NS Performance subscription with NFVO creating duplicated subscriptions - [Tags] duplicated-subs - [Documentation] Test ID: 5.3.4.6.7 - ... Test title: Create duplicated NS Performance subscription with NFVO creating duplicated subscriptions - ... Test objective: The objective is to test the creation of a duplicated NS Performance subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO supports the creation of duplicated subscriptions - ... Post-Conditions: The duplicated NS Performance subscription is successfully set and it matches the issued subscription - Send Post Request for Duplicated NS Performance Subscription - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription - Check Postcondition NS Performance Subscription Is Set - - -PUT NSD Performance Subscriptions - Method not implemented - [Documentation] Test ID: 5.3.4.6.8 - ... Test title: PUT NS Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to modify NS Performance subscriptions - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send Put Request for NS Performance Subscriptions - Check HTTP Response Status Code Is 405 - - -PATCH NSD Performance Subscriptions - Method not implemented - [Documentation] Test ID: 5.3.4.6.9 - ... Test title: PATCH NS Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update NS Performance subscriptions - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send Patch Request for NS Performance Subscriptions - Check HTTP Response Status Code Is 405 - - -DELETE NSD Performance Subscriptions - Method not implemented - [Documentation] Test ID: 5.3.4.6.10 - ... Test title: DELETE NS Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete NS Performance subscriptions - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: The NS Performance subscriptions are not deleted by the failed operation - Send Delete Request for NS Performance Subscriptions - Check HTTP Response Status Code Is 405 - -Get All NS Performance Subscriptions as Paged Response - [Documentation] Test ID: 5.3.4.6.11 - ... Test title: Get All NS Performance Subscriptions as Paged Response - ... Test objective: The objective is to test the retrieval of all NS Performance subscriptions as paged response. - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get all NS Performance Subscriptions - Check HTTP Response Status Code Is 200 - Check LINK in Header - -Get NS Performance Subscriptions - Bad Request Response too Big - [Documentation] Test ID: 5.3.4.6.12 - ... Test title: Get NS Performance Subscriptions - Bad Request Response too Big - ... Test objective: The objective is to test that the retrieval of NS Performance subscriptions fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one NS Performance subscription is available in the NFVO. - ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get all NS Performance Subscriptions - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/environment/individualSubscription.txt b/SOL005/NSPerformanceManagement-API/environment/individualSubscription.txt deleted file mode 100644 index db29963df..000000000 --- a/SOL005/NSPerformanceManagement-API/environment/individualSubscription.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa -${erroneousSubscriptionId} erroneousSubscriptionId -${newSubscriptionId} newSubsciptionId -${response} httpresponse -${origResponse} httpresponse diff --git a/SOL005/NSPerformanceManagement-API/environment/subscriptions.txt b/SOL005/NSPerformanceManagement-API/environment/subscriptions.txt deleted file mode 100644 index 78a574197..000000000 --- a/SOL005/NSPerformanceManagement-API/environment/subscriptions.txt +++ /dev/null @@ -1,4 +0,0 @@ -*** Variables *** -${filter_ok} callbackUri=http://localhost/subscriptions -${filter_ko} erroneousFilter=erroneous -${SEPERATOR} = diff --git a/SOL005/NSPerformanceManagement-API/environment/variables.txt b/SOL005/NSPerformanceManagement-API/environment/variables.txt index ca012fa80..30f5de744 100644 --- a/SOL005/NSPerformanceManagement-API/environment/variables.txt +++ b/SOL005/NSPerformanceManagement-API/environment/variables.txt @@ -31,4 +31,7 @@ ${thresholdType} SIMPLE ${thresholdValue} 10 ${hysteresis} 50 ${collectionPeriod} 10 -${reportingPeriod} 30 \ No newline at end of file +${reportingPeriod} 30 + +${response} {} +${CONTENT_TYPE_PATCH} application/merge-patch+json \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/jsons/PmJobModifications.json b/SOL005/NSPerformanceManagement-API/jsons/PmJobModifications.json new file mode 100644 index 000000000..f66ab98ec --- /dev/null +++ b/SOL005/NSPerformanceManagement-API/jsons/PmJobModifications.json @@ -0,0 +1,3 @@ +{ + "callbackUri": "" +} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/jsons/ThresholdModifications.json b/SOL005/NSPerformanceManagement-API/jsons/ThresholdModifications.json new file mode 100644 index 000000000..60c7f184d --- /dev/null +++ b/SOL005/NSPerformanceManagement-API/jsons/ThresholdModifications.json @@ -0,0 +1,3 @@ +{ + "callbackUri":"" +} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/jsons/subscriptions.json b/SOL005/NSPerformanceManagement-API/jsons/subscriptions.json deleted file mode 100644 index 3ca4fc25a..000000000 --- a/SOL005/NSPerformanceManagement-API/jsons/subscriptions.json +++ /dev/null @@ -1,6 +0,0 @@ -{{ - "callbackUri": "{callback_uri}{callback_endpoint}", - "filter": {{ - "notificationTypes": ["ThresholdCrossedNotification"] - }} -}} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/schemas/PmJobModifications.json b/SOL005/NSPerformanceManagement-API/schemas/PmJobModifications.json new file mode 100644 index 000000000..26910ec0a --- /dev/null +++ b/SOL005/NSPerformanceManagement-API/schemas/PmJobModifications.json @@ -0,0 +1,64 @@ +{ + "description": "This type represents modifications to a PM job. It shall comply with the provisions defined in Table 7.5.2.12-1.\n", + "type": "object", + "properties": { + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "authentication": { + "type": "object", + "required": [ + "authType" + ], + "properties": { + "authType": { + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: - BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials.\n- OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n- TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS", + "TLS_CERT" + ] + } + }, + "paramsBasic": { + "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "userName": { + "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + }, + "password": { + "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + } + } + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + } + } + } + } + } + } + } \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/schemas/PmSubscription.schema.json b/SOL005/NSPerformanceManagement-API/schemas/PmSubscription.schema.json deleted file mode 100644 index 8fc48f07f..000000000 --- a/SOL005/NSPerformanceManagement-API/schemas/PmSubscription.schema.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "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. It shall comply with the provisions defined in Table 7.5.3.2-1. 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": { - "nsInstanceSubscriptionFilter": { - "description": "This type represents subscription filter criteria to match NS instances.\n", - "type": "object", - "properties": { - "nsdIds": { - "description": "If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "vnfdIds": { - "description": "If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "pnfdIds": { - "description": "If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "nsInstanceIds": { - "description": "If present, match NS instances with an instance identifier listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "nsInstanceNames": { - "description": "If present, match NS instances with a NS Instance Name listed in this attribute.\n", - "type": "array", - "items": { - "description": "This type represents stack of string values\n", - "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": "array", - "items": { - "type": "string", - "enum": [ - "ThresholdCrossedNotification", - "PerformanceInformationAvailableNotification" - ] - } - } - } - }, - "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" - } - } - } - } - } - } -} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/schemas/PmSubscriptions.schema.json b/SOL005/NSPerformanceManagement-API/schemas/PmSubscriptions.schema.json deleted file mode 100644 index afe99ab68..000000000 --- a/SOL005/NSPerformanceManagement-API/schemas/PmSubscriptions.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "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. It shall comply with the provisions defined in Table 7.5.3.2-1. 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": { - "nsInstanceSubscriptionFilter": { - "description": "This type represents subscription filter criteria to match NS instances.\n", - "type": "object", - "properties": { - "nsdIds": { - "description": "If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "vnfdIds": { - "description": "If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "pnfdIds": { - "description": "If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "nsInstanceIds": { - "description": "If present, match NS instances with an instance identifier listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "nsInstanceNames": { - "description": "If present, match NS instances with a NS Instance Name listed in this attribute.\n", - "type": "array", - "items": { - "description": "This type represents stack of string values\n", - "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": "array", - "items": { - "type": "string", - "enum": [ - "ThresholdCrossedNotification", - "PerformanceInformationAvailableNotification" - ] - } - } - } - }, - "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" - } - } - } - } - } - } - } -} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/schemas/ThresholdModifications.json b/SOL005/NSPerformanceManagement-API/schemas/ThresholdModifications.json new file mode 100644 index 000000000..4b011194f --- /dev/null +++ b/SOL005/NSPerformanceManagement-API/schemas/ThresholdModifications.json @@ -0,0 +1,64 @@ +{ + "description": "This type represents modifications to a threshold. It shall comply with the provisions defined in Table 7.5.2.11-1.\n", + "type": "object", + "properties": { + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "authentication": { + "type": "object", + "required": [ + "authType" + ], + "properties": { + "authType": { + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: - BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials.\n- OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n- TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS", + "TLS_CERT" + ] + } + }, + "paramsBasic": { + "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "userName": { + "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + }, + "password": { + "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + } + } + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + } + } + } + } + } + } + } \ No newline at end of file -- GitLab From 81ef0d341f1f703c9c582a2c119d59f5e688262d Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 2 Nov 2020 13:53:24 +0500 Subject: [PATCH 122/580] added majorAPIVersion --- .../ApiVersion.robot | 10 +- .../NSPerformanceManagementKeywords.robot | 361 +++--------------- .../NSPerformanceManagement-API/PMJobs.robot | 2 +- .../Thresholds.robot | 2 +- .../environment/variables.txt | 2 +- 5 files changed, 60 insertions(+), 317 deletions(-) diff --git a/SOL005/NSPerformanceManagement-API/ApiVersion.robot b/SOL005/NSPerformanceManagement-API/ApiVersion.robot index c3232f1b2..438bcd408 100644 --- a/SOL005/NSPerformanceManagement-API/ApiVersion.robot +++ b/SOL005/NSPerformanceManagement-API/ApiVersion.robot @@ -169,35 +169,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index 0d50c014e..57c7078a8 100644 --- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot +++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot @@ -1,12 +1,10 @@ *** Settings *** Resource environment/variables.txt -Resource environment/subscriptions.txt Resource environment/pmJobs.txt Resource environment/IndividualPmJob.txt Resource environment/reports.txt Resource environment/thresholds.txt Resource environment/individualThresholds.txt -Resource environment/individualSubscription.txt Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library MockServerLibrary Library OperatingSystem @@ -22,7 +20,7 @@ GET all NS Performance Monitoring Jobs Log Trying to get all PM Jobs present in the NFVO Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -30,7 +28,7 @@ GET NS Performance Monitoring Jobs with attribute-based filter Log Trying to get all PM Jobs present in the NFVO, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?${POS_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -38,7 +36,7 @@ GET NS Performance Monitoring Jobs with all_fields attribute selector Log Trying to get all PM Jobs present in the NFVO, using 'all_fields' filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?all_fields + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -46,7 +44,7 @@ GET NS Performance Monitoring Jobs with exclude_default attribute selector Log Trying to get all NS Packages present in the NFVO, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -55,7 +53,7 @@ GET NS Performance Monitoring Jobs with include attribute selector Pass Execution If ${FIELD_USAGE} == 0 Skipping test as NFVO is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?include=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?include=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -64,7 +62,7 @@ GET NS Performance Monitoring Jobs with exclude attribute selector Pass Execution If ${FIELD_USAGE} == 0 Skipping test as NFVO is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?exclude=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?exclude=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -72,7 +70,7 @@ GET NS Performance Monitoring Jobs with invalid attribute-based filter Log Trying to get all PM Jobs present in the NFVO, using an erroneous filter param Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?${NEG_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -80,7 +78,7 @@ GET NS Performance Monitoring Jobs 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}/${apiVersion}/pm_job # wrong URI /pm_job instead of /pm_jobs + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_job # wrong URI /pm_job instead of /pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -91,7 +89,7 @@ Send Post Request Create new NS Performance Monitoring Job Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/CreatePmJobRequest.json ${body}= Format String ${template} pmJobId=${pmJobId} - POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -99,7 +97,7 @@ Send PUT Request for all NS Performance Monitoring Jobs 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}/${apiVersion}/pm_jobs + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -107,7 +105,7 @@ Send PATCH Request for all NS Performance Monitoring Jobs 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}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -115,7 +113,7 @@ Send DELETE Request for all NS Performance Monitoring Jobs 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}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -127,7 +125,7 @@ Check Postcondition PmJob Exists Log Checking that Pm Job exists Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -188,7 +186,7 @@ GET individual NS Performance Job Log Trying to get a Pm Job present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -196,7 +194,7 @@ GET individual NS Performance Job with invalid resource identifier Log Trying to perform a negative get, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${erroneousPmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -204,7 +202,7 @@ Send Delete request for individual NS Performance Job Log Trying to delete an existing PM Job Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -212,7 +210,7 @@ Send Delete request for individual NS Performance Job with invalid resource iden Log Trying to perform a negative delete, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${erroneousPmJobId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -220,7 +218,7 @@ Send Post request for individual NS Performance Job 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}/${apiVersion}/pm_jobs/${newPmJobId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -228,10 +226,10 @@ Send Put request for individual NS Performance Job 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -241,7 +239,7 @@ Send Patch request for individual NS Performance Job Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body}= Get File jsons/PmJobModifications.json - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} ${body} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -249,7 +247,7 @@ Check Postcondition NS Performance Job is not Created Log Trying to get a new Pm Job Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${newPmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 404 @@ -277,7 +275,7 @@ Get Individual Performance Report Log Trying to get a performance report present in the NFVO Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -285,41 +283,41 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${erroneousReportId} + 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}"} - POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${newReportId} + 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} Send Patch request for Individual Performance Report Log Trying to update performance report Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for Individual Performance Report Log Trying to delete performance report Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -331,7 +329,7 @@ Check Postcondition NS Individual Performance Report is not Created Log Trying to get a new report Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${newReportId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${newReportId} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 404 @@ -347,7 +345,7 @@ GET all Performance Thresholds Log Trying to get all thresholds present in the NFVO Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -355,7 +353,7 @@ GET Performance Thresholds with attribute-based filter Log Trying to get thresholds present in the NFVO with filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds?${FILTER_OK_Threshold} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_OK_Threshold} ${output}= Output response Set Suite Variable ${response} ${output} @@ -363,7 +361,7 @@ GET Performance Thresholds with invalid attribute-based filter Log Trying to get thresholds present in the NFVO with invalid filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds?${FILTER_KO} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_KO} ${output}= Output response Set Suite Variable ${response} ${output} @@ -371,7 +369,7 @@ GET NS performance Thresholds with invalid resource endpoint Log Trying to get thresholds present in the NFVO with invalid resource endpoint Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/threshold + GET ${apiRoot}/${apiName}/${apiMajorVersion}/threshold ${output}= Output response Set Suite Variable ${response} ${output} @@ -382,7 +380,7 @@ Send Post Request Create new Performance Threshold Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/CreateThresholdRequest.json ${body}= Format String ${template} pmJobId=${pmJobId} - POST ${apiRoot}/${apiName}/${apiVersion}/thresholds ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -391,7 +389,7 @@ Send PUT Request for all Performance Thresholds Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - PUT ${apiRoot}/${apiName}/${apiVersion}/thresholds + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -400,14 +398,14 @@ Send PATCH Request for all Performance Thresholds Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} Send DELETE Request for all Performance Thresholds Log DELETE THresholds Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -419,7 +417,7 @@ Check Postcondition Threshold Exists Log Checking that Threshold exists Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -435,7 +433,7 @@ GET Individual NS performance Threshold Log Trying to get a Threhsold present in the NFVO Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -443,28 +441,28 @@ GET individual NS 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${erroneousThresholdId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${erroneousThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual NS performance Threshold Log Trying to delete a Threhsold in the NFVO Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual NS performance Threshold with invalid resource identifier Log Trying to delete a Threhsold in the NFVO with invalid id Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds/${erroneousThresholdId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${erroneousThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post request for individual NS performance Threshold Log Trying to create new threshold Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/thresholds/${newThresholdId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -472,10 +470,10 @@ Send Put request for individual NS performance Threshold Log Trying to PUT threshold Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -485,7 +483,7 @@ Send Patch request for individual NS performance Threshold Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body}= Get File jsons/ThresholdModifications.json - PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} ${body} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -507,138 +505,11 @@ Check HTTP Response Body Threshold Identifier matches the requested Threshold Should Be Equal ${response['body']['id']} ${thresholdId} Log Pm Job identifier as expected - - -Get all NS Performance Subscriptions - [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications - ... subscribed by the client. - ... This method shall follow the provisions specified in the Tables 7.4.7.3.2-1 and 7.4.7.3.2-2 for URI query parameters, - ... request and response data structures, and response codes. - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Get NS Performance Subscriptions with attribute-based filters - [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications - ... subscribed by the client. - ... This method shall follow the provisions specified in the Tables 7.4.7.3.2-1 and 7.4.7.3.2-2 for URI query parameters, - ... request and response data structures, and response codes. - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ok} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Get NS Performance Subscriptions with invalid attribute-based filters - [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications - ... subscribed by the client. - ... This method shall follow the provisions specified in the Tables 7.4.7.3.2-1 and 7.4.7.3.2-2 for URI query parameters, - ... request and response data structures, and response codes. - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ko} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Get NS Performance Subscriptions with invalid resource endpoint - [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications - ... subscribed by the client. - ... This method shall follow the provisions specified in the Tables 7.4.7.3.2-1 and 7.4.7.3.2-2 for URI query parameters, - ... request and response data structures, and response codes. - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscription - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Send Post Request for NS Performance Subscription - [Documentation] The POST method creates a new subscription - ... This method shall follow the provisions specified in the Tables 7.4.7.3.1-1 and 7.4.7.3.1-2 for URI query parameters, - ... request and response data structures, and response codes. - ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance - ... degradation and will provide duplicates of notifications to the OSS, and might make sense only in very rare use cases. - ... Consequently, the NFVO may either allow creating a subscription resource if another subscription resource with the - ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide - ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing - ... the existing subscription resource with the same filter and callbackUri). - Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} - POST ${apiRoot}/${apiName}/${apiVersion}/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 NS Performance Subscription - [Documentation] The POST method creates a new subscription - ... This method shall follow the provisions specified in the Tables 7.4.7.3.1-1 and 7.4.7.3.1-2 for URI query parameters, - ... request and response data structures, and response codes. - ... Creation of two subscription resources with the same callbackURI and the same filter can result in performance - ... degradation and will provide duplicates of notifications to the OSS, and might make sense only in very rare use cases. - ... Consequently, the NFVO may either allow creating a subscription resource if another subscription resource with the - ... same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide - ... to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing - ... the existing subscription resource with the same filter and callbackUri). - Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} - Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} - ... Check Notification Endpoint - - - -Send Put Request for NS Performance Subscriptions - [Documentation] This method is not supported. When this method is requested on this resource, the NFVO shall return a "405 Method - ... Not Allowed" response as defined in Clause 4.3.5.4. - Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Send Patch Request for NS Performance Subscriptions - [Documentation] This method is not supported. When this method is requested on this resource, the NFVO shall return a "405 Method - ... Not Allowed" response as defined in Clause 4.3.5.4. - Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Send Delete Request for NS Performance Subscriptions - [Documentation] This method is not supported. When this method is requested on this resource, the NFVO shall return a "405 Method - ... Not Allowed" response as defined in Clause 4.3.5.4. - Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions - ${output}= Output response - Set Suite Variable ${response} ${output} - - Check HTTP Response Status Code Is [Arguments] ${expected_status} Should Be Equal As Strings ${response['status']} ${expected_status} Log Status code validated - - Check HTTP Response Body Json Schema Is [Arguments] ${input} Should Contain ${response['headers']['Content-Type']} application/json @@ -650,145 +521,18 @@ Check HTTP Response Body Json Schema Is Check HTTP Response Body Is Empty Should Be Empty ${response['body']} Log No json schema is provided. Validation OK - - -Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter - Log Check Response includes NS Package Management according to filter - @{words} = Split String ${filter_ok} ,${SEPERATOR} - Should Be Equal As Strings ${response['body'][0]['callbackUri']} @{words}[1] - -Check HTTP Response Body PmSubscription 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} - ${subscription}= evaluate json.loads('''${body}''') json - Should Be Equal ${response['body']['callbackUri']} ${subscription['callbackUri']} - - -Check Postcondition NS Performance Subscription Is Set - Log Check Postcondition subscription exist - Log Trying to get the subscription - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 200 - - -Check Postcondition Subscription Resource URI 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']} - Integer response status 200 - Log Received a 200 OK as expected - ${contentType}= Output response headers Content-Type - Should Contain ${contentType} application/json - ${result}= Output response body - Validate Json PmSubscriptions.schema.json ${result} - Log Validated PmSubscriptions schema - ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} - ${subscription}= evaluate json.loads('''${body}''') json - Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} - Log Validated Issued subscription is same as original - -Get Individual NS Performance 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}/${apiVersion}/subscriptions/${subscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -GET individual NS Performance 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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Send Delete request for individual NS Performance 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}/${apiVersion}/subscriptions/${subscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Check Postcondition NS Performance Subscription is Deleted - Log Check Postcondition Subscription is deleted - GET individual NS Performance Subscription - Check HTTP Response Status Code Is 404 - -Send Delete request for individual NS Performance Subscription with invalid resource identifier - 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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Send Post request for individual NS Performance Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${newSubscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Send Put request for individual NS Performance Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} - ${origOutput}= Output response - Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Send Patch request for individual NS Performance Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} - ${origOutput}= Output response - Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Check Postcondition NS Performance Subscription is Unmodified (Implicit) - Log Check postconidtion subscription not modified - GET individual NS Performance Subscription - Log Check Response matches original VNF Threshold - ${subscription}= evaluate json.loads('''${response['body']}''') json - Should Be Equal ${origResponse['body']['id']} ${subscription.id} - Should Be Equal ${origResponse['body']['callbackUri']} ${subscription.callbackUri} - -Check Postcondition NS Performance 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}/${apiVersion}/subscriptions/${newSubscriptionId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - -Check HTTP Response Body Subscription Identifier matches the requested Subscription - Log Trying to check response ID - Should Be Equal ${response['body']['id']} ${subscriptionId} - Log Subscription identifier as expected - + Check HTTP Response Header Contains [Arguments] ${CONTENT_TYPE} Should Contain ${response['headers']} ${CONTENT_TYPE} Log Header is present - 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} - - + Check Notification Endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} &{headers} = Create Dictionary Content-Type=application/json @@ -797,7 +541,6 @@ Check Notification Endpoint Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} -Check LINK in Header +Check HTTP Response Header Contains Location ${linkURL}= Get Value From Json ${response['headers']} $..Link - Should Not Be Empty ${linkURL} - + Should Not Be Empty ${linkURL} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/PMJobs.robot b/SOL005/NSPerformanceManagement-API/PMJobs.robot index 3665194be..93f5ab754 100644 --- a/SOL005/NSPerformanceManagement-API/PMJobs.robot +++ b/SOL005/NSPerformanceManagement-API/PMJobs.robot @@ -180,7 +180,7 @@ GET all NS Performance Monitoring Jobs as Paged Response ... Post-Conditions: none GET all NS Performance Monitoring Jobs Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Location GET NS Performance Monitoring Jobs - Bad Request Response too Big [Documentation] Test ID: 5.3.4.1.14 diff --git a/SOL005/NSPerformanceManagement-API/Thresholds.robot b/SOL005/NSPerformanceManagement-API/Thresholds.robot index a57d72fb5..21d59256a 100644 --- a/SOL005/NSPerformanceManagement-API/Thresholds.robot +++ b/SOL005/NSPerformanceManagement-API/Thresholds.robot @@ -124,7 +124,7 @@ GET All Performance Thresholds as Paged Response ... Post-Conditions: none GET all Performance Thresholds Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Location GET Performance Thresholds - Bad Request Response too Big [Documentation] Test ID: 5.3.4.4.10 diff --git a/SOL005/NSPerformanceManagement-API/environment/variables.txt b/SOL005/NSPerformanceManagement-API/environment/variables.txt index 30f5de744..07c1e0685 100644 --- a/SOL005/NSPerformanceManagement-API/environment/variables.txt +++ b/SOL005/NSPerformanceManagement-API/environment/variables.txt @@ -8,7 +8,7 @@ ${ACCEPT_JSON} application/json ${apiRoot} / ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken -${apiVersion} v1 +${apiMajorVersion} v1 ${apiName} nspm ${FIELD_USAGE} 1 ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 -- GitLab From 2756d222d2f3a5352406da3aa5f92f60eaf8d380 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 2 Nov 2020 16:09:13 +0500 Subject: [PATCH 123/580] new testcase and bug fix added --- .../IndividualPmJob.robot | 4 +- .../IndividualReport.robot | 21 ++++------ .../NSPerformanceManagementKeywords.robot | 42 ++++++------------- .../NSPerformanceManagement-API/PMJobs.robot | 30 +++++++++---- .../Thresholds.robot | 4 +- .../environment/variables.txt | 2 +- 6 files changed, 48 insertions(+), 55 deletions(-) diff --git a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot index 8eb28fd4a..3adb819eb 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot @@ -50,7 +50,7 @@ POST Individual NS Performance Job - Method not implemented [Documentation] Test ID: 5.3.4.2.4 ... Test title: POST Individual NS Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NS Performance Monitoring Job - ... Pre-conditions: A NS instance is instantiated + ... Pre-conditions: none ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none @@ -62,7 +62,7 @@ PUT Individual NS Performance Job - Method not implemented [Documentation] Test ID: 5.3.4.2.5 ... Test title: PUT Individual NS Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NS Performance Monitoring Job - ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. + ... Pre-conditions: none ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none diff --git a/SOL005/NSPerformanceManagement-API/IndividualReport.robot b/SOL005/NSPerformanceManagement-API/IndividualReport.robot index b79aee7dc..5d35b0025 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualReport.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualReport.robot @@ -31,56 +31,53 @@ Get Individual Performance Report with invalid resource endpoint ... Post-Conditions: none Get Individual Performance Report with invalid resource endpoint Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails POST Individual Performance Report - Method not implemented [Documentation] Test ID: 5.3.4.3.3 ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NS performance report within a monitoring job - ... Pre-conditions: A NS instance is instantiated. + ... Pre-conditions: none ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS performance report is not created on the NFVO + ... Post-Conditions: none Send Post request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition NS Individual Performance Report is not Created PUT Individual Performance Report - Method not implemented [Documentation] Test ID: 5.3.4.3.4 ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NS performance report within a monitoring job - ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. + ... Pre-conditions: none ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS performance report is not modified by the operation + ... Post-Conditions: none Send Put request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition NS Individual Performance Report is Unmodified (Implicit) PATCH Individual Performance Report - Method not implemented [Documentation] Test ID: 5.3.4.3.5 ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NS performance report within a monitoring job - ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. + ... Pre-conditions: none ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS performance report is not modified by the operation + ... Post-Conditions: none Send Patch request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition NS Individual Performance Report is Unmodified (Implicit) DELETE Individual Performance Report - Method not implemented [Documentation] Test ID: 5.3.4.3.6 ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing NS performance report within a monitoring job - ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. + ... Pre-conditions: none ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS performance report is not deleted by the operation + ... Post-Conditions: none Send Delete request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition NS Individual Performance Report Exists diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index 57c7078a8..e22cffb96 100644 --- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot +++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot @@ -48,12 +48,21 @@ GET NS Performance Monitoring Jobs with exclude_default attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -GET NS Performance Monitoring Jobs with include attribute selector +GET NS Performance Monitoring Jobs with fields attribute selector Log Trying to get all NS Packages present in the NFVO, using filter params Pass Execution If ${FIELD_USAGE} == 0 Skipping test as NFVO is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?include=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NS Performance Monitoring Jobs with fields and exclude_default attribute selector + Log Trying to get all NS Packages present in the NFVO, using filter params + Pass Execution If ${FIELD_USAGE} == 0 Skipping test as NFVO is not supporting 'fields' + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -117,9 +126,6 @@ Send DELETE Request for all NS Performance Monitoring Jobs ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition NS Performance Monitoring Jobs Exist - Log Checking that Pm Job still exists - GET all NS Performance Monitoring Jobs Check Postcondition PmJob Exists Log Checking that Pm Job exists @@ -140,7 +146,7 @@ Check HTTP Response Body PmJobs Matches the requested exclude selector Should Be Empty ${criteria} Log Reports element is empty as expected -Check HTTP Response Body PmJobs Matches the requested include selector +Check HTTP Response Body PmJobs Matches the requested selector Log Trying to validate criteria schema ${criteria}= Get Value From Json ${response['body']} $..criteria Validate Json criteria.schema.json ${criteria} @@ -321,26 +327,6 @@ Send Delete request for Individual Performance Report ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition NS Individual Performance Report Exists - Log Checking that report still exists - Get Individual Performance Report - -Check Postcondition NS Individual Performance Report is not Created - Log Trying to get a new report - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${newReportId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - -Check Postcondition NS Individual Performance Report is Unmodified (Implicit) - Log Check Postcondition VNF PM job is not modified - Get Individual Performance Report - Log Check Response matches original VNF report - ${report}= evaluate json.loads('''${response['body']}''') json - Should Be Equal ${origResponse['body']['entries'][0]['objectInstanceId']} ${report['entries'][0]['objectInstanceId']} - GET all Performance Thresholds Log Trying to get all thresholds present in the NFVO Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -408,10 +394,6 @@ Send DELETE Request for all Performance Thresholds DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition Thresholds Exist - Log Checking that Thresholds still exists - GET all Performance Thresholds Check Postcondition Threshold Exists Log Checking that Threshold exists diff --git a/SOL005/NSPerformanceManagement-API/PMJobs.robot b/SOL005/NSPerformanceManagement-API/PMJobs.robot index 93f5ab754..315b42b67 100644 --- a/SOL005/NSPerformanceManagement-API/PMJobs.robot +++ b/SOL005/NSPerformanceManagement-API/PMJobs.robot @@ -65,19 +65,19 @@ GET all NS Performance Monitoring Jobs with "exclude_default" attribute selector Check HTTP Response Body Json Schema Is PmJobs Check HTTP Response Body PmJobs Matches the requested exclude_default selector -GET all NS Performance Monitoring Jobs with "include" attribute selector +GET all NS Performance Monitoring Jobs with "fields" attribute selector [Documentation] Test ID: 5.3.4.1.5 - ... Test title: GET all NS Performance Monitoring Jobs with "include" attribute selector - ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "include" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "include" selector + ... Test title: GET all NS Performance Monitoring Jobs with "fields" attribute selector + ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "fields" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "include" selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "include" attribute selector ... Post-Conditions: none - GET NS Performance Monitoring Jobs with include attribute selector + GET NS Performance Monitoring Jobs with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PmJobs - Check HTTP Response Body PmJobs Matches the requested include selector + Check HTTP Response Body PmJobs Matches the requested selector GET all NS Performance Monitoring Jobs with "exclude" attribute selector [Documentation] Test ID: 5.3.4.1.6 @@ -117,6 +117,7 @@ GET NS Performance Monitoring Jobs with invalid resource endpoint ... Post-Conditions: none GET NS Performance Monitoring Jobs with invalid resource endpoint Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails Create new NS Performance Monitoring Job [Documentation] Test ID: 5.3.4.1.9 @@ -164,10 +165,9 @@ DELETE all NS Performance Monitoring Jobs - Method not implemented ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS Performance Monitoring Jobs are not deleted by the failed operation + ... Post-Conditions: none Send PATCH Request for all NS Performance Monitoring Jobs Check HTTP Response Status Code Is 405 - Check Postcondition NS Performance Monitoring Jobs Exist GET all NS Performance Monitoring Jobs as Paged Response [Documentation] Test ID: 5.3.4.1.13 @@ -193,4 +193,18 @@ GET NS Performance Monitoring Jobs - Bad Request Response too Big ... Post-Conditions: none GET all NS Performance Monitoring Jobs Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +GET all NS Performance Monitoring Jobs with "fields" and "exclude_default" attribute selector + [Documentation] Test ID: 5.3.4.1.15 + ... Test title: GET all NS Performance Monitoring Jobs with "fields" and "exclude_default" attribute selector + ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "fields" and "exclude_default" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued selector + ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports the use of "include" attribute selector + ... Post-Conditions: none + GET NS Performance Monitoring Jobs with fields and exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJobs + Check HTTP Response Body PmJobs Matches the requested selector \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/Thresholds.robot b/SOL005/NSPerformanceManagement-API/Thresholds.robot index 21d59256a..3c74956a8 100644 --- a/SOL005/NSPerformanceManagement-API/Thresholds.robot +++ b/SOL005/NSPerformanceManagement-API/Thresholds.robot @@ -47,6 +47,7 @@ GET Performance Thresholds with invalid attribute-based filter ... Post-Conditions: none GET Performance Thresholds with invalid attribute-based filter Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Performance Thresholds with invalid resource endpoint [Documentation] Test ID: 5.3.4.4.4 @@ -108,10 +109,9 @@ DELETE Performance Thresholds - Method not implemented ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS performance thresholds are not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for all Performance Thresholds Check HTTP Response Status Code Is 405 - Check Postcondition Thresholds Exist GET All Performance Thresholds as Paged Response [Documentation] Test ID: 5.3.4.4.9 diff --git a/SOL005/NSPerformanceManagement-API/environment/variables.txt b/SOL005/NSPerformanceManagement-API/environment/variables.txt index 07c1e0685..db2e7c3e5 100644 --- a/SOL005/NSPerformanceManagement-API/environment/variables.txt +++ b/SOL005/NSPerformanceManagement-API/environment/variables.txt @@ -8,7 +8,7 @@ ${ACCEPT_JSON} application/json ${apiRoot} / ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken -${apiMajorVersion} v1 +${apiMajorVersion} v2 ${apiName} nspm ${FIELD_USAGE} 1 ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 -- GitLab From c7683a3d066e594aa6b82de30bf76ebd22d9a16e Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 3 Nov 2020 12:13:06 +0500 Subject: [PATCH 124/580] deltas for 2.7.1 SOl005 NSFM added --- .../NSFaultManagement-API/Subscriptions.robot | 16 +- .../schemas/alarm.schema.json | 347 +++++++++--------- .../schemas/alarms.schema.json | 5 +- 3 files changed, 193 insertions(+), 175 deletions(-) diff --git a/SOL005/NSFaultManagement-API/Subscriptions.robot b/SOL005/NSFaultManagement-API/Subscriptions.robot index 3fa988c74..1aea8c7f9 100644 --- a/SOL005/NSFaultManagement-API/Subscriptions.robot +++ b/SOL005/NSFaultManagement-API/Subscriptions.robot @@ -22,7 +22,6 @@ 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 @@ -285,4 +284,17 @@ Retrieve a list of alarm subscriptions with filter "filter.probableCauses" Get subscriptions with filter "filter_probableCauses" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions - Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_probableCauses" \ No newline at end of file + Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_probableCauses" + +Create a new alarm subscription - Unprocessable Entity + [Documentation] Test ID: 5.3.3.3.22 + ... Test title: Create a new alarm subscription- Unprocessable Entity + ... Test objective: The objective is to test that creation of a new Fault management alarm subscriptions fials when content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. + ... Pre-conditions: + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST Subscription + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/schemas/alarm.schema.json b/SOL005/NSFaultManagement-API/schemas/alarm.schema.json index b51ab8c36..76fc39504 100644 --- a/SOL005/NSFaultManagement-API/schemas/alarm.schema.json +++ b/SOL005/NSFaultManagement-API/schemas/alarm.schema.json @@ -1,183 +1,186 @@ { - "description": "The alarm data type encapsulates information about an alarm. It shall comply with the provisions defined in Table 8.5.2.4-1\n", - "type": "object", - "required": [ - "id", - "managedObjectId", - "alarmRaisedTime", - "rootCauseFaultyComponent", - "ackState", - "perceivedSeverity", - "eventTime", - "eventType", - "probableCause", - "isRootCause", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "managedObjectId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "rootCauseFaultyComponent": { - "description": "This type represents the faulty component that has a negative impact on an NS. It shall comply with the provisions defined in Table 8.5.3.4-1.\n", - "type": "object", - "properties": { - "faultyNestedNsInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "faultyResourceType": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "faultyNsVirtualLinkInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "description": "The alarm data type encapsulates information about an alarm. It shall comply with the provisions defined in Table 8.5.2.4-1\n", + "type": "object", + "required": [ + "id", + "managedObjectId", + "alarmRaisedTime", + "ackState", + "perceivedSeverity", + "eventTime", + "eventType", + "probableCause", + "isRootCause", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "managedObjectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "rootCauseFaultyComponent": { + "description": "This type represents the faulty component that has a negative impact on an NS. It shall comply with the provisions defined in Table 8.5.3.4-1.\n", + "type": "object", + "properties": { + "faultyNestedNsInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "faultyResourceType": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "faultyNsVirtualLinkInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } } - } - }, - "rootCauseFaultyResource": { - "description": "This type represents the faulty virtual resources that have a negative impact on a NS.\n", - "type": "object", - "required": [ - "faultyResource", - "faultyResourceType" - ], - "properties": { - "faultyResource": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", - "type": "object", - "required": [ - "resourceId" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "string" + }, + "rootCauseFaultyResource": { + "description": "This type represents the faulty virtual resources that have a negative impact on a NS.\n", + "type": "object", + "required": [ + "faultyResource", + "faultyResourceType" + ], + "properties": { + "faultyResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } } + }, + "faultyResourceType": { + "description": "The enumeration FaultyResourceType represents those types of faulty resource. Acceptable values are: - COMPUTE - Virtual compute resource. - STORAGE - Virtual storage resource. - NETWORK - Virtual network resource.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] } - }, - "faultyResourceType": { - "description": "The enumeration FaultyResourceType represents those types of faulty resource. Acceptable values are: - COMPUTE - Virtual compute resource. - STORAGE - Virtual storage resource. - NETWORK - Virtual network resource.\n", - "type": "string", - "enum": [ - "COMPUTE", - "STORAGE", - "NETWORK" - ] } - } - }, - "alarmRaisedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "alarmChangedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "alarmClearedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "ackState": { - "description": "Acknowledgment state of the alarm. Permitted values: UNACKNOWLEDGED ACKNOWLEDGED\n", - "type": "string", - "enum": [ - "UNACKNOWLEDGED", - "ACKNOWLEDGED" - ] - }, - "perceivedSeverity": { - "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "INDETERMINATE", - "CLEARED" - ] - }, - "eventTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "eventType": { - "description": "The enumeration EventType represents those types of events that trigger an alarm. - COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n- PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n- ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n- QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n- EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", - "type": "string", - "enum": [ - "COMMUNICATIONS_ALARM", - "PROCESSING_ERROR_ALARM", - "ENVIRONMENTAL_ALARM", - "QOS_ALARM", - "EQUIPMENT_ALARM" - ] - }, - "faultType": { - "description": "Additional information to clarify the type of the fault.\n", - "type": "string" - }, - "probableCause": { - "description": "Information about the probable cause of the fault.\n", - "type": "string" - }, - "isRootCause": { - "description": "Attribute indicating if this fault is the root for other correlated alarms. If TRUE, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", - "type": "boolean" - }, - "correlatedAlarmIds": { - "description": "List of identifiers of other alarms correlated to this fault.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", + }, + "alarmRaisedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "alarmChangedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "alarmClearedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "alarmAcknowledgedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "ackState": { + "description": "Acknowledgment state of the alarm. Permitted values: UNACKNOWLEDGED ACKNOWLEDGED\n", + "type": "string", + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] + }, + "perceivedSeverity": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + }, + "eventTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "eventType": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. - COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n- PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n- ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n- QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n- EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + }, + "faultType": { + "description": "Additional information to clarify the type of the fault.\n", "type": "string" - } - }, - "faultDetails": { - "description": "Provides additional information about the fault..\n", - "type": "string" - }, - "_links": { - "description": "Links for 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 a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" + }, + "probableCause": { + "description": "Information about the probable cause of the fault.\n", + "type": "string" + }, + "isRootCause": { + "description": "Attribute indicating if this fault is the root for other correlated alarms. If TRUE, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", + "type": "boolean" + }, + "correlatedAlarmIds": { + "description": "List of identifiers of other alarms correlated to this fault.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "faultDetails": { + "description": "Provides additional information about the fault..\n", + "type": "string" + }, + "_links": { + "description": "Links for 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 a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } } } } } } - } -} \ No newline at end of file + } \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/schemas/alarms.schema.json b/SOL005/NSFaultManagement-API/schemas/alarms.schema.json index 284a1fa1c..716025e57 100644 --- a/SOL005/NSFaultManagement-API/schemas/alarms.schema.json +++ b/SOL005/NSFaultManagement-API/schemas/alarms.schema.json @@ -7,7 +7,6 @@ "id", "managedObjectId", "alarmRaisedTime", - "rootCauseFaultyComponent", "ackState", "perceivedSeverity", "eventTime", @@ -99,6 +98,10 @@ "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", "format": "date-time" }, + "alarmAcknowledgedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, "ackState": { "description": "Acknowledgment state of the alarm. Permitted values: UNACKNOWLEDGED ACKNOWLEDGED\n", "type": "string", -- GitLab From 518a3516e000a8a9368ba39e41b41b511b8e4966 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 3 Nov 2020 12:20:24 +0500 Subject: [PATCH 125/580] added majorApiVersion and fix minor bugs --- SOL005/NSFaultManagement-API/Alarms.robot | 33 +++--- SOL005/NSFaultManagement-API/ApiVersion.robot | 10 +- .../IndividualAlarm.robot | 9 +- .../IndividualSubscription.robot | 5 +- .../NSFMOperationKeywords.robot | 106 +++++++++--------- .../NSFaultManagement-API/Subscriptions.robot | 22 ++-- .../environment/variables.txt | 2 +- 7 files changed, 91 insertions(+), 96 deletions(-) diff --git a/SOL005/NSFaultManagement-API/Alarms.robot b/SOL005/NSFaultManagement-API/Alarms.robot index 50f47bcd7..4650a5b89 100644 --- a/SOL005/NSFaultManagement-API/Alarms.robot +++ b/SOL005/NSFaultManagement-API/Alarms.robot @@ -15,7 +15,7 @@ POST Alarms - Method not implemented ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: alarm not created + ... Post-Conditions: none POST Alarms Check HTTP Response Status Code Is 405 @@ -62,11 +62,11 @@ GET information about multiple alarms with "all_fields" attribute selector [Documentation] Test ID: 5.3.3.1.5 ... Test title: GET information about multiple alarms with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -75,11 +75,11 @@ GET information about multiple alarms with exclude_default attribute selector [Documentation] Test ID: 5.3.3.1.6 ... Test title: GET information about multiple alarms with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with exclude_default attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -89,11 +89,11 @@ GET information about multiple alarms with fields attribute selector [Documentation] Test ID: 5.3.3.1.7 ... Test title: GET information about multiple alarms with fields attribute selector ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Alarms Task with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms @@ -102,10 +102,10 @@ GET information about multiple alarms with "exclude_fields" attribute selector [Documentation] Test ID: 5.3.3.1.8 ... Test title: GET information about multiple alarms with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO - ... Applicability: + ... Applicability: none ... Post-Conditions: none GET Alarms Task with exclude_fields attribute selector Check HTTP Response Status Code Is 200 @@ -123,7 +123,6 @@ PUT Alarms - Method not implemented PUT Alarms Check HTTP Response Status Code Is 405 - PATCH Alarms - Method not implemented [Documentation] Test ID: 5.3.3.1.6 ... Test title: PATCH Alarms - Method not implemented @@ -144,7 +143,7 @@ DELETE Alarms - Method not implemented ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: alarm not deleted + ... Post-Conditions: none DELETE Alarms Check HTTP Response Status Code Is 405 @@ -159,7 +158,7 @@ GET information about multiple alarms as Paged Response ... Post-Conditions: none GET Alarms Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Location GET information about multiple alarms - Bad Request Response too Big [Documentation] Test ID: 5.3.3.1.9 @@ -230,7 +229,6 @@ GET information about multiple alarms with filter "rootCauseFaultyComponent.faul Check HTTP Response Body Json Schema Is alarms Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "faultyVnfInstanceId" - GET information about multiple alarms with filter "rootCauseFaultyResource.faultyResourceType" [Documentation] Test ID: 5.3.3.1.14 ... Test title: GET information about multiple alarms with filter "rootCauseFaultyResource.faultyResourceType" @@ -285,5 +283,4 @@ GET information about multiple alarms with filter "probableCause" GET Alarms with filter "probableCause" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarms - Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "probableCause" - \ No newline at end of file + Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "probableCause" \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/ApiVersion.robot b/SOL005/NSFaultManagement-API/ApiVersion.robot index 18dc486a9..47ae5def9 100644 --- a/SOL005/NSFaultManagement-API/ApiVersion.robot +++ b/SOL005/NSFaultManagement-API/ApiVersion.robot @@ -169,35 +169,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSFaultManagement-API/IndividualAlarm.robot b/SOL005/NSFaultManagement-API/IndividualAlarm.robot index b6481159f..d0b5dafe4 100644 --- a/SOL005/NSFaultManagement-API/IndividualAlarm.robot +++ b/SOL005/NSFaultManagement-API/IndividualAlarm.robot @@ -17,7 +17,7 @@ POST Individual Alarm - Method not implemented ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: alarm is not created + ... Post-Conditions: none POST Individual Alarm Check HTTP Response Status Code Is 405 @@ -45,7 +45,7 @@ GET information about Invalid Individual Alarm ... Post-Conditions: none GET Invalid Individual Alarm Check HTTP Response Status Code Is 404 - + Check HTTP Response Body Json Schema Is ProblemDetails PUT Individual Alarm - Method not implemented [Documentation] Test ID: 5.3.3.2.4 @@ -85,7 +85,6 @@ PATCH Alarm - Conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - PATCH Alarm - Precondition failed [Documentation] Test ID: 5.3.3.2.7 ... Test title: Modify an individual alarm resource - Precondition failed @@ -107,6 +106,6 @@ DELETE Individual Alarm - Method not implemented ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: alarm not deleted + ... Post-Conditions: none DELETE Individual Alarm - Check HTTP Response Status Code Is 405 + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/IndividualSubscription.robot b/SOL005/NSFaultManagement-API/IndividualSubscription.robot index 50ab67ca2..b89a65012 100644 --- a/SOL005/NSFaultManagement-API/IndividualSubscription.robot +++ b/SOL005/NSFaultManagement-API/IndividualSubscription.robot @@ -14,7 +14,7 @@ Post Individual Subscription - Method not implemented ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: subscription is not created + ... Post-Conditions: none POST Individual Subscription Check HTTP Response Status Code Is 405 @@ -65,5 +65,4 @@ DELETE an individual subscription ... Applicability: none ... Post-Conditions: subscription is not deleted DELETE Individual Subscription - Check HTTP Response Status Code Is 204 - \ No newline at end of file + Check HTTP Response Status Code Is 204 \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot index f2df28a61..ab113914a 100644 --- a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot +++ b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot @@ -19,7 +19,7 @@ Create Sessions Check Individual Subscription existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Check HTTP Response Status Code Is @@ -61,7 +61,7 @@ POST Alarms log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/alarms + Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -69,7 +69,7 @@ PATCH Alarms log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/alarms + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse} = Output response Set Global Variable ${response} ${outputResponse} @@ -77,7 +77,7 @@ PUT Alarms log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/alarms + Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -85,7 +85,7 @@ DELETE Alarms log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/alarms + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -94,7 +94,7 @@ GET Alarms Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -103,7 +103,7 @@ GET Alarms With Filters Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?${alarm_filter}=${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${alarm_filter}=${nsInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -112,42 +112,42 @@ GET Alarms With Invalid Filters Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?${invalid_alarm_filter}=${nsInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${invalid_alarm_filter}=${nsInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Alarms Task with all_fields attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/alarms?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with exclude_default attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/alarms?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with fields attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/alarms?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with exclude_fields attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/alarms?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} POST Individual Alarm log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -155,7 +155,7 @@ DELETE Individual Alarm log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -163,7 +163,7 @@ PUT Individual Alarm log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -173,7 +173,7 @@ GET Individual Alarm Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -183,7 +183,7 @@ GET Invalid Individual Alarm Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms/${invalidAlarmId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${invalidAlarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -193,7 +193,7 @@ PATCH Individual Alarm Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/alarmModifications.json - Patch ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} ${body} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -204,18 +204,18 @@ PATCH Individual Alarm Conflict Set Headers {"If-Match": "${Etag}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/alarmModifications.json - Patch ${apiRoot}/${apiName}/${apiVersion}/alarms/${alarmId} ${body} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST Subscription - Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions 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}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -227,7 +227,7 @@ Post Create subscription - DUPLICATION 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}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -239,7 +239,7 @@ Post Create subscription - NO-DUPLICATION 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}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -247,7 +247,7 @@ GET Subscriptions Log Get the list of active subscriptions Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -255,7 +255,7 @@ GET Subscriptions with filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -263,7 +263,7 @@ GET Subscriptions with Invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -271,35 +271,35 @@ Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} PUT Subscriptions log Trying to perform a PUT Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -307,7 +307,7 @@ PATCH Subscriptions log Trying to perform a PATCH Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -315,7 +315,7 @@ DELETE Subscriptions log Trying to perform a DELETE Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -323,7 +323,7 @@ POST Individual Subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -331,7 +331,7 @@ GET Individual Subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -339,7 +339,7 @@ PUT Individual Subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -347,7 +347,7 @@ PATCH Individual Subscription log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -355,7 +355,7 @@ DELETE Individual Subscription log Trying to perform a DELETE. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -428,7 +428,7 @@ Do DELETE Notification Log Verifying results Verify Mock Expectation ${req} -Check LINK in Header +Check HTTP Response Header Contains Location ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} @@ -437,7 +437,7 @@ GET Alarm With Filter "id" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?id=${alarmId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?id=${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -449,7 +449,7 @@ GET Alarms With Filter "rootCauseFaultyComponent_faultyNestedNsInstanceId" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?rootCauseFaultyComponent.faultyNestedNsInstanceId=${faultyNestedNsInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?rootCauseFaultyComponent.faultyNestedNsInstanceId=${faultyNestedNsInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -463,7 +463,7 @@ GET Alarms With Filter "rootCauseFaultyComponent_faultyNsVirtualLinkInstanceId" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId=${faultyNsVirtualLinkInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId=${faultyNsVirtualLinkInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -477,7 +477,7 @@ GET Alarms With Filter "rootCauseFaultyComponent_faultyVnfInstanceId" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?rootCauseFaultyComponent.faultyVnfInstanceId=${faultyVnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?rootCauseFaultyComponent.faultyVnfInstanceId=${faultyVnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -491,7 +491,7 @@ GET Alarms With Filter "rootCauseFaultyResource_faultyResourceType" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?rootCauseFaultyResource.faultyResourceType=${faultyResourceType} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?rootCauseFaultyResource.faultyResourceType=${faultyResourceType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -505,7 +505,7 @@ GET Alarms with filter "eventType" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?eventType=${eventType} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?eventType=${eventType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -519,7 +519,7 @@ GET Alarms with filter "perceivedSeverity" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?perceivedSeverity=${perceivedSeverity} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?perceivedSeverity=${perceivedSeverity} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -533,7 +533,7 @@ GET Alarms with filter "probableCause" Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/alarms?probableCause=${probableCause} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?probableCause=${probableCause} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -546,7 +546,7 @@ Get subscriptions with filter "id" Log Get the list of active subscriptions using a filter "id" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?id=${subscription_id} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?id=${subscription_id} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -557,7 +557,7 @@ Get subscriptions with filter "filter_notificationTypes" Log Get the list of active subscriptions using a filter "filter.notificationTypes" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.notificationTypes=${notification_type} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.notificationTypes=${notification_type} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -570,7 +570,7 @@ Get subscriptions with filter "filter_faultyResourceTypes" Log Get the list of active subscriptions using a filter "filter.faultyResourceTypes" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.faultyResourceTypes=${faultyResourceType} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.faultyResourceTypes=${faultyResourceType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -583,7 +583,7 @@ Get subscriptions with filter "filter_perceivedSeverities" Log Get the list of active subscriptions using a filter "filter.perceivedSeverities" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.perceivedSeverities=${perceivedSeverity} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.perceivedSeverities=${perceivedSeverity} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -596,7 +596,7 @@ Get subscriptions with filter "filter_eventTypes" Log Get the list of active subscriptions using a filter "filter.eventTypes" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.eventTypes=${eventType} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.eventTypes=${eventType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -609,7 +609,7 @@ Get subscriptions with filter "filter_probableCauses" Log Get the list of active subscriptions using a filter "filter.probableCauses" Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?filter.probableCauses=${probableCause} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.probableCauses=${probableCause} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSFaultManagement-API/Subscriptions.robot b/SOL005/NSFaultManagement-API/Subscriptions.robot index 1aea8c7f9..4b7e352fa 100644 --- a/SOL005/NSFaultManagement-API/Subscriptions.robot +++ b/SOL005/NSFaultManagement-API/Subscriptions.robot @@ -105,11 +105,11 @@ GET subscriptions with "exclude_default" attribute selector [Documentation] Test ID: 5.3.3.3.8 ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with exclude_default attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -118,11 +118,11 @@ GET subscriptions with "fields" attribute selector [Documentation] Test ID: 5.3.3.3.9 ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -131,11 +131,11 @@ GET subscriptions with "exclude_fields" attribute selector [Documentation] Test ID: 5.3.3.3.10 ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with exclude_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -172,7 +172,7 @@ DELETE subscriptions - Method not implemented ... Reference: Clause 8.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: subscription is not deleted + ... Post-Conditions: none DELETE Subscriptions Check HTTP Response Status Code Is 405 @@ -187,7 +187,7 @@ Retrieve a list of alarm subscriptions as Paged Response ... Post-Conditions: none GET Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Location GET subscriptions - Bad Request Response too Big [Documentation] Test ID: 5.3.3.3.15 diff --git a/SOL005/NSFaultManagement-API/environment/variables.txt b/SOL005/NSFaultManagement-API/environment/variables.txt index 7f86938c5..78e923fd0 100644 --- a/SOL005/NSFaultManagement-API/environment/variables.txt +++ b/SOL005/NSFaultManagement-API/environment/variables.txt @@ -11,7 +11,7 @@ ${nsInstanceId} 007c111c-38a1-42c0-a666-7475ecb1567c ${invalid_alarm_filter} badFilter ${apiRoot} / ${apiName} nsfm -${apiVersion} v1 +${apiMajorVersion} v1 ${CONTENT_TYPE} application/json ${NFVO_ALLOWS_DUPLICATE_SUBS} 0 -- GitLab From 49f601a47de62984ccfffd959101afc2fbc899eb Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Tue, 3 Nov 2020 12:55:10 +0100 Subject: [PATCH 126/580] fix for issue #121 in SOL005-NSD-Management --- .../IndividualNSDescriptor.robot | 1 - .../IndividualPnfDescriptor.robot | 1 - .../IndividualSubscription.robot | 1 - SOL005/NSDManagement-API/NSD.robot | 1 - .../NSDManagement-API/NSDArchiveContent.robot | 1 - .../NSDArchiveManifest.robot | 1 - .../NSDManagementKeywords.robot | 3 - SOL005/NSDManagement-API/NSDescriptors.robot | 1 - SOL005/NSDManagement-API/PNFD.robot | 1 - .../PNFDArchiveContent.robot | 1 - .../PNFDArchiveManifest.robot | 1 - SOL005/NSDManagement-API/PNFDescriptors.robot | 1 - SOL005/NSDManagement-API/Subscriptions.robot | 1 - .../environment/individualSubscription.txt | 6 -- .../environment/nsDescriptors.txt | 34 ----------- .../environment/pnfDescriptors.txt | 15 ----- .../environment/subscriptions.txt | 5 -- .../environment/variables.txt | 58 ++++++++++++++++++- 18 files changed, 56 insertions(+), 77 deletions(-) delete mode 100644 SOL005/NSDManagement-API/environment/individualSubscription.txt delete mode 100644 SOL005/NSDManagement-API/environment/nsDescriptors.txt delete mode 100644 SOL005/NSDManagement-API/environment/pnfDescriptors.txt delete mode 100644 SOL005/NSDManagement-API/environment/subscriptions.txt diff --git a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot index a40de6a1f..cde65701a 100644 --- a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot @@ -2,7 +2,6 @@ Documentation This Clause defines all the resources and methods provided by the Individual NS descriptor interface. \ Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/nsDescriptors.txt # Specific nsDescriptors Parameters Resource NSDManagementKeywords.robot Library OperatingSystem Library JSONLibrary diff --git a/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot b/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot index 25e264186..8b88fc1fe 100644 --- a/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot @@ -2,7 +2,6 @@ Documentation This Clause defines all the resources and methods provided by the Iindividual PNF descriptor interface. \ Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/pnfDescriptors.txt # Specific nsDescriptors Parameters Resource NSDManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/NSDManagement-API/IndividualSubscription.robot b/SOL005/NSDManagement-API/IndividualSubscription.robot index 2b3ef1c62..ec23f9937 100644 --- a/SOL005/NSDManagement-API/IndividualSubscription.robot +++ b/SOL005/NSDManagement-API/IndividualSubscription.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/individualSubscription.txt Resource NSDManagementKeywords.robot Library OperatingSystem Library JSONLibrary diff --git a/SOL005/NSDManagement-API/NSD.robot b/SOL005/NSDManagement-API/NSD.robot index f91965cae..7e4041b76 100644 --- a/SOL005/NSDManagement-API/NSD.robot +++ b/SOL005/NSDManagement-API/NSD.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/nsDescriptors.txt # Specific nsDescriptors Parameters Resource NSDManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/NSDManagement-API/NSDArchiveContent.robot b/SOL005/NSDManagement-API/NSDArchiveContent.robot index 045c3f3af..dd887b574 100644 --- a/SOL005/NSDManagement-API/NSDArchiveContent.robot +++ b/SOL005/NSDManagement-API/NSDArchiveContent.robot @@ -2,7 +2,6 @@ Documentation This Clause defines the content of the individual NS descriptor, i.e. NSD content Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/nsDescriptors.txt # Specific nsDescriptors Parameters Resource NSDManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/NSDManagement-API/NSDArchiveManifest.robot b/SOL005/NSDManagement-API/NSDArchiveManifest.robot index 3980452b9..e28a30b3b 100644 --- a/SOL005/NSDManagement-API/NSDArchiveManifest.robot +++ b/SOL005/NSDManagement-API/NSDArchiveManifest.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/nsDescriptors.txt # Specific nsDescriptors Parameters Resource NSDManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 2b73948e7..35b37bc0e 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -1,8 +1,5 @@ *** Settings *** Resource environment/variables.txt -Resource environment/subscriptions.txt -Resource environment/nsDescriptors.txt # Specific nsDescriptors Parameters -Resource environment/pnfDescriptors.txt # Specific pnfDescriptors Parameters Resource environment/individualSubscription.txt Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library MockServerLibrary diff --git a/SOL005/NSDManagement-API/NSDescriptors.robot b/SOL005/NSDManagement-API/NSDescriptors.robot index f0460c39b..1e4c1086b 100644 --- a/SOL005/NSDManagement-API/NSDescriptors.robot +++ b/SOL005/NSDManagement-API/NSDescriptors.robot @@ -2,7 +2,6 @@ Documentation This Clause defines all the resources and methods provided by the NS descriptors interface. Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/nsDescriptors.txt # Specific nsDescriptors Parameters Resource NSDManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/NSDManagement-API/PNFD.robot b/SOL005/NSDManagement-API/PNFD.robot index c63bc467c..a6fb7b6c8 100644 --- a/SOL005/NSDManagement-API/PNFD.robot +++ b/SOL005/NSDManagement-API/PNFD.robot @@ -2,7 +2,6 @@ Documentation This Clause defines the content of the individual NS descriptor, i.e. PNFD content Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/pnfDescriptors.txt # Specific PNFDescriptors Parameters Resource NSDManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/NSDManagement-API/PNFDArchiveContent.robot b/SOL005/NSDManagement-API/PNFDArchiveContent.robot index 7a1697cc0..79392484a 100644 --- a/SOL005/NSDManagement-API/PNFDArchiveContent.robot +++ b/SOL005/NSDManagement-API/PNFDArchiveContent.robot @@ -2,7 +2,6 @@ Documentation This Clause defines the content of the individual NS descriptor, i.e. PNFD content Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/pnfDescriptors.txt # Specific PNFDescriptors Parameters Resource NSDManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/NSDManagement-API/PNFDArchiveManifest.robot b/SOL005/NSDManagement-API/PNFDArchiveManifest.robot index 7c3e330db..876c862c2 100644 --- a/SOL005/NSDManagement-API/PNFDArchiveManifest.robot +++ b/SOL005/NSDManagement-API/PNFDArchiveManifest.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/nsDescriptors.txt # Specific nsDescriptors Parameters Resource NSDManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/NSDManagement-API/PNFDescriptors.robot b/SOL005/NSDManagement-API/PNFDescriptors.robot index 6d6b84239..935f789be 100644 --- a/SOL005/NSDManagement-API/PNFDescriptors.robot +++ b/SOL005/NSDManagement-API/PNFDescriptors.robot @@ -2,7 +2,6 @@ Documentation This Clause defines all the resources and methods provided by the PNF descriptors interface. \ Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/pnfDescriptors.txt # Specific nsDescriptors Parameters Resource NSDManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/NSDManagement-API/Subscriptions.robot b/SOL005/NSDManagement-API/Subscriptions.robot index 1f1ae1249..bcff75e5a 100644 --- a/SOL005/NSDManagement-API/Subscriptions.robot +++ b/SOL005/NSDManagement-API/Subscriptions.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/subscriptions.txt Resource NSDManagementKeywords.robot Library OperatingSystem Library JSONLibrary diff --git a/SOL005/NSDManagement-API/environment/individualSubscription.txt b/SOL005/NSDManagement-API/environment/individualSubscription.txt deleted file mode 100644 index caf1c582e..000000000 --- a/SOL005/NSDManagement-API/environment/individualSubscription.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${subscriptionId} f3ae6df7-07e1-47c9-8924-9ebe10343586 -${erroneousSubscriptionId} 442e3ee5-0499-4849-9b31-eb91ce1638f1 # Not existing ID on the subscriptions -${newSubscriptionId} newSubsciptionId -${response} httpresponse -${origResponse} httpresponse diff --git a/SOL005/NSDManagement-API/environment/nsDescriptors.txt b/SOL005/NSDManagement-API/environment/nsDescriptors.txt deleted file mode 100644 index b16e19ee9..000000000 --- a/SOL005/NSDManagement-API/environment/nsDescriptors.txt +++ /dev/null @@ -1,34 +0,0 @@ -*** Variables *** -${POS_FIELDS} name=nsdOnboardingState -${NEG_FIELDS} wrongName=any_value -${nsdInfoId} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 -${nsdInfoIdPlain} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 -${nsdInfoIdZip} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 -${erroneous_nsdInfoId} erroneous_nsdInfoId -${disabledNsdInfoId} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 -${fields} _links -${NFVO_FIELDS} 1 -${Etag}= an etag -${modifiedNsdInfoId} f27200b1-1d8b-48c2-9d98-a993b8ab117f -${notOnboardedNsdInfoId} b992a851-08b1-45a8-9282-a5f7a7df04a6 -${ACCEPT_ZIP} application/zip -${ACCEPT_PLAIN} text/plain -${CONTENT_TYPE_ZIP} application/zip -${CONTENT_TYPE_PLAIN} text/plain -${NFVO_RANGE_OK} 1 -${range} bytes=0-1023 -${erroneousRange} bytes=100000-1000000 # Requesting a out of range number of bytes -${onboardingStateNsdInfoId} b992a851-08b1-45a8-9282-a5f7a7df04a6 -${contentZipFile} files/nsdContent.zip -${contentPlainFile} files/nsdContent.yaml -${creatingNsdInfoId} 71241932-994a-46e2-ad6c-1740674dda44 -${NEG_AUTHORIZATION} Bearer negativetoken -${BAD_AUTHORIZATION} Bear sometoken -${original_etag} 1234 -${wrong_etag} abcd -${usageState} state -${length} 1024 -${createdNsdInfoId} f27200b1-1d8b-48c2-9d98-a993b8ab117f -${NSD_NAME} nsdName=onBoardedNSD -${PNFD_NAME} pnfdName=onBoardedPNFD -${SEPERATOR} = \ No newline at end of file diff --git a/SOL005/NSDManagement-API/environment/pnfDescriptors.txt b/SOL005/NSDManagement-API/environment/pnfDescriptors.txt deleted file mode 100644 index c3bf1896b..000000000 --- a/SOL005/NSDManagement-API/environment/pnfDescriptors.txt +++ /dev/null @@ -1,15 +0,0 @@ -*** Variables *** -${POS_FIELDS} name=pnfdOnboardingState -${NEG_FIELDS} wrongName=any_value -${pnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 -${erroneous_pnfdInfoId} erroneous_pnfdInfoId -${enabledPnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 -${NFVO_FIELDS} 1 -${fields} _links -${ACCEPT_PLAIN} text/plain -${CONTENT_TYPE_PLAIN} text/plain -${erroneous_pnfdId} erroneousPnfdId -${onboardingStatePnfdId} 8ed2bf1f-f6ae-4d18-b478-bfab02fd4cd2 -${contentFilePnfd} files/pnfdContent.zip -${creatingPnfdId} 2e4ce0ef-3ea8-49f9-92dd-8771866015bb -${userDefinedDataSet} some \ No newline at end of file diff --git a/SOL005/NSDManagement-API/environment/subscriptions.txt b/SOL005/NSDManagement-API/environment/subscriptions.txt deleted file mode 100644 index 72c529236..000000000 --- a/SOL005/NSDManagement-API/environment/subscriptions.txt +++ /dev/null @@ -1,5 +0,0 @@ -*** Variables *** -${notifCallbackUri} http://172.22.1.7:9091/nsd/subscriptions -${filter_ok} callbackUri=${notifCallbackUri} -${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based -${SEPERATOR} = \ No newline at end of file diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index c76778b56..ad6a34beb 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -33,6 +33,60 @@ ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the F ${NFVO_ALLOWS_DUPLICATE_SUBS} 1 ${total_polling_time} 2 min ${polling_interval} 10 sec -${response} {} +${response} httpresponse ${retry} 5x -${interval} 5 sec \ No newline at end of file +${interval} 5 sec + + +${subscriptionId} f3ae6df7-07e1-47c9-8924-9ebe10343586 +${erroneousSubscriptionId} 442e3ee5-0499-4849-9b31-eb91ce1638f1 # Not existing ID on the subscriptions +${newSubscriptionId} newSubsciptionId +${origResponse} httpresponse + + +${POS_FIELDS} name=nsdOnboardingState +${NEG_FIELDS} wrongName=any_value +${nsdInfoId} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 +${nsdInfoIdPlain} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 +${nsdInfoIdZip} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 +${erroneous_nsdInfoId} erroneous_nsdInfoId +${disabledNsdInfoId} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 +${fields} _links +${NFVO_FIELDS} 1 +${Etag}= an etag +${modifiedNsdInfoId} f27200b1-1d8b-48c2-9d98-a993b8ab117f +${notOnboardedNsdInfoId} b992a851-08b1-45a8-9282-a5f7a7df04a6 +${ACCEPT_ZIP} application/zip +${ACCEPT_PLAIN} text/plain +${CONTENT_TYPE_ZIP} application/zip +${CONTENT_TYPE_PLAIN} text/plain +${NFVO_RANGE_OK} 1 +${range} bytes=0-1023 +${erroneousRange} bytes=100000-1000000 # Requesting a out of range number of bytes +${onboardingStateNsdInfoId} b992a851-08b1-45a8-9282-a5f7a7df04a6 +${contentZipFile} files/nsdContent.zip +${contentPlainFile} files/nsdContent.yaml +${creatingNsdInfoId} 71241932-994a-46e2-ad6c-1740674dda44 +${BAD_AUTHORIZATION} Bear sometoken +${original_etag} 1234 +${wrong_etag} abcd +${usageState} state +${length} 1024 +${createdNsdInfoId} f27200b1-1d8b-48c2-9d98-a993b8ab117f +${NSD_NAME} nsdName=onBoardedNSD +${PNFD_NAME} pnfdName=onBoardedPNFD +${SEPERATOR} = + + +${pnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 +${erroneous_pnfdInfoId} erroneous_pnfdInfoId +${enabledPnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 +${erroneous_pnfdId} erroneousPnfdId +${onboardingStatePnfdId} 8ed2bf1f-f6ae-4d18-b478-bfab02fd4cd2 +${contentFilePnfd} files/pnfdContent.zip +${creatingPnfdId} 2e4ce0ef-3ea8-49f9-92dd-8771866015bb +${userDefinedDataSet} some + +${notifCallbackUri} http://172.22.1.7:9091/nsd/subscriptions +${filter_ok} callbackUri=${notifCallbackUri} +${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based -- GitLab From 63d2ff08b1e8e11fb23db3d57d7afa26391fc889 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Tue, 3 Nov 2020 13:12:54 +0100 Subject: [PATCH 127/580] fix for issue #121 in SOL005-NSD-Performance --- .../IndividualPmJob.robot | 1 - .../IndividualReport.robot | 1 - .../IndividualThreshold.robot | 1 - .../NSPerformanceManagementKeywords.robot | 5 --- .../Notifications.robot | 1 - .../NSPerformanceManagement-API/PMJobs.robot | 1 - .../Thresholds.robot | 1 - .../environment/IndividualPmJob.txt | 6 ---- .../environment/individualThresholds.txt | 6 ---- .../environment/notifications.txt | 12 ------- .../environment/pmJobs.txt | 4 --- .../environment/reports.txt | 7 ----- .../environment/thresholds.txt | 4 --- .../environment/variables.txt | 31 ++++++++++++++++++- 14 files changed, 30 insertions(+), 51 deletions(-) delete mode 100644 SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt delete mode 100644 SOL005/NSPerformanceManagement-API/environment/individualThresholds.txt delete mode 100644 SOL005/NSPerformanceManagement-API/environment/notifications.txt delete mode 100644 SOL005/NSPerformanceManagement-API/environment/pmJobs.txt delete mode 100644 SOL005/NSPerformanceManagement-API/environment/reports.txt delete mode 100644 SOL005/NSPerformanceManagement-API/environment/thresholds.txt diff --git a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot index 3adb819eb..18afc44ca 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot @@ -2,7 +2,6 @@ Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Library JSONLibrary -Resource environment/IndividualPmJob.txt Resource NSPerformanceManagementKeywords.robot Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/NSPerformanceManagement-API/IndividualReport.robot b/SOL005/NSPerformanceManagement-API/IndividualReport.robot index 5d35b0025..c27242894 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualReport.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualReport.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/reports.txt Resource NSPerformanceManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false diff --git a/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot b/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot index 57458c1b0..9c19fbf18 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot @@ -6,7 +6,6 @@ Resource NSPerformanceManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library OperatingSystem -Resource environment/individualThresholds.txt *** Test Cases *** GET Individual Threshold diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index e22cffb96..3da49c3c0 100644 --- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot +++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot @@ -1,10 +1,5 @@ *** Settings *** Resource environment/variables.txt -Resource environment/pmJobs.txt -Resource environment/IndividualPmJob.txt -Resource environment/reports.txt -Resource environment/thresholds.txt -Resource environment/individualThresholds.txt Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library MockServerLibrary Library OperatingSystem diff --git a/SOL005/NSPerformanceManagement-API/Notifications.robot b/SOL005/NSPerformanceManagement-API/Notifications.robot index e05d5c696..18ab8e3f9 100644 --- a/SOL005/NSPerformanceManagement-API/Notifications.robot +++ b/SOL005/NSPerformanceManagement-API/Notifications.robot @@ -1,5 +1,4 @@ *** Setting *** -Resource environment/notifications.txt Resource environment/variables.txt Suite Setup Create Sessions Suite Teardown Terminate All Processes kill=true diff --git a/SOL005/NSPerformanceManagement-API/PMJobs.robot b/SOL005/NSPerformanceManagement-API/PMJobs.robot index 315b42b67..2d21210a7 100644 --- a/SOL005/NSPerformanceManagement-API/PMJobs.robot +++ b/SOL005/NSPerformanceManagement-API/PMJobs.robot @@ -4,7 +4,6 @@ Resource environment/variables.txt # Generic Parameters Resource NSPerformanceManagementKeywords.robot Library JSONLibrary Library OperatingSystem -Resource environment/pmJobs.txt Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library MockServerLibrary diff --git a/SOL005/NSPerformanceManagement-API/Thresholds.robot b/SOL005/NSPerformanceManagement-API/Thresholds.robot index 3c74956a8..cc1bc0fc4 100644 --- a/SOL005/NSPerformanceManagement-API/Thresholds.robot +++ b/SOL005/NSPerformanceManagement-API/Thresholds.robot @@ -5,7 +5,6 @@ Resource environment/variables.txt # Generic Parameters Resource NSPerformanceManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Resource environment/thresholds.txt Library OperatingSystem *** Test Cases *** diff --git a/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt b/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt deleted file mode 100644 index 99a00a748..000000000 --- a/SOL005/NSPerformanceManagement-API/environment/IndividualPmJob.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e -${erroneousPmJobId} erroneousPmJobId -${response}= httpresponse -${OrigResponse}= httpresponse -${newPmJobId} newPmJobId diff --git a/SOL005/NSPerformanceManagement-API/environment/individualThresholds.txt b/SOL005/NSPerformanceManagement-API/environment/individualThresholds.txt deleted file mode 100644 index 92faec2b7..000000000 --- a/SOL005/NSPerformanceManagement-API/environment/individualThresholds.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${thresholdId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${erroneousThresholdId} erroneousThresholdId -${newThresholdId} newThresholdId -${response}= httpresponse -${origResponse}= httpresponse diff --git a/SOL005/NSPerformanceManagement-API/environment/notifications.txt b/SOL005/NSPerformanceManagement-API/environment/notifications.txt deleted file mode 100644 index cd1193ae5..000000000 --- a/SOL005/NSPerformanceManagement-API/environment/notifications.txt +++ /dev/null @@ -1,12 +0,0 @@ -*** Variables *** -${callback_uri} http://localhost -${callback_port} 9091 -${callback_endpoint} /endpoint -${callback_endpoint_fwd} /endpoint/check -${callback_endpoint_error} /endpoint_404 -${sleep_interval} 20s -${total_polling_time} 2 min -${polling_interval} 10 sec - -${notification_request} [] -${notification_response} [] \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/environment/pmJobs.txt b/SOL005/NSPerformanceManagement-API/environment/pmJobs.txt deleted file mode 100644 index ee57a3091..000000000 --- a/SOL005/NSPerformanceManagement-API/environment/pmJobs.txt +++ /dev/null @@ -1,4 +0,0 @@ -*** Variables *** -${POS_FILTER} objectInstanceIds=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${NEG_FILTER} criteriaPmJob=erroneousAttributeName -${fields} criteria,objectInstanceIds diff --git a/SOL005/NSPerformanceManagement-API/environment/reports.txt b/SOL005/NSPerformanceManagement-API/environment/reports.txt deleted file mode 100644 index 6ac5f7c0b..000000000 --- a/SOL005/NSPerformanceManagement-API/environment/reports.txt +++ /dev/null @@ -1,7 +0,0 @@ -*** Variables *** -${pmJobId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 -${erroneousReportId} erroneousReportId -${newReportId} newReportId -${response}= httpresponse -${OrigResponse}= httpresponse diff --git a/SOL005/NSPerformanceManagement-API/environment/thresholds.txt b/SOL005/NSPerformanceManagement-API/environment/thresholds.txt deleted file mode 100644 index 587560f0d..000000000 --- a/SOL005/NSPerformanceManagement-API/environment/thresholds.txt +++ /dev/null @@ -1,4 +0,0 @@ -*** Variables *** -${FILTER_OK_Threshold} objectInstanceId=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${FILTER_KO} criterias=erroneousFilter -${SEPERATOR} = \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/environment/variables.txt b/SOL005/NSPerformanceManagement-API/environment/variables.txt index db2e7c3e5..932a511d1 100644 --- a/SOL005/NSPerformanceManagement-API/environment/variables.txt +++ b/SOL005/NSPerformanceManagement-API/environment/variables.txt @@ -34,4 +34,33 @@ ${collectionPeriod} 10 ${reportingPeriod} 30 ${response} {} -${CONTENT_TYPE_PATCH} application/merge-patch+json \ No newline at end of file +${CONTENT_TYPE_PATCH} application/merge-patch+json + +${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e +${erroneousPmJobId} erroneousPmJobId +${newPmJobId} newPmJobId + +${thresholdId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${erroneousThresholdId} erroneousThresholdId +${newThresholdId} newThresholdId +${origResponse}= httpresponse + +${callback_endpoint_fwd} /endpoint/check + +${notification_request} [] +${notification_response} [] + + +${POS_FILTER} objectInstanceIds=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${NEG_FILTER} criteriaPmJob=erroneousAttributeName +${fields} criteria,objectInstanceIds + + +${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 +${erroneousReportId} erroneousReportId +${newReportId} newReportId + + +${FILTER_OK_Threshold} objectInstanceId=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${FILTER_KO} criterias=erroneousFilter +${SEPERATOR} = -- GitLab From 8bc1c4639e5d1927fa87334e9a077980d09198fd Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Tue, 3 Nov 2020 15:06:12 +0100 Subject: [PATCH 128/580] fixed missing robot requirement --- SOL005/NSDManagement-API/NSDManagementKeywords.robot | 1 - requirements.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 35b37bc0e..c5a26d96a 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -1,6 +1,5 @@ *** Settings *** Resource environment/variables.txt -Resource environment/individualSubscription.txt Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library MockServerLibrary Library OperatingSystem diff --git a/requirements.txt b/requirements.txt index 7ec119049..f6c9c6d5d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,4 +9,4 @@ robotframework-dependencylibrary==1.0.0.post1 robotframework-jsonlibrary==0.3 robotframework-jsonschemalibrary==1.0 robotframework-mockserver==0.0.4 - +robotframework-requests==0.7.1 -- GitLab From 3e9eaa62ee03834ede88e57e14635c05f5ce93ac Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 4 Nov 2020 18:15:26 +0500 Subject: [PATCH 129/580] deltas for 2.7.1 SOL005 VNF PKGM added --- ...essConfigurationForExternalArtifacts.robot | 109 ++++++ .../IndividualVNFPackageArtifacts.robot | 144 ++++++++ .../ManifestInIndividualVNFPackage.robot | 107 ++++++ .../VNFDInIndividualVNFPackage.robot | 69 +--- .../VNFPackageArtifacts.robot | 344 ++++++++++-------- .../VNFPackageManagementKeywords.robot | 246 +++++++++++-- .../environment/variables.txt | 6 +- .../jsons/ExternalArtifactsAccessConfig.json | 6 + .../ExternalArtifactsAccessConfig.json | 65 ++++ 9 files changed, 866 insertions(+), 230 deletions(-) create mode 100644 SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot create mode 100644 SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot create mode 100644 SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot create mode 100644 SOL005/VNFPackageManagement-API/jsons/ExternalArtifactsAccessConfig.json create mode 100644 SOL005/VNFPackageManagement-API/schemas/ExternalArtifactsAccessConfig.json diff --git a/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot b/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot new file mode 100644 index 000000000..0637fe22a --- /dev/null +++ b/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot @@ -0,0 +1,109 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false + +*** Test Cases *** +Get Access configuration for external artifacts + [Documentation] Test ID: 5.3.5.10.1 + ... Test title: Get Access configuration for external artifacts + ... Test objective: The objective is to test the GET method reads the access configuration information that is used by the NFVO to get the content of external VNF package artifacts and perform a JSON schema and content validation of the collected data structure + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get access configuration information for external artifacts + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ExternalArtifactsAccessConfig + +Get Access configuration for external artifacts - Not Found + [Documentation] Test ID: 5.3.5.10.2 + ... Test title: Get Access configuration for external artifacts - Not Found + ... Test objective: The objective is to test that the retrieval of access configuration information that is used by the NFVO to get the content of external VNF package artifacts fails because resource is not present. + ... Pre-conditions: none + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get access configuration information for external artifacts + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Access configuration for external artifacts + [Documentation] Test ID: 5.3.5.10.3 + ... Test title: Access configuration for external artifacts + ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. + ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Check Postcondition individual VNF Package is created + Send PUT Request to access configuration information for external artifacts + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ExternalArtifactsAccessConfig + +PUT Access configuration for external artifacts - Downloading + [Documentation] Test ID: 5.3.5.10.4 + ... Test title: Access configuration for external artifacts - Downloading + ... Test objective: The objective is to test that VNF package has been uploaded successfully previously, to indicate that the access configuration information has been stored successfully by the NFVO and the NFVO now starts downloading external artifacts. + ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Check Postcondition individual VNF Package is created + Send PUT Request to access configuration information for external artifacts + Check HTTP Response Status Code Is 202 + +PUT Access configuration for external artifacts - Conflict + [Documentation] Test ID: 5.3.5.10.5 + ... Test title: Access configuration for external artifacts + ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. + ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute is neither "CREATED" nor "ERROR" + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request to access configuration information for external artifacts + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Access configuration for external artifacts - Method not implemented + [Documentation] Test ID: 5.3.5.10.6 + ... Test title: POST Access configuration for external artifacts - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create access configuration for external artifacts + ... Pre-conditions: none + ... Reference: Clause 9.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for access configuration for external artifacts + Check HTTP Response Status Code Is 405 + +PATCH Access configuration for external artifacts - Method not implemented + [Documentation] Test ID: 5.3.5.10.7 + ... Test title: PATCH Access configuration for external artifacts - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update access configuration for external artifacts + ... Pre-conditions: none + ... Reference: Clause 9.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for access configuration for external artifacts + Check HTTP Response Status Code Is 405 + +DELETE Access configuration for external artifacts - Method not implemented + [Documentation] Test ID: 5.3.5.10.8 + ... Test title: DELETE Access configuration for external artifacts - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete access configuration for external artifacts + ... Pre-conditions: none + ... Reference: Clause 9.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for Access configuration for external artifacts + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot new file mode 100644 index 000000000..09b951e99 --- /dev/null +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot @@ -0,0 +1,144 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false + +*** Test Cases *** +GET Individual VNF Package Artifact + [Documentation] Test ID: 5.3.5.6.1 + ... Test title: GET Individual VNF Package Artifact + ... Test objective: The objective is to test the retrieval of an individual VNF package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Package Artifact + Check HTTP Response Status Code Is 200 + +GET Individual VNF Package Artifact in octet stream format + [Documentation] Test ID: 5.3.5.6.2 + ... Test title: GET Individual VNF Package Artifact in octet stream format + ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO cannot determine the content type of the artifact + ... Post-Conditions: none + GET Individual VNF Package Artifact in octet stream format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/octet-stream + +GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests + [Documentation] Test ID: 5.3.5.6.3 + ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests + ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + GET Individual VNF Package Artifact with Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Response Header Content-Range Is Present and Matches the requested range + Check HTTP Response Header Content-Length Is Present and Matches the requested range length + +GET Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests + [Documentation] Test ID: 5.3.5.6.4 + ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests + ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + GET Individual VNF Package Artifact with Range Request + Check HTTP Response Status Code Is 200 + +GET Individual VNF Package Artifact with invalid Range Request + [Documentation] Test ID: 5.3.5.6.5 + ... Test title: GET Individual VNF Package Artifact with invalid Range Request + ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using a range request that does not match any available byte range in the file. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + GET Individual VNF Package Artifact with invalid Range Request + Check HTTP Response Status Code Is 416 + +GET Individual VNF Package Artifact with invalid resource identifier + [Documentation] Test ID: 5.3.5.6.6 + ... Test title: GET Individual VNF Package Artifact with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using an invalid resource identifier + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Package Artifact with invalid resource identifier + Check HTTP Response Status Code Is 404 + +GET Individual VNF Package Artifact with conflict due to onboarding state + [Documentation] Test ID: 5.3.5.6.7 + ... Test title: GET Individual VNF Package Artifact with conflict due to onboarding state + ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Artifact for VNF Package in onboarding state different from ONBOARDED + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Individual VNF Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.5.6.8 + ... Test title: POST Individual VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact + ... Pre-conditions: none + ... Reference: Clause 9.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for individual VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PUT Individual VNF Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.5.6.9 + ... Test title: PUT Individual VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for individual VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PATCH Individual VNF Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.5.6.10 + ... Test title: PATCH Individual VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for individual VNF Package Artifact + Check HTTP Response Status Code Is 405 + +DELETE Individual VNF Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.5.6.11 + ... Test title: DELETE Individual VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation + Send DELETE Request for individual VNF Package Artifact + Check HTTP Response Status Code Is 405 + Check Postcondition VNF Package Artifact Exist \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot new file mode 100644 index 000000000..0b6441057 --- /dev/null +++ b/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot @@ -0,0 +1,107 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false + +*** Test Cases *** +Get Manifest in Individual VNF Package + [Documentation] Test ID: 5.3.5.11.1 + ... Test title: Get Manifest in Individual VNF Package + ... Test objective: The objective is to test that content of manifest within a NVF Package is read successfully. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package in plainFormat + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get Manifest in Individual VNF Package with security information + [Documentation] Test ID: 5.3.5.11.2 + ... Test title: Get Manifest in Individual VNF Package with security information + ... Test objective: The objective is to test the retrieval of the Manifest in individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get Manifest in Individual VNF Package - Not Acceptable + [Documentation] Test ID: 5.3.5.11.3 + ... Test title: Get Manifest in Individual VNF Package - Not Acceptable + ... Test objective: The objective is to test that the "Accept" header is not compatible with Content type "application/zip" but "incude_signature" is provided.\ + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package with unacceptable request + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get Manifest in Individual VNF Package - Conflict + [Documentation] Test ID: 5.3.5.11.4 + ... Test title: Get Manifest in Individual VNF Package - Conflict + ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the resource. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package in plainFormat + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 5.3.5.11.5 + ... Test title: POST Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create new Manifest + ... Pre-conditions: none + ... Reference: Clause 9.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + +PUT Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 5.3.5.11.6 + ... Test title: PUT Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify a Manifest + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + +PATCH Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 5.3.5.11.7 + ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update a Manifest + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + +DELETE Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 5.3.5.11.8 + ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete a Manifest + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index 79778b325..90829b3f6 100644 --- a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -6,19 +6,6 @@ Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false *** Test Cases *** -Get single file VNFD in Individual VNF Package in Plain Format - [Documentation] Test ID: 5.3.5.3.1 - ... Test title: Get single file VNFD in Individual VNF Package in Plain Format - ... Test objective: The objective is to test the retrieval of the VNFD in plain format for an individual VNF package and perform a validation that returned content is in plain format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The VNFD is implemented as a single file - ... Post-Conditions: none - Get single file VNFD in Individual VNF Package in Plain Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is text/plain - Get VNFD in Individual VNF Package in Zip Format [Documentation] Test ID: 5.3.5.3.2 ... Test title: Get VNFD in Individual VNF Package in Zip Format @@ -32,45 +19,6 @@ Get VNFD in Individual VNF Package in Zip Format Check HTTP Response Status Code Is 200 Check HTTP Response Header Content-Type Is application/zip -Get single file VNFD in Individual VNF Package in Plain or Zip Format - [Documentation] Test ID: 5.3.5.3.3 - ... Test title: Get single file VNFD in Individual VNF Package in Plain or Zip Format - ... Test objective: The objective is to test the retrieval of the single file VNFD for an individual VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Plain or Zip format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The VNFD is implemented as a single file - ... Post-Conditions: none - Get single file VNFD in Individual VNF Package in Plain or Zip Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is Any of text/plain application/zip - -Get multi file VNFD in Individual VNF Package in Plain or Zip Format - [Documentation] Test ID: 5.3.5.3.4 - ... Test title: Get multi file VNFD in Individual VNF Package in Plain or Zip Format - ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The VNFD is implemented as a multi file - ... Post-Conditions: none - Get multi file VNFD in Individual VNF Package in Plain or Zip Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get multi file VNFD in Individual VNF Package in Plain Format - [Documentation] Test ID: 5.3.5.3.5 - ... Test title: Get multi file VNFD in Individual VNF Package in Plain Format - ... Test objective: The objective is to test that the retrieval of the multi file VNFD for an individual VNF package fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The VNFD is implemented as a multi file - ... Post-Conditions: none - Get multi file VNFD in Individual VNF Package in Plain Format - Check HTTP Response Status Code Is 406 - Check HTTP Response Body Json Schema Is ProblemDetails - Get VNFD in Individual VNF Package with invalid resource identifier [Documentation] Test ID: 5.3.5.3.6 ... Test title: Get VNFD in Individual VNF Package with invalid resource identifier @@ -82,6 +30,7 @@ Get VNFD in Individual VNF Package with invalid resource identifier ... Post-Conditions: none Get VNFD in Individual VNF Package with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails Get VNFD in Individual VNF Package with conflict due to onboarding state [Documentation] Test ID: 5.3.5.3.7 @@ -140,7 +89,19 @@ DELETE VNFD in Individual VNF Package - Method not implemented ... Reference: Clause 9.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNFD is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for VNFD in individual VNF Package Check HTTP Response Status Code Is 405 - Check Postcondition VNFD Exist \ No newline at end of file + +Get VNFD in Individual VNF Package with security information + [Documentation] Test ID: 5.3.5.3.12 + ... Test title: Get VNFD in Individual VNF Package with security information + ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get VNFD in Individual VNF Package with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot index 09b951e99..4a49bf0bc 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -1,144 +1,200 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Resource VNFPackageManagementKeywords.robot -Library JSONLibrary -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false - -*** Test Cases *** -GET Individual VNF Package Artifact - [Documentation] Test ID: 5.3.5.6.1 - ... Test title: GET Individual VNF Package Artifact - ... Test objective: The objective is to test the retrieval of an individual VNF package artifact - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - GET Individual VNF Package Artifact - Check HTTP Response Status Code Is 200 - -GET Individual VNF Package Artifact in octet stream format - [Documentation] Test ID: 5.3.5.6.2 - ... Test title: GET Individual VNF Package Artifact in octet stream format - ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO cannot determine the content type of the artifact - ... Post-Conditions: none - GET Individual VNF Package Artifact in octet stream format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/octet-stream - -GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests - [Documentation] Test ID: 5.3.5.6.3 - ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests - ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact - ... Post-Conditions: none - GET Individual VNF Package Artifact with Range Request - Check HTTP Response Status Code Is 206 - Check HTTP Response Header Content-Range Is Present and Matches the requested range - Check HTTP Response Header Content-Length Is Present and Matches the requested range length - -GET Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests - [Documentation] Test ID: 5.3.5.6.4 - ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests - ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact. - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact - ... Post-Conditions: none - GET Individual VNF Package Artifact with Range Request - Check HTTP Response Status Code Is 200 - -GET Individual VNF Package Artifact with invalid Range Request - [Documentation] Test ID: 5.3.5.6.5 - ... Test title: GET Individual VNF Package Artifact with invalid Range Request - ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using a range request that does not match any available byte range in the file. - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact - ... Post-Conditions: none - GET Individual VNF Package Artifact with invalid Range Request - Check HTTP Response Status Code Is 416 - -GET Individual VNF Package Artifact with invalid resource identifier - [Documentation] Test ID: 5.3.5.6.6 - ... Test title: GET Individual VNF Package Artifact with invalid resource identifier - ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using an invalid resource identifier - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - GET Individual VNF Package Artifact with invalid resource identifier - Check HTTP Response Status Code Is 404 - -GET Individual VNF Package Artifact with conflict due to onboarding state - [Documentation] Test ID: 5.3.5.6.7 - ... Test title: GET Individual VNF Package Artifact with conflict due to onboarding state - ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - GET Artifact for VNF Package in onboarding state different from ONBOARDED - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -POST Individual VNF Package Artifact - Method not implemented - [Documentation] Test ID: 5.3.5.6.8 - ... Test title: POST Individual VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact - ... Pre-conditions: none - ... Reference: Clause 9.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send POST Request for individual VNF Package Artifact - Check HTTP Response Status Code Is 405 - -PUT Individual VNF Package Artifact - Method not implemented - [Documentation] Test ID: 5.3.5.6.9 - ... Test title: PUT Individual VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PUT Request for individual VNF Package Artifact - Check HTTP Response Status Code Is 405 - -PATCH Individual VNF Package Artifact - Method not implemented - [Documentation] Test ID: 5.3.5.6.10 - ... Test title: PATCH Individual VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PATCH Request for individual VNF Package Artifact - Check HTTP Response Status Code Is 405 - -DELETE Individual VNF Package Artifact - Method not implemented - [Documentation] Test ID: 5.3.5.6.11 - ... Test title: DELETE Individual VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation - Send DELETE Request for individual VNF Package Artifact - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Artifact Exist \ No newline at end of file +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot +Library JSONLibrary +Library OperatingSystem +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false + +*** Test Cases *** +Get VNF Package Artifact + [Documentation] Test ID: 5.3.5.12.1 + ... Test title: Get VNF Package Artifact + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter + [Documentation] Test ID: 5.3.5.12.2 + ... Test title: Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_mano_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter + [Documentation] Test ID: 5.3.5.12.3 + ... Test title: Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_non_mano_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter + [Documentation] Test ID: 5.3.5.12.4 + ... Test title: Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with select_non_mano_artifact_sets parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "include_signatures" parameter + [Documentation] Test ID: 5.3.5.12.5 + ... Test title: Get VNF Package Artifact with "include_signatures" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with include_signatures parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with Range Request and NFVO supporting Range Requests + [Documentation] Test ID: 5.3.5.12.6 + ... Test title: Get VNF Package Artifact with Range Request and NFVO supporting Range Requests + ... Test objective: The objective is to test the GET request read the whole content of the archive containing the artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + Get Artifact in VNF Package with Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Response Header Content-Range Is Present and Matches the requested range + Check HTTP Response Header Content-Length Is Present and Matches the requested range length + +Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" + [Documentation] Test ID: 5.3.5.12.7 + ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifacts" + [Documentation] Test ID: 5.3.5.12.8 + ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get VNF Package Artifact with invalid URI parameters undifend select_non_mano_artifact_sets + [Documentation] Test ID: 5.3.5.12.9 + ... Test title: Get VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with select_non_mano_artifact_sets parameter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get VNF Package Artifact with conflict due to onboarding state + [Documentation] Test ID: 5.3.5.12.10 + ... Test title: Get VNF Package Artifact with conflict due to onboarding state + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Artifact of VNF Package in onboarding state different from ONBOARDED + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET VNF Package Artifact with invalid Range Request + [Documentation] Test ID: 5.3.5.12.11 + ... Test title: GET VNF Package Artifact with invalid Range Request + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when using a range request that does not match any available byte range in the file. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + GET VNF Package Artifact with invalid Range Request + Check HTTP Response Status Code Is 416 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST VNF Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.5.12.12 + ... Test title: POST VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact + ... Pre-conditions: none + ... Reference: Clause 9.4.5a.3.1 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PUT VNF Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.5.12.13 + ... Test title: PUT VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.3 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PATCH VNF Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.5.12.14 + ... Test title: PATCH VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.4 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + +DELETE VNF Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.5.12.15 + ... Test title: DELETE VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 16217594e..2306e97ca 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -312,14 +312,6 @@ Send DELETE Request for Individual VNF Package used for instantiated VNF instanc Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${instantiatedVnfPackageId} ${output}= Output response - Set Suite Variable ${response} ${output} - -Get single file VNFD in Individual VNF Package in Plain Format - Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd - ${output}= Output response Set Suite Variable ${response} ${output} Get VNFD in Individual VNF Package in Zip Format @@ -329,22 +321,12 @@ Get VNFD in Individual VNF Package in Zip Format GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} - -Get single file VNFD in Individual VNF Package in Plain or Zip Format - Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd - ${output}= Output response - Set Suite Variable ${response} ${output} -Get multi file VNFD in Individual VNF Package in Plain or Zip Format +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_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -410,15 +392,6 @@ Send DELETE Request for VNFD in individual VNF Package ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition VNFD Exist - Log Checking that vnf pacakge still exists - Set Headers {"Accept": "${ACCEPT_PLAIN}, ${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 200 - GET Individual VNF Package Content Log Trying to get a VNF Package Content Set Headers {"Accept": "${ACCEPT_ZIP}"} @@ -901,7 +874,6 @@ Check HTTP Response Status Code Is Should Be Equal As Strings ${response['status']} ${expected_status} Log Status code validated - Check HTTP Response Body Json Schema Is [Arguments] ${input} Should Contain ${response['headers']['Content-Type']} application/json @@ -909,7 +881,6 @@ Check HTTP Response Body Json Schema Is Validate Json ${schema} ${response['body']} Log Json Schema Validation OK - Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter Log Check Response includes VNF Package Management according to filter @{words} = Split String ${filter_ok} ,${SEPERATOR} @@ -947,3 +918,216 @@ Check HTTP Response Header Contains Check LINK in Header ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} + +Get access configuration information for external artifacts + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition individual VNF Package is created + GET Individual VNF Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is vnfPkgInfo + Should Be True '${response['body']['id']}' =='CREATED' or '${response['body']['id']}'=='ERROR' + +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}/${apiVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/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}/${apiVersion}/vnf_packages/${vnfPkgId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/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}/${apiVersion}/vnf_packages/${vnfPkgId}/manifest/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPkgId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPkgId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPkgId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPkgId}/manifest + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Artifact in VNF Package with select_non_mano_artifact_sets parameter + Log Trying to get Artifact in VNF Package with security certificates + 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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/select_non_mano_artifact_sets=${non_mano_artifact_sets} + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Artifact in VNF Package with Range Request + Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it + 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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets + 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}/${apiVersion}/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} + +Get Artifact in VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts + 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}/${apiVersion}/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}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET VNF Package Artifact with invalid Range Request + Log Trying to get a range of bytes of the limit of the VNF Package + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Range": "${erroneousRange}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + +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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 85aaa867c..ceae81c7d 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -9,7 +9,7 @@ ${ACCEPT_JSON} application/json ${apiRoot} / ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken -${apiVersion} v1 +${apiVersion} v2 ${apiName} vnfpkgm ${FIELD_USAGE} 1 ${NFVO_PLAIN} 1 @@ -80,3 +80,7 @@ ${VAR_SEPERATOR} & ${vnfPkgViaUriId} 788106a2-d692-44f3-a86d-384f0ce35e42 ${creatingVnfPkgViaUriId} d246ccdd-71aa-402f-b256-6a80ee54be3d +${vnfPkgUri} http://localhost/content.zip + +${NFVO_non-MANO_OK} 1 # If 1 means that non-MANO artifacts are supported by the NFVO +${non_mano_artifact_sets} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/jsons/ExternalArtifactsAccessConfig.json b/SOL005/VNFPackageManagement-API/jsons/ExternalArtifactsAccessConfig.json new file mode 100644 index 000000000..987555643 --- /dev/null +++ b/SOL005/VNFPackageManagement-API/jsons/ExternalArtifactsAccessConfig.json @@ -0,0 +1,6 @@ +{ + "artifact": + { + "artifactUri":"127.0.0.1" + } +} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/schemas/ExternalArtifactsAccessConfig.json b/SOL005/VNFPackageManagement-API/schemas/ExternalArtifactsAccessConfig.json new file mode 100644 index 000000000..a9b43cf0b --- /dev/null +++ b/SOL005/VNFPackageManagement-API/schemas/ExternalArtifactsAccessConfig.json @@ -0,0 +1,65 @@ +{ + "description": "This type represents the access configuration information for downloading external VNF package artifacts. The NFVO can obtain the external VNF package artifact file through the information provided in this structure, together with information provided in the manifest / VNFD. The data structure shall comply with the provisions defined in Table 9.5.2.10-1. If the data structure is part of a response body, security-sensitive attributes shall be excluded as specified in Table 9.5.2.10-1.\n", + "type": "object", + "properties": { + "artifact": { + "description": "Access configuration information for an external artefact.\n", + "type": "object", + "required": [ + "artifactUri" + ], + "properties": { + "artifactUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "overrideUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "authType": { + "description": "Defines the type of authentication / authorization for downloading the VNF package. Permitted values: - BASIC: Only the \"username\" and \"password\" attributes shall be present. - OAUTH2_CLIENT_CREDENTIAL S: Only the \"paramsOauth2ClientCredentials\" attribute shall be present. This attribute shall not be present if no credentials are provided for the artifact.\n", + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS" + ] + }, + "username": { + "description": "User name to be used for authentication.\n", + "type": "string" + }, + "password": { + "description": "Password to be used for authentication. Shall not be present in response bodies.\n", + "type": "string" + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS.\n", + "type": "object", + "required": [ + "clientId", + "clientPassword", + "tokenEndpoint" + ], + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall not be present in response bodies.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + } + } + } + } + } + } + } \ No newline at end of file -- GitLab From 25df0c3eb5c9cbf3d32bab170459345e89b27d99 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 4 Nov 2020 18:21:39 +0500 Subject: [PATCH 130/580] majorAPIVersion added --- .../VNFPackageManagement-API/ApiVersion.robot | 10 +- .../VNFPackageManagementKeywords.robot | 220 +++++++++--------- .../environment/variables.txt | 2 +- 3 files changed, 116 insertions(+), 116 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/ApiVersion.robot b/SOL005/VNFPackageManagement-API/ApiVersion.robot index 942147599..1af96ffc1 100644 --- a/SOL005/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL005/VNFPackageManagement-API/ApiVersion.robot @@ -168,35 +168,35 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 2306e97ca..33ac744e2 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -15,7 +15,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}/${apiVersion}/vnf_packages + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -47,7 +47,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}/${apiVersion}/vnf_packages?${POS_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -62,7 +62,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}/${apiVersion}/vnf_packages?${NEG_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -72,7 +72,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}/${apiVersion}/vnf_packages + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -81,7 +81,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}/${apiVersion}/vnf_packages + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -89,7 +89,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}/${apiVersion}/vnf_packages?all_fields + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -110,7 +110,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}/${apiVersion}/vnf_packages?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -129,7 +129,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}/${apiVersion}/vnf_packages?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -148,7 +148,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}/${apiVersion}/vnf_packages?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -166,7 +166,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}/${apiVersion}/vnf_packages/${erroneousVnfPkgId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -176,7 +176,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}/${apiVersion}/vnf_packages ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -184,7 +184,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}/${apiVersion}/vnf_packages/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -194,7 +194,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}/${apiVersion}/vnf_packages + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -202,7 +202,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}/${apiVersion}/vnf_packages + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -210,7 +210,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}/${apiVersion}/vnf_packages + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -222,7 +222,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}/${apiVersion}/vnf_packages/${vnfPackageId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -235,7 +235,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}/${apiVersion}/vnf_packages/${erroneousVnfPackageId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -243,7 +243,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}/${apiVersion}/vnf_packages/${vnfPackageId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -251,7 +251,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}/${apiVersion}/vnf_packages/${vnfPackageId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -261,7 +261,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}/${apiVersion}/vnf_packages/${vnfPackageId} ${body} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -276,7 +276,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}/${apiVersion}/vnf_packages/${vnfPackageId} ${body} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -284,21 +284,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}/${apiVersion}/vnf_packages/${disabledVnfPackageId} + 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}/${apiVersion}/vnf_packages/${disabledVnfPackageId} + 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}/${apiVersion}/vnf_packages/${vnfPackageId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -310,7 +310,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}/${apiVersion}/vnf_packages/${instantiatedVnfPackageId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${instantiatedVnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -318,7 +318,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}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -326,7 +326,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}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -338,7 +338,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}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -347,7 +347,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}/${apiVersion}/vnf_packages/${erroneousVnfPkgId}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -356,7 +356,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}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/vnfd + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -364,7 +364,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}/${apiVersion}/vnf_packages/${vnfPackageId}/vnfd + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -372,7 +372,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}/${apiVersion}/vnf_packages/${vnfPackageId}/vnfd + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -380,7 +380,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}/${apiVersion}/vnf_packages/${vnfPackageId}/vnfd + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -388,7 +388,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}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -396,7 +396,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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -410,7 +410,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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -432,7 +432,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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -440,7 +440,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}/${apiVersion}/vnf_packages/${erroneousVnfPkgId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -448,7 +448,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}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/package_content + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -456,7 +456,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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -464,7 +464,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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -472,7 +472,7 @@ Send PUT Request to upload VNF Package Content Log Trying to perform a PUT. This method upload the content of a NSD Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False ${body}= Get Binary File files/hackfest_gateway_vnfd-1.0.tar.gz - ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${newVnfPackageId}/package_content data=${body} + ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${newVnfPackageId}/package_content data=${body} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} Set Suite Variable ${response} ${response} @@ -482,14 +482,14 @@ 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}/${apiVersion}/vnf_packages/${newVnfPackageId}/package_content + 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 Log Trying to perform a PUT. This method upload the content of a NSD Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False ${body}= Get Binary File files/hackfest_gateway_vnfd-1.0.tar.gz - ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${creatingVnfPackageId}/package_content data=${body} + ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${creatingVnfPackageId}/package_content data=${body} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} Set Suite Variable ${response} ${response} @@ -498,7 +498,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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -506,7 +506,7 @@ 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}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -518,14 +518,14 @@ Check Postcondition VNF Package Content Exist 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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + 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}/${apiVersion}/vnf_packages/${vnfPackageOctetStreamId}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageOctetStreamId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -534,7 +534,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -544,21 +544,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + 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}/${apiVersion}/vnf_packages/${erroneousVnfPkgId}/artifacts/${artifactPath} + 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}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -566,7 +566,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -574,7 +574,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -582,7 +582,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -590,7 +590,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -598,7 +598,7 @@ Check Postcondition VNF Package Artifact Exist Log Checking that vnf pacakge still exists Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -609,7 +609,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}/${apiVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -619,7 +619,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}/${apiVersion}/vnf_packages/${creatingVnfPkgViaUriId}/package_content/upload_from_uri ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${creatingVnfPkgViaUriId}/package_content/upload_from_uri ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -627,7 +627,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}/${apiVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${output}= Output response Set Suite Variable ${response} ${output} @@ -635,7 +635,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}/${apiVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${output}= Output response Set Suite Variable ${response} ${output} @@ -643,7 +643,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}/${apiVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${output}= Output response Set Suite Variable ${response} ${output} @@ -651,7 +651,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}/${apiVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${output}= Output response Set Suite Variable ${response} ${output} @@ -659,14 +659,14 @@ Check Postcondition VNF Package Content from URI Exist Log Checking that vnf pacakge still exists Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgViaUriId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId} Integer response status 200 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}/${apiVersion}/subscriptions + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -674,7 +674,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}/${apiVersion}/subscriptions?${filter_ok} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} @@ -682,7 +682,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}/${apiVersion}/subscriptions?${filter_ko} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} @@ -690,7 +690,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}/${apiVersion}/subscription + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -701,7 +701,7 @@ Send Post Request for VNF Package Subscription ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 @@ -714,7 +714,7 @@ Send Post Request for Duplicated VNF Package Subscription ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -722,7 +722,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}/${apiVersion}/subscriptions + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -730,7 +730,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}/${apiVersion}/subscriptions + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -738,7 +738,7 @@ 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}/${apiVersion}/subscriptions + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -761,7 +761,7 @@ 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}/${apiVersion}/subscriptions/${response['body']['id']} + ... GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} Run Keyword If ${location} == Location ... GET ${response['headers']['Location']} ${output}= Output response @@ -789,7 +789,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}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -797,7 +797,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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -805,7 +805,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}/${apiVersion}/subscriptions/${subscriptionId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -818,31 +818,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}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + 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}/${apiVersion}/subscriptions/${newSubscriptionId} + 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}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + 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}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -858,7 +858,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}/${apiVersion}/subscriptions/${newSubscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 404 @@ -921,7 +921,7 @@ Check LINK in Header Get access configuration information for external artifacts Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${output}= Output response Set Suite Variable ${response} ${output} @@ -929,7 +929,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}/${apiVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${body} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -943,7 +943,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}/${apiVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${output}= Output response Set Suite Variable ${response} ${output} @@ -951,7 +951,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}/${apiVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${output}= Output response Set Suite Variable ${response} ${output} @@ -959,14 +959,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}/${apiVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access + 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}/${apiVersion}/vnf_packages/${vnfPkgId}/manifest + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -974,14 +974,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}/${apiVersion}/vnf_packages/${vnfPkgId}/manifest/include_signatures + 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}/${apiVersion}/vnf_packages/${vnfPkgId}/manifest/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -989,7 +989,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}/${apiVersion}/vnf_packages/${vnfPkgId}/manifest + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -997,7 +997,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}/${apiVersion}/vnf_packages/${vnfPkgId}/manifest + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1005,7 +1005,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}/${apiVersion}/vnf_packages/${vnfPkgId}/manifest + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1013,7 +1013,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}/${apiVersion}/vnf_packages/${vnfPkgId}/manifest + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1021,7 +1021,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1029,7 +1029,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1037,7 +1037,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1046,7 +1046,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/select_non_mano_artifact_sets=${non_mano_artifact_sets} + 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} @@ -1054,7 +1054,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/include_signatures + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1063,7 +1063,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1071,7 +1071,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&select_non_mano_artifact_sets=${non_mano_artifact_sets} + 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} @@ -1079,14 +1079,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&exclude_all_non_mano_artifacts + 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}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1096,7 +1096,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1104,7 +1104,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1112,7 +1112,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1120,7 +1120,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1128,6 +1128,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}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index ceae81c7d..d24c5f559 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -9,7 +9,7 @@ ${ACCEPT_JSON} application/json ${apiRoot} / ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION} Bearer negativetoken -${apiVersion} v2 +${apiMajorVersion} v2 ${apiName} vnfpkgm ${FIELD_USAGE} 1 ${NFVO_PLAIN} 1 -- GitLab From 18d1aadcbf0c3e64295e8b5a5f0fc80546615cb9 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 4 Nov 2020 18:32:49 +0500 Subject: [PATCH 131/580] bugs fix added --- .../IndividualSubscription.robot | 1 + .../IndividualVNFPackage.robot | 5 ++- .../IndividualVNFPackageArtifacts.robot | 6 ++-- .../Subscriptions.robot | 11 +++---- .../VNFPackageContent.robot | 4 +-- .../VNFPackageContentViaURI.robot | 6 ++-- .../VNFPackageManagementKeywords.robot | 33 ++----------------- .../VNFPackages.robot | 6 ++-- 8 files changed, 19 insertions(+), 53 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot index 49da09d46..b2b0c155f 100644 --- a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot @@ -32,6 +32,7 @@ GET Individual VNF Package Subscription with invalid resource identifier ... Post-Conditions: none GET individual VNF Package Subscription with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails DELETE Individual VNF Package Subscription with invalid resource identifier [Documentation] Test ID: 5.3.5.8.3 diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot index b73e7b250..5a1efdce4 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -31,6 +31,7 @@ GET Individual VNF Package with invalid resource identifier ... Post-Conditions: none GET Individual VNF Package with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails POST Individual VNF Package - Method not implemented [Documentation] Test ID: 5.3.5.2.3 @@ -149,6 +150,4 @@ DELETE Individual VNF Package used for instantiated VNF instances Send DELETE Request for Individual VNF Package used for instantiated VNF instances Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - Check Postcondition VNF Package Exists - - + Check Postcondition VNF Package Exists \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot index 09b951e99..d1e7fecd3 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot @@ -80,6 +80,7 @@ GET Individual VNF Package Artifact with invalid resource identifier ... Post-Conditions: none GET Individual VNF Package Artifact with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Individual VNF Package Artifact with conflict due to onboarding state [Documentation] Test ID: 5.3.5.6.7 @@ -138,7 +139,6 @@ DELETE Individual VNF Package Artifact - Method not implemented ... Reference: Clause 9.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package artifact is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for individual VNF Package Artifact - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Artifact Exist \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/Subscriptions.robot b/SOL005/VNFPackageManagement-API/Subscriptions.robot index 4ea7e9d35..b1ea7ce9b 100644 --- a/SOL005/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL005/VNFPackageManagement-API/Subscriptions.robot @@ -24,7 +24,6 @@ Get All VNF Package Subscriptions Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PkgmSubscriptions - Get VNF Package Subscriptions with attribute-based filter [Documentation] Test ID: 5.3.5.7.2 ... Test title: Get VNF Package Subscriptions with attribute-based filter @@ -39,7 +38,6 @@ Get VNF Package Subscriptions with attribute-based filter Check HTTP Response Body Json Schema Is PkgmSubscriptions Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter - Get VNF Package Subscriptions with invalid attribute-based filter [Documentation] Test ID: 5.3.5.7.3 ... Test title: Get VNF Package Subscriptions with attribute-based filters @@ -64,6 +62,7 @@ GET VNF Package Subscription with invalid resource endpoint ... Post-Conditions: none Get VNF Package Subscriptions with invalid resource endpoint Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails Create new VNF Package subscription [Documentation] Test ID: 5.3.5.7.5 @@ -135,8 +134,7 @@ PATCH VNF Package Subscriptions - Method not implemented ... Post-Conditions: none Send Patch Request for VNF Package Subscriptions Check HTTP Response Status Code Is 405 - - + DELETE VNF Package Subscriptions - Method not implemented [Documentation] Test ID: 5.3.5.7.10 ... Test title: DELETE VNF Package Subscriptions - Method not implemented @@ -144,10 +142,9 @@ DELETE VNF Package Subscriptions - Method not implemented ... Pre-conditions: At least one VNF package subscription is available in the NFVO. ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF package subscriptions are not deleted by the failed operation + ... Post-Conditions: none Send Delete Request for VNF Package Subscriptions Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Subscriptions Exists Get All VNF Package Subscriptions as Paged Response [Documentation] Test ID: 5.3.5.7.11 @@ -160,7 +157,7 @@ Get All VNF Package Subscriptions as Paged Response ... Post-Conditions: none Get all VNF Package Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Location Get VNF Package Subscriptions - Bad Request Response too Big [Documentation] Test ID: 5.3.5.7.12 diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot index ec895526c..1b0c58d4f 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot @@ -71,6 +71,7 @@ GET Individual VNF Package Content with invalid resource identifier ... Post-Conditions: none GET Individual VNF Package Content with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Individual VNF Package Content with conflict due to onboarding state [Documentation] Test ID: 5.3.5.4.6 @@ -143,7 +144,6 @@ DELETE Individual VNF Package Content - Method not implemented ... Reference: Clause 9.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package content is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for individual VNF Package Content Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Content Exist diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot index 5a2fd0c8d..0d61fb103 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot @@ -33,7 +33,6 @@ Upload VNF Package Content from URI with conflict due to onboarding state Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - GET Individual VNF Package Content from URI - Method not implemented [Documentation] Test ID: 5.3.5.5.3 ... Test title: GET Individual VNF Package Content from URI - Method not implemented @@ -78,7 +77,6 @@ DELETE Individual VNF Package Content from URI - Method not implemented ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Package content is not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for individual VNF Package Content from URI - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Package Content from URI Exist \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 33ac744e2..38977de8b 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -214,10 +214,6 @@ Send DELETE Request for all VNF Packages ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition VNF Packages Exist - Log Checking that Pm Job still exists - GET all VNF Packages - GET Individual VNF Package Log Trying to get a VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -509,11 +505,6 @@ Send DELETE Request for individual VNF Package Content DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition VNF Package Content Exist - Log Checking that vnf pacakge still exists - GET Individual VNF Package Content - Check HTTP Response Status Code Is 200 GET Individual VNF Package Artifact Log Trying to get a VNF Package Artifact @@ -594,15 +585,6 @@ Send DELETE Request for individual VNF Package Artifact ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition VNF Package Artifact Exist - Log Checking that vnf pacakge still exists - Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 200 - Send POST Request to upload VNF Package Content from URI Log Trying to perform a POST. The POST method provides the information for the NFVO to get the content of a VNF package. Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} @@ -655,13 +637,6 @@ Send DELETE Request for individual VNF Package Content from URI ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition VNF Package Content from URI Exist - Log Checking that vnf pacakge still exists - Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId} - Integer response status 200 - Get all VNF Package Subscriptions Log Trying to get the list of subscriptions Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -740,11 +715,7 @@ Send Delete Request for VNF Package Subscriptions Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response - Set Suite Variable ${response} ${output} - -Check Postcondition VNF Package Subscriptions Exists - Log Checking that subscriptions exists - Get all VNF Package Subscriptions + Set Suite Variable ${response} ${output} Check HTTP Response Body PkgmSubscription Attributes Values Match the Issued Subscription Log Check Response matches subscription @@ -915,7 +886,7 @@ Check HTTP Response Header Contains Should Contain ${response['headers']} ${CONTENT_TYPE} Log Header is present -Check LINK in Header +Check HTTP Response Header Contains Location ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL005/VNFPackageManagement-API/VNFPackages.robot b/SOL005/VNFPackageManagement-API/VNFPackages.robot index 6b681ce00..15c5db397 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackages.robot @@ -141,6 +141,7 @@ GET all VNF Packages with invalid resource endpoint ... Post-Conditions: none GET all VNF Packages with invalid resource endpoint Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails Create new VNF Package Resource [Documentation] Test ID: 5.3.5.1.11 @@ -189,10 +190,9 @@ DELETE all VNF Packages - Method not implemented ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The VNF Packages are not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for all VNF Packages Check HTTP Response Status Code Is 405 - Check Postcondition VNF Packages Exist GET all VNF Packages as Paged Response [Documentation] Test ID: 5.3.5.1.15 @@ -205,7 +205,7 @@ GET all VNF Packages as Paged Response ... Post-Conditions: none GET all VNF Packages Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Location GET VNF Packages - Bad Request Response too Big [Documentation] Test ID: 5.3.5.1.16 -- GitLab From 356a2954cb39662d721f5423259e0b02390386e4 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 5 Nov 2020 12:40:17 +0500 Subject: [PATCH 132/580] New Resource NotificationConsumer added --- .../NotificationConsumer.robot | 55 +++++++++++++++++++ .../VnfLcmOperationKeywords.robot | 34 +++++++++++- .../environment/variables.txt | 4 +- .../VnfIdentifierCreationNotification.json | 8 +++ .../VnfIdentifierDeletionNotification.json | 8 +++ ...VnfLcmOperationOccurrenceNotification.json | 13 +++++ 6 files changed, 120 insertions(+), 2 deletions(-) create mode 100644 SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot create mode 100644 SOL002/VNFLifecycleManagement-API/jsons/VnfIdentifierCreationNotification.json create mode 100644 SOL002/VNFLifecycleManagement-API/jsons/VnfIdentifierDeletionNotification.json create mode 100644 SOL002/VNFLifecycleManagement-API/jsons/VnfLcmOperationOccurrenceNotification.json diff --git a/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot b/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..6a4fa734b --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot @@ -0,0 +1,55 @@ +*** Settings *** +Resource environment/variables.txt +Resource VnfLcmOperationKeywords.robot +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF LCM Operation Occurrence Notification + [Documentation] Test ID: 6.3.5.20.1 + ... Test title: VNF LCM Operation Occurrence Start Notification + ... Test objective: The objective is to test the POST request to callbackUri trigger VNF LCM Operation Occurrence Start Notification + ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post VNF LCM Operation Occurrence Notification + Check HTTP Response Status Code Is 204 + +VNF Identifier Creation Notification + [Documentation] Test ID: 6.3.5.20.2 + ... Test title: VNF Identifier Creation Notification + ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Identifier Creation Notification + ... Pre-conditions: A subscription for VNF Identifier Creation Notification is available in the VNFM. + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post VNF Identifier Creation Notification + Check HTTP Response Status Code Is 204 + +VNF Identifier Deletion Notification + [Documentation] Test ID: 6.3.5.20.3 + ... Test title: VNF Identifier Deletion Notification + ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Identifier Deletion Notification + ... Pre-conditions: A subscription for VNF Identifier Deletion Notification is available in the VNFM. + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post VNF Identifier Deletion Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + Integer response status 200 + Validate Json response body Subscriptions.schema.json + Set Global Variable ${callbackResp} response body callbackUri diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index f98becf2a..895957386 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -1016,4 +1016,36 @@ 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 + +Post VNF LCM Operation Occurrence Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfLcmOperationOccurrenceNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Identifier Creation Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfIdentifierCreationNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Identifier Deletion Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfIdentifierDeletionNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index b15172d18..29e211d27 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -75,4 +75,6 @@ ${healingCause} healingCause ${changeStateTo} STOPPED -${vnfdIds} 6fc3539c-e602-4afa-8e13-962fb5a7d81f \ No newline at end of file +${vnfdIds} 6fc3539c-e602-4afa-8e13-962fb5a7d81f + +${callbackResp} localhost \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/VnfIdentifierCreationNotification.json b/SOL002/VNFLifecycleManagement-API/jsons/VnfIdentifierCreationNotification.json new file mode 100644 index 000000000..678278c5d --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/jsons/VnfIdentifierCreationNotification.json @@ -0,0 +1,8 @@ +{{ + "id":"", + "notificationType":"VnfIdentifierCreationNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "vnfInstanceId":"{vnfInstanceId}", + "_links":"" +}} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/VnfIdentifierDeletionNotification.json b/SOL002/VNFLifecycleManagement-API/jsons/VnfIdentifierDeletionNotification.json new file mode 100644 index 000000000..678278c5d --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/jsons/VnfIdentifierDeletionNotification.json @@ -0,0 +1,8 @@ +{{ + "id":"", + "notificationType":"VnfIdentifierCreationNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "vnfInstanceId":"{vnfInstanceId}", + "_links":"" +}} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/VnfLcmOperationOccurrenceNotification.json b/SOL002/VNFLifecycleManagement-API/jsons/VnfLcmOperationOccurrenceNotification.json new file mode 100644 index 000000000..21d4b97d6 --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/jsons/VnfLcmOperationOccurrenceNotification.json @@ -0,0 +1,13 @@ +{{ + "id":"", + "notificationType":"VnfLcmOperationOccurrenceNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "notificationStatus":"STRAT", + "operationState":"PROCESSING", + "vnfInstanceId":"{vnfInstanceId}", + "operation":"SCALE", + "isAutomaticInvocation":"false", + "vnfLcmOpOccId":"{vnfLcmOpOccId}", + "_links":"" +}} \ No newline at end of file -- GitLab From 6483985641a241c18868c284a2e784262a60e632 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 5 Nov 2020 15:15:20 +0500 Subject: [PATCH 133/580] New Resource NotificationConsumer added --- .../NotificationConsumer.robot | 71 +++++++++++++++++++ .../environment/variables.txt | 3 + ...manceInformationAvaliableNotification.json | 12 ++++ .../jsons/ThresholdCrossedNotification.json | 15 ++++ 4 files changed, 101 insertions(+) create mode 100644 SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot create mode 100644 SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json create mode 100644 SOL002/VNFPerformanceManagement-API/jsons/ThresholdCrossedNotification.json diff --git a/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..ede8234f5 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot @@ -0,0 +1,71 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Library String +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Performance Information Availability Notification + [Documentation] Test ID: 6.3.3.9.1 + ... Test title: VNF Performance Information Availability Notification + ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Performance Information Availability Notification + ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post VNF Performance Information Availability Notification + Check HTTP Response Status Code Is 204 + +VNF Threshold Crossed Notification + [Documentation] Test ID: 6.3.3.9.2 + ... Test title: VNF Threshold Crossed Notification + ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Threshold Crossed Notification + ... Pre-conditions: A VNF performance job is created, and a subscription for Threshold Crossed Notification is available in the VNFM. + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post VNF Threshold Crossed Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + Integer response status 200 + Validate Json response body PmJob.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + ${status}= Convert To Integer ${expected_status} + Should Be Equal ${response['status']} ${status} + Log Status code validated + +Post VNF Performance Information Availability Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/PerformanceInformationAvaliableNotification.json + ${body}= Format String ${template} objectInstanceId=${objectInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Threshold Crossed Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/ThresholdCrossedNotification.json + ${body}= Format String ${template} thresholdId=${thresholdId} objectInstanceId=${objectInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFPerformanceManagement-API/environment/variables.txt b/SOL002/VNFPerformanceManagement-API/environment/variables.txt index 8636509cb..b3453720a 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/variables.txt @@ -63,3 +63,6 @@ ${filter_ko} erroneousFilter=erroneous ${total_polling_time} 2 min ${polling_interval} 10 sec +${callbackResp} localhost + +${objectInstanceId} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json b/SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json new file mode 100644 index 000000000..5ac84f0a4 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json @@ -0,0 +1,12 @@ +{{ + "id":"", + "notificationType":"PerformanceInformationAvailableNotification", + "timeStamp":"", + "objectType":"", + "objectInstanceId":"{objectInstanceId}", + "_links":{{ + "objectInstance":"", + "pmJob":"", + "performanceReport":"" + }} +}} diff --git a/SOL002/VNFPerformanceManagement-API/jsons/ThresholdCrossedNotification.json b/SOL002/VNFPerformanceManagement-API/jsons/ThresholdCrossedNotification.json new file mode 100644 index 000000000..cb963a101 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/jsons/ThresholdCrossedNotification.json @@ -0,0 +1,15 @@ +{{ + "id":"", + "notificationType":"ThresholdCrossedNotification", + "timeStamp":"", + "thresholdId":"{thresholdId}", + "crossingDirection":"UP", + "objectType":"", + "objectInstanceId":"{objectInstanceId}", + "performanceMetric":"", + "performanceValue":"", + "_links":{{ + "objectInstance":"", + "threshold":"" + }} +}} -- GitLab From e88d4a8a415faf04190012086f9831098d33454d Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 5 Nov 2020 15:17:26 +0500 Subject: [PATCH 134/580] minor bug fix --- SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot | 4 ++-- .../jsons/VnfIdentifierDeletionNotification.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot b/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot index 6a4fa734b..58ad40cff 100644 --- a/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot @@ -49,7 +49,7 @@ Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 - Validate Json response body Subscriptions.schema.json + Validate Json response body subscription.schema.json Set Global Variable ${callbackResp} response body callbackUri diff --git a/SOL002/VNFLifecycleManagement-API/jsons/VnfIdentifierDeletionNotification.json b/SOL002/VNFLifecycleManagement-API/jsons/VnfIdentifierDeletionNotification.json index 678278c5d..287c30299 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/VnfIdentifierDeletionNotification.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/VnfIdentifierDeletionNotification.json @@ -1,6 +1,6 @@ {{ "id":"", - "notificationType":"VnfIdentifierCreationNotification", + "notificationType":"VnfIdentifierDeletionNotification", "subscriptionId":"{subscriptionId}", "timeStamp":"", "vnfInstanceId":"{vnfInstanceId}", -- GitLab From daee69530781a8726e5cb67b61f2d8c965c568a1 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 5 Nov 2020 16:00:13 +0500 Subject: [PATCH 135/580] New Resource NotificationConsumer added --- .../AlarmListRebuiltNotification.json | 10 ++ .../NotificationConsumer.robot | 93 +++++++++++++++++++ .../environment/variables.txt | 4 +- .../jsons/AlarmClearedNotification.json | 12 +++ .../jsons/AlarmNotification.json | 13 +++ 5 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 SOL002/VNFFaultManagement-API/AlarmListRebuiltNotification.json create mode 100644 SOL002/VNFFaultManagement-API/NotificationConsumer.robot create mode 100644 SOL002/VNFFaultManagement-API/jsons/AlarmClearedNotification.json create mode 100644 SOL002/VNFFaultManagement-API/jsons/AlarmNotification.json diff --git a/SOL002/VNFFaultManagement-API/AlarmListRebuiltNotification.json b/SOL002/VNFFaultManagement-API/AlarmListRebuiltNotification.json new file mode 100644 index 000000000..2c0202371 --- /dev/null +++ b/SOL002/VNFFaultManagement-API/AlarmListRebuiltNotification.json @@ -0,0 +1,10 @@ +{{ + "id":"", + "notificationType":"AlarmListRebuiltNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "_links":{{ + "subscription":"", + "alarm":"" + }} +}} diff --git a/SOL002/VNFFaultManagement-API/NotificationConsumer.robot b/SOL002/VNFFaultManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..393c41c97 --- /dev/null +++ b/SOL002/VNFFaultManagement-API/NotificationConsumer.robot @@ -0,0 +1,93 @@ +*** Settings *** +Library String +Library OperatingSystem +Resource environment/variables.txt +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Fault Alarm Notification + [Documentation] Test ID: 6.3.4.7.1 + ... Test title: VNF Fault Alarm Notification + ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Fault Alarm Notification + ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Alarm Notification + Check HTTP Response Status Code Is 204 + +VNF Fault Alarm Cleared Notification + [Documentation] Test ID: 6.3.4.7.2 + ... Test title: VNF Fault Alarm Cleared Notification + ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Fault Alarm Cleared Notification + ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Alarm Cleared Notification + Check HTTP Response Status Code Is 204 + +VNF Fault Alarm List Rebuilt Notification + [Documentation] Test ID: 6.3.4.7.3 + ... Test title: VNF Fault List Rebuilt Alarm List Rebuilt Notification + ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Fault Alarm List Rebuilt Notification + ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Alarm List Rebuilt Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + Validate Json response body FmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Post Alarm Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/AlarmNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm Cleared Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/AlarmClearedNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm List Rebuilt Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/AlarmListRebuiltNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL002/VNFFaultManagement-API/environment/variables.txt b/SOL002/VNFFaultManagement-API/environment/variables.txt index 88d5888ff..7eb09910b 100644 --- a/SOL002/VNFFaultManagement-API/environment/variables.txt +++ b/SOL002/VNFFaultManagement-API/environment/variables.txt @@ -56,4 +56,6 @@ ${faultyResourceType} COMPUTE ${eventType} COMMUNICATIONS_ALARM ${probableCause} -${notification_type} AlarmNotification \ No newline at end of file +${notification_type} AlarmNotification + +${callbackResp} localhost \ No newline at end of file diff --git a/SOL002/VNFFaultManagement-API/jsons/AlarmClearedNotification.json b/SOL002/VNFFaultManagement-API/jsons/AlarmClearedNotification.json new file mode 100644 index 000000000..f8a50fb3b --- /dev/null +++ b/SOL002/VNFFaultManagement-API/jsons/AlarmClearedNotification.json @@ -0,0 +1,12 @@ +{{ + "id":"", + "notificationType":"AlarmClearedNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "alarmId":"{alarmId}", + "alarmCleareTime":"", + "_links":{{ + "subscription":"", + "alarm":"" + }} +}} diff --git a/SOL002/VNFFaultManagement-API/jsons/AlarmNotification.json b/SOL002/VNFFaultManagement-API/jsons/AlarmNotification.json new file mode 100644 index 000000000..2a8e86425 --- /dev/null +++ b/SOL002/VNFFaultManagement-API/jsons/AlarmNotification.json @@ -0,0 +1,13 @@ +{{ + "id":"", + "notificationType":"AlarmNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "alarm":{{ + "id":"", + "managedObjectId":"" + }}, + "_links":{{ + "subscription":"" + }} +}} -- GitLab From 7d9a5ac785dcf2dfb648ee8fa2b6adfa00bfde66 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 5 Nov 2020 16:43:31 +0500 Subject: [PATCH 136/580] objective updated --- SOL002/VNFFaultManagement-API/NotificationConsumer.robot | 6 +++--- .../{ => jsons}/AlarmListRebuiltNotification.json | 0 2 files changed, 3 insertions(+), 3 deletions(-) rename SOL002/VNFFaultManagement-API/{ => jsons}/AlarmListRebuiltNotification.json (100%) diff --git a/SOL002/VNFFaultManagement-API/NotificationConsumer.robot b/SOL002/VNFFaultManagement-API/NotificationConsumer.robot index 393c41c97..5fea3c86b 100644 --- a/SOL002/VNFFaultManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFFaultManagement-API/NotificationConsumer.robot @@ -11,7 +11,7 @@ Suite Setup Check resource existence and get CallbackUri VNF Fault Alarm Notification [Documentation] Test ID: 6.3.4.7.1 ... Test title: VNF Fault Alarm Notification - ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Fault Alarm Notification + ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Notification ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM @@ -23,7 +23,7 @@ VNF Fault Alarm Notification VNF Fault Alarm Cleared Notification [Documentation] Test ID: 6.3.4.7.2 ... Test title: VNF Fault Alarm Cleared Notification - ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Fault Alarm Cleared Notification + ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Cleared Notification ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM @@ -35,7 +35,7 @@ VNF Fault Alarm Cleared Notification VNF Fault Alarm List Rebuilt Notification [Documentation] Test ID: 6.3.4.7.3 ... Test title: VNF Fault List Rebuilt Alarm List Rebuilt Notification - ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Fault Alarm List Rebuilt Notification + ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm List Rebuilt Notification ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM diff --git a/SOL002/VNFFaultManagement-API/AlarmListRebuiltNotification.json b/SOL002/VNFFaultManagement-API/jsons/AlarmListRebuiltNotification.json similarity index 100% rename from SOL002/VNFFaultManagement-API/AlarmListRebuiltNotification.json rename to SOL002/VNFFaultManagement-API/jsons/AlarmListRebuiltNotification.json -- GitLab From d96ad3637ff48a7604da7780797aa592e3a78259 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 5 Nov 2020 16:44:51 +0500 Subject: [PATCH 137/580] objective updated --- .../VNFLifecycleManagement-API/NotificationConsumer.robot | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot b/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot index 58ad40cff..e38d09f5d 100644 --- a/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot @@ -11,7 +11,7 @@ Suite Setup Check resource existence and get CallbackUri VNF LCM Operation Occurrence Notification [Documentation] Test ID: 6.3.5.20.1 ... Test title: VNF LCM Operation Occurrence Start Notification - ... Test objective: The objective is to test the POST request to callbackUri trigger VNF LCM Operation Occurrence Start Notification + ... Test objective: The objective is to test that the POST request triggers VNF LCM Operation Occurrence Start Notification ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM @@ -23,7 +23,7 @@ VNF LCM Operation Occurrence Notification VNF Identifier Creation Notification [Documentation] Test ID: 6.3.5.20.2 ... Test title: VNF Identifier Creation Notification - ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Identifier Creation Notification + ... Test objective: The objective is to test that the POST request triggers VNF Identifier Creation Notification ... Pre-conditions: A subscription for VNF Identifier Creation Notification is available in the VNFM. ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM @@ -35,7 +35,7 @@ VNF Identifier Creation Notification VNF Identifier Deletion Notification [Documentation] Test ID: 6.3.5.20.3 ... Test title: VNF Identifier Deletion Notification - ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Identifier Deletion Notification + ... Test objective: The objective is to test that the POST request triggers VNF Identifier Deletion Notification ... Pre-conditions: A subscription for VNF Identifier Deletion Notification is available in the VNFM. ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM @@ -52,4 +52,4 @@ Check resource existence and get CallbackUri Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Validate Json response body subscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri + Set Global Variable ${callbackResp} response body callbackUri \ No newline at end of file -- GitLab From 1fcd95aaf0d4378feb3b79f694342a5e2691caff Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 5 Nov 2020 16:46:09 +0500 Subject: [PATCH 138/580] objective updated --- .../VNFPerformanceManagement-API/NotificationConsumer.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot index ede8234f5..e2fae0d06 100644 --- a/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot @@ -11,7 +11,7 @@ Suite Setup Check resource existence and get CallbackUri VNF Performance Information Availability Notification [Documentation] Test ID: 6.3.3.9.1 ... Test title: VNF Performance Information Availability Notification - ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Performance Information Availability Notification + ... Test objective: The objective is to test that the POST request triggers VNF Performance Information Availability Notification ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM @@ -23,7 +23,7 @@ VNF Performance Information Availability Notification VNF Threshold Crossed Notification [Documentation] Test ID: 6.3.3.9.2 ... Test title: VNF Threshold Crossed Notification - ... Test objective: The objective is to test the POST request to callbackUri trigger VNF Threshold Crossed Notification + ... Test objective: The objective is to test that the POST request triggers VNF Threshold Crossed Notification ... Pre-conditions: A VNF performance job is created, and a subscription for Threshold Crossed Notification is available in the VNFM. ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM -- GitLab From 8b32d38e4bc9f6960c0471798acc7c1a81ae8257 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 6 Nov 2020 10:05:55 +0500 Subject: [PATCH 139/580] New Resource NotificationConsumer added --- .../NoificationConsumer.robot | 46 +++++++++++++++++++ .../environment/variables.txt | 4 +- .../jsons/ValueChangeNotification.json | 12 +++++ 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 SOL002/VNFIndicator-API/NoificationConsumer.robot create mode 100644 SOL002/VNFIndicator-API/jsons/ValueChangeNotification.json diff --git a/SOL002/VNFIndicator-API/NoificationConsumer.robot b/SOL002/VNFIndicator-API/NoificationConsumer.robot new file mode 100644 index 000000000..1f6b1cb25 --- /dev/null +++ b/SOL002/VNFIndicator-API/NoificationConsumer.robot @@ -0,0 +1,46 @@ +*** Settings *** +Library String +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library OperatingSystem +Library REST ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Indicator Value Change Notification + [Documentation] Test ID: 6.3.2.7.1 + ... Test title: VNF Indicator Value Change Notification + ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification . + ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNF. + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNF + ... Applicability: none + ... Post-Conditions: none + Post Value Change Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body VnfIndicatorSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Value Change Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/ValueChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} indicatorId=${indicatorId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/environment/variables.txt b/SOL002/VNFIndicator-API/environment/variables.txt index b08433660..3439ee7c8 100644 --- a/SOL002/VNFIndicator-API/environment/variables.txt +++ b/SOL002/VNFIndicator-API/environment/variables.txt @@ -48,4 +48,6 @@ ${NEG_FIELDS} wrongName=any_value ${vnfIndicators} = -${VAR_SEPERATOR} & \ No newline at end of file +${VAR_SEPERATOR} & + +${callbackResp} localhost \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/jsons/ValueChangeNotification.json b/SOL002/VNFIndicator-API/jsons/ValueChangeNotification.json new file mode 100644 index 000000000..ee1f63ee3 --- /dev/null +++ b/SOL002/VNFIndicator-API/jsons/ValueChangeNotification.json @@ -0,0 +1,12 @@ +{{ + "id":"", + "notificationType":"VnfIndicatorValueChangeNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "vnfIndicatorId":"{indicatorId}", + "vnfInstanceId":"{vnfInstanceId}" + "_links":{{ + "subscription":"", + "vnfInstance":"" + }} +}} -- GitLab From 03b59d9ea76d1ca648687d7e062102ac1ee27802 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 6 Nov 2020 10:08:04 +0500 Subject: [PATCH 140/580] bug fix --- SOL002/VNFFaultManagement-API/NotificationConsumer.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/NotificationConsumer.robot b/SOL002/VNFFaultManagement-API/NotificationConsumer.robot index 5fea3c86b..ae6d726f6 100644 --- a/SOL002/VNFFaultManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFFaultManagement-API/NotificationConsumer.robot @@ -51,13 +51,13 @@ Check resource existence and get CallbackUri Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 + Validate Json response body FmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri Check HTTP Response Status Code Is [Arguments] ${expected_status} Should Be Equal As Strings ${response['status']} ${expected_status} Log Status code validated - Validate Json response body FmSubscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri Post Alarm Notification log Trying to perform a POST to get notification -- GitLab From 53550516a91bc55244a71ac5c313f414be4e607c Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 6 Nov 2020 10:52:25 +0500 Subject: [PATCH 141/580] New Resource NotificationConsumer added --- .../NotificationConsumer.robot | 92 +++++++++++++++++++ .../environment/variables.txt | 5 +- .../VnfIdentifierCreationNotification.json | 8 ++ .../VnfIdentifierDeletionNotification.json | 8 ++ ...VnfLcmOperationOccurrenceNotification.json | 13 +++ 5 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot create mode 100644 SOL003/VNFLifecycleManagement-API/jsons/VnfIdentifierCreationNotification.json create mode 100644 SOL003/VNFLifecycleManagement-API/jsons/VnfIdentifierDeletionNotification.json create mode 100644 SOL003/VNFLifecycleManagement-API/jsons/VnfLcmOperationOccurrenceNotification.json diff --git a/SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot b/SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..9e27f5bc7 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot @@ -0,0 +1,92 @@ +*** Settings *** +Library String +Library OperatingSystem +Resource environment/variables.txt +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF LCM Operation Occurrence Notification + [Documentation] Test ID: 7.3.1.36.1 + ... Test title: VNF LCM Operation Occurrence Notification + ... Test objective: The objective is to test that the POST request triggers VNF LCM Operation Occurrence Notification. + ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post VNF LCM Operation Occurrence Notification + Check HTTP Response Status Code Is 204 + +VNF Identifier Creation Notification + [Documentation] Test ID: 7.3.1.36.2 + ... Test title: VNF Identifier Creation Notification + ... Test objective: The objective is to test that the POST request triggers VNF Identifier Creation Notification. + ... Pre-conditions: A subscription for VNF identifier creation cotification is available in the VNFM. + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post VNF Identifier Creation Notification + Check HTTP Response Status Code Is 204 + +VNF Identifier Deletion Notification + [Documentation] Test ID: 7.3.1.36.3 + ... Test title: VNF Identifier Deletion Notification + ... Test objective: The objective is to test that the POST request triggers VNF Identifier Deletion Notification. + ... Pre-conditions: A subscription for VNF identifier deletion notifications is available in the VNFM. + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post VNF LCM Operation Occurrence Notification + Check HTTP Response Status Code Is 204 +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body Subscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post VNF LCM Operation Occurrence Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfLcmOperationOccurrenceNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Identifier Creation Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfIdentifierCreationNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Identifier Deletion Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfIdentifierDeletionNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 446b1f496..b08bdeff5 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -16,10 +16,6 @@ ${apiMajorVersion} v1 ${CancelMode} GRACEFUL ${VNFM_DUPLICATION} 0 - - - - ${NFVO_HOST} localhost # Hostname of the NFVO ${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https @@ -101,3 +97,4 @@ ${element} ${aspectId} ${scaleOutResponse} +${callbackResp} localhost \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/VnfIdentifierCreationNotification.json b/SOL003/VNFLifecycleManagement-API/jsons/VnfIdentifierCreationNotification.json new file mode 100644 index 000000000..dfc860f3d --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/jsons/VnfIdentifierCreationNotification.json @@ -0,0 +1,8 @@ +{{ + "id":"", + "notificationType":"VnfIdentifierCreationNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "vnfInstanceId":"{vnfInstanceId}", + "_links":"" +}} diff --git a/SOL003/VNFLifecycleManagement-API/jsons/VnfIdentifierDeletionNotification.json b/SOL003/VNFLifecycleManagement-API/jsons/VnfIdentifierDeletionNotification.json new file mode 100644 index 000000000..3754be2b9 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/jsons/VnfIdentifierDeletionNotification.json @@ -0,0 +1,8 @@ +{{ + "id":"", + "notificationType":"VnfIdentifierDeletionNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "vnfInstanceId":"{vnfInstanceId}", + "_links":"" +}} diff --git a/SOL003/VNFLifecycleManagement-API/jsons/VnfLcmOperationOccurrenceNotification.json b/SOL003/VNFLifecycleManagement-API/jsons/VnfLcmOperationOccurrenceNotification.json new file mode 100644 index 000000000..0756a3323 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/jsons/VnfLcmOperationOccurrenceNotification.json @@ -0,0 +1,13 @@ +{{ + "id":"", + "notificationType":"VnfLcmOperationOccurrenceNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "notificationStatus":"STRAT", + "operationState":"PROCESSING", + "vnfInstanceId":"{vnfInstanceId}", + "operation":"SCALE", + "isAutomaticInvocation":"false", + "vnfLcmOpOccId":"{vnfLcmOpOccId}", + "_links":"" +}} -- GitLab From b610cf525edddf95e0c36518b13c38dd4c6d14ea Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 6 Nov 2020 12:15:18 +0500 Subject: [PATCH 142/580] New Resource NotificationConsumer added --- .../NotificationConsumer.robot | 69 +++++++++++++++++++ .../environment/variables.txt | 4 +- 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot diff --git a/SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot b/SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..55d99d44d --- /dev/null +++ b/SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot @@ -0,0 +1,69 @@ +*** Settings *** +Library String +Library OperatingSystem +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +Performance Information Available Notification + [Documentation] Test ID: 7.3.4.10.1 + ... Test title: Performance Information Available Notification + ... Test objective: The objective is to test that the POST request triggers Performance Information Available Notification. + ... Pre-conditions: A VNF performance job is created, and a subscription for performance information available notification is available in the VNFM. + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Performance Information Available Notification + Check HTTP Response Status Code Is 204 + +Threshold Crossed Notification + [Documentation] Test ID: 7.3.4.10.2 + ... Test title: Threshold Crossed Notification + ... Test objective: The objective is to test that the POST request triggers Threshold Crossed Notification + ... Pre-conditions: A VNF performance job is created, and a subscription for threshold crossed notification is available in the VNFM. + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Threshold Crossed Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + Integer response status 200 + Validate Json response body PmJob.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + ${status}= Convert To Integer ${expected_status} + Should Be Equal As Strings ${response['status']} ${status} + Log Status code validated + +Post Performance Information Available Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body} = Get File jsons/PerformanceInformationAvailableNotification.json + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Threshold Crossed Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body} = Get File jsons/ThresholdCrossedNotification.json + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/environment/variables.txt b/SOL003/VNFPerformanceManagement-API/environment/variables.txt index 6eaca448f..f61232c97 100644 --- a/SOL003/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL003/VNFPerformanceManagement-API/environment/variables.txt @@ -63,4 +63,6 @@ ${erroneousReportId} erroneousReportId ${newReportId} newReportId ${FILTER_OK} objectInstanceId=${objectInstanceIds} -${FILTER_KO} criterias=erroneousFilter \ No newline at end of file +${FILTER_KO} criterias=erroneousFilter + +${callbackResp} localhost \ No newline at end of file -- GitLab From 2ff1443d26c2a26ea6c68c9239e2717afda90d64 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 6 Nov 2020 14:35:58 +0500 Subject: [PATCH 143/580] New Resource NotificationConsumer added --- .../NotificationConsumer.robot | 94 +++++++++++++++++++ .../environment/variables.txt | 4 +- .../jsons/AlarmClearedNotification.json | 12 +++ .../jsons/AlarmListRebuiltNotification.json | 10 ++ .../jsons/AlarmNotification.json | 13 +++ 5 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 SOL003/VNFFaultManagement-API/NotificationConsumer.robot create mode 100644 SOL003/VNFFaultManagement-API/jsons/AlarmClearedNotification.json create mode 100644 SOL003/VNFFaultManagement-API/jsons/AlarmListRebuiltNotification.json create mode 100644 SOL003/VNFFaultManagement-API/jsons/AlarmNotification.json diff --git a/SOL003/VNFFaultManagement-API/NotificationConsumer.robot b/SOL003/VNFFaultManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..b8cb18b90 --- /dev/null +++ b/SOL003/VNFFaultManagement-API/NotificationConsumer.robot @@ -0,0 +1,94 @@ +*** Settings *** +Library String +Library OperatingSystem +Resource environment/variables.txt +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Fault Alarm Notification + [Documentation] Test ID: 7.3.5.7.1 + ... Test title: VNF Fault Alarm Notification + ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Notification. + ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Alarm Notification + Check HTTP Response Status Code Is 204 + +VNF Fault Alarm Cleared Notification + [Documentation] Test ID: 7.3.5.7.2 + ... Test title: VNF Fault Alarm Cleared Notification + ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Cleared Notification. + ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Alarm Cleared Notification + Check HTTP Response Status Code Is 204 + +VNF Fault Alarm List Reulit Notification + [Documentation] Test ID: 7.3.5.7.3 + ... Test title: VNF Fault Alarm List Rebuilt Notification + ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm List Rebuilt Notification. + ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Alarm List Rebuilt Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body FmSubscriptions.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Log Validate Status code + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Alarm Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/AlarmNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm Cleared Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/AlarmClearedNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm List Rebuilt Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/AlarmListRebuiltNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API/environment/variables.txt b/SOL003/VNFFaultManagement-API/environment/variables.txt index f34b4ec6a..5908e8e4a 100644 --- a/SOL003/VNFFaultManagement-API/environment/variables.txt +++ b/SOL003/VNFFaultManagement-API/environment/variables.txt @@ -54,4 +54,6 @@ ${fields} criteria,objectInstanceIds ${callback_uri} http://127.0.0.1 ${callback_endpoint} /subscribe -${vnfdIds} 6fc3539c-e602-4afa-8e13-962fb5a7d81f \ No newline at end of file +${vnfdIds} 6fc3539c-e602-4afa-8e13-962fb5a7d81f + +${callbackResp} localhost \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API/jsons/AlarmClearedNotification.json b/SOL003/VNFFaultManagement-API/jsons/AlarmClearedNotification.json new file mode 100644 index 000000000..f8a50fb3b --- /dev/null +++ b/SOL003/VNFFaultManagement-API/jsons/AlarmClearedNotification.json @@ -0,0 +1,12 @@ +{{ + "id":"", + "notificationType":"AlarmClearedNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "alarmId":"{alarmId}", + "alarmCleareTime":"", + "_links":{{ + "subscription":"", + "alarm":"" + }} +}} diff --git a/SOL003/VNFFaultManagement-API/jsons/AlarmListRebuiltNotification.json b/SOL003/VNFFaultManagement-API/jsons/AlarmListRebuiltNotification.json new file mode 100644 index 000000000..8ba773077 --- /dev/null +++ b/SOL003/VNFFaultManagement-API/jsons/AlarmListRebuiltNotification.json @@ -0,0 +1,10 @@ +{{ + "id":"", + "notificationType":"AlarmListRebuiltNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "_links":{{ + "subscription":"", + "alarms":"" + }} +}} diff --git a/SOL003/VNFFaultManagement-API/jsons/AlarmNotification.json b/SOL003/VNFFaultManagement-API/jsons/AlarmNotification.json new file mode 100644 index 000000000..2a8e86425 --- /dev/null +++ b/SOL003/VNFFaultManagement-API/jsons/AlarmNotification.json @@ -0,0 +1,13 @@ +{{ + "id":"", + "notificationType":"AlarmNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "alarm":{{ + "id":"", + "managedObjectId":"" + }}, + "_links":{{ + "subscription":"" + }} +}} -- GitLab From 81c1a51fcf84199c64587b8d77c79b55acc069f0 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 6 Nov 2020 15:28:48 +0500 Subject: [PATCH 144/580] New Resource NotificationConsumer added --- SOL003/VNFIndicator-API/environment/variables.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFIndicator-API/environment/variables.txt b/SOL003/VNFIndicator-API/environment/variables.txt index 9fb63250b..5d4253fc2 100644 --- a/SOL003/VNFIndicator-API/environment/variables.txt +++ b/SOL003/VNFIndicator-API/environment/variables.txt @@ -60,4 +60,6 @@ ${NEG_FIELDS} wrongName=any_value ${SEPERATOR} = -${VAR_SEPERATOR} & \ No newline at end of file +${VAR_SEPERATOR} & + +${callbackResp} localhost \ No newline at end of file -- GitLab From 62bd77e76b7d876270cde52a4cc2cef968aecb2b Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 6 Nov 2020 15:33:20 +0500 Subject: [PATCH 145/580] files added --- .../NotificationConsumer.robot | 46 +++++++++++++++++++ .../VnfIndicatorValueChangeNotification.json | 13 ++++++ 2 files changed, 59 insertions(+) create mode 100644 SOL003/VNFIndicator-API/NotificationConsumer.robot create mode 100644 SOL003/VNFIndicator-API/jsons/VnfIndicatorValueChangeNotification.json diff --git a/SOL003/VNFIndicator-API/NotificationConsumer.robot b/SOL003/VNFIndicator-API/NotificationConsumer.robot new file mode 100644 index 000000000..fff07559f --- /dev/null +++ b/SOL003/VNFIndicator-API/NotificationConsumer.robot @@ -0,0 +1,46 @@ +*** Settings *** +Library String +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library OperatingSystem +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Indicator Value Change Notification + [Documentation] Test ID: 7.3.6.7.1 + ... Test title: VNF Indicator Value Change Notification + ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification. + ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNFM. + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post VNF Indicator Value Change Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body VnfIndicatorSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post VNF Indicator Value Change Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfIndicatorValueChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} indicatorId=indicatorId vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFIndicator-API/jsons/VnfIndicatorValueChangeNotification.json b/SOL003/VNFIndicator-API/jsons/VnfIndicatorValueChangeNotification.json new file mode 100644 index 000000000..c6dd2a1cc --- /dev/null +++ b/SOL003/VNFIndicator-API/jsons/VnfIndicatorValueChangeNotification.json @@ -0,0 +1,13 @@ +{{ + "id":"", + "notificationType":"VnfIndicatorValueChangeNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "vnfIndicatorId":"{indicatorId} ", + "value":"", + "vnfInstanceId":"{vnfInstanceId}", + "_links":{{ + "vnfInstance":"", + "subscription":"" + }} +}} -- GitLab From 96e741ac8a44b6cf769ebe7752107f6dbef70c17 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 6 Nov 2020 15:51:49 +0500 Subject: [PATCH 146/580] New Resource NotificationConsumer added --- .../NotificationConsumer.robot | 70 +++++++++++++++++++ .../environment/variables.txt | 2 + .../jsons/VnfPackageChangeNotification.json | 10 +++ .../VnfPackageOnboardingNotification.json | 9 +++ 4 files changed, 91 insertions(+) create mode 100644 SOL003/VNFPackageManagement-API/NotificationConsumer.robot create mode 100644 SOL003/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json create mode 100644 SOL003/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json diff --git a/SOL003/VNFPackageManagement-API/NotificationConsumer.robot b/SOL003/VNFPackageManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..b61fe1315 --- /dev/null +++ b/SOL003/VNFPackageManagement-API/NotificationConsumer.robot @@ -0,0 +1,70 @@ +*** Settings *** +Library String +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library OperatingSystem +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Package Onboarding Notification + [Documentation] Test ID: 7.3.3.12.1 + ... Test title: VNF Package Onboarding Notification + ... Test objective: The objective is to test that the POST request triggers VNF Package Onboarding notification. + ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Post VNF Package Onboarding Notification + Check HTTP Response Status Code Is 204 + +VNF Package Change Notification + [Documentation] Test ID: 7.3.3.12.2 + ... Test title: VNF Package Change Notification + ... Test objective: The objective is to test that the POST request triggers VNF Package Change notification. + ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Post VNF Package Change Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body PkgmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post VNF Package Onboarding Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfPackageOnboardingNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPackageId=${vnfPackageId} vndId=${vndId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Package Change Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfPackageChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPackageId=${vnfPackageId} vndId=${vndId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 659a3e8e3..1bb5c34f5 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -85,3 +85,5 @@ ${POS_FILTER} vnfdId=41fdd38a-3d4c-465c-83e0-f80e014425f8 ,vnfProvider=NXW ${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field ${fields} softwareImages,additionalArtifacts ${VAR_SEPERATOR} & + +${callbackResp} localhost \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json b/SOL003/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json new file mode 100644 index 000000000..bcea9b7a0 --- /dev/null +++ b/SOL003/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json @@ -0,0 +1,10 @@ +{{ + "id":"", + "notificationType":"VnfPackageChangeNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "vnfPkgId":"{indicatorId} ", + "vnfdId":"{vndId}", + "changeType":"PKG_DELETE", + "_links":"" +}} diff --git a/SOL003/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json b/SOL003/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json new file mode 100644 index 000000000..f9b87c055 --- /dev/null +++ b/SOL003/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json @@ -0,0 +1,9 @@ +{{ + "id":"", + "notificationType":"VnfPackageOnboardingNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "vnfPkgId":"{indicatorId} ", + "vnfdId":"{vndId}", + "_links":"" +}} -- GitLab From 49b652269a77bd5d7ac62ac25c95d54c99a4d081 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 6 Nov 2020 15:52:53 +0500 Subject: [PATCH 147/580] fix added --- SOL003/VNFIndicator-API/NotificationConsumer.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL003/VNFIndicator-API/NotificationConsumer.robot b/SOL003/VNFIndicator-API/NotificationConsumer.robot index fff07559f..3fccae93e 100644 --- a/SOL003/VNFIndicator-API/NotificationConsumer.robot +++ b/SOL003/VNFIndicator-API/NotificationConsumer.robot @@ -40,7 +40,7 @@ Post VNF Indicator Value Change Notification Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template} = Get File jsons/VnfIndicatorValueChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} indicatorId=indicatorId vnfInstanceId=${vnfInstanceId} + ${body}= Format String ${template} subscriptionId=${subscriptionId} indicatorId=${indicatorId} vnfInstanceId=${vnfInstanceId} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -- GitLab From 04d7f1750f4697dc6512dea7c6631c721c92224f Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 9 Nov 2020 11:10:38 +0500 Subject: [PATCH 148/580] New Resource NotificationConsumer added --- .../NotificationConsumer.robot | 47 +++++++++++++++++++ .../environment/variables.txt | 4 +- .../jsons/VrQuotaAvailNotification.json | 9 ++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot create mode 100644 SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/VrQuotaAvailNotification.json diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot new file mode 100644 index 000000000..47465a390 --- /dev/null +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot @@ -0,0 +1,47 @@ +*** Settings *** +Library String +Resource environment/variables.txt +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +Vr Quota Availibility Notification + [Documentation] Test ID: 7.3.7.4.1 + ... Test title: Vr Quota Availibility Notification + ... Test objective: The objective is to test that Vr Quota Availibility Notification is delivered with success to the notification consumer + ... Pre-conditions: The VNF has subscribed to the Vr Quota Availibility resource + ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Vr Quota Avail Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body VrQuotaAvailSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Vr Quota Avail Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VrQuotaAvailNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt index 7e9f441fc..742e6b3b6 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt @@ -27,4 +27,6 @@ ${apiMajorVersion} v1 ${VrQuotaAvailNotification} {} ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -${response} {} \ No newline at end of file +${response} {} + +${callbackResp} 127.0.0.1 \ No newline at end of file diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/VrQuotaAvailNotification.json b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/VrQuotaAvailNotification.json new file mode 100644 index 000000000..e24fb8108 --- /dev/null +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/VrQuotaAvailNotification.json @@ -0,0 +1,9 @@ + +{{ + "id":"", + "notificationType":"VrQuotaAvailNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "resourceGroupId":"", + "_links":"" +}} \ No newline at end of file -- GitLab From 58ec3e6ad98d9c320a6100010cde837765136262 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 9 Nov 2020 11:17:15 +0500 Subject: [PATCH 149/580] TD's conflict resoved --- SOL005/NSDManagement-API/NSD.robot | 24 +++++++++---------- .../NSDArchiveManifest.robot | 14 +++++------ SOL005/NSDManagement-API/PNFD.robot | 24 +++++++++---------- .../PNFDArchiveManifest.robot | 14 +++++------ 4 files changed, 38 insertions(+), 38 deletions(-) diff --git a/SOL005/NSDManagement-API/NSD.robot b/SOL005/NSDManagement-API/NSD.robot index 7e4041b76..2b8d3708f 100644 --- a/SOL005/NSDManagement-API/NSD.robot +++ b/SOL005/NSDManagement-API/NSD.robot @@ -8,7 +8,7 @@ Library OperatingSystem *** Test Cases *** Get single file NSD in Plain Format - [Documentation] Test ID: 5.3.1.10.1 + [Documentation] Test ID: 5.3.1.11.1 ... Test title: Get single file NSD in Plain Format ... Test objective: The objective is to test the retrieval of the NSD in plain format within a NSD archive and perform a validation that returned content is in plain format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. @@ -21,7 +21,7 @@ Get single file NSD in Plain Format Check HTTP Response Header Content-Type Is text/plain Get NSD in Zip Format - [Documentation] Test ID: 5.3.1.10.2 + [Documentation] Test ID: 5.3.1.11.2 ... Test title: Get NSD in Zip Format ... Test objective: The objective is to test the retrieval of the NSD in zip format within a NSD archive and perform a validation that returned content is in zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. @@ -34,7 +34,7 @@ Get NSD in Zip Format Check HTTP Response Header Content-Type Is application/zip Get single file NSD in Plain or Zip Format - [Documentation] Test ID: 5.3.1.10.3 + [Documentation] Test ID: 5.3.1.11.3 ... Test title: Get single file NSDin Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file NSD within a NSD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that response is in Plain or Zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. @@ -47,7 +47,7 @@ Get single file NSD in Plain or Zip Format Check HTTP Response Header Content-Type Is Any of text/plain application/zip Get multi file NSD in Plain or Zip Format - [Documentation] Test ID: 5.3.1.10.4 + [Documentation] Test ID: 5.3.1.11.4 ... Test title: Get multi file NSD in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file NSD within a NSD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. @@ -60,7 +60,7 @@ Get multi file NSD in Plain or Zip Format Check HTTP Response Header Content-Type Is application/zip Get multi file NSD in Plain Format - [Documentation] Test ID: 5.3.1.10.5 + [Documentation] Test ID: 5.3.1.11.5 ... Test title: Get multi file NSD in Plain Format ... Test objective: The objective is to test that the retrieval of the multi file NSD within a NSD archive fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more NSDs are onboarded in the NFVO. @@ -73,7 +73,7 @@ Get multi file NSD in Plain Format Check HTTP Response Body Json Schema Is ProblemDetails Get NSD Content with invalid resource identifier - [Documentation] Test ID: 5.3.1.10.6 + [Documentation] Test ID: 5.3.1.11.6 ... Test title: Get NSD Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the NSD within a NSD archive fails when using an invalid resource identifier ... Pre-conditions: none @@ -86,7 +86,7 @@ Get NSD Content with invalid resource identifier Check HTTP Response Body Json Schema Is ProblemDetails Get NSD with conflict due to onboarding state - [Documentation] Test ID: 5.3.1.10.7 + [Documentation] Test ID: 5.3.1.11.7 ... Test title: Get NSD with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the NSD within a NSD archive fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD is different from ONBOARDED. @@ -99,7 +99,7 @@ Get NSD with conflict due to onboarding state Check HTTP Response Body Json Schema Is ProblemDetails Get NSD with security information - [Documentation] Test ID: 5.3.1.10.8 + [Documentation] Test ID: 5.3.1.11.8 ... Test title: Get NSD with security information ... Test objective: The objective is to test the retrieval of the NSD within a NSD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more NSDs are onboarded in the NFVO. @@ -112,7 +112,7 @@ Get NSD with security information Check HTTP Response Header Content-Type Is application/zip POST NSD - Method not implemented - [Documentation] Test ID: 5.3.1.10.9 + [Documentation] Test ID: 5.3.1.11.9 ... Test title: POST NSD - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor ... Pre-conditions: none @@ -124,7 +124,7 @@ POST NSD - Method not implemented Check HTTP Response Status Code Is 405 PUT NSD - Method not implemented - [Documentation] Test ID: 5.3.1.10.10 + [Documentation] Test ID: 5.3.1.11.10 ... Test title: PUT NSD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor ... Pre-conditions: none @@ -136,7 +136,7 @@ PUT NSD - Method not implemented Check HTTP Response Status Code Is 405 PATCH NSD - Method not implemented - [Documentation] Test ID: 5.3.1.10.11 + [Documentation] Test ID: 5.3.1.11.11 ... Test title: PATCH NSD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor ... Pre-conditions: none @@ -148,7 +148,7 @@ PATCH NSD - Method not implemented Check HTTP Response Status Code Is 405 DELETE NSD - Method not implemented - [Documentation] Test ID: 5.3.1.10.12 + [Documentation] Test ID: 5.3.1.11.12 ... Test title: DELETE NSD - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor ... Pre-conditions: none diff --git a/SOL005/NSDManagement-API/NSDArchiveManifest.robot b/SOL005/NSDManagement-API/NSDArchiveManifest.robot index e28a30b3b..cc759e25a 100644 --- a/SOL005/NSDManagement-API/NSDArchiveManifest.robot +++ b/SOL005/NSDManagement-API/NSDArchiveManifest.robot @@ -8,7 +8,7 @@ Library OperatingSystem *** Test Cases *** Get NSD Archive Manifest - [Documentation] Test ID: 5.3.1.11.1 + [Documentation] Test ID: 5.3.1.12.1 ... Test title: Get NSD Archive Manifest ... Test objective: The objective is to test that GET method reads the content of the manifest file within an NSD archive ... Pre-conditions: One or more NSDs are onboarded in the NFVO. @@ -21,7 +21,7 @@ Get NSD Archive Manifest Check HTTP Response Header Content-Type Is text/plain Get NSD Archive Manifest with security information - [Documentation] Test ID: 5.3.1.11.2 + [Documentation] Test ID: 5.3.1.12.2 ... Test title: Get NSD Archive Manifest with security information ... Test objective: The objective is to test the retrieval of content of the manifest file within an NSD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more NSDs are onboarded in the NFVO. @@ -34,7 +34,7 @@ Get NSD Archive Manifest with security information Check HTTP Response Header Content-Type Is application/zip Get NSD Archive Manifest with conflict due to onboarding state - [Documentation] Test ID: 5.3.1.11.3 + [Documentation] Test ID: 5.3.1.12.3 ... Test title: Get NSD Archive Manifest with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of content of the manifest file within an NSD archive fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD is different from ONBOARDED. @@ -47,7 +47,7 @@ Get NSD Archive Manifest with conflict due to onboarding state Check HTTP Response Body Json Schema Is ProblemDetails POST NSD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.11.4 + [Documentation] Test ID: 5.3.1.12.4 ... Test title: POST NSD Archive Manifest - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor Archive Manifest ... Pre-conditions: none @@ -59,7 +59,7 @@ POST NSD Archive Manifest - Method not implemented Check HTTP Response Status Code Is 405 PUT NSD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.11.5 + [Documentation] Test ID: 5.3.1.12.5 ... Test title: PUT NSD Archive Manifest - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest ... Pre-conditions: none @@ -71,7 +71,7 @@ PUT NSD Archive Manifest - Method not implemented Check HTTP Response Status Code Is 405 PATCH NSD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.11.6 + [Documentation] Test ID: 5.3.1.12.6 ... Test title: PATCH NSD Archive Manifest - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest ... Pre-conditions: none @@ -83,7 +83,7 @@ PATCH NSD Archive Manifest - Method not implemented Check HTTP Response Status Code Is 405 DELETE NSD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.11.7 + [Documentation] Test ID: 5.3.1.12.7 ... Test title: DELETE NSD Archive Manifest - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor Archive Manifest ... Pre-conditions: none diff --git a/SOL005/NSDManagement-API/PNFD.robot b/SOL005/NSDManagement-API/PNFD.robot index a6fb7b6c8..342fefbcd 100644 --- a/SOL005/NSDManagement-API/PNFD.robot +++ b/SOL005/NSDManagement-API/PNFD.robot @@ -9,7 +9,7 @@ Library OperatingSystem *** Test Cases *** Get single file PNFD in Plain Format - [Documentation] Test ID: 5.3.1.12.1 + [Documentation] Test ID: 5.3.1.13.1 ... Test title: Get single file PNFD in Plain Format ... Test objective: The objective is to test the retrieval of the PNFD in plain format within a PNFD archive and perform a validation that returned content is in plain format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -22,7 +22,7 @@ Get single file PNFD in Plain Format Check HTTP Response Header Content-Type Is text/plain Get PNFD in Zip Format - [Documentation] Test ID: 5.3.1.12.2 + [Documentation] Test ID: 5.3.1.13.2 ... Test title: Get PNFD in Zip Format ... Test objective: The objective is to test the retrieval of the PNFD in zip format within a PNFD archive and perform a validation that returned content is in zip format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -35,7 +35,7 @@ Get PNFD in Zip Format Check HTTP Response Header Content-Type Is application/zip Get single file PNFD in Plain or Zip Format - [Documentation] Test ID: 5.3.1.12.3 + [Documentation] Test ID: 5.3.1.13.3 ... Test title: Get single file PNFDin Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that response is in Plain or Zip format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -48,7 +48,7 @@ Get single file PNFD in Plain or Zip Format Check HTTP Response Header Content-Type Is Any of text/plain application/zip Get multi file PNFD in Plain or Zip Format - [Documentation] Test ID: 5.3.1.12.4 + [Documentation] Test ID: 5.3.1.13.4 ... Test title: Get multi file PNFD in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -61,7 +61,7 @@ Get multi file PNFD in Plain or Zip Format Check HTTP Response Header Content-Type Is application/zip Get multi file PNFD in Plain Format - [Documentation] Test ID: 5.3.1.12.5 + [Documentation] Test ID: 5.3.1.13.5 ... Test title: Get multi file PNFD in Plain Format ... Test objective: The objective is to test that the retrieval of the multi file PNFD within a PNFD archive fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -74,7 +74,7 @@ Get multi file PNFD in Plain Format Check HTTP Response Body Json Schema Is ProblemDetails Get PNFD Content with invalid resource identifier - [Documentation] Test ID: 5.3.1.12.6 + [Documentation] Test ID: 5.3.1.13.6 ... Test title: Get PNFD Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails when using an invalid resource identifier ... Pre-conditions: none @@ -87,7 +87,7 @@ Get PNFD Content with invalid resource identifier Check HTTP Response Body Json Schema Is ProblemDetails Get PNFD with conflict due to onboarding state - [Documentation] Test ID: 5.3.1.12.7 + [Documentation] Test ID: 5.3.1.13.7 ... Test title: Get PNFD with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD is different from ONBOARDED. @@ -100,7 +100,7 @@ Get PNFD with conflict due to onboarding state Check HTTP Response Body Json Schema Is ProblemDetails Get PNFD with security information - [Documentation] Test ID: 5.3.1.12.8 + [Documentation] Test ID: 5.3.1.13.8 ... Test title: Get PNFD with security information ... Test objective: The objective is to test the retrieval of the PNFD within a PNFD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -113,7 +113,7 @@ Get PNFD with security information Check HTTP Response Header Content-Type Is application/zip POST PNFD - Method not implemented - [Documentation] Test ID: 5.3.1.12.9 + [Documentation] Test ID: 5.3.1.13.9 ... Test title: POST PNFD - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new PNFD ... Pre-conditions: none @@ -125,7 +125,7 @@ POST PNFD - Method not implemented Check HTTP Response Status Code Is 405 PUT PNFD - Method not implemented - [Documentation] Test ID: 5.3.1.12.10 + [Documentation] Test ID: 5.3.1.13.10 ... Test title: PUT PNFD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD ... Pre-conditions: none @@ -137,7 +137,7 @@ PUT PNFD - Method not implemented Check HTTP Response Status Code Is 405 PATCH PNFD - Method not implemented - [Documentation] Test ID: 5.3.1.12.11 + [Documentation] Test ID: 5.3.1.13.11 ... Test title: PATCH PNFD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD ... Pre-conditions: none @@ -149,7 +149,7 @@ PATCH PNFD - Method not implemented Check HTTP Response Status Code Is 405 DELETE PNFD - Method not implemented - [Documentation] Test ID: 5.3.1.12.12 + [Documentation] Test ID: 5.3.1.13.12 ... Test title: DELETE PNFD - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete PNFD ... Pre-conditions: none diff --git a/SOL005/NSDManagement-API/PNFDArchiveManifest.robot b/SOL005/NSDManagement-API/PNFDArchiveManifest.robot index 876c862c2..a2adf90a4 100644 --- a/SOL005/NSDManagement-API/PNFDArchiveManifest.robot +++ b/SOL005/NSDManagement-API/PNFDArchiveManifest.robot @@ -8,7 +8,7 @@ Library OperatingSystem *** Test Cases *** Get PNFD Archive Manifest - [Documentation] Test ID: 5.3.1.13.1 + [Documentation] Test ID: 5.3.1.14.1 ... Test title: Get PNFD Archive Manifest ... Test objective: The objective is to test that GET method reads the content of the manifest file within an PNFD archive ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -21,7 +21,7 @@ Get PNFD Archive Manifest Check HTTP Response Header Content-Type Is text/plain Get PNFD Archive Manifest with security information - [Documentation] Test ID: 5.3.1.13.2 + [Documentation] Test ID: 5.3.1.14.2 ... Test title: Get PNFD Archive Manifest with security information ... Test objective: The objective is to test the retrieval of content of the manifest file within an PNFD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. @@ -34,7 +34,7 @@ Get PNFD Archive Manifest with security information Check HTTP Response Header Content-Type Is application/zip Get PNFD Archive Manifest with conflict due to onboarding state - [Documentation] Test ID: 5.3.1.13.3 + [Documentation] Test ID: 5.3.1.14.3 ... Test title: Get PNFD Archive Manifest with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of content of the manifest file within an PNFD archive fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD is different from ONBOARDED. @@ -47,7 +47,7 @@ Get PNFD Archive Manifest with conflict due to onboarding state Check HTTP Response Body Json Schema Is ProblemDetails POST PNFD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.13.4 + [Documentation] Test ID: 5.3.1.14.4 ... Test title: POST PNFD Archive Manifest - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor Archive Manifest ... Pre-conditions: none @@ -59,7 +59,7 @@ POST PNFD Archive Manifest - Method not implemented Check HTTP Response Status Code Is 405 PUT PNFD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.13.5 + [Documentation] Test ID: 5.3.1.14.5 ... Test title: PUT PNFD Archive Manifest - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest ... Pre-conditions: none @@ -71,7 +71,7 @@ PUT PNFD Archive Manifest - Method not implemented Check HTTP Response Status Code Is 405 PATCH PNFD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.13.6 + [Documentation] Test ID: 5.3.1.14.6 ... Test title: PATCH PNFD Archive Manifest - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest ... Pre-conditions: none @@ -83,7 +83,7 @@ PATCH PNFD Archive Manifest - Method not implemented Check HTTP Response Status Code Is 405 DELETE PNFD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.13.7 + [Documentation] Test ID: 5.3.1.14.7 ... Test title: DELETE PNFD Archive Manifest - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor Archive Manifest ... Pre-conditions: none -- GitLab From ee93c12714f7d2b03058bda4db5f984282769065 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 9 Nov 2020 12:16:19 +0500 Subject: [PATCH 150/580] New Resource NotificationConsumer added --- .../NotificationConsumer.robot | 185 ++++++++++++++++++ .../environment/variables.txt | 2 + .../notifications/NsdChangeNotification.json | 11 +- .../NsdDeletionNotification.json | 10 +- .../NsdOnBoardingFailureNotification.json | 10 +- .../NsdOnBoardingNotification.json | 17 +- .../PnfdDeletionNotification.json | 10 +- .../PnfdOnBoardingFailureNotification.json | 11 +- .../PnfdOnBoardingNotification.json | 10 +- 9 files changed, 252 insertions(+), 14 deletions(-) create mode 100644 SOL005/NSDManagement-API/NotificationConsumer.robot diff --git a/SOL005/NSDManagement-API/NotificationConsumer.robot b/SOL005/NSDManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..c2be1b866 --- /dev/null +++ b/SOL005/NSDManagement-API/NotificationConsumer.robot @@ -0,0 +1,185 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library OperatingSystem +Library JSONLibrary +Library String +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +NSD Onboarding Notification + [Documentation] Test ID: 5.3.1.15.1 + ... Test title: NSD Onboarding Notification + ... Test objective: The objective is to test that NSD Onboarding Notification is delivered with success to the notification consumer. + ... Pre-conditions: A NSD management subscription for onboarding notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post NSD Onboarding Notification + Check HTTP Response Status Code Is 204 + +NSD Onboarding Failure Notification + [Documentation] Test ID: 5.3.1.15.2 + ... Test title: NSD Onboarding Failure Notification + ... Test objective: The objective is to test that NSD Onboarding Failure Notification is delivered with success to the notification consumer. + ... Pre-conditions: A NSD management subscription for onboarding failure notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post NSD Onboarding Failure Notification + Check HTTP Response Status Code Is 204 + +NSD Change Notification + [Documentation] Test ID: 5.3.1.15.3 + ... Test title: NSD Change Notification + ... Test objective: The objective is to test that NSD Change Notification is delivered with success to the notification consumer. + ... Pre-conditions: A NSD management subscription for change notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post NSD Change Notification + Check HTTP Response Status Code Is 204 + +NSD Deletion Notification + [Documentation] Test ID: 5.3.1.15.4 + ... Test title: NSD Deletion Notification + ... Test objective: The objective is to test that NSD Deletion Notification is delivered with success to the notification consumer. + ... Pre-conditions: A NSD management subscription for deletion notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post NSD Deletion Notification + Check HTTP Response Status Code Is 204 + +Pnfd Onboarding Notification + [Documentation] Test ID: 5.3.1.15.5 + ... Test title: Pnfd Onboarding Notification + ... Test objective: The objective is to test that Pnfd Onboarding Notification is delivered with success to the notification consumer. + ... Pre-conditions: A Pnfd management subscription for onboarding notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Pnfd Onboarding Notification + Check HTTP Response Status Code Is 204 + +Pnfd Onboarding Failure Notification + [Documentation] Test ID: 5.3.1.15.6 + ... Test title: Pnfd Onboarding Failure Notification + ... Test objective: The objective is to test that Pnfd Onboarding Failure Notification is delivered with success to the notification consumer. + ... Pre-conditions: A Pnfd management subscription for onboarding failure notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Pnfd Onboarding Failure Notification + Check HTTP Response Status Code Is 204 + +Pnfd Deletion Notification + [Documentation] Test ID: 5.3.1.15.7 + ... Test title: pnfd Deletion Notification + ... Test objective: The objective is to test that Pnfd Deletion Notification is delivered with success to the notification consumer. + ... Pre-conditions: A Pnfd management subscription for deletion notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Pnfd Deletion Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body PkgmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post NSD Onboarding Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/notifications/NsdOnBoardingNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post NSD Onboarding Failure Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/notifications/NsdOnBoardingFailureNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post NSD Change Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/notifications/NsdChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post NSD Deletion Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/notifications/NsdDeletionNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Pnfd Onboarding Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/notifications/PnfdOnBoardingNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} pnfdInfoId=${pnfdInfoId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Pnfd Onboarding Failure Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/notifications/PnfdOnBoardingFailureNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} pnfdInfoId=${pnfdInfoId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Pnfd Deletion Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/notifications/pnfdDeletionNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} pnfdInfoId=${pnfdInfoId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index ad6a34beb..b837bc7c5 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -90,3 +90,5 @@ ${userDefinedDataSet} some ${notifCallbackUri} http://172.22.1.7:9091/nsd/subscriptions ${filter_ok} callbackUri=${notifCallbackUri} ${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based + +${callbackResp} 127.0.0.1 \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/notifications/NsdChangeNotification.json b/SOL005/NSDManagement-API/jsons/notifications/NsdChangeNotification.json index 9e26dfeeb..349ca5465 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/NsdChangeNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/NsdChangeNotification.json @@ -1 +1,10 @@ -{} \ No newline at end of file +{{ + "id":"", + "notificationType":"NsdChangeNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "nsdInfoId":"{nsdInfoId}", + "nsdId":"", + "nsdOperationalState":"ENABLED", + "_links":"" +}} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/notifications/NsdDeletionNotification.json b/SOL005/NSDManagement-API/jsons/notifications/NsdDeletionNotification.json index 9e26dfeeb..6909a5c25 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/NsdDeletionNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/NsdDeletionNotification.json @@ -1 +1,9 @@ -{} \ No newline at end of file +{{ + "id":"", + "notificationType":"NsdDeletionNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "nsdInfoId":"{nsdInfoId}", + "nsdId":"", + "_links":"" +}} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingFailureNotification.json b/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingFailureNotification.json index 9e26dfeeb..80cb4e8b6 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingFailureNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingFailureNotification.json @@ -1 +1,9 @@ -{} \ No newline at end of file +{{ + "id":"", + "notificationType":"NsdOnboardingFailureNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "nsdInfoId":"{nsdInfoId}", + "onboardingFailureDetails":"", + "_links":"" +}} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingNotification.json b/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingNotification.json index 7266cf06d..5b9b4a221 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingNotification.json @@ -1,8 +1,9 @@ -{ -"_links": "", -"id": "", -"notificationType": "", -"nsdId": "", -"nsdInfoId": "", -"timeStamp": "" -} +{{ + "id":"", + "notificationType":"NsdOnboardingNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "nsdInfoId":"{nsdInfoId}", + "nsdId":"", + "_links":"" +}} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/notifications/PnfdDeletionNotification.json b/SOL005/NSDManagement-API/jsons/notifications/PnfdDeletionNotification.json index 9e26dfeeb..c357d5527 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/PnfdDeletionNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/PnfdDeletionNotification.json @@ -1 +1,9 @@ -{} \ No newline at end of file +{{ + "id":"", + "notificationType":"PnfdDeletionNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "pnfdInfoId":"{pnfdInfoId}", + "pnfdId":"", + "_links":"" +}} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/notifications/PnfdOnBoardingFailureNotification.json b/SOL005/NSDManagement-API/jsons/notifications/PnfdOnBoardingFailureNotification.json index 9e26dfeeb..57f5fc775 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/PnfdOnBoardingFailureNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/PnfdOnBoardingFailureNotification.json @@ -1 +1,10 @@ -{} \ No newline at end of file +{{ + "id":"", + "notificationType":"PnfdOnboardingFailureNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "pnfdInfoId":"{pnfdInfoId}", + "pnfdId":"", + "onboardingFailureDetails":"", + "_links":"" +}} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/notifications/PnfdOnBoardingNotification.json b/SOL005/NSDManagement-API/jsons/notifications/PnfdOnBoardingNotification.json index 9e26dfeeb..4c2fbbb8b 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/PnfdOnBoardingNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/PnfdOnBoardingNotification.json @@ -1 +1,9 @@ -{} \ No newline at end of file +{{ + "id":"", + "notificationType":"PnfdOnboardingNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "pnfdInfoId":"{pnfdInfoId}", + "pnfdId":"", + "_links":"" +}} \ No newline at end of file -- GitLab From c90050ba7a35778c2f122024a1138a1b0aff4f21 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 9 Nov 2020 12:59:55 +0500 Subject: [PATCH 151/580] New Resource NotificationConsumer added --- .../NotificationConsumer.robot | 94 +++++++++++++++++++ .../environment/variables.txt | 4 +- .../NsIdentifierCreationNotification.json | 8 ++ .../NsIdentifierDeletionNotification.json | 8 ++ .../NsLcmOperationOccurrenceNotification.json | 13 +++ 5 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 SOL005/NSLifecycleManagement-API/NotificationConsumer.robot create mode 100644 SOL005/NSLifecycleManagement-API/jsons/NsIdentifierCreationNotification.json create mode 100644 SOL005/NSLifecycleManagement-API/jsons/NsIdentifierDeletionNotification.json create mode 100644 SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json diff --git a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..6cc466661 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot @@ -0,0 +1,94 @@ +*** Settings *** +Library String +Resource environment/variables.txt +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +Ns Lcm Operation Occurrence Notification + [Documentation] Test ID: 5.3.2.26.1 + ... Test title: Ns Lcm Operation Occurrence Notification + ... Test objective: The objective is to test that Ns Lcm Operation Occurrence Notification is delivered with success to the notification consumer. + ... Pre-conditions: A subscription for NS LCM Operation Occurrence notifications is available in the NFVO. + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Ns Lcm Operation Occurrence Notification + Check HTTP Response Status Code Is 204 + +Ns Identifier Creation Notification + [Documentation] Test ID: 5.3.2.26.2 + ... Test title: Ns Identifier Creation Notification + ... Test objective: The objective is to test that Ns Identifier Creation Notification is delivered with success to the notification consumer. + ... Pre-conditions: A subscription for Ns Identifier Creation notification is available in the NFVO. + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Ns Identifier Creation Notification + Check HTTP Response Status Code Is 204 + +Ns Identifier Deletion Notification + [Documentation] Test ID: 5.3.2.26.3 + ... Test title: Ns Identifier Deletion Notification + ... Test objective: The objective is to test that Ns Identifier Deletion Notification is delivered with success to the notification consumer. + ... Pre-conditions: A subscription for Ns Identifier Deletion notification is available in the NFVO. + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Ns Identifier Deletion Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body subscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Ns Lcm Operation Occurrence Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/NsLcmOperationOccurrenceNotification.json + ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Ns Identifier Creation Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/NsIdentifierCreationNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsInstanceId=${nsInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Ns Identifier Deletion Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/NsIdentifierDeletionNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsInstanceId=${nsInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index c9c31a4ce..02b7d79a8 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -74,4 +74,6 @@ ${Etag_modified}= a modified etag ${NEG_FILTER} attribute_not_exist=some_value ${NEG_SELECTOR} fields=wrong_field -${json} {"notificationStatus": ""} \ No newline at end of file +${json} {"notificationStatus": ""} + +${callbackResp} 127.0.0.1 \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/NsIdentifierCreationNotification.json b/SOL005/NSLifecycleManagement-API/jsons/NsIdentifierCreationNotification.json new file mode 100644 index 000000000..152d85523 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/jsons/NsIdentifierCreationNotification.json @@ -0,0 +1,8 @@ +{{ + "id":"", + "notificationType":"NsIdentifierCreationNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "nsInstanceId":"{nsInstanceId}", + "_links":"" +}} diff --git a/SOL005/NSLifecycleManagement-API/jsons/NsIdentifierDeletionNotification.json b/SOL005/NSLifecycleManagement-API/jsons/NsIdentifierDeletionNotification.json new file mode 100644 index 000000000..320d5ee3b --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/jsons/NsIdentifierDeletionNotification.json @@ -0,0 +1,8 @@ +{{ + "id":"", + "notificationType":"NsIdentifierDeletionNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "nsInstanceId":"{nsInstanceId}", + "_links":"" +}} diff --git a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json new file mode 100644 index 000000000..d5ed27cba --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json @@ -0,0 +1,13 @@ +{{ + "id":"", + "nsInstanceId":"{nsInstanceId}", + "nsLcmOpOccId":"{nsLcmOpOccId}" + "operation":"INSTANTIATE", + "notificationType":"NsLcmOperationOccurrenceNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "notificationStatus":"START", + "operationState":"PROCESSING", + "isAutomaticInvocation":"True", + "_links":"" +}} -- GitLab From 96b2fe77215d219dd6292b334a3dec5a907162e9 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 9 Nov 2020 15:39:07 +0500 Subject: [PATCH 152/580] New Resource NotificationConsumer added --- .../ApiVersion.robot | 2 +- .../NotificationConsumer.robot | 68 +++++++++++++++++++ .../environment/variables.txt | 2 + ...manceInformationAvailableNotification.json | 4 +- .../jsons/ThresholdCrossedNotification.json | 3 +- 5 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 SOL005/NSPerformanceManagement-API/NotificationConsumer.robot diff --git a/SOL005/NSPerformanceManagement-API/ApiVersion.robot b/SOL005/NSPerformanceManagement-API/ApiVersion.robot index 438bcd408..8e6fa0beb 100644 --- a/SOL005/NSPerformanceManagement-API/ApiVersion.robot +++ b/SOL005/NSPerformanceManagement-API/ApiVersion.robot @@ -9,7 +9,7 @@ Library JSONSchemaLibrary schemas/ *** Test Cases *** POST API Version - Method not implemented - [Documentation] Test ID: 5.3.4.9.1 + [Documentation] Test ID: 5.3.4.10.1 ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none diff --git a/SOL005/NSPerformanceManagement-API/NotificationConsumer.robot b/SOL005/NSPerformanceManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..d4efbea11 --- /dev/null +++ b/SOL005/NSPerformanceManagement-API/NotificationConsumer.robot @@ -0,0 +1,68 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Library String +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +NS Performance Information Availability Notification + [Documentation] Test ID: 5.3.4.10.1 + ... Test title: NS Performance Information Availability Notification + ... Test objective: The objective is to test that NS Performance Information Availability Notification is delivered with success to the notification consumer + ... Pre-conditions: A NS performance job is created, and information availability notifications is available in the NFVO. + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post NS Performance Information Availability Notification + Check HTTP Response Status Code Is 204 + +NS Threshold Crossed Notification + [Documentation] Test ID: 5.3.4.10.2 + ... Test title: NS Threshold Crossed Notification + ... Test objective: The objective is to test that NS Threshold Crossed Notification is delivered with success to the notification consumer + ... Pre-conditions: A NS performance job is created, and threshold crossed notifications is available in the NFVO. + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post NS Threshold Crossed Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + Integer response status 200 + Validate Json response body PmJob.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post NS Performance Information Availability Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body} = Get File jsons/PerformanceInformationAvailableNotification.json + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post NS Threshold Crossed Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body} = Get File jsons/ThresholdCrossedNotification.json + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/environment/variables.txt b/SOL005/NSPerformanceManagement-API/environment/variables.txt index 932a511d1..b2e1aacbd 100644 --- a/SOL005/NSPerformanceManagement-API/environment/variables.txt +++ b/SOL005/NSPerformanceManagement-API/environment/variables.txt @@ -64,3 +64,5 @@ ${newReportId} newReportId ${FILTER_OK_Threshold} objectInstanceId=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a ${FILTER_KO} criterias=erroneousFilter ${SEPERATOR} = + +${callbackResp} 127.0.0.1 \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/jsons/PerformanceInformationAvailableNotification.json b/SOL005/NSPerformanceManagement-API/jsons/PerformanceInformationAvailableNotification.json index cbe45fa78..675d38d77 100644 --- a/SOL005/NSPerformanceManagement-API/jsons/PerformanceInformationAvailableNotification.json +++ b/SOL005/NSPerformanceManagement-API/jsons/PerformanceInformationAvailableNotification.json @@ -1,13 +1,11 @@ { "id": "id", "notificationType" : "PerformanceInformationAvailableNotification", - "subscriptionId ": "subscriptionId", "timeStamp": "2012-04-21T18:25:43-05:00", "objectInstanceId": "vnfID", "_links": { - "subscription": "link to subscription", + "objectInstance": "link to instance", "pmJob" : "link to PMJob", "performanceReport": "link to PerformanceReport" } - } \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/jsons/ThresholdCrossedNotification.json b/SOL005/NSPerformanceManagement-API/jsons/ThresholdCrossedNotification.json index e2dcdec9f..a92f914d5 100644 --- a/SOL005/NSPerformanceManagement-API/jsons/ThresholdCrossedNotification.json +++ b/SOL005/NSPerformanceManagement-API/jsons/ThresholdCrossedNotification.json @@ -1,7 +1,6 @@ { "id": "id", "notificationType": "ThresholdCrossedNotification", - "subscriptionId ": "subscriptionId", "timeStamp": "2012-04-21T18:25:43-05:00", "thresholdId": "thresholdId", "crossingDirection": "UP", @@ -9,7 +8,7 @@ "performanceMetric": "performanceMetric", "performanceValue": 7, "_links": { - "subscription": "link to subscription", + "objectInstance": "objectInstance", "threshold": "link to threshold" } -- GitLab From c7ee42cc6ffc18874d817eb16a3a642507bd7584 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 10 Nov 2020 12:14:35 +0500 Subject: [PATCH 153/580] New Resource NotificationConsumer added --- .../NotificationConsumer.robot | 93 +++++++++++++++++++ .../environment/variables.txt | 2 + .../jsons/AlarmClearedNotification.json | 12 +++ .../jsons/AlarmListRebuiltNotification.json | 10 ++ .../jsons/AlarmNotification.json | 13 +++ 5 files changed, 130 insertions(+) create mode 100644 SOL005/NSFaultManagement-API/NotificationConsumer.robot create mode 100644 SOL005/NSFaultManagement-API/jsons/AlarmClearedNotification.json create mode 100644 SOL005/NSFaultManagement-API/jsons/AlarmListRebuiltNotification.json create mode 100644 SOL005/NSFaultManagement-API/jsons/AlarmNotification.json diff --git a/SOL005/NSFaultManagement-API/NotificationConsumer.robot b/SOL005/NSFaultManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..eaeb2cc10 --- /dev/null +++ b/SOL005/NSFaultManagement-API/NotificationConsumer.robot @@ -0,0 +1,93 @@ +*** Settings *** +Library String +Library OperatingSystem +Resource environment/variables.txt +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +NS Fault Alarm Notification + [Documentation] Test ID: 5.3.3.7.1 + ... Test title: NS Fault Alarm Notification + ... Test objective: The objective is to test that NS Fault Alarm Notification is delivered with success to the notification consumer + ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm notifications is available in the NFVO. + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Alarm Notification + Check HTTP Response Status Code Is 204 + +NS Fault Alarm Cleared Notification + [Documentation] Test ID: 5.3.3.7.2 + ... Test title: NS Fault Alarm Cleared Notification + ... Test objective: The objective is to test that NS Fault Alarm Cleared Notification is delivered with success to the notification consumer + ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm cleared notifications is available in the NFVO. + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Alarm Cleared Notification + Check HTTP Response Status Code Is 204 + +NS Fault Alarm List Rebuilt Notification + [Documentation] Test ID: 5.3.3.7.3 + ... Test title: NS Fault Alarm List Rebuilt Notification + ... Test objective: The objective is to test that NS Fault Alarm List Rebuilt Notification is delivered with success to the notification consumer + ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the NFVO. + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Alarm List Rebuilt Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body FmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Alarm Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/AlarmNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm Cleared Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/AlarmClearedNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm List Rebuilt Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/AlarmListRebuiltNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/environment/variables.txt b/SOL005/NSFaultManagement-API/environment/variables.txt index 78e923fd0..848b78e97 100644 --- a/SOL005/NSFaultManagement-API/environment/variables.txt +++ b/SOL005/NSFaultManagement-API/environment/variables.txt @@ -62,3 +62,5 @@ ${polling_interval} 10 sec ${notification_request} [] ${notification_response} [] + +${callbackResp} 127.0.0.1 diff --git a/SOL005/NSFaultManagement-API/jsons/AlarmClearedNotification.json b/SOL005/NSFaultManagement-API/jsons/AlarmClearedNotification.json new file mode 100644 index 000000000..3ac4bfcce --- /dev/null +++ b/SOL005/NSFaultManagement-API/jsons/AlarmClearedNotification.json @@ -0,0 +1,12 @@ +{{ + "id":"", + "notificationType":"AlarmClearedNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "alarmId":"{alarmId}", + "alarmClearedTime":"", + "_links":{{ + "subscription":"", + "alarm":"" + }} +}} diff --git a/SOL005/NSFaultManagement-API/jsons/AlarmListRebuiltNotification.json b/SOL005/NSFaultManagement-API/jsons/AlarmListRebuiltNotification.json new file mode 100644 index 000000000..5babd1166 --- /dev/null +++ b/SOL005/NSFaultManagement-API/jsons/AlarmListRebuiltNotification.json @@ -0,0 +1,10 @@ +{{ + "id":"", + "notificationType":"AlarmListRebuiltNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "_links":{{ + "subscription":"", + "alarm":"" + }} +}} \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/jsons/AlarmNotification.json b/SOL005/NSFaultManagement-API/jsons/AlarmNotification.json new file mode 100644 index 000000000..2a8e86425 --- /dev/null +++ b/SOL005/NSFaultManagement-API/jsons/AlarmNotification.json @@ -0,0 +1,13 @@ +{{ + "id":"", + "notificationType":"AlarmNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "alarm":{{ + "id":"", + "managedObjectId":"" + }}, + "_links":{{ + "subscription":"" + }} +}} -- GitLab From 4082ae7a7d58d8d992aa1aec1b046c693b44c73a Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 10 Nov 2020 15:56:01 +0500 Subject: [PATCH 154/580] New Resource NotificationConsumer added --- .../NotificationConsumer.robot | 70 +++++++++++++++++++ .../environment/variables.txt | 3 +- .../jsons/VnfPackageChangeNotification.json | 10 +++ .../VnfPackageOnboardingNotification.json | 10 +++ 4 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 SOL005/VNFPackageManagement-API/NotificationConsumer.robot create mode 100644 SOL005/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json create mode 100644 SOL005/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json diff --git a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..b32b7f822 --- /dev/null +++ b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot @@ -0,0 +1,70 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library OperatingSystem +Library JSONLibrary +Library String +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Package Onboarding Notification + [Documentation] Test ID: 5.3.5.13.1 + ... Test title: VNF Package Onboarding Notification + ... Test objective: The objective is to test that VNF Package Onboarding Notification is delivered with success to the notification consumer + ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post VNF Package Onboarding Notification + Check HTTP Response Status Code Is 204 + +VNF Package Change Notification + [Documentation] Test ID: 5.3.5.13.2 + ... Test title: VNF Package Change Notification + ... Test objective: The objective is to test that VNF Package Change Notification is delivered with success to the notification consumer + ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post VNF Package Change Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body PkgmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post VNF Package Onboarding Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfPackageOnboardingNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Package Change Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfPackageChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index d24c5f559..2bd7dd7e9 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -83,4 +83,5 @@ ${creatingVnfPkgViaUriId} d246ccdd-71aa-402f-b256-6a80ee54be3d ${vnfPkgUri} http://localhost/content.zip ${NFVO_non-MANO_OK} 1 # If 1 means that non-MANO artifacts are supported by the NFVO -${non_mano_artifact_sets} \ No newline at end of file +${non_mano_artifact_sets} +${callbackResp} 127.0.0.1 \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json b/SOL005/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json new file mode 100644 index 000000000..103545205 --- /dev/null +++ b/SOL005/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json @@ -0,0 +1,10 @@ +{{ + "id":"", + "notificationType":"VnfPackageChangeNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "vnfPkgId":"{vnfPkgId}", + "vnfdId":"", + "changeType":"PKG_DELETE", + "_links":"" +}} diff --git a/SOL005/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json b/SOL005/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json new file mode 100644 index 000000000..08fdbf7cd --- /dev/null +++ b/SOL005/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json @@ -0,0 +1,10 @@ +{{ + "id":"", + "notificationType":"VnfPackageOnboardingNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "vnfPkgId":"{vnfPkgId}", + "vnfdId":"", + "vnfmInfo":"", + "_links":"" +}} -- GitLab From 28538b3a12cda2bf1ef8cc1638259e44ba49c0d1 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 11 Nov 2020 12:51:19 +0500 Subject: [PATCH 155/580] objective updated --- .../NotificationConsumer.robot | 56 +++++++++++++++---- .../VnfLcmOperationKeywords.robot | 35 +----------- 2 files changed, 46 insertions(+), 45 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot b/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot index e38d09f5d..2a81c1142 100644 --- a/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot @@ -1,4 +1,5 @@ *** Settings *** +Library String Resource environment/variables.txt Resource VnfLcmOperationKeywords.robot Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false @@ -9,36 +10,36 @@ Suite Setup Check resource existence and get CallbackUri *** Test Cases *** VNF LCM Operation Occurrence Notification - [Documentation] Test ID: 6.3.5.20.1 + [Documentation] Test ID: 6.3.5.21.1 ... Test title: VNF LCM Operation Occurrence Start Notification - ... Test objective: The objective is to test that the POST request triggers VNF LCM Operation Occurrence Start Notification + ... Test objective: The objective is to test that VNF LCM Operation Occurrence Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post VNF LCM Operation Occurrence Notification Check HTTP Response Status Code Is 204 VNF Identifier Creation Notification - [Documentation] Test ID: 6.3.5.20.2 + [Documentation] Test ID: 6.3.5.21.2 ... Test title: VNF Identifier Creation Notification - ... Test objective: The objective is to test that the POST request triggers VNF Identifier Creation Notification + ... Test objective: The objective is to test that VNF Identifier Creation Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for VNF Identifier Creation Notification is available in the VNFM. ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post VNF Identifier Creation Notification Check HTTP Response Status Code Is 204 VNF Identifier Deletion Notification - [Documentation] Test ID: 6.3.5.20.3 + [Documentation] Test ID: 6.3.5.21.3 ... Test title: VNF Identifier Deletion Notification - ... Test objective: The objective is to test that the POST request triggers VNF Identifier Deletion Notification + ... Test objective: The objective is to test that VNF Identifier Deletion Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for VNF Identifier Deletion Notification is available in the VNFM. ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post VNF Identifier Deletion Notification @@ -51,5 +52,38 @@ Check resource existence and get CallbackUri Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 - Validate Json response body subscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri \ No newline at end of file + Validate Json response body Subscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Post VNF LCM Operation Occurrence Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfLcmOperationOccurrenceNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Identifier Creation Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfIdentifierCreationNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Identifier Deletion Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/VnfIdentifierDeletionNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 895957386..210784c18 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -1015,37 +1015,4 @@ 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} - -Post VNF LCM Operation Occurrence Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/VnfLcmOperationOccurrenceNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post VNF Identifier Creation Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/VnfIdentifierCreationNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post VNF Identifier Deletion Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/VnfIdentifierDeletionNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Should Not Be Empty ${linkURL} \ No newline at end of file -- GitLab From c3e0ccfe1fd2b9c6458db75e90ddcb7e6c404f9c Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 11 Nov 2020 12:55:54 +0500 Subject: [PATCH 156/580] TIDs fixed in ApiVersion --- .../ApiVersion.robot | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot index 5832a7af2..2196cd1fc 100644 --- a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot @@ -7,7 +7,7 @@ Library JSONSchemaLibrary schemas/ *** Test Cases *** POST API Version - Method not implemented - [Documentation] Test ID: 6.3.2.7.1 + [Documentation] Test ID: 6.3.3.9.1 ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -19,7 +19,7 @@ POST API Version - Method not implemented Check HTTP Response Status Code Is 405 GET API Version - [Documentation] Test ID: 6.3.2.7.2 + [Documentation] Test ID: 6.3.3.9.2 ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none @@ -32,7 +32,7 @@ GET API Version Check HTTP Response Body Json Schema Is ApiVersionInformation PUT API Version - Method not implemented - [Documentation] Test ID: 6.3.2.7.3 + [Documentation] Test ID: 6.3.3.9.3 ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -44,7 +44,7 @@ PUT API Version - Method not implemented Check HTTP Response Status Code Is 405 PATCH API Version - Method not implemented - [Documentation] Test ID: 6.3.2.7.4 + [Documentation] Test ID: 6.3.3.9.4 ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -56,7 +56,7 @@ PATCH API Version - Method not implemented Check HTTP Response Status Code Is 405 DELETE API Version - Method not implemented - [Documentation] Test ID: 6.3.2.7.5 + [Documentation] Test ID: 6.3.3.9.5 ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none @@ -68,7 +68,7 @@ DELETE API Version - Method not implemented Check HTTP Response Status Code Is 405 POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.2.7.6 + [Documentation] Test ID: 6.3.3.9.6 ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -80,7 +80,7 @@ POST API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 GET API Version with apiMajorVerion - [Documentation] Test ID: 6.3.2.7.7 + [Documentation] Test ID: 6.3.3.9.7 ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none @@ -93,7 +93,7 @@ GET API Version with apiMajorVerion Check HTTP Response Body Json Schema Is ApiVersionInformation PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.2.7.8 + [Documentation] Test ID: 6.3.3.9.8 ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -105,7 +105,7 @@ PUT API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.2.7.9 + [Documentation] Test ID: 6.3.3.9.9 ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -117,7 +117,7 @@ PATCH API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.2.7.10 + [Documentation] Test ID: 6.3.3.9.10 ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none -- GitLab From 7ab89517115bb11d27a5a400f0ed73919bdc76ba Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 11 Nov 2020 12:58:45 +0500 Subject: [PATCH 157/580] objective updated --- .../NotificationConsumer.robot | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot index e2fae0d06..ed697e43e 100644 --- a/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot @@ -9,24 +9,24 @@ Suite Setup Check resource existence and get CallbackUri *** Test Cases *** VNF Performance Information Availability Notification - [Documentation] Test ID: 6.3.3.9.1 + [Documentation] Test ID: 6.3.3.10.1 ... Test title: VNF Performance Information Availability Notification - ... Test objective: The objective is to test that the POST request triggers VNF Performance Information Availability Notification + ... Test objective: The objective is to test that VNF Performance Information Availability Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post VNF Performance Information Availability Notification Check HTTP Response Status Code Is 204 VNF Threshold Crossed Notification - [Documentation] Test ID: 6.3.3.9.2 + [Documentation] Test ID: 6.3.3.10.2 ... Test title: VNF Threshold Crossed Notification - ... Test objective: The objective is to test that the POST request triggers VNF Threshold Crossed Notification + ... Test objective: The objective is to test that VNF Threshold Crossed Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF performance job is created, and a subscription for Threshold Crossed Notification is available in the VNFM. ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post VNF Threshold Crossed Notification -- GitLab From e56483bb0b2da4b77296ff89b193239fe52d6aac Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 11 Nov 2020 14:54:10 +0500 Subject: [PATCH 158/580] Object and TID's updated --- .../NotificationConsumer.robot | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/NotificationConsumer.robot b/SOL002/VNFFaultManagement-API/NotificationConsumer.robot index ae6d726f6..039fcec98 100644 --- a/SOL002/VNFFaultManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFFaultManagement-API/NotificationConsumer.robot @@ -9,36 +9,36 @@ Suite Setup Check resource existence and get CallbackUri *** Test Cases *** VNF Fault Alarm Notification - [Documentation] Test ID: 6.3.4.7.1 + [Documentation] Test ID: 6.3.4.8.1 ... Test title: VNF Fault Alarm Notification - ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Notification + ... Test objective: The objective is to test that VNF Fault Alarm Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post Alarm Notification Check HTTP Response Status Code Is 204 VNF Fault Alarm Cleared Notification - [Documentation] Test ID: 6.3.4.7.2 + [Documentation] Test ID: 6.3.4.8.2 ... Test title: VNF Fault Alarm Cleared Notification - ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Cleared Notification + ... Test objective: The objective is to test that VNF Fault Alarm Cleared Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post Alarm Cleared Notification Check HTTP Response Status Code Is 204 VNF Fault Alarm List Rebuilt Notification - [Documentation] Test ID: 6.3.4.7.3 + [Documentation] Test ID: 6.3.4.8.3 ... Test title: VNF Fault List Rebuilt Alarm List Rebuilt Notification - ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm List Rebuilt Notification + ... Test objective: The objective is to test that VNF Fault Alarm List Rebuilt Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post Alarm List Rebuilt Notification -- GitLab From 9d5b03c3292ced97394d116668d38c6d8af7668c Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Tue, 20 Oct 2020 13:56:18 +0200 Subject: [PATCH 159/580] Adding dockerized validation test --- .jenkins.sh | 15 ++++++++++ scripts/build-container.sh | 36 ++++++++++++++++++++++++ scripts/docker/Dockerfile | 53 ++++++++++++++++++++++++++++++++++++ scripts/launch-validation.sh | 8 ++++++ scripts/run-all.bash | 38 ++++++++++++++++++++++++++ scripts/run-container.sh | 14 ++++++++++ 6 files changed, 164 insertions(+) create mode 100644 .jenkins.sh create mode 100644 scripts/build-container.sh create mode 100644 scripts/docker/Dockerfile create mode 100644 scripts/launch-validation.sh create mode 100644 scripts/run-all.bash create mode 100644 scripts/run-container.sh diff --git a/.jenkins.sh b/.jenkins.sh new file mode 100644 index 000000000..ea4251e44 --- /dev/null +++ b/.jenkins.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# Copyright ETSI 2018 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +#set -vx +#set -e + +cd "$(dirname "$0")" + +run_dir="$(pwd)" + +./scripts/build-container.sh +./scripts/run-container.sh "${run_dir}" + +exit $? diff --git a/scripts/build-container.sh b/scripts/build-container.sh new file mode 100644 index 000000000..3c16489ba --- /dev/null +++ b/scripts/build-container.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# Copyright ETSI 2019 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +#set -e +set -vx + +DOCKER_FILE=./scripts/docker/Dockerfile +if [ -f ${DOCKER_FILE} ] +then + #check and build stf583-rf-validation image + DOCKER_ID=`docker ps -a | grep -e stf583-rf-validation | awk '{ print $1 }'` + if [ ! -z "${DOCKER_ID}" ] + then + docker rm --force stf583-rf-validation + fi + docker build --tag stf583-rf-validation --force-rm -f ${DOCKER_FILE} . + if [ "$?" != "0" ] + then + echo "Docker build failed: $?" + exit -1 + fi + docker image ls -a + docker inspect stf583-rf-validation:latest + if [ "$?" != "0" ] + then + echo "Docker inspect failed: $?" + exit -2 + fi +else + exit -3 +fi + +# That's all Floks +exit 0 + diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile new file mode 100644 index 000000000..e91f0fd85 --- /dev/null +++ b/scripts/docker/Dockerfile @@ -0,0 +1,53 @@ +FROM ubuntu:16.04 + +MAINTAINER ETSI STF 583 + +LABEL description="SFT583 Robot Framework Docker Image" + +ENV TERM=xterm +ENV HOSTNAME docker-robot-STF583 + + +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 + +RUN useradd --create-home --shell /bin/bash --user-group etsi --groups sudo \ + && echo "etsi:etsi" | chpasswd \ + && 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 + + +ADD . /home/etsi/dev/robot + +RUN pip3 install robotframework + +RUN DEBIAN_FRONTEND=noninteractive \ + && cd /home/etsi/dev/robot \ + && pip3 install -r requirements.txt \ + && chmod +x /home/etsi/dev/robot/scripts/* \ + && git clone https://github.com/etsi-cti-admin/robotframework-mockserver \ + && cd robotframework-mockserver \ + && patch -p1 < ../extensions/mockserverlibrary.patch \ + && python3 -m pip install -e . + +CMD tail -f /dev/null + + diff --git a/scripts/launch-validation.sh b/scripts/launch-validation.sh new file mode 100644 index 000000000..590305776 --- /dev/null +++ b/scripts/launch-validation.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +echo "Starting check on ROBOT CODE" + +for FILE in $(find . -name "*.robot"); do + echo "Syntax check on ${FILE}" + robot --dryrun -d /tmp ${FILE} +done diff --git a/scripts/run-all.bash b/scripts/run-all.bash new file mode 100644 index 000000000..793febd18 --- /dev/null +++ b/scripts/run-all.bash @@ -0,0 +1,38 @@ +#!/bin/bash + +## Launch robot tests validator + +mkdir logs + +/bin/bash scripts/launch-validation.sh > logs/robot_stdout.log 2> logs/robot_stderr.log + +## Filter failed Keywords +grep -r10n "| FAIL |" logs/robot_stdout.log | grep -v "Output:" | grep -v "Log:" | grep -v "Report:" > logs/failures.log +rm -f logs/robot_stdout.log + + +## Filter Errors on code +grep -rn " ERROR " logs/robot_stderr.log | grep -v "File has no tests or tasks" > logs/errors.log +rm -f logs/robot_stderr.log + + +ERRORS=`awk 'END{print NR}' logs/errors.log logs/failures.log` +if [ "${ERRORS}" -eq 0 ]; then + rm -f logs/errors.log + rm -f logs/failures.log +fi + + +if [ -f logs/errors.log ]; then + cat logs/errors.log +fi + +if [ -f logs/failures.log ]; then + cat logs/failures.log +fi + +if [ -f logs/erros.log ] || [ -f logs.failures.log ]; then + echo "Errors are found. Job failed" + exit 1 +fi + diff --git a/scripts/run-container.sh b/scripts/run-container.sh new file mode 100644 index 000000000..1d65d82e1 --- /dev/null +++ b/scripts/run-container.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# Copyright ETSI 2019 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +#set -e +#set -vx + +docker run stf583-rf-validation:latest "/bin/bash" \ + -c "cd /home/etsi/dev/robot \ + && sh scripts/validate.sh " + +# That's all Floks +exit $? + -- GitLab From 284499a7694f28a107ad647ef2a80d825548e1e2 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Thu, 12 Nov 2020 19:08:09 +0100 Subject: [PATCH 160/580] triggering cicd --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 656dc5202..185d1a400 100644 --- a/README.md +++ b/README.md @@ -28,3 +28,5 @@ Please report errors, bugs or other issues [here](https://forge.etsi.org/rep/nfv ETSI Forge uses Gitlab to manage submissions to the repository. For more information on setting up your environment and contributing, you may refer to the [ETSI Forge wiki](https://forge.etsi.org/wiki/index.php/Main_Page). + + -- GitLab From bec991e4a8e915e10d67ad5c2ca3e12e6a72a0d9 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Thu, 12 Nov 2020 19:09:06 +0100 Subject: [PATCH 161/580] Update .jenkins.sh --- .jenkins.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.jenkins.sh b/.jenkins.sh index ea4251e44..943fa9721 100644 --- a/.jenkins.sh +++ b/.jenkins.sh @@ -9,7 +9,7 @@ cd "$(dirname "$0")" run_dir="$(pwd)" -./scripts/build-container.sh -./scripts/run-container.sh "${run_dir}" +bash ./scripts/build-container.sh +bash ./scripts/run-container.sh "${run_dir}" exit $? -- GitLab From 8f16a87032e883e823d92d465d1f51fcd5ebc71a Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Thu, 12 Nov 2020 19:15:51 +0100 Subject: [PATCH 162/580] fix shell usage --- scripts/run-container.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/run-container.sh b/scripts/run-container.sh index 1d65d82e1..0e0cbebfa 100644 --- a/scripts/run-container.sh +++ b/scripts/run-container.sh @@ -7,7 +7,7 @@ docker run stf583-rf-validation:latest "/bin/bash" \ -c "cd /home/etsi/dev/robot \ - && sh scripts/validate.sh " + && bash scripts/validate.sh " # That's all Floks exit $? -- GitLab From 4226ccd4651399d3b8b8d42ecb7e1b608ee8d676 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Thu, 12 Nov 2020 22:11:32 +0100 Subject: [PATCH 163/580] bugfix --- .jenkins.sh | 4 +++- scripts/build-container.sh | 28 ++++++++++++++-------------- scripts/docker/Dockerfile | 11 +++++------ scripts/run-container.sh | 10 +++++----- scripts/validate.sh | 15 +++++++++++---- 5 files changed, 38 insertions(+), 30 deletions(-) diff --git a/.jenkins.sh b/.jenkins.sh index 943fa9721..3bad4e68f 100644 --- a/.jenkins.sh +++ b/.jenkins.sh @@ -12,4 +12,6 @@ run_dir="$(pwd)" bash ./scripts/build-container.sh bash ./scripts/run-container.sh "${run_dir}" -exit $? +ret=$? +echo "Final validation result: $ret" +exit $ret diff --git a/scripts/build-container.sh b/scripts/build-container.sh index 3c16489ba..f5c825ad9 100644 --- a/scripts/build-container.sh +++ b/scripts/build-container.sh @@ -10,25 +10,25 @@ if [ -f ${DOCKER_FILE} ] then #check and build stf583-rf-validation image DOCKER_ID=`docker ps -a | grep -e stf583-rf-validation | awk '{ print $1 }'` - if [ ! -z "${DOCKER_ID}" ] - then - docker rm --force stf583-rf-validation - fi - docker build --tag stf583-rf-validation --force-rm -f ${DOCKER_FILE} . +# if [ ! -z "${DOCKER_ID}" ] +# then +# docker rm --force stf583-rf-validation +# fi + docker build --tag stf583-rf-validation -f ${DOCKER_FILE} . if [ "$?" != "0" ] then echo "Docker build failed: $?" exit -1 fi - docker image ls -a - docker inspect stf583-rf-validation:latest - if [ "$?" != "0" ] - then - echo "Docker inspect failed: $?" - exit -2 - fi -else - exit -3 +# docker image ls -a +# docker inspect stf583-rf-validation:latest +# if [ "$?" != "0" ] +# then +# echo "Docker inspect failed: $?" +# exit -2 +# fi +#else +# exit -3 fi # That's all Floks diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile index e91f0fd85..de313e6db 100644 --- a/scripts/docker/Dockerfile +++ b/scripts/docker/Dockerfile @@ -7,11 +7,8 @@ LABEL description="SFT583 Robot Framework Docker Image" ENV TERM=xterm ENV HOSTNAME docker-robot-STF583 - ARG ssh_prv_key - - RUN DEBIAN_FRONTEND=noninteractive apt update \ && apt install python3 git -y \ && apt install python3-pip -y \ @@ -34,16 +31,18 @@ RUN DEBIAN_FRONTEND=noninteractive \ && mkdir -p /home/etsi/dev/robot \ && cd /home/etsi/dev/robot +RUN pip3 install robotframework + +RUN DEBIAN_FRONTEND=noninteractive \ + && cd /home/etsi/dev/robot \ + && git clone https://github.com/etsi-cti-admin/robotframework-mockserver ADD . /home/etsi/dev/robot -RUN pip3 install robotframework - RUN DEBIAN_FRONTEND=noninteractive \ && cd /home/etsi/dev/robot \ && pip3 install -r requirements.txt \ && chmod +x /home/etsi/dev/robot/scripts/* \ - && git clone https://github.com/etsi-cti-admin/robotframework-mockserver \ && cd robotframework-mockserver \ && patch -p1 < ../extensions/mockserverlibrary.patch \ && python3 -m pip install -e . diff --git a/scripts/run-container.sh b/scripts/run-container.sh index 0e0cbebfa..089cd2d86 100644 --- a/scripts/run-container.sh +++ b/scripts/run-container.sh @@ -5,10 +5,10 @@ #set -e #set -vx -docker run stf583-rf-validation:latest "/bin/bash" \ - -c "cd /home/etsi/dev/robot \ - && bash scripts/validate.sh " +docker run stf583-rf-validation:latest "bash" \ + -c "/home/etsi/dev/robot/scripts/validate.sh" -# That's all Floks -exit $? +ret=$? + +exit $ret diff --git a/scripts/validate.sh b/scripts/validate.sh index 6d95c3574..ef8b77531 100644 --- a/scripts/validate.sh +++ b/scripts/validate.sh @@ -2,12 +2,19 @@ # # Validate syntax and keywords existance in each Robot file +cd /home/etsi/dev/robot/ + res=0 for i in */*/*.robot ; do - [[ "$i" != *"Keywords.robot"* && "$i" != *"Keyword.robot"* ]] && \ - (echo "++++ Dryrun $i" && \ - robot --dryrun --output NONE --report NONE --log NONE $i || \ - (echo "++++ Issues in file $i" && res=1)); + if [[ "$i" != *"Keywords.robot"* && "$i" != *"Keyword.robot"* ]] ; then + echo "++++ Dryrun file $i" + msg=$(robot --dryrun --output NONE --report NONE --log NONE $i 2>&1) + if [ $? != 0 ] ; then + echo "++++ Issues found in file $i" + echo "$msg" + res=1 + fi + fi done exit $res -- GitLab From 7b6fbce53057a4bb910096dc315ba28380b4c8e8 Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Tue, 17 Nov 2020 05:24:24 +0100 Subject: [PATCH 164/580] Update ApiVersion --- .../ApiVersion.robot | 420 +++++++++--------- 1 file changed, 210 insertions(+), 210 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/ApiVersion.robot b/SOL002/VNFLifecycleManagement-API/ApiVersion.robot index c85fc6ced..2b94beca1 100644 --- a/SOL002/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL002/VNFLifecycleManagement-API/ApiVersion.robot @@ -1,211 +1,211 @@ -*** Settings *** -Resource environment/variables.txt -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 6.3.5.20.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 6.3.5.20.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 6.3.5.20.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 6.3.5.20.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 6.3.5.20.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.5.20.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 6.3.5.20.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.5.20.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.5.20.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.5.20.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** +Resource environment/variables.txt +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 6.3.5.20.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 6.3.5.20.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 6.3.5.20.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 6.3.5.20.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 6.3.5.20.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.5.20.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 6.3.5.20.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.5.20.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.5.20.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.5.20.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From d0e30f54c795e09c94fdbbaa83147c90229eb0e1 Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Tue, 17 Nov 2020 05:28:03 +0100 Subject: [PATCH 165/580] Update ApiVersion --- .../ApiVersion.robot | 420 +++++++++--------- 1 file changed, 210 insertions(+), 210 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot index 2196cd1fc..168033e8d 100644 --- a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot @@ -1,211 +1,211 @@ -*** Settings *** -Resource environment/variables.txt -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 6.3.3.9.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 6.3.3.9.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 6.3.3.9.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 6.3.3.9.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 6.3.3.9.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.3.9.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 6.3.3.9.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.3.9.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.3.9.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.3.9.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** +Resource environment/variables.txt +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 6.3.3.9.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 6.3.3.9.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 6.3.3.9.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 6.3.3.9.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 6.3.3.9.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.3.9.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 6.3.3.9.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.3.9.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.3.9.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.3.9.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From 2bbbd4f856742cdc16dd35cdda42a191a9af2116 Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Tue, 17 Nov 2020 05:31:45 +0100 Subject: [PATCH 166/580] Update ApiVersion.robot --- .../VNFFaultManagement-API/ApiVersion.robot | 424 +++++++++--------- 1 file changed, 212 insertions(+), 212 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/ApiVersion.robot b/SOL002/VNFFaultManagement-API/ApiVersion.robot index ea7c27ddc..2f4b46c4a 100644 --- a/SOL002/VNFFaultManagement-API/ApiVersion.robot +++ b/SOL002/VNFFaultManagement-API/ApiVersion.robot @@ -1,213 +1,213 @@ -*** Settings *** - -Resource environment/variables.txt - -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 6.3.4.7.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 6.3.4.7.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 6.3.4.7.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 6.3.4.7.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 6.3.4.7.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.4.7.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 6.3.4.7.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.4.7.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.4.7.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.4.7.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** + +Resource environment/variables.txt + +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 6.3.4.7.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 6.3.4.7.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 6.3.4.7.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 6.3.4.7.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 6.3.4.7.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.4.7.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 6.3.4.7.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.4.7.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.4.7.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.4.7.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From e4c596418c81418b03529dc3c2ec5186b6081397 Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Wed, 18 Nov 2020 08:43:53 +0100 Subject: [PATCH 167/580] Update ApiVersion.robot --- SOL002/VNFIndicator-API/ApiVersion.robot | 424 +++++++++++------------ 1 file changed, 212 insertions(+), 212 deletions(-) diff --git a/SOL002/VNFIndicator-API/ApiVersion.robot b/SOL002/VNFIndicator-API/ApiVersion.robot index 9a9b25f3b..9a60cbe3f 100644 --- a/SOL002/VNFIndicator-API/ApiVersion.robot +++ b/SOL002/VNFIndicator-API/ApiVersion.robot @@ -1,213 +1,213 @@ -*** Settings *** - -Resource environment/variables.txt - -Library REST ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 6.3.2.7.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 6.3.2.7.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 6.3.2.7.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 6.3.2.7.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 6.3.2.7.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.2.7.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 6.3.2.7.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.2.7.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.2.7.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.2.7.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** + +Resource environment/variables.txt + +Library REST ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 6.3.2.7.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 6.3.2.7.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 6.3.2.7.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 6.3.2.7.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 6.3.2.7.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.2.7.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 6.3.2.7.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.2.7.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.2.7.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.2.7.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From 0639502b0592fcae31d4ece8104e6a2258267f2f Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Wed, 18 Nov 2020 08:44:46 +0100 Subject: [PATCH 168/580] Update ApiVersion.robot --- SOL002/VNFConfiguration-API/ApiVersion.robot | 420 +++++++++---------- 1 file changed, 210 insertions(+), 210 deletions(-) diff --git a/SOL002/VNFConfiguration-API/ApiVersion.robot b/SOL002/VNFConfiguration-API/ApiVersion.robot index 47abb5a53..43b857994 100644 --- a/SOL002/VNFConfiguration-API/ApiVersion.robot +++ b/SOL002/VNFConfiguration-API/ApiVersion.robot @@ -1,211 +1,211 @@ -*** Settings *** -Resource environment/variables.txt -Library REST ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 6.3.1.2.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 6.3.1.2.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 6.3.1.2.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 6.3.1.2.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 6.3.1.2.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.1.2.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 6.3.1.2.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.1.2.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.1.2.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.1.2.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** +Resource environment/variables.txt +Library REST ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 6.3.1.2.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 6.3.1.2.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 6.3.1.2.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 6.3.1.2.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 6.3.1.2.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.1.2.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 6.3.1.2.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.1.2.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.1.2.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.1.2.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From 04d98519ab034db48f6e1179000ff30c94684c7c Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Wed, 18 Nov 2020 08:46:32 +0100 Subject: [PATCH 169/580] Update ApiVersion.robot --- .../ApiVersion.robot | 422 +++++++++--------- 1 file changed, 211 insertions(+), 211 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot index 5c2816ed6..46cba71dd 100644 --- a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot @@ -1,212 +1,212 @@ -*** Settings *** -Resource environment/variables.txt -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 7.3.1.35.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 7.3.1.35.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 7.3.1.35.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 7.3.1.35.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 7.3.1.35.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.1.35.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 7.3.1.35.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.1.35.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.1.35.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.1.35.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** +Resource environment/variables.txt +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 7.3.1.35.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 7.3.1.35.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 7.3.1.35.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 7.3.1.35.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 7.3.1.35.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.1.35.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 7.3.1.35.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.1.35.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.1.35.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.1.35.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From cc297a36d68c1cc2ba4ead411fb4620c8613bdf4 Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Wed, 18 Nov 2020 08:47:17 +0100 Subject: [PATCH 170/580] Update ApiVersion.robot --- .../ApiVersion.robot | 426 +++++++++--------- 1 file changed, 213 insertions(+), 213 deletions(-) diff --git a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot index b1cfc474c..b975fc71f 100644 --- a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot @@ -1,214 +1,214 @@ -*** Settings *** - -Resource environment/variables.txt - -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 7.3.4.9.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 7.3.4.9.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 7.3.4.9.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 7.3.4.9.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 7.3.4.9.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.4.9.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 7.3.4.9.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.4.9.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.4.9.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.4.9.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** + +Resource environment/variables.txt + +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 7.3.4.9.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 7.3.4.9.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 7.3.4.9.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 7.3.4.9.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 7.3.4.9.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.4.9.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 7.3.4.9.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.4.9.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.4.9.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.4.9.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From 9b5afbb59ef8fc2c82a26d69079bfce12c7ae21d Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Wed, 18 Nov 2020 08:47:48 +0100 Subject: [PATCH 171/580] Update ApiVersion.robot --- .../VNFFaultManagement-API/ApiVersion.robot | 424 +++++++++--------- 1 file changed, 212 insertions(+), 212 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/ApiVersion.robot b/SOL003/VNFFaultManagement-API/ApiVersion.robot index 298ac757e..943898e57 100644 --- a/SOL003/VNFFaultManagement-API/ApiVersion.robot +++ b/SOL003/VNFFaultManagement-API/ApiVersion.robot @@ -1,213 +1,213 @@ -*** Settings *** - -Resource environment/variables.txt - -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 7.3.5.6.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 7.3.5.6.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 7.3.5.6.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 7.3.5.6.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 7.3.5.6.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.5.6.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 7.3.5.6.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.5.6.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.5.6.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.5.6.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** + +Resource environment/variables.txt + +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 7.3.5.6.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 7.3.5.6.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 7.3.5.6.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 7.3.5.6.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 7.3.5.6.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.5.6.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 7.3.5.6.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.5.6.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.5.6.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.5.6.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From fe61c4c24c1984cb5c9a0248bf97c494bf4a0cd0 Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Wed, 18 Nov 2020 08:48:36 +0100 Subject: [PATCH 172/580] Update ApiVersion.robot --- SOL003/VNFIndicator-API/ApiVersion.robot | 424 +++++++++++------------ 1 file changed, 212 insertions(+), 212 deletions(-) diff --git a/SOL003/VNFIndicator-API/ApiVersion.robot b/SOL003/VNFIndicator-API/ApiVersion.robot index 7dfc38510..bcb0549b0 100644 --- a/SOL003/VNFIndicator-API/ApiVersion.robot +++ b/SOL003/VNFIndicator-API/ApiVersion.robot @@ -1,213 +1,213 @@ -*** Settings *** - -Resource environment/variables.txt - -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 7.3.6.7.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 7.3.6.7.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 7.3.6.7.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 7.3.6.7.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 7.3.6.7.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.6.7.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 7.3.6.7.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.6.7.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.6.7.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.6.7.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** + +Resource environment/variables.txt + +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 7.3.6.7.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 7.3.6.7.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 7.3.6.7.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 7.3.6.7.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 7.3.6.7.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.6.7.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 7.3.6.7.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.6.7.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.6.7.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.6.7.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From 88a07486a0ebe9bb365a9976d13a03801056a74f Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Wed, 18 Nov 2020 08:49:10 +0100 Subject: [PATCH 173/580] Update ApiVersion.robot --- .../ApiVersion.robot | 424 +++++++++--------- 1 file changed, 212 insertions(+), 212 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot index 273a3d326..0e97091ce 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot @@ -1,213 +1,213 @@ -*** Settings *** - -Resource environment/variables.txt - -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 7.3.2.3.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 7.3.2.3.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 7.3.2.3.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 7.3.2.3.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 7.3.2.3.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.2.3.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 7.3.2.3.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.2.3.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.2.3.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.2.3.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** + +Resource environment/variables.txt + +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 7.3.2.3.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 7.3.2.3.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 7.3.2.3.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 7.3.2.3.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 7.3.2.3.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.2.3.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 7.3.2.3.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.2.3.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.2.3.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.2.3.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From c3824eaf1509342a4ce71d3c3e865f333ff8cea7 Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Wed, 18 Nov 2020 08:50:13 +0100 Subject: [PATCH 174/580] Update ApiVersion.robot --- .../VNFPackageManagement-API/ApiVersion.robot | 428 +++++++++--------- 1 file changed, 214 insertions(+), 214 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/ApiVersion.robot b/SOL003/VNFPackageManagement-API/ApiVersion.robot index 66e4aeffc..689766575 100644 --- a/SOL003/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL003/VNFPackageManagement-API/ApiVersion.robot @@ -1,215 +1,215 @@ -*** Settings *** - -Resource environment/variables.txt - -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 7.3.3.9.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 7.3.3.9.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 7.3.3.9.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 7.3.3.9.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 7.3.3.9.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.3.9.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 7.3.3.9.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.3.9.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.3.9.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.3.9.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** + +Resource environment/variables.txt + +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 7.3.3.9.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 7.3.3.9.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 7.3.3.9.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 7.3.3.9.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 7.3.3.9.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.3.9.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 7.3.3.9.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.3.9.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.3.9.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.3.9.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From fa33b13f767b47c2b085010e5353b0f66e00fe61 Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Wed, 18 Nov 2020 08:50:54 +0100 Subject: [PATCH 175/580] Update ApiVersion.robot --- .../ApiVersion.robot | 420 +++++++++--------- 1 file changed, 210 insertions(+), 210 deletions(-) diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot index c02163dd6..37cd37715 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot @@ -1,211 +1,211 @@ -*** Settings *** -Resource environment/variables.txt -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 7.3.7.3.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 7.3.7.3.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 7.3.7.3.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 7.3.7.3.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 7.3.7.3.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.7.3.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 7.3.7.3.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.7.3.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.7.3.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 7.3.7.3.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 7.3.7.3.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 7.3.7.3.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 7.3.7.3.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 7.3.7.3.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 7.3.7.3.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.7.3.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 7.3.7.3.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.7.3.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.7.3.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.7.3.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From 33f0f7561e2192c0c23dc778ea2e6a33e361973d Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Thu, 19 Nov 2020 06:32:32 +0100 Subject: [PATCH 176/580] Update ApiVersion.robot --- SOL005/NSDManagement-API/ApiVersion.robot | 424 +++++++++++----------- 1 file changed, 212 insertions(+), 212 deletions(-) diff --git a/SOL005/NSDManagement-API/ApiVersion.robot b/SOL005/NSDManagement-API/ApiVersion.robot index 40a46a3a5..0d34a455b 100644 --- a/SOL005/NSDManagement-API/ApiVersion.robot +++ b/SOL005/NSDManagement-API/ApiVersion.robot @@ -1,213 +1,213 @@ -*** Settings *** - -Resource environment/variables.txt - -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 5.3.1.10.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 5.3.1.10.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 5.3.1.10.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 5.3.1.10.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 5.3.1.10.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.1.10.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 5.3.1.10.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.1.10.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.1.10.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.1.10.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** + +Resource environment/variables.txt + +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 5.3.1.10.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 5.3.1.10.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 5.3.1.10.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 5.3.1.10.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 5.3.1.10.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.1.10.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 5.3.1.10.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.1.10.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.1.10.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.1.10.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From ba8920d0469062679b5f66604fce2f9da47f9521 Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Thu, 19 Nov 2020 06:33:06 +0100 Subject: [PATCH 177/580] Update ApiVersion.robot --- .../ApiVersion.robot | 426 +++++++++--------- 1 file changed, 213 insertions(+), 213 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/ApiVersion.robot b/SOL005/NSLifecycleManagement-API/ApiVersion.robot index 7fe40a640..76b1e5d1c 100644 --- a/SOL005/NSLifecycleManagement-API/ApiVersion.robot +++ b/SOL005/NSLifecycleManagement-API/ApiVersion.robot @@ -1,213 +1,213 @@ -*** Settings *** - -Resource environment/variables.txt - -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 5.3.2.25.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 5.3.2.25.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 5.3.2.25.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 5.3.2.25.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 5.3.2.25.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.2.25.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 5.3.2.25.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.2.25.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.2.25.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.2.25.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} - Log Json Schema Validation OK +*** Settings *** + +Resource environment/variables.txt + +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 5.3.2.25.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 5.3.2.25.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 5.3.2.25.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 5.3.2.25.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 5.3.2.25.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.2.25.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 5.3.2.25.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.2.25.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.2.25.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.2.25.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK -- GitLab From a9b5871f389ed6c698e4dc6002dabbaaaad4dbc4 Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Thu, 19 Nov 2020 06:33:30 +0100 Subject: [PATCH 178/580] Update ApiVersion.robot --- SOL005/NSFaultManagement-API/ApiVersion.robot | 424 +++++++++--------- 1 file changed, 212 insertions(+), 212 deletions(-) diff --git a/SOL005/NSFaultManagement-API/ApiVersion.robot b/SOL005/NSFaultManagement-API/ApiVersion.robot index 47ae5def9..5038878de 100644 --- a/SOL005/NSFaultManagement-API/ApiVersion.robot +++ b/SOL005/NSFaultManagement-API/ApiVersion.robot @@ -1,213 +1,213 @@ -*** Settings *** - -Resource environment/variables.txt - -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 5.3.3.6.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 5.3.3.6.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 5.3.3.6.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 5.3.3.6.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 5.3.3.6.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.3.6.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 5.3.3.6.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.3.6.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.3.6.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.3.6.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** + +Resource environment/variables.txt + +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 5.3.3.6.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 5.3.3.6.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 5.3.3.6.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 5.3.3.6.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 5.3.3.6.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.3.6.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 5.3.3.6.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.3.6.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.3.6.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.3.6.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From 618f8c1afe404bc3bb5b846d6fe2a85edf1a83ec Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Thu, 19 Nov 2020 06:34:00 +0100 Subject: [PATCH 179/580] Update ApiVersion.robot --- .../VNFPackageManagement-API/ApiVersion.robot | 422 +++++++++--------- 1 file changed, 211 insertions(+), 211 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/ApiVersion.robot b/SOL005/VNFPackageManagement-API/ApiVersion.robot index 1af96ffc1..640b20e7c 100644 --- a/SOL005/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL005/VNFPackageManagement-API/ApiVersion.robot @@ -1,212 +1,212 @@ -*** Settings *** - -Resource environment/variables.txt -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 5.3.5.10.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 5.3.5.10.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 5.3.5.10.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 5.3.5.10.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 5.3.5.10.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.5.10.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 5.3.5.10.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.5.10.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.5.10.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.5.10.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** + +Resource environment/variables.txt +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 5.3.5.10.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 5.3.5.10.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 5.3.5.10.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 5.3.5.10.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 5.3.5.10.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.5.10.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 5.3.5.10.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.5.10.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.5.10.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.5.10.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From de727c025cab7c44635a07edea0d302b4e813247 Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Thu, 19 Nov 2020 06:34:25 +0100 Subject: [PATCH 180/580] Update ApiVersion.robot --- .../ApiVersion.robot | 424 +++++++++--------- 1 file changed, 212 insertions(+), 212 deletions(-) diff --git a/SOL005/NSPerformanceManagement-API/ApiVersion.robot b/SOL005/NSPerformanceManagement-API/ApiVersion.robot index 8e6fa0beb..8b20e5a67 100644 --- a/SOL005/NSPerformanceManagement-API/ApiVersion.robot +++ b/SOL005/NSPerformanceManagement-API/ApiVersion.robot @@ -1,213 +1,213 @@ -*** Settings *** - -Resource environment/variables.txt - -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 5.3.4.10.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 5.3.4.9.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 5.3.4.9.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 5.3.4.9.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 5.3.4.9.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.4.9.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 5.3.4.9.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.4.9.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.4.9.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.4.9.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** + +Resource environment/variables.txt + +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 5.3.4.10.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 5.3.4.9.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 5.3.4.9.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 5.3.4.9.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 5.3.4.9.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.4.9.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 5.3.4.9.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.4.9.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.4.9.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.4.9.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file -- GitLab From bede9ed180a6f7eed868544d021cfe2d33b28097 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 23 Nov 2020 17:41:56 +0500 Subject: [PATCH 181/580] Descriptors for 7.3.1.2.2 --- .../IndividualVNFInstance.robot | 1 + .../VnfLcmMntOperationKeywords.robot | 30 ++++ .../descriptors/vnf-b-1_VNF.yaml | 169 ++++++++++++++++++ .../environment/variables.txt | 5 +- 4 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 SOL003/VNFLifecycleManagement-API/descriptors/vnf-b-1_VNF.yaml diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index cca928c20..cca0474cb 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/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index f01d3b2d9..3daaa3131 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -8,6 +8,7 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ +Variables descriptors/vnf-b-1_VNF.yaml *** Keywords *** Get Vnf Instance @@ -1180,3 +1181,32 @@ 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 '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 + +Parse SOL001 + FOR ${key} IN @{topology_template.node_templates.keys()} + Log ${key} + ${check1}= Run Keyword And Return Status Should End With ${key} VNF + Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} + END + + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + ${configurable_properties}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.configurable_properties} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + + 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']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + Should Be Equal As Strings ${response['body']['vnfConfigurableProperties']} ${configurable_properties} + Should Be Equal As Strings ${response['body']['flavourId']} ${flavour_id} + +Parse SOL006 + Log SOL006 code \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/vnf-b-1_VNF.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/vnf-b-1_VNF.yaml new file mode 100644 index 000000000..357d2b351 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/descriptors/vnf-b-1_VNF.yaml @@ -0,0 +1,169 @@ +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: + 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" + 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-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-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 + diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index b08bdeff5..439c951a9 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -97,4 +97,7 @@ ${element} ${aspectId} ${scaleOutResponse} -${callbackResp} localhost \ No newline at end of file +${callbackResp} localhost + +${descriptorType} SOL001 +${vnfKey} {} \ No newline at end of file -- GitLab From 94a29637a68af60f86d66b973ca7b73d850b84d8 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 25 Nov 2020 12:01:59 +0500 Subject: [PATCH 182/580] descriptors templating for 7.3.1.1.1 added --- .../VnfLcmMntOperationKeywords.robot | 38 ++++++++++++++----- .../jsons/createVnfRequest.json | 11 +++++- 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 3daaa3131..68ffc12f2 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -124,7 +124,16 @@ 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 + Get key for VNF Descriptor + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + ${configurable_properties}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.configurable_properties} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + ${template}= Get File jsons/createVnfRequest.json + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersion= ${descriptor_version} vnfConfigurableProperties=${configurable_properties} flavourId=${flavour_id} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} Send VNF Instance Resource Delete Request @@ -361,8 +370,16 @@ 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}"} + Get key for VNF Descriptor + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + ${configurable_properties}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.configurable_properties} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} ${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} vnfConfigurableProperties=${configurable_properties} flavourId=${flavour_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1186,11 +1203,7 @@ Check HTTP Response Body vnfInstance content against VNF Descriptor Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 Parse SOL001 - FOR ${key} IN @{topology_template.node_templates.keys()} - Log ${key} - ${check1}= Run Keyword And Return Status Should End With ${key} VNF - Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} - END + Get key for VNF Descriptor ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} @@ -1206,7 +1219,14 @@ Parse SOL001 Should Be Equal As Strings ${response['body']['vnfSoftwareVesion']} ${software_version} Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} Should Be Equal As Strings ${response['body']['vnfConfigurableProperties']} ${configurable_properties} - Should Be Equal As Strings ${response['body']['flavourId']} ${flavour_id} + Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${flavour_id} Parse SOL006 - Log SOL006 code \ No newline at end of file + Log SOL006 code + +Get key for VNF Descriptor + FOR ${key} IN @{topology_template.node_templates.keys()} + Log ${key} + ${check1}= Run Keyword And Return Status Should End With ${key} VNF + Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} + END \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 64ab8e55c..35c7f6f4a 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -1,6 +1,15 @@ {{ - "vnfdId": "{vnfdId}", "vnfInstanceName": "string", "vnfInstanceDescription": "string", + "vnfdId": "{vnfdId}", + "vnfProvider":"{vnfProvider}", + "vnfProductName":"{vnfProductName}", + "vnfSoftwareVersion":"{vnfSoftwareVersion}", + "vnfdVersion":"{vnfdVersion}", + "vnfConfigurableProperties":"{vnfConfigurableProperties}", + "instantiatedVnfInfo":{{ + "flavourId":"{flavourId}", + "vnfState":"STARTED" + }} "metadata":{{}} }} \ No newline at end of file -- GitLab From 65e0564d70c08c0183ab1e6218d95ab510077845 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 25 Nov 2020 15:40:29 +0500 Subject: [PATCH 183/580] descriptor key check updated --- .../VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 68ffc12f2..874fd3bba 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1227,6 +1227,6 @@ Parse SOL006 Get key for VNF Descriptor FOR ${key} IN @{topology_template.node_templates.keys()} Log ${key} - ${check1}= Run Keyword And Return Status Should End With ${key} VNF + ${check1}= Run Keyword And Return Status Should Be Equal As Strings ${topology_template.node_templates.${key}.type} tosca.nodes.nfv.VNF Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} END \ No newline at end of file -- GitLab From 9b34a0cf4e45b4692896ba19bb41b88d4514b295 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 25 Nov 2020 17:43:47 +0500 Subject: [PATCH 184/580] optional descriptor attribute removed --- .../VnfLcmMntOperationKeywords.robot | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 874fd3bba..eef1c2420 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -376,10 +376,9 @@ POST Create a new vnfInstance ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - ${configurable_properties}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.configurable_properties} ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} ${template}= Get File jsons/createVnfRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersion= ${descriptor_version} vnfConfigurableProperties=${configurable_properties} flavourId=${flavour_id} + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersion= ${descriptor_version} flavourId=${flavour_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1210,7 +1209,6 @@ Parse SOL001 ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - ${configurable_properties}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.configurable_properties} ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} Should Be Equal As Strings ${response['body']['vnfdId']} ${descriptor_id} @@ -1218,7 +1216,6 @@ Parse SOL001 Should Be Equal As Strings ${response['body']['vnfProductName']} ${product_name} Should Be Equal As Strings ${response['body']['vnfSoftwareVesion']} ${software_version} Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} - Should Be Equal As Strings ${response['body']['vnfConfigurableProperties']} ${configurable_properties} Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${flavour_id} Parse SOL006 -- GitLab From d76bd1e030cc41a357b48bce11e9839cdd57494d Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 27 Nov 2020 12:55:42 +0500 Subject: [PATCH 185/580] descriptors for SOL006 added --- .../VnfLcmMntOperationKeywords.robot | 15 ++- .../descriptors/{ => SOL001}/vnf-b-1_VNF.yaml | 0 .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 ++++++++++++++++++ SOL003/VNFLifecycleManagement-API/validate.sh | 8 ++ 4 files changed, 126 insertions(+), 2 deletions(-) rename SOL003/VNFLifecycleManagement-API/descriptors/{ => SOL001}/vnf-b-1_VNF.yaml (100%) create mode 100644 SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml create mode 100644 SOL003/VNFLifecycleManagement-API/validate.sh diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index eef1c2420..78c7f4dcc 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -8,7 +8,7 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ -Variables descriptors/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/vnf-b-1_VNF.yaml *** Keywords *** Get Vnf Instance @@ -1219,7 +1219,18 @@ Parse SOL001 Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${flavour_id} Parse SOL006 - Log SOL006 code + #Log SOL006 code + ${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} + + 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']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} Get key for VNF Descriptor FOR ${key} IN @{topology_template.node_templates.keys()} diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/vnf-b-1_VNF.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml similarity index 100% rename from SOL003/VNFLifecycleManagement-API/descriptors/vnf-b-1_VNF.yaml rename to SOL003/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml new file mode 100644 index 000000000..fe0909358 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml @@ -0,0 +1,105 @@ +nfv: + vnfd: + - id: VNF-B-2df + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 DFs + software-version: '2.1' + version: '2.1' + 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: right + layer-protocol: ethernet + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-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' + 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-1 + cpd: right + layer-protocol: ethernet + df: + - id: small + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-b-1 + 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' + - id: big + vdu-profile: + id: vdu-b-1 + 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' + - id: triple + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '3' + default-instantiation-level: double + 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/validate.sh b/SOL003/VNFLifecycleManagement-API/validate.sh new file mode 100644 index 000000000..5da698b57 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/validate.sh @@ -0,0 +1,8 @@ +str=Keywords.robot; +for i in *.robot ; do + [[ "$i" != *"$str"* ]] && \ + echo "++++ Dryrun $i" && \ + robot --dryrun --output NONE --report NONE --log NONE $i || \ + echo "++++ Issues in file $i"; +done +read -n 1 -p "Input Selection:" mainmenuinput \ No newline at end of file -- GitLab From b48988912795f3325a57e79a7fd1f1930f2fa24b Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 27 Nov 2020 12:56:31 +0500 Subject: [PATCH 186/580] validate.sh removed --- SOL003/VNFLifecycleManagement-API/validate.sh | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 SOL003/VNFLifecycleManagement-API/validate.sh diff --git a/SOL003/VNFLifecycleManagement-API/validate.sh b/SOL003/VNFLifecycleManagement-API/validate.sh deleted file mode 100644 index 5da698b57..000000000 --- a/SOL003/VNFLifecycleManagement-API/validate.sh +++ /dev/null @@ -1,8 +0,0 @@ -str=Keywords.robot; -for i in *.robot ; do - [[ "$i" != *"$str"* ]] && \ - echo "++++ Dryrun $i" && \ - robot --dryrun --output NONE --report NONE --log NONE $i || \ - echo "++++ Issues in file $i"; -done -read -n 1 -p "Input Selection:" mainmenuinput \ No newline at end of file -- GitLab From 4d92e1e26803b18ab14f3e81636f89a31d0242c7 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 30 Nov 2020 18:05:53 +0500 Subject: [PATCH 187/580] added postcondition --- .../VNFPackageManagement-API/IndividualSubscription.robot | 5 +++-- .../VNFPackageManagementKeywords.robot | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot index 346b954dc..2219974bc 100644 --- a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot @@ -89,6 +89,7 @@ DELETE Individual VNF Package Subscription ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: none + ... Post-Conditions: The VNF Package Subscription is not available anymore in the NFVO Send Delete request for individual VNF Package Subscription - Check HTTP Response Status Code Is 204 \ No newline at end of file + Check HTTP Response Status Code Is 204 + Check Postcondition VNF Package Subscription is Deleted \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index dc0f8ccf4..88032d975 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1519,4 +1519,9 @@ GET OnBoarded VNF Packages with fields and exclude_default attribute selector Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?fields=${fields}&exclude_default ${output}= Output response - Set Suite Variable ${response} ${output} \ No newline at end of file + Set Suite Variable ${response} ${output} + +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 -- GitLab From 20381ed63b36067099a1c6e67b1bef0959aba6c9 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 3 Dec 2020 15:27:22 +0100 Subject: [PATCH 188/580] fix variables --- .../IndividualReport.robot | 14 +++++++------- .../IndividualThreshold.robot | 16 ++++++++-------- .../Thresholds.robot | 10 +++++----- .../VNFPerformanceManagementKeywords.robot | 8 ++++---- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot index 89ad7952d..9f038e8bb 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot @@ -84,7 +84,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -92,21 +92,21 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${erroneousReportId} + 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}"} - POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${newReportId} + 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} @@ -116,7 +116,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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} @@ -126,7 +126,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}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -138,7 +138,7 @@ Check Postcondition VNF Individual Performance Report is not Created Log Trying to get a new report Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${newReportId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${newReportId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index 1a29cd867..d0e7bc390 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -115,7 +115,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -123,28 +123,28 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${erroneousThresholdId} + 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}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + 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}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds/${erroneousThresholdId} + 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}"} - POST ${apiRoot}/${apiName}/${apiVersion}/thresholds/${newThresholdId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -152,7 +152,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} @@ -163,10 +163,10 @@ Send Patch 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index e2618357b..5ed05061c 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -142,7 +142,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -150,7 +150,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds?${FILTER_OK} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_OK} ${output}= Output response Set Suite Variable ${response} ${output} @@ -158,7 +158,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds?${FILTER_KO} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_KO} ${output}= Output response Set Suite Variable ${response} ${output} @@ -166,7 +166,7 @@ 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}"} - GET ${apiRoot}/${apiName}/${apiVersion}/threshold + GET ${apiRoot}/${apiName}/${apiMajorVersion}/threshold ${output}= Output response Set Suite Variable ${response} ${output} @@ -202,7 +202,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}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index 564519f56..f7468404c 100644 --- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -21,7 +21,7 @@ Get all VNF Performance Subscriptions Set headers {"Accept": "application/json"} Set headers {"Content-Type": "application/json"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 200 @@ -40,7 +40,7 @@ Get all VNF Performance Subscriptions ... request and response data structures, and response codes. Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ok} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 200 @@ -60,7 +60,7 @@ Get VNF Performance Subscriptions with invalid attribute-based filters ... request and response data structures, and response codes. Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ko} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 400 @@ -79,7 +79,7 @@ Get VNF Performance Subscriptions with invalid resource endpoint ... request and response data structures, and response codes. Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscription + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 404 -- GitLab From 231f303450dbb57d4d766071668dfa99dd9b4d4d Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 3 Dec 2020 15:46:06 +0100 Subject: [PATCH 189/580] updated indexes --- indexes/sol_002_index.csv | 3 +++ indexes/sol_003_index.csv | 6 ++++++ indexes/sol_005_index.csv | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/indexes/sol_002_index.csv b/indexes/sol_002_index.csv index 746258166..185a58417 100644 --- a/indexes/sol_002_index.csv +++ b/indexes/sol_002_index.csv @@ -18,6 +18,7 @@ "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" @@ -26,6 +27,7 @@ "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 " @@ -47,3 +49,4 @@ "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_003_index.csv b/indexes/sol_003_index.csv index b862493eb..5b4e3ab92 100644 --- a/indexes/sol_003_index.csv +++ b/indexes/sol_003_index.csv @@ -35,6 +35,7 @@ 7.3.1.33,Terminate a VNF Instance, TerminateVNFWorkflow.robot 7.3.1.34,Notification Endpoint, NotificationEndpoint.robot 7.3.1.35,API Version Resource Endpoint, ApiVersion.robot +7.3.1.36,Notification Consumer Endpoint, NotificationConsumer.robot 7.3.2,VNF Lifecycle Operation Granting Interface, VNFLifecycleOperationGranting-API 7.3.2.1,Grants, Grants.robot 7.3.2.2,Individual Grant, IndividualGrant.robot @@ -49,6 +50,7 @@ 7.3.3.7,Individual Subscription Resource Endpoint, IndividualSubscription.robot 7.3.3.8,Notification Endpoint, PackageManagementNotification.robot 7.3.3.9,API Version Resource Endpoint, ApiVersion.robot +7.3.3.10,Notification Consumer Endpoint, NotificationConsumer.robot 7.3.4,VNF Performance Management Interface, VNFPerformanceManagement-API 7.3.4.1,PM Jobs Resource Endpoint, PMJobs.robot 7.3.4.2,Individual Pm Job Resource Endpoint, IndividualPmJob.robot @@ -57,6 +59,7 @@ 7.3.4.5,Individual Threshold Resource Endpoint, IndividualThreshold.robot 7.3.4.8,Notification Endpoint, PerformanceManagementNotification.robot 7.3.4.9,API Version Resource Endpoint, ApiVersion.robot +7.3.4.10,Notification Consumer Endpoint, NotificationConsumer.robot 7.3.5,VNF Fault Management interface, VNFFaultManagement-API 7.3.5.1,Alarms, Alarms.robot 7.3.5.2,Individual Alarm, IndividualAlarm.robot @@ -64,6 +67,7 @@ 7.3.5.4,Individual Subscription, IndividualSubscription.robot 7.3.5.5,Notification Endpoint, ../VNFFaultManagementNotification-API/NotificationEndpoint.robot 7.3.5.6,API Version Resource Endpoint, ApiVersion.robot +7.3.5.7,Notification Consumer Endpoint, NotificationConsumer.robot 7.3.6,VNF Indicator Interface, VNFIndicator-API 7.3.6.1,VNF Indicators Resource Endpoint, VNFIndicators.robot 7.3.6.2,VNF Indicators Related to a VNF Instance Resource Endpoint, VnfIndicatorsInVnfInstanceId.robot @@ -72,7 +76,9 @@ 7.3.6.5,Individual Subscription Resource Endpoint, IndividualSubscription.robot 7.3.6.6,Notification Endpoint, VnfIndicatorNotification.robot 7.3.6.7,API Version Resource Endpoint, ApiVersion.robot +7.3.6.8,Notification Endpoint, NotificationConsumer.robot 7.3.7,Virtualised Resources Quota Available Notification interface, VirtualisedResourcesQuotaAvailableNotification-API 7.3.7.1,Subscriptions, Subscriptions.robot 7.3.7.2,Individual Subscription, IndividualSubscription.robot 7.3.7.3,API Version Resource Endpoint, ApiVersion.robot +7.3.7.4,Notification Consumer Endpoint, NotificationConsumer.robot diff --git a/indexes/sol_005_index.csv b/indexes/sol_005_index.csv index cc95f0ea7..97b601390 100644 --- a/indexes/sol_005_index.csv +++ b/indexes/sol_005_index.csv @@ -10,6 +10,7 @@ 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 @@ -36,6 +37,7 @@ 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 @@ -43,6 +45,7 @@ 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 @@ -53,6 +56,7 @@ 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 @@ -64,3 +68,4 @@ 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 -- GitLab From 1f334ee8f1b9f7cbaa87afc9233df6602abe0bff Mon Sep 17 00:00:00 2001 From: uihassan Date: Sun, 6 Dec 2020 08:15:08 +0500 Subject: [PATCH 190/580] Descriptors for 7.3.1.2.4 added --- .../VnfLcmMntOperationKeywords.robot | 7 ++++++- .../jsons/createVnfRequest.json | 1 - .../jsons/patchBodyRequest.json | 11 +++++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 78c7f4dcc..306f854c0 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -508,10 +508,15 @@ 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 + Get key for VNF Descriptor + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + ${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}"} diff --git a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 35c7f6f4a..fddfd7911 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -6,7 +6,6 @@ "vnfProductName":"{vnfProductName}", "vnfSoftwareVersion":"{vnfSoftwareVersion}", "vnfdVersion":"{vnfdVersion}", - "vnfConfigurableProperties":"{vnfConfigurableProperties}", "instantiatedVnfInfo":{{ "flavourId":"{flavourId}", "vnfState":"STARTED" diff --git a/SOL003/VNFLifecycleManagement-API/jsons/patchBodyRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/patchBodyRequest.json index 0c8845c21..679cc4c7f 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 -- GitLab From 14efcd9e34ec9d1072ef1bbe2d4242fec0c6c2ce Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Sun, 6 Dec 2020 18:02:46 +0100 Subject: [PATCH 191/580] extend build script with generation of document annexes --- scripts/docker/Dockerfile | 21 ++++++++++++++++----- scripts/run-container.sh | 4 +++- scripts/validate.sh | 9 ++++++++- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile index de313e6db..e6130d455 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,7 +24,6 @@ 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 @@ -37,16 +34,30 @@ RUN DEBIAN_FRONTEND=noninteractive \ && cd /home/etsi/dev/robot \ && git clone https://github.com/etsi-cti-admin/robotframework-mockserver -ADD . /home/etsi/dev/robot +ADD requirements.txt /home/etsi/dev/robot/ +ADD extensions /home/etsi/dev/robot/extensions + +RUN ls /home/etsi/dev/robot RUN DEBIAN_FRONTEND=noninteractive \ && cd /home/etsi/dev/robot \ && 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_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 \ + && python3 -m pip install -e . + +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 089cd2d86..3baa3169c 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 ef8b77531..ae06e2ea0 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 -- GitLab From 5d7a4377727c856d1080516c81d50e857c19b03f Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Sun, 6 Dec 2020 18:16:43 +0100 Subject: [PATCH 192/580] escape mounted dir for container --- scripts/run-container.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/run-container.sh b/scripts/run-container.sh index 3baa3169c..c0ea09699 100644 --- a/scripts/run-container.sh +++ b/scripts/run-container.sh @@ -7,7 +7,7 @@ mkdir -p build -docker run -v $(pwd)/build:/home/etsi/dev/build stf583-rf-validation:latest "bash" \ +docker run -v "$(pwd)/build:/home/etsi/dev/build" stf583-rf-validation:latest "bash" \ -c "/home/etsi/dev/robot/scripts/validate.sh" ret=$? -- GitLab From 25c4d86e713cefcb3d6a46ab0b45acd25fda502d Mon Sep 17 00:00:00 2001 From: bernini Date: Mon, 7 Dec 2020 12:51:46 +0100 Subject: [PATCH 193/580] Update sol_002_index.csv --- indexes/sol_002_index.csv | 88 +++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/indexes/sol_002_index.csv b/indexes/sol_002_index.csv index 185a58417..8bc2ee497 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, 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, 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, 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, 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, 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 -- GitLab From 02e0910d3d39dfb9af62798050443b7c783dc303 Mon Sep 17 00:00:00 2001 From: bernini Date: Mon, 7 Dec 2020 12:55:07 +0100 Subject: [PATCH 194/580] Update sol_002_index.csv --- indexes/sol_002_index.csv | 104 +++++++++++++++++++------------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/indexes/sol_002_index.csv b/indexes/sol_002_index.csv index 8bc2ee497..f3f3a78f3 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 -- GitLab From 5e1bc164993fb5c1edb025263a83d548e50dd6a4 Mon Sep 17 00:00:00 2001 From: bernini Date: Mon, 7 Dec 2020 13:01:45 +0100 Subject: [PATCH 195/580] Update sol_005_index.csv --- indexes/sol_005_index.csv | 146 ++++++++++++++++++++------------------ 1 file changed, 75 insertions(+), 71 deletions(-) diff --git a/indexes/sol_005_index.csv b/indexes/sol_005_index.csv index 97b601390..f727f54bd 100644 --- a/indexes/sol_005_index.csv +++ b/indexes/sol_005_index.csv @@ -1,71 +1,75 @@ -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, 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,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.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 -- GitLab From b897b22fe46579815ac6a65d41b4d6f993eed1aa Mon Sep 17 00:00:00 2001 From: bernini Date: Mon, 7 Dec 2020 13:05:49 +0100 Subject: [PATCH 196/580] re-update sol_005_index.csv --- indexes/sol_005_index.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indexes/sol_005_index.csv b/indexes/sol_005_index.csv index f727f54bd..13f7fa146 100644 --- a/indexes/sol_005_index.csv +++ b/indexes/sol_005_index.csv @@ -5,7 +5,7 @@ 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, PNFDContent.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 -- GitLab From a2df1dea1cb354361bea582ebe42ca71151e306d Mon Sep 17 00:00:00 2001 From: bernini Date: Mon, 7 Dec 2020 13:13:18 +0100 Subject: [PATCH 197/580] fix sol_005_index.csv --- indexes/sol_005_index.csv | 2 -- 1 file changed, 2 deletions(-) diff --git a/indexes/sol_005_index.csv b/indexes/sol_005_index.csv index 13f7fa146..31fcb08ef 100644 --- a/indexes/sol_005_index.csv +++ b/indexes/sol_005_index.csv @@ -56,8 +56,6 @@ 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 -- GitLab From 11e7f8ea9151780cbc9ae06b87a75056715bad14 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 7 Dec 2020 13:46:17 +0100 Subject: [PATCH 198/580] updated docker file and requirements --- requirements.txt | 2 +- scripts/docker/Dockerfile | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index f6c9c6d5d..d7793f479 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ # pip -r requirements.txt -robotframework==3.1 +robotframework==3.2.2 RESTinstance==1.0.0rc4 robotframework-dependencylibrary==1.0.0.post1 robotframework-jsonlibrary==0.3 diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile index e6130d455..3aa854031 100644 --- a/scripts/docker/Dockerfile +++ b/scripts/docker/Dockerfile @@ -28,8 +28,6 @@ RUN DEBIAN_FRONTEND=noninteractive \ && mkdir -p /home/etsi/dev/robot \ && cd /home/etsi/dev/robot -RUN pip3 install robotframework - RUN DEBIAN_FRONTEND=noninteractive \ && cd /home/etsi/dev/robot \ && git clone https://github.com/etsi-cti-admin/robotframework-mockserver -- GitLab From 853737b10a79a81a4411abe686826e3dda939d90 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Fri, 11 Dec 2020 15:19:36 +0100 Subject: [PATCH 199/580] Fix issue #20 --- .../Subscriptions.robot | 110 ++++++++++-------- .../NSFMOperationKeywords.robot | 49 ++++---- .../NSFaultManagement-API/Subscriptions.robot | 52 ++++++--- .../environment/variables.txt | 2 - 4 files changed, 124 insertions(+), 89 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index 3c6434819..7885715f0 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 @@ -311,28 +324,28 @@ Post Create subscription 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/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot index ab113914a..4d9893ce8 100644 --- a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot +++ b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot @@ -219,29 +219,29 @@ POST Subscription ${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_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_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 4b7e352fa..b8e00065e 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 848b78e97..0ae86d8e1 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 -- GitLab From 6fb7569d3eeb57cf0b3ac90c5930eb89e8587cc2 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Fri, 11 Dec 2020 15:19:54 +0100 Subject: [PATCH 200/580] Fix issue #44 --- .../schemas/subscriptions.schema.json | 149 +++++++++++++++++- 1 file changed, 148 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json index fefb142da..75ab7eb89 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" + } + } + } + } + } + } + } +} -- GitLab From 0d00a9b3cd92652e41177b3e61651a9cccc1ceca Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Fri, 11 Dec 2020 15:33:54 +0100 Subject: [PATCH 201/580] Fix issue #73 --- SOL002/VNFConfiguration-API/ApiVersion.robot | 2 +- SOL002/VNFFaultManagement-API/ApiVersion.robot | 2 +- SOL002/VNFIndicator-API/ApiVersion.robot | 2 +- SOL002/VNFLifecycleManagement-API/ApiVersion.robot | 2 +- SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot | 2 +- SOL002/VNFPerformanceManagement-API/ApiVersion.robot | 2 +- SOL003/VNFFaultManagement-API/ApiVersion.robot | 2 +- SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot | 2 +- SOL003/VNFIndicator-API/ApiVersion.robot | 2 +- SOL003/VNFLifecycleManagement-API/ApiVersion.robot | 2 +- SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot | 2 +- SOL003/VNFLifecycleOperationGranting-API/Grants.robot | 2 +- SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot | 2 +- SOL003/VNFPackageManagement-API/ApiVersion.robot | 2 +- SOL003/VNFPerformanceManagement-API/ApiVersion.robot | 2 +- .../ApiVersion.robot | 2 +- .../VRQANOperationKeywords.robot | 2 +- SOL005/NSDManagement-API/ApiVersion.robot | 2 +- SOL005/NSFaultManagement-API/ApiVersion.robot | 2 +- SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot | 2 +- SOL005/NSLifecycleManagement-API/ApiVersion.robot | 2 +- SOL005/NSPerformanceManagement-API/ApiVersion.robot | 2 +- SOL005/VNFPackageManagement-API/ApiVersion.robot | 2 +- 23 files changed, 23 insertions(+), 23 deletions(-) diff --git a/SOL002/VNFConfiguration-API/ApiVersion.robot b/SOL002/VNFConfiguration-API/ApiVersion.robot index 43b857994..108cbe0d9 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 2f4b46c4a..48a593c97 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/VNFIndicator-API/ApiVersion.robot b/SOL002/VNFIndicator-API/ApiVersion.robot index 9a60cbe3f..a89c0b19d 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/VNFLifecycleManagement-API/ApiVersion.robot b/SOL002/VNFLifecycleManagement-API/ApiVersion.robot index 2b94beca1..1c1ea5db5 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/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 210784c18..8cd37ad8b 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -33,7 +33,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 diff --git a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot index 168033e8d..0e98a8396 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/SOL003/VNFFaultManagement-API/ApiVersion.robot b/SOL003/VNFFaultManagement-API/ApiVersion.robot index 943898e57..b265a9a56 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 1f9b5e86e..cbf26efb8 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 diff --git a/SOL003/VNFIndicator-API/ApiVersion.robot b/SOL003/VNFIndicator-API/ApiVersion.robot index bcb0549b0..4c8aa20c1 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 46cba71dd..e19b65ac9 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/VNFLifecycleOperationGranting-API/ApiVersion.robot b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot index 0e97091ce..b9291d316 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 4f9ce5172..6b791381a 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -172,7 +172,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 diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index 52b961997..f4f267ef1 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -158,5 +158,5 @@ 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']} diff --git a/SOL003/VNFPackageManagement-API/ApiVersion.robot b/SOL003/VNFPackageManagement-API/ApiVersion.robot index 689766575..41eeca71b 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/VNFPerformanceManagement-API/ApiVersion.robot b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot index b975fc71f..88ba224c7 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/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot index 37cd37715..45cf503da 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 f33ff0732..8aab471ed 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 diff --git a/SOL005/NSDManagement-API/ApiVersion.robot b/SOL005/NSDManagement-API/ApiVersion.robot index 0d34a455b..aa117f09b 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/NSFaultManagement-API/ApiVersion.robot b/SOL005/NSFaultManagement-API/ApiVersion.robot index 5038878de..5b8291f74 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 4d9893ce8..20e4d62ac 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 diff --git a/SOL005/NSLifecycleManagement-API/ApiVersion.robot b/SOL005/NSLifecycleManagement-API/ApiVersion.robot index 76b1e5d1c..fcbaad59f 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 8b20e5a67..8619b4931 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/VNFPackageManagement-API/ApiVersion.robot b/SOL005/VNFPackageManagement-API/ApiVersion.robot index 640b20e7c..5dc01749c 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 -- GitLab From 01a6bea91158f0160d3ade1115fde1129537d5e7 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Fri, 11 Dec 2020 15:42:42 +0100 Subject: [PATCH 202/580] Fix issue #71 --- .../ScaleVNFTask.robot | 6 ++-- .../VnfLcmOperationKeywords.robot | 30 ++++++++++++++++--- .../environment/variables.txt | 3 +- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot index f34e1bf96..e545c237d 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/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 8cd37ad8b..f4dd79745 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -252,16 +252,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}"} diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index 29e211d27..922dc705f 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 -- GitLab From 71076f1736ac5b09fc4ba1ea82822f85763d34ba Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Fri, 11 Dec 2020 18:04:10 +0100 Subject: [PATCH 203/580] Fix issue #77 --- .../VNFPackageManagementKeywords.robot | 6 +++--- .../IndividualReport.robot | 12 ++++++------ .../IndividualThreshold.robot | 12 ++++++------ SOL003/VNFPerformanceManagement-API/Thresholds.robot | 10 +++++----- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 88032d975..d751124a8 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -691,13 +691,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 +706,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} diff --git a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot index 62be3b6fc..48017858d 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 b34edb3a9..1790d9cd4 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 b43be7c97..1555adaa8 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} -- GitLab From 86bfa3cb8e646bd3f85309b5c463912b9212c37d Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Fri, 11 Dec 2020 18:05:50 +0100 Subject: [PATCH 204/580] Fix issue #83 --- .../schemas/{vnfLcmOpOcc.schema.json => VnfLcmOpOcc.schema.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename SOL003/VNFLifecycleManagement-API/schemas/{vnfLcmOpOcc.schema.json => VnfLcmOpOcc.schema.json} (100%) 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 -- GitLab From d2d76d7b2ae197ebd2dcdd917b9699b78bb4339f Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Fri, 11 Dec 2020 18:50:53 +0100 Subject: [PATCH 205/580] Fix issue #89 --- .../VNFLifecycleManagement-API/RetryOperationWorkflow.robot | 4 ---- .../RollBackOperationWorkflow.robot | 4 ---- 2 files changed, 8 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot index 8544fc162..bf4db381d 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 f401cc094..3e42be057 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 -- GitLab From 5521fdee115658f83195a1320ee3ef7601b915e9 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 15 Dec 2020 06:43:36 +0500 Subject: [PATCH 206/580] VNF Descriptors added for 7.3.1.6.1-3 --- .../VnfLcmMntOperationKeywords.robot | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 306f854c0..e9fdf938b 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -332,8 +332,10 @@ 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}"} + Get key for VNF Descriptor + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} ${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} -- GitLab From 0513d64e31d66332e8d711a80b82117c3410e157 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 15 Dec 2020 07:25:31 +0500 Subject: [PATCH 207/580] VNF Descriptors added for 7.3.1.12.2 --- .../IndividualVnfLcmOperationOccurence.robot | 1 + .../VnfLcmMntOperationKeywords.robot | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 5722c62a9..85bc89adc 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/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index e9fdf938b..ce0725c0f 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1244,4 +1244,22 @@ Get key for VNF Descriptor Log ${key} ${check1}= Run Keyword And Return Status Should Be Equal As Strings ${topology_template.node_templates.${key}.type} tosca.nodes.nfv.VNF Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} - END \ No newline at end of file + END + +Check HTTP Response Body of Individual VNF LCM Operation occurrences content against VNF Descriptor + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF LCM ELSE Parse SOL006 VNF LCM + +Parse SOL001 Individual VNF LCM + Get key for VNF Descriptor + + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} + +Parse SOL006 Individual VNF LCM + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} + \ No newline at end of file -- GitLab From bb61db5fefb7f0db7f4d159a106b3aef223929c0 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 15 Dec 2020 07:38:20 +0500 Subject: [PATCH 208/580] VNF Descriptors added for 7.3.2.1.1-3 --- .../Grants.robot | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 4f9ce5172..3ab3f76e1 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -114,8 +114,10 @@ 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}"} + Get key for VNF Descriptor + ${vnf_flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} ${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=${vnfdId} flavourId=${vnf_flavour_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -126,8 +128,10 @@ 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}"} + Get key for VNF Descriptor + ${vnf_flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} ${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=${vnfdId} flavourId=${vnf_flavour_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -138,23 +142,13 @@ 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}"} + Get key for VNF Descriptor + ${vnf_flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} ${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=${vnfdId} flavourId=${vnf_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} -- GitLab From 102df7518f2492ab5a0aed14bbc4c3671cb14551 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 15 Dec 2020 07:58:21 +0500 Subject: [PATCH 209/580] VNF Descriptors added for 7.3.3.2.1 --- .../Grants.robot | 1 + .../IndividualVNFPackage.robot | 1 + .../VNFPackageManagementKeywords.robot | 42 ++++++++++++++++++- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 3ab3f76e1..6c832261b 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -5,6 +5,7 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=fals Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Variables descriptors/SOL001/vnf-b-1_VNF.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. diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot index 6732e9cb8..67fda5b2c 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -19,6 +19,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 88032d975..dfdfa3b11 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -9,7 +9,7 @@ Library Collections Library JSONSchemaLibrary schemas/ Library Process Library String - +Variables descriptors/SOL001/vnf-b-1_VNF.yaml *** Keywords *** Get all VNF Packages @@ -1524,4 +1524,42 @@ 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 '${descriptorType}'=='SOL001' Parse SOL001 VNF Package ELSE Parse SOL006 VNF Package + +Parse SOL001 VNF Package + Get key for VNF Descriptor + + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + + 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']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + +Get key for VNF Descriptor + FOR ${key} IN @{topology_template.node_templates.keys()} + Log ${key} + ${check1}= Run Keyword And Return Status Should Be Equal As Strings ${topology_template.node_templates.${key}.type} tosca.nodes.nfv.VNF + Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} + END + +Parse SOL006 VNF Package + ${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} + + 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']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} \ No newline at end of file -- GitLab From 6685f7946eced38ea97bdd5d62c490d63ecd83a3 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 15 Dec 2020 08:12:52 +0500 Subject: [PATCH 210/580] VNF Descriptors added for 7.3.3.7.1 --- .../IndividualSubscription.robot | 1 + .../VNFPackageManagementKeywords.robot | 41 ++++++++++++++++--- .../environment/variables.txt | 1 + 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot index 2219974bc..41839a657 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/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index dfdfa3b11..deed6bc83 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1553,13 +1553,44 @@ Get key for VNF Descriptor Parse SOL006 VNF Package ${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} + ${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} 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']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} \ No newline at end of file + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + +Check HTTP Response Body of Individual Subscription content against VNF Descriptor + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Package Subscription ELSE Parse SOL006 Package Subscription + +Parse SOL001 Package Subscription + Get key for VNF Descriptor + + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + + Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${provider} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${product_name} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfdVersion']} ${descriptor_version} + +Parse SOL006 Package Subscription + ${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} + + Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${provider} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${product_name} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfdVersion']} ${descriptor_version} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 1bb5c34f5..8cc86ab17 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -21,6 +21,7 @@ ${apiName} vnfpkgm ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint ${NFVO_ALLOWS_DUPLICATE_SUBS} 1 +${descriptorType} SOL001 ${response} httpresponse -- GitLab From 9530726b04444691dfbb8597319204bfe25947f1 Mon Sep 17 00:00:00 2001 From: uihassan Date: Sun, 20 Dec 2020 07:17:00 +0500 Subject: [PATCH 211/580] Descriptors for 6.3.5.1.1 added --- .../VNFInstances.robot | 1 - .../VnfLcmOperationKeywords.robot | 19 +- .../descriptors/SOL001/vnf-b-1_VNF.yaml | 168 ++++++++++++++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 +++++++++++ .../environment/variables.txt | 5 +- .../jsons/createVnfRequest.json | 14 +- 6 files changed, 305 insertions(+), 7 deletions(-) create mode 100644 SOL002/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml create mode 100644 SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index 9f2f09c01..e518ec98a 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -33,7 +33,6 @@ GET information about multiple VNF instances Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstances - 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 210784c18..dfc2dad13 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -10,6 +10,7 @@ Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ Library String +Variables descriptors/SOL001/vnf-b-1_VNF.yaml *** Keywords *** @@ -79,8 +80,15 @@ POST Create a new vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"Authorization":"${AUTHORIZATION}"} + Get key for VNF Descriptor + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} ${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} flavourId=${flavour_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1015,4 +1023,11 @@ 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} + +Get key for VNF Descriptor + FOR ${key} IN @{topology_template.node_templates.keys()} + Log ${key} + ${check1}= Run Keyword And Return Status Should End With ${key} VNF + Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} + END diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml new file mode 100644 index 000000000..1712e2b33 --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.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: + 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" + 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-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-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 diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml new file mode 100644 index 000000000..4b84be92b --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml @@ -0,0 +1,105 @@ +nfv: + vnfd: + - id: VNF-B-2df + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 DFs + software-version: '2.1' + version: '2.1' + 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: right + layer-protocol: ethernet + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-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' + 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-1 + cpd: right + layer-protocol: ethernet + df: + - id: small + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-b-1 + 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' + - id: big + vdu-profile: + id: vdu-b-1 + 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' + - id: triple + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '3' + default-instantiation-level: double + 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' diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index 29e211d27..511ea0e2f 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -77,4 +77,7 @@ ${changeStateTo} STOPPED ${vnfdIds} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -${callbackResp} localhost \ No newline at end of file +${callbackResp} localhost + +${descriptorType} SOL001 +${vnfKey} {} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 5c9c30a25..6d6066433 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -1,5 +1,13 @@ {{ - "vnfdId": "${vnfdId}", "vnfInstanceName": "string", - "vnfInstanceDescription": "string" -}} \ No newline at end of file + "vnfInstanceDescription": "string", + "vnfdId": "{vnfdId}", + "vnfProvider":"{vnfProvider}", + "vnfProductName":"{vnfProductName}", + "vnfSoftwareVersion":"{vnfSoftwareVersion}", + "vnfdVersion":"{vnfdVersion}", + "instantiatedVnfInfo":{{ + "flavourId":"{flavourId}", + "vnfState":"STARTED" + }} +}} -- GitLab From d7494b97579416f74957be8007f9fb69d2a865dc Mon Sep 17 00:00:00 2001 From: uihassan Date: Sun, 20 Dec 2020 07:31:10 +0500 Subject: [PATCH 212/580] Descriptors for 6.3.5.2.2 added --- .../IndividualVNFInstance.robot | 1 + .../VnfLcmOperationKeywords.robot | 39 +++++++++++++++++++ .../environment/variables.txt | 3 +- 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 826228e15..65aba97b4 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/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index dfc2dad13..89da19236 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -1031,3 +1031,42 @@ Get key for VNF Descriptor ${check1}= Run Keyword And Return Status Should End With ${key} VNF Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} 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 + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 + +Parse SOL001 + Get key for VNF Descriptor + + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + + 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']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${flavour_id} + +Parse SOL006 + #Log SOL006 code + ${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} + + 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']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index 511ea0e2f..af7f6a479 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -80,4 +80,5 @@ ${vnfdIds} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${callbackResp} localhost ${descriptorType} SOL001 -${vnfKey} {} \ No newline at end of file +${vnfKey} {} +${check_descriptors} 1 \ No newline at end of file -- GitLab From 5a6e72a1bf3d7262890b19af862c80bfa44679f2 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 21 Dec 2020 07:11:42 +0500 Subject: [PATCH 213/580] Added SOL006 descriptors in 6.3.5.1.1 --- .../VnfLcmOperationKeywords.robot | 28 +++++++++++++------ .../environment/variables.txt | 9 +++++- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 89da19236..421a8d71c 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -80,15 +80,9 @@ POST Create a new vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"Authorization":"${AUTHORIZATION}"} - Get key for VNF Descriptor - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Instance Post ${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} + ${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} @@ -1057,7 +1051,6 @@ Parse SOL001 Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${flavour_id} Parse SOL006 - #Log SOL006 code ${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} @@ -1070,3 +1063,20 @@ Parse SOL006 Should Be Equal As Strings ${response['body']['vnfSoftwareVesion']} ${software_version} Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} +Add VNF Descriptor Content to VNF Instance Post + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Instance ELSE Parse SOL006 VNF Instance + +Parse SOL001 VNF Instance + Get key for VNF Descriptor + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + +Parse SOL006 VNF Instance + ${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} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index af7f6a479..f0679b13b 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -81,4 +81,11 @@ ${callbackResp} localhost ${descriptorType} SOL001 ${vnfKey} {} -${check_descriptors} 1 \ No newline at end of file +${check_descriptors} 1 + +${descriptor_id} +${provider} +${product_name} +${software_version} +${descriptor_version} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} \ No newline at end of file -- GitLab From eaf4dbc36b721f9a7562541037e6fc2d6e476b08 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 21 Dec 2020 07:21:23 +0500 Subject: [PATCH 214/580] Descriptors for 6.3.5.2.4 added --- .../VnfLcmOperationKeywords.robot | 8 +++++--- .../jsons/createVnfRequest.json | 6 +----- .../jsons/patchBodyRequest.json | 3 ++- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 421a8d71c..4105f3616 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -80,7 +80,7 @@ POST Create a new vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Instance Post + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Instance ${template} = Get File jsons/createVnfRequest.json ${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} @@ -204,7 +204,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}"} - ${body}= Get File jsons/patchBodyRequest.json + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Instance + ${template}= 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} @@ -1063,7 +1065,7 @@ Parse SOL006 Should Be Equal As Strings ${response['body']['vnfSoftwareVesion']} ${software_version} Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} -Add VNF Descriptor Content to VNF Instance Post +Add VNF Descriptor Content to VNF Instance Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Instance ELSE Parse SOL006 VNF Instance Parse SOL001 VNF Instance diff --git a/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 6d6066433..08fe8a182 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -5,9 +5,5 @@ "vnfProvider":"{vnfProvider}", "vnfProductName":"{vnfProductName}", "vnfSoftwareVersion":"{vnfSoftwareVersion}", - "vnfdVersion":"{vnfdVersion}", - "instantiatedVnfInfo":{{ - "flavourId":"{flavourId}", - "vnfState":"STARTED" - }} + "vnfdVersion":"{vnfdVersion}" }} diff --git a/SOL002/VNFLifecycleManagement-API/jsons/patchBodyRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/patchBodyRequest.json index 0c8845c21..a9f1c9dae 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": "{vnfdId}" } \ No newline at end of file -- GitLab From 00b70753d9a5b30400d7a85146f81b948e586759 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 21 Dec 2020 07:27:26 +0500 Subject: [PATCH 215/580] Descriptors for 6.3.5.12.2 added --- .../IndividualVnfLcmOperationOccurence.robot | 1 + .../VnfLcmOperationKeywords.robot | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 82ecf4c76..25bdd4d68 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -29,6 +29,7 @@ Get status information about multiple VNF instances 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 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/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 4105f3616..f47e49094 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -1081,4 +1081,26 @@ Parse SOL006 VNF Instance ${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} \ No newline at end of file + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + +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 + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 LCM Op Occ ELSE Parse SOL006 LCM Op Occ + +Parse SOL001 LCM Op Occ + Get key for VNF Descriptor + + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + + Should Be Equal As Strings ${response['body']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + +Parse SOL006 LCM Op Occ + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + + Should Be Equal As Strings ${response['body']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} \ No newline at end of file -- GitLab From 3cd55a9e9a78bcd37d38da9e727938e3c757ff30 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 22 Dec 2020 18:48:34 +0500 Subject: [PATCH 216/580] remove unused template variable --- .../VnfLcmOperationKeywords.robot | 2 +- .../VNFLifecycleManagement-API/jsons/createVnfRequest.json | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index f47e49094..46e2fa7a6 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -82,7 +82,7 @@ POST Create a new vnfInstance Set Headers {"Authorization":"${AUTHORIZATION}"} Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Instance ${template} = Get File jsons/createVnfRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersion= ${descriptor_version} + ${body}= Format String ${template} vnfdId=${descriptor_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 08fe8a182..5b1a730e3 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -1,9 +1,5 @@ {{ "vnfInstanceName": "string", "vnfInstanceDescription": "string", - "vnfdId": "{vnfdId}", - "vnfProvider":"{vnfProvider}", - "vnfProductName":"{vnfProductName}", - "vnfSoftwareVersion":"{vnfSoftwareVersion}", - "vnfdVersion":"{vnfdVersion}" + "vnfdId": "{vnfdId}" }} -- GitLab From b3d06550c3aa73ec1e8a54e793f5710bb9d7228d Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 23 Dec 2020 07:13:50 +0500 Subject: [PATCH 217/580] bug fix and optional check added --- .../VnfLcmMntOperationKeywords.robot | 54 ++++-- .../environment/variables.txt | 9 +- .../jsons/createVnfRequest.json | 7 +- .../Grants.robot | 24 ++- .../descriptors/SOL001/vnf-b-1_VNF.yaml | 168 ++++++++++++++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 +++++++++++ .../environment/variables.txt | 6 +- .../VNFPackageManagementKeywords.robot | 6 + .../descriptors/SOL001/vnf-b-1_VNF.yaml | 168 ++++++++++++++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 +++++++++++ .../environment/variables.txt | 6 +- 11 files changed, 625 insertions(+), 33 deletions(-) create mode 100644 SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/vnf-b-1_VNF.yaml create mode 100644 SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml create mode 100644 SOL003/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml create mode 100644 SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index ce0725c0f..e9baab89a 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -332,10 +332,9 @@ 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}"} - Get key for VNF Descriptor - ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Change VNF Flavour ${template}= Get File jsons/changeVnfFlavourRequest.json - ${body}= Format String ${template} newFlavourId=${flavour_id} + ${body}= Format String ${template} newFlavourId=${newFlavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -372,15 +371,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}"} - Get key for VNF Descriptor - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Instance ${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} + ${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} @@ -510,9 +503,7 @@ PATCH individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get key for VNF Descriptor - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Instance ${template}= Get File jsons/patchBodyRequest.json ${body}= Format String ${template} vnfdId=${descriptor_id} vnfdVersion= ${descriptor_version} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${body} @@ -1206,6 +1197,9 @@ Check HTTP Response Header Contain 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 Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 Parse SOL001 @@ -1247,6 +1241,9 @@ Get key for VNF Descriptor END 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 Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF LCM ELSE Parse SOL006 VNF LCM Parse SOL001 Individual VNF LCM @@ -1262,4 +1259,31 @@ Parse SOL006 Individual VNF LCM ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} - \ No newline at end of file + +Add VNF Descriptor Content to VNF Instance + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Instance ELSE Parse SOL006 VNF Instance + +Parse SOL001 VNF Instance + Get key for VNF Descriptor + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + +Parse SOL006 VNF Instance + ${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} + +Add VNF Descriptor Content to Change VNF Flavour + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Change VNF Flavour ELSE Parse SOL006 Change VNF Flavour + +Parse SOL001 Change VNF Flavour + Get key for VNF Descriptor + ${newFlavourId}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + +Parse SOL006 Change VNF Flavour + Log flavour id is not present in SOL006 descriptors \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 439c951a9..cb28b2f2a 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -100,4 +100,11 @@ ${scaleOutResponse} ${callbackResp} localhost ${descriptorType} SOL001 -${vnfKey} {} \ No newline at end of file +${vnfKey} {} +${check_descriptors} 1 + +${descriptor_id} +${provider} +${product_name} +${software_version} +${descriptor_version} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json index fddfd7911..15a5f7f7d 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -5,10 +5,5 @@ "vnfProvider":"{vnfProvider}", "vnfProductName":"{vnfProductName}", "vnfSoftwareVersion":"{vnfSoftwareVersion}", - "vnfdVersion":"{vnfdVersion}", - "instantiatedVnfInfo":{{ - "flavourId":"{flavourId}", - "vnfState":"STARTED" - }} - "metadata":{{}} + "vnfdVersion":"{vnfdVersion}" }} \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 6c832261b..6b6cdc04c 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -115,10 +115,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}"} - Get key for VNF Descriptor - ${vnf_flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + 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=${vnf_flavour_id} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -129,10 +128,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}"} - Get key for VNF Descriptor - ${vnf_flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + 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=${vnf_flavour_id} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -143,10 +141,9 @@ 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}"} - Get key for VNF Descriptor - ${vnf_flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + 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=${vnf_flavour_id} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -211,4 +208,13 @@ Delete Grants ${body}= Output response Set Suite Variable ${response} ${body} +Add VNF Descriptor Content to Grant Request + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Grant Request ELSE Parse SOL006 Grant Request + +Parse SOL001 Grant Request + Get key for VNF Descriptor + ${flavourId}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + +Parse SOL006 Grant Request + Log flavour id is not present in SOL006 descriptors diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/vnf-b-1_VNF.yaml new file mode 100644 index 000000000..1712e2b33 --- /dev/null +++ b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/vnf-b-1_VNF.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: + 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" + 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-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-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 diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml new file mode 100644 index 000000000..4b84be92b --- /dev/null +++ b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml @@ -0,0 +1,105 @@ +nfv: + vnfd: + - id: VNF-B-2df + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 DFs + software-version: '2.1' + version: '2.1' + 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: right + layer-protocol: ethernet + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-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' + 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-1 + cpd: right + layer-protocol: ethernet + df: + - id: small + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-b-1 + 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' + - id: big + vdu-profile: + id: vdu-b-1 + 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' + - id: triple + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '3' + default-instantiation-level: double + 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' diff --git a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index 8ba38cb43..7a1fed179 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -41,4 +41,8 @@ ${VrQuotaAvailNotification} {} ${vnfInstanceId} myVnfInstanceId ${vnfLcmOpOccId} myLcmOccId ${vnfdId} myVnF -${flavourId} string \ No newline at end of file +${flavourId} string + +${descriptorType} SOL001 +${vnfKey} {} +${check_descriptors} 1 \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index deed6bc83..009ef0e6d 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1527,6 +1527,9 @@ Check Postcondition VNF Package Subscription is Deleted 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 Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Package ELSE Parse SOL006 VNF Package Parse SOL001 VNF Package @@ -1565,6 +1568,9 @@ Parse SOL006 VNF Package 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 Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Package Subscription ELSE Parse SOL006 Package Subscription Parse SOL001 Package Subscription diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml new file mode 100644 index 000000000..1712e2b33 --- /dev/null +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.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: + 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" + 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-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-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 diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml new file mode 100644 index 000000000..4b84be92b --- /dev/null +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml @@ -0,0 +1,105 @@ +nfv: + vnfd: + - id: VNF-B-2df + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 DFs + software-version: '2.1' + version: '2.1' + 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: right + layer-protocol: ethernet + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-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' + 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-1 + cpd: right + layer-protocol: ethernet + df: + - id: small + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-b-1 + 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' + - id: big + vdu-profile: + id: vdu-b-1 + 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' + - id: triple + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '3' + default-instantiation-level: double + 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' diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 8cc86ab17..e2621e31d 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -87,4 +87,8 @@ ${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 +${vnfKey} {} +${check_descriptors} 1 \ No newline at end of file -- GitLab From f3b7789ed7491f210735adb4b2e3bba8cac419c0 Mon Sep 17 00:00:00 2001 From: zafar Date: Thu, 24 Dec 2020 14:42:35 +0500 Subject: [PATCH 218/580] descriptors added in test case 5.3.5.1.11 --- .../descriptors/SOL001/vnf-b-1_VNF.yaml | 168 ++++++++++++++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 +++++++++++ .../VNFPackageManagementKeywords.robot | 66 ++++++- .../VNFPackages.robot | 1 + .../descriptors/SOL001/vnf-b-1_VNF.yaml | 168 ++++++++++++++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 +++++++++++ .../environment/variables.txt | 12 +- 7 files changed, 623 insertions(+), 2 deletions(-) create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml create mode 100644 SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml create mode 100644 SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml new file mode 100644 index 000000000..1712e2b33 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.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: + 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" + 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-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-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 diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml new file mode 100644 index 000000000..4b84be92b --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml @@ -0,0 +1,105 @@ +nfv: + vnfd: + - id: VNF-B-2df + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 DFs + software-version: '2.1' + version: '2.1' + 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: right + layer-protocol: ethernet + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-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' + 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-1 + cpd: right + layer-protocol: ethernet + df: + - id: small + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-b-1 + 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' + - id: big + vdu-profile: + id: vdu-b-1 + 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' + - id: triple + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '3' + default-instantiation-level: double + 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' diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 38977de8b..78d63f8ac 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -8,6 +8,7 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_veri Library Process Library MockServerLibrary Library String +Variables descriptors/SOL001/vnf-b-1_VNF.yaml *** Keywords *** @@ -174,12 +175,75 @@ Send Post Request to create new VNF Package Resource Log Creating a new VNF Package Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${body}= Get File jsons/CreateVnfPkgInfoRequest.json + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package + ${body} = Get File jsons/CreateVnfPkgInfoRequest.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${body} ${output}= Output response Set Suite Variable ${response} ${output} +Get key for VNF Descriptor + FOR ${key} IN @{topology_template.node_templates.keys()} + Log ${key} + ${check1}= Run Keyword And Return Status Should End With ${key} VNF + Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} + END + +Add VNF Descriptor Content to VNF Package + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Package ELSE Parse SOL006 VNF Package + +Parse SOL001 VNF Package + Get key for VNF Descriptor + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + +Parse SOL006 VNF Package + ${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} + +Check HTTP Response Body vnfPkginfo content against VNF Descriptor + #${check_descriptors} flag, 1 to check descriptors + Run Keyword If ${check_descriptors} == 1 Check Individual VNFPkgInfo Content + +Check Individual VNFPkgInfo Content + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 + +Parse SOL001 + Get key for VNF Descriptor + + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + #${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + + 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']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + #Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${flavour_id} + +Parse SOL006 + ${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} + + 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']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + Check Postcondition VNF Package Resource Exists Log Checking that nsd info exists Set Headers {"Accept": "${ACCEPT_JSON}"} diff --git a/SOL005/VNFPackageManagement-API/VNFPackages.robot b/SOL005/VNFPackageManagement-API/VNFPackages.robot index 15c5db397..b0b15ff99 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackages.robot @@ -157,6 +157,7 @@ Create new VNF Package Resource Check HTTP Response Body Json Schema Is vnfPkgInfo Check HTTP Response Header Contains Location Check Postcondition VNF Package Resource Exists + Check HTTP Response Body vnfPkgInfo content against VNF Descriptor PUT all VNF Packages - Method not implemented [Documentation] Test ID: 5.3.5.1.12 diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml new file mode 100644 index 000000000..1712e2b33 --- /dev/null +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.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: + 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" + 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-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-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 diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml new file mode 100644 index 000000000..4b84be92b --- /dev/null +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml @@ -0,0 +1,105 @@ +nfv: + vnfd: + - id: VNF-B-2df + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 DFs + software-version: '2.1' + version: '2.1' + 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: right + layer-protocol: ethernet + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-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' + 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-1 + cpd: right + layer-protocol: ethernet + df: + - id: small + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-b-1 + 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' + - id: big + vdu-profile: + id: vdu-b-1 + 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' + - id: triple + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '3' + default-instantiation-level: double + 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' diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 2bd7dd7e9..82d338955 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -84,4 +84,14 @@ ${vnfPkgUri} http://localhost/content.zip ${NFVO_non-MANO_OK} 1 # If 1 means that non-MANO artifacts are supported by the NFVO ${non_mano_artifact_sets} -${callbackResp} 127.0.0.1 \ No newline at end of file +${callbackResp} 127.0.0.1 + +${descriptorType} SOL001 +${vnfKey} {} +${check_descriptors} 1 + +${descriptor_id} +${provider} +${product_name} +${software_version} +${descriptor_version} \ No newline at end of file -- GitLab From 6d4a5d58415eaa688a06a394ddfaf615c607af00 Mon Sep 17 00:00:00 2001 From: zafar Date: Thu, 24 Dec 2020 17:03:54 +0500 Subject: [PATCH 219/580] descriptors added for IndividualVNFPackage & NotificationConsumer resources --- SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot | 1 + SOL005/VNFPackageManagement-API/NotificationConsumer.robot | 7 +++++-- .../jsons/VnfPackageChangeNotification.json | 2 +- .../jsons/VnfPackageOnboardingNotification.json | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot index 5a1efdce4..6e6a4d5d3 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -19,6 +19,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 vnfPkgInfo content against VNF Descriptor GET Individual VNF Package with invalid resource identifier [Documentation] Test ID: 5.3.5.2.2 diff --git a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot index b32b7f822..d8a5f0087 100644 --- a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot +++ b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot @@ -1,6 +1,7 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot Library OperatingSystem Library JSONLibrary Library String @@ -52,8 +53,9 @@ Post VNF Package Onboarding Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package ${template} = Get File jsons/VnfPackageOnboardingNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${descriptor_id} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -63,8 +65,9 @@ Post VNF Package Change Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package ${template} = Get File jsons/VnfPackageChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${descriptor_id} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json b/SOL005/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json index 103545205..e6ababfad 100644 --- a/SOL005/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json +++ b/SOL005/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json @@ -4,7 +4,7 @@ "subscriptionId":"{subscriptionId}", "timeStamp":"", "vnfPkgId":"{vnfPkgId}", - "vnfdId":"", + "vnfdId":"{vnfdId}", "changeType":"PKG_DELETE", "_links":"" }} diff --git a/SOL005/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json b/SOL005/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json index 08fdbf7cd..f455852da 100644 --- a/SOL005/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json +++ b/SOL005/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json @@ -4,7 +4,7 @@ "subscriptionId":"{subscriptionId}", "timeStamp":"", "vnfPkgId":"{vnfPkgId}", - "vnfdId":"", + "vnfdId":"{vnfdId}", "vnfmInfo":"", "_links":"" }} -- GitLab From 67acbdbfcf967ed343cae55b82a138021c4bd8ba Mon Sep 17 00:00:00 2001 From: zafar Date: Thu, 24 Dec 2020 21:08:16 +0500 Subject: [PATCH 220/580] SOL006 descriptors added for Test ID: 5.3.2.2.2 --- .../IndividualNSInstance.robot | 1 + .../NSLCMOperationKeywords.robot | 52 +++++++++++++++++++ .../environment/variables.txt | 13 ++++- .../VNFPackageManagementKeywords.robot | 2 +- 4 files changed, 66 insertions(+), 2 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot index 32285a8d4..7ac92c149 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot @@ -32,6 +32,7 @@ GET Information about an individual NS Instance GET IndividualNSInstance Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsInstance + Check HTTP Response Body NsInstance content against VNF Descriptor PUT Individual NSInstance - Method not implemented [Documentation] Test ID: 5.3.2.2.3 diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index b871442b7..10dffb4c9 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -8,6 +8,8 @@ Library OperatingSystem Library MockServerLibrary Library Collections Library String +Variables descriptors/SOL001/vnf-b-1_VNF.yaml + *** Keywords *** Initialize System @@ -221,6 +223,56 @@ POST New nsInstance ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +Check HTTP Response Body NsInstance content against VNF Descriptor + #${check_descriptors} flag, 1 to check descriptors + Run Keyword If ${check_descriptors} == 1 Check Individual NsInstance Content + +Check Individual NsInstance Content + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 + +Parse SOL001 + Get key for VNF Descriptor + + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${provider} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${product_name} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${descriptor_version} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['flavourId']} ${flavour_id} + +Parse SOL006 + ${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} + ${external_cp}= Get Variable Value ${nfv.vnfd[0].ext-cpd[0].id} + ${vdu_id}= Get Variable Value ${nfv.vnfd[0].vdu[0].id} + ${virtual_storage}= Get Variable Value ${nfv.vnfd[0].vdu[0].virtual-storage-desc} + + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${provider} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${product_name} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${descriptor_version} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} ${external_cp} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} ${vdu_id} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} ${virtual_storage} + +Get key for VNF Descriptor + FOR ${key} IN @{topology_template.node_templates.keys()} + Log ${key} + ${check1}= Run Keyword And Return Status Should End With ${key} VNF + Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} + END + POST New nsInstance with DISABLED nsd Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index 02b7d79a8..01df2b696 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -76,4 +76,15 @@ ${NEG_FILTER} attribute_not_exist=some_value ${NEG_SELECTOR} fields=wrong_field ${json} {"notificationStatus": ""} -${callbackResp} 127.0.0.1 \ No newline at end of file +${callbackResp} 127.0.0.1 + +${descriptorType} SOL001 +${vnfKey} {} +${check_descriptors} 1 + +${descriptor_id} +${provider} +${product_name} +${software_version} +${descriptor_version} +${flavour_id} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 78d63f8ac..6f374726a 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -8,7 +8,7 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_veri Library Process Library MockServerLibrary Library String -Variables descriptors/SOL001/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/vnf-b-1_VNF.yaml *** Keywords *** -- GitLab From 897005846e2489ff8e02fce3dd023a94ea68893d Mon Sep 17 00:00:00 2001 From: zafar Date: Fri, 25 Dec 2020 18:33:16 +0500 Subject: [PATCH 221/580] descriptors added for test ID: 5.3.2.5.1 --- .../NSLCMOperationKeywords.robot | 29 ++++++++++++++++--- .../descriptors/SOL001/vnf-b-1_VNF.yaml | 2 +- .../environment/variables.txt | 5 +++- .../jsons/UpdateNsRequest.json | 14 ++++++++- 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 10dffb4c9..fa1bf6c29 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -558,12 +558,33 @@ POST Update NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template}= Get File jsons/UpdateNsRequest.json - ${body}= Format String ${template} vnfUpdateType=${vnfUpdateType} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${body} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to NS Instance + ${template} = Get File jsons/UpdateNsRequest.json + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfFlavourId=${flavour_Id} newFlavourId=${flavour_Id} vnfVirtualLinkDescId=${virtualLink_id} instantiationLevelId=${instantiationLevel_id} vnfInstantiationLevelId=${instantiationLevel_id} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + +Add VNF Descriptor Content to NS Instance + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 NS Instance ELSE Parse SOL006 NS Instance + +Parse SOL001 NS Instance + Get key for VNF Descriptor + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + ${flavour_Id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + +Parse SOL006 NS Instance + ${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} + ${instantiationLevel_id}= Get Variable Value ${nfv.vnfd[0].df[0].instantiation-level[0].id} + DELETE Heal NSInstance log Trying to Delete an Heal NS instance. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml index 1712e2b33..d9a374060 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml @@ -75,7 +75,7 @@ topology_template: virtual_link_left: virtual_binding: VDU-B-1 internal_vl: - type: tosca.nodes.nfv.VnfVirtualLink + type: "tosca.nodes.nfv.VnfVirtualLink" properties: connectivity_type: layer_protocols: [ ipv4 ] diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index 01df2b696..f13e6903c 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -87,4 +87,7 @@ ${provider} ${product_name} ${software_version} ${descriptor_version} -${flavour_id} \ No newline at end of file +${flavour_id} + +${virtualLink_id} +${instantiationLevel_id} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json index 336075de4..756fa5756 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json @@ -1,3 +1,15 @@ {{ - "updateType": "{vnfUpdateType}" + "updateType": "{vnfUpdateType}", + "instantiateVnfData": {{ + "vnfdId": "{vnfdId}", + "vnfFlavourId": "{vnfFlavourId}", + "vnfInstantiationLevelId": "{vnfInstantiationLevelId}" + "extManagedVirtualLinks": {{ + "vnfVirtualLinkDescId": "{vnfVirtualLinkDescId}" + }}, + "changeVnfFlavourData": {{ + "vnfInstanceId": {}, + "newFlavourId": "{newFlavourId}", + "instantiationLevelId": "{instantiationLevelId}" + }} }} \ No newline at end of file -- GitLab From 944a23bc0557445fad9a31981ff63d8a66bccefa Mon Sep 17 00:00:00 2001 From: zafar Date: Fri, 25 Dec 2020 22:03:53 +0500 Subject: [PATCH 222/580] descriptors added --- .../NSLCMOperationKeywords.robot | 3 +- .../NotificationConsumer.robot | 9 ++++- .../NsLcmOperationOccurrenceNotification.json | 1 + .../jsons/ScaleNs.json | 4 ++ .../IndividualSubscription.robot | 1 + .../VNFPackageManagementKeywords.robot | 38 ++++++++++++++++++- .../jsons/subscriptions.json | 12 +++++- 7 files changed, 63 insertions(+), 5 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index fa1bf6c29..0472e3a83 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -513,8 +513,9 @@ POST scale nsInstance 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 NS Instance ${template}= Get File jsons/ScaleNs.json - ${body}= Format String ${template} scaleType=${scaleType} scaleTimeout=${scaleTimeout} scaleVnfType=${scaleVnfType} scaleGroupDescriptor=${scaleGroupDescriptor} scaleMemberVnfIndex=${scaleMemberVnfIndex} + ${body}= Format String ${template} scaleType=${scaleType} scaleTimeout=${scaleTimeout} scaleVnfType=${scaleVnfType} scaleGroupDescriptor=${scaleGroupDescriptor} scaleMemberVnfIndex=${scaleMemberVnfIndex} vnfInstantiationLevelId=${instantiationLevel_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot index 6cc466661..2ad41997f 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot @@ -1,10 +1,11 @@ *** Settings *** Library String -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Resource NSLCMOperationKeywords.robot Suite Setup Check resource existence and get CallbackUri @@ -65,12 +66,16 @@ Post Ns Lcm Operation Occurrence Notification 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 Notification ${template} = Get File jsons/NsLcmOperationOccurrenceNotification.json - ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} + ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} affectedVnf=${descriptor_id} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +Add VNF Descriptor Content to Notification + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 NS Instance ELSE Parse SOL006 NS Instance + Post Ns Identifier Creation Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json index d5ed27cba..414dc2d13 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json +++ b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json @@ -9,5 +9,6 @@ "notificationStatus":"START", "operationState":"PROCESSING", "isAutomaticInvocation":"True", + "affectedVnf": "{affectedVnf}", "_links":"" }} diff --git a/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json b/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json index 39d410cfd..2aa88d663 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json +++ b/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json @@ -2,7 +2,11 @@ "scaleType": "{scaleType}", "timeout_ns_scale": {scaleTimeout}, "scaleVnfData": {{ + "vnfInstanceid": {}, "scaleVnfType": "{scaleVnfType}", + "scaleToLevelData": {{ + "vnfInstantiationLevelId": "{vnfInstantiationLevelId}" + }}, "scaleByStepData": {{ "scaling-group-descriptor": "{scaleGroupDescriptor}", "member-vnf-index": "{scaleMemberVnfIndex}" diff --git a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot index b2b0c155f..7fc5498cf 100644 --- a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL005/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 PkgmSubscription content against VNF Descriptor GET Individual VNF Package Subscription with invalid resource identifier [Documentation] Test ID: 5.3.5.8.2 diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 6f374726a..c886c0442 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -737,8 +737,9 @@ Send Post Request for VNF Package Subscription Log Trying to create a new subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package ${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_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} ${output}= Output response @@ -926,6 +927,41 @@ Check HTTP Response Body Subscription Identifier matches the requested Subscript Should Be Equal ${response['body']['id']} ${subscriptionId} Log Subscription identifier as expected +Check HTTP Response Body PkgmSubscription content against VNF Descriptor + #${check_descriptors} flag, 1 to check descriptors + Run Keyword If ${check_descriptors} == 1 Check Individual PkgmSubscription Content + +Check Individual PkgmSubscription Content + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 for Subscription ELSE Parse SOL006 for Subscription + +Parse SOL001 for Subscription + Get key for VNF Descriptor + + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + + Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${provider} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${product_name} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfSoftwareVersion']} ${software_version} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfdVersion']} ${descriptor_version} + +Parse SOL006 for Subscription + ${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} + + Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${provider} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${product_name} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfSoftwareVersion']} ${software_version} + 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} &{headers} = Create Dictionary Content-Type=application/json diff --git a/SOL005/VNFPackageManagement-API/jsons/subscriptions.json b/SOL005/VNFPackageManagement-API/jsons/subscriptions.json index 124004374..0edaec106 100644 --- a/SOL005/VNFPackageManagement-API/jsons/subscriptions.json +++ b/SOL005/VNFPackageManagement-API/jsons/subscriptions.json @@ -1,6 +1,16 @@ {{ "callbackUri": "{callback_uri}{callback_endpoint}", "filter": {{ - "vnfPkgId": ["{vnfPkgId}"] + "vnfdId": ["{vnfdId}"], + "vnfPkgId": ["{vnfPkgId}"], + "vnfProductsFromProviders": {{ + "vnfProvider": {"vnfProvider"}, + "vnfProducts": {{ + "vnfProductName": {"vnfProductName"}, + "versions": {{ + "vnfSoftwareVersion": {"vnfSoftwareVersion"}, + "vnfdVersions": [{"vnfdVersions"}] + }} + }} }} }} \ No newline at end of file -- GitLab From 3fb8875a3fa6333588216dd79b4b6f0c866f0c5f Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 5 Jan 2021 16:16:26 +0500 Subject: [PATCH 223/580] SOL006 descriptors updated --- .../VNFInstances.robot | 1 + .../VnfLcmOperationKeywords.robot | 15 +- ...> reference_tst010_vnf_b_2vdu_SOL001.yaml} | 8 +- .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 ------------- .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 138 ++++++++++++++++++ 5 files changed, 157 insertions(+), 110 deletions(-) rename SOL002/VNFLifecycleManagement-API/descriptors/SOL001/{vnf-b-1_VNF.yaml => reference_tst010_vnf_b_2vdu_SOL001.yaml} (96%) delete mode 100644 SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml create mode 100644 SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index e518ec98a..6c042d821 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 diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 46e2fa7a6..9d183ea82 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -76,7 +76,7 @@ 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}"} @@ -1058,12 +1058,25 @@ Parse SOL006 ${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} + ${external_cp}= Get Variable Value ${nfv.vnfd[0].ext-cpd[0].id} + ${vdu_id}= Get Variable Value ${nfv.vnfd[0].vdu[0].id} + ${vdu_cpid}= Get Variable Value ${nfv.vnfd[0].vdu[0].int-cpd[2].id} + ${virtual_storage}= Get Variable Value ${nfv.vnfd[0].virtual-storage-desc.id} + ${virtual_link}= Get Variable Value ${nfv.vnfd[0].int-virtual-link-desc.id} + 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']['vnfSoftwareVesion']} ${software_version} Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['extCpInfo']['cpdId']} ${external_cp} + Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} ${vdu_id} + Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} ${vdu_cpid} + Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} ${virtual_storage} + Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} ${virtual_link} + + Add VNF Descriptor Content to VNF Instance Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Instance ELSE Parse SOL006 VNF Instance diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 96% rename from SOL002/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml rename to SOL002/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml index 1712e2b33..797d8bec3 100644 --- a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml +++ b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -75,7 +75,7 @@ topology_template: virtual_link_left: virtual_binding: VDU-B-1 internal_vl: - type: tosca.nodes.nfv.VnfVirtualLink + type: "tosca.nodes.nfv.VnfVirtualLink" properties: connectivity_type: layer_protocols: [ ipv4 ] @@ -88,14 +88,14 @@ topology_template: root: 10000 leaf: 10000 internal_vdu_b_1_cp: - type: tosca.nodes.nfv.VduCp + 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 + type: "tosca.nodes.nfv.VduCp" properties: order: 0 requirements: @@ -120,7 +120,7 @@ topology_template: size: '1' artifacts: sw_image: - type: tosca.artifacts.nfv.SwImage + type: "tosca.artifacts.nfv.SwImage" file: vdu-b-1.qcow2 vdu-b-1-vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml deleted file mode 100644 index 4b84be92b..000000000 --- a/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml +++ /dev/null @@ -1,105 +0,0 @@ -nfv: - vnfd: - - id: VNF-B-2df - provider: ETSI TST WG - product-name: TST010 reference VNF-B with 2 DFs - software-version: '2.1' - version: '2.1' - 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: right - layer-protocol: ethernet - virtual-compute-desc: vdu-b-1-vcd - virtual-storage-desc: vdu-b-1-vsd - sw-image-desc: vdu-b-1-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' - 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-1 - cpd: right - layer-protocol: ethernet - df: - - id: small - vdu-profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '2' - - id: single - vdu-level: - vdu-id: vdu-b-1 - 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' - - id: big - vdu-profile: - id: vdu-b-1 - 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' - - id: triple - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '3' - default-instantiation-level: double - 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' diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml new file mode 100644 index 000000000..d033e5a2e --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -0,0 +1,138 @@ +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 + vdu: + 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 -- GitLab From a2f15601f08ac6b0b3b0932841ec1846d18a2755 Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 5 Jan 2021 17:37:40 +0500 Subject: [PATCH 224/580] SOL006 descriptors added --- .../IndividualVnfLcmOperationOccurence.robot | 2 +- .../VnfLcmOperationKeywords.robot | 23 ++++++++++++------- .../jsons/patchBodyRequest.json | 2 +- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 25bdd4d68..cf5882df8 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -28,7 +28,7 @@ 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 diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 9d183ea82..1119823c3 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -10,7 +10,7 @@ Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ Library String -Variables descriptors/SOL001/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml *** Keywords *** @@ -204,9 +204,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 - ${template}= Get File jsons/patchBodyRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} + #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} @@ -1108,12 +1108,19 @@ Parse SOL001 LCM Op Occ ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - Should Be Equal As Strings ${response['body']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} Parse SOL006 LCM Op Occ ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + ${vdu_id}= Get Variable Value ${nfv.vnfd[0].vdu[0].id} + ${virtual_storage}= Get Variable Value ${nfv.vnfd[0].virtual-storage-desc.id} + ${virtual_link}= Get Variable Value ${nfv.vnfd[0].int-virtual-link-desc.id} - Should Be Equal As Strings ${response['body']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} \ No newline at end of file + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} + Should Be Equal As Strings ${response['body']['resourceChanges']['affectedVirtualLinks']['vnfVirtualLinkDescId']} ${virtual_link} + Should Be Equal As Strings ${response['body']['resourceChanges']['affectedVnfcs']['vduId']} ${vdu_id} + Should Be Equal As Strings ${response['body']['resourceChanges']['affectedVirtualStorages']['virtualStorageDescId']} ${virtual_storage} + \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/patchBodyRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/patchBodyRequest.json index a9f1c9dae..774192021 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/patchBodyRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/patchBodyRequest.json @@ -1,5 +1,5 @@ { "vnfInstanceName": "vnf new name", "vnfInstanceDescription": "new description", - "vnfdId": "{vnfdId}" + "vnfdId": "" } \ No newline at end of file -- GitLab From afedd0f22463d9a3741af386ce8ae584c8211c3c Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 5 Jan 2021 18:17:40 +0500 Subject: [PATCH 225/580] Reference descriptor files updated --- ...> reference_tst010_vnf_b_2vdu_SOL001.yaml} | 6 +- .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 ------------- .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 138 ++++++++++++++++++ ...> reference_tst010_vnf_b_2vdu_SOL001.yaml} | 8 +- .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 ------------- .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 138 ++++++++++++++++++ 6 files changed, 283 insertions(+), 217 deletions(-) rename SOL005/NSLifecycleManagement-API/descriptors/SOL001/{vnf-b-1_VNF.yaml => reference_tst010_vnf_b_2vdu_SOL001.yaml} (97%) delete mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml rename SOL005/VNFPackageManagement-API/descriptors/SOL001/{vnf-b-1_VNF.yaml => reference_tst010_vnf_b_2vdu_SOL001.yaml} (96%) delete mode 100644 SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml create mode 100644 SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 97% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml index d9a374060..797d8bec3 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -88,14 +88,14 @@ topology_template: root: 10000 leaf: 10000 internal_vdu_b_1_cp: - type: tosca.nodes.nfv.VduCp + 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 + type: "tosca.nodes.nfv.VduCp" properties: order: 0 requirements: @@ -120,7 +120,7 @@ topology_template: size: '1' artifacts: sw_image: - type: tosca.artifacts.nfv.SwImage + type: "tosca.artifacts.nfv.SwImage" file: vdu-b-1.qcow2 vdu-b-1-vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml deleted file mode 100644 index 4b84be92b..000000000 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml +++ /dev/null @@ -1,105 +0,0 @@ -nfv: - vnfd: - - id: VNF-B-2df - provider: ETSI TST WG - product-name: TST010 reference VNF-B with 2 DFs - software-version: '2.1' - version: '2.1' - 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: right - layer-protocol: ethernet - virtual-compute-desc: vdu-b-1-vcd - virtual-storage-desc: vdu-b-1-vsd - sw-image-desc: vdu-b-1-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' - 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-1 - cpd: right - layer-protocol: ethernet - df: - - id: small - vdu-profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '2' - - id: single - vdu-level: - vdu-id: vdu-b-1 - 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' - - id: big - vdu-profile: - id: vdu-b-1 - 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' - - id: triple - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '3' - default-instantiation-level: double - 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' diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml new file mode 100644 index 000000000..d033e5a2e --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -0,0 +1,138 @@ +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 + vdu: + 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/SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 96% rename from SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml rename to SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml index 1712e2b33..797d8bec3 100644 --- a/SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -75,7 +75,7 @@ topology_template: virtual_link_left: virtual_binding: VDU-B-1 internal_vl: - type: tosca.nodes.nfv.VnfVirtualLink + type: "tosca.nodes.nfv.VnfVirtualLink" properties: connectivity_type: layer_protocols: [ ipv4 ] @@ -88,14 +88,14 @@ topology_template: root: 10000 leaf: 10000 internal_vdu_b_1_cp: - type: tosca.nodes.nfv.VduCp + 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 + type: "tosca.nodes.nfv.VduCp" properties: order: 0 requirements: @@ -120,7 +120,7 @@ topology_template: size: '1' artifacts: sw_image: - type: tosca.artifacts.nfv.SwImage + type: "tosca.artifacts.nfv.SwImage" file: vdu-b-1.qcow2 vdu-b-1-vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml deleted file mode 100644 index 4b84be92b..000000000 --- a/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml +++ /dev/null @@ -1,105 +0,0 @@ -nfv: - vnfd: - - id: VNF-B-2df - provider: ETSI TST WG - product-name: TST010 reference VNF-B with 2 DFs - software-version: '2.1' - version: '2.1' - 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: right - layer-protocol: ethernet - virtual-compute-desc: vdu-b-1-vcd - virtual-storage-desc: vdu-b-1-vsd - sw-image-desc: vdu-b-1-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' - 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-1 - cpd: right - layer-protocol: ethernet - df: - - id: small - vdu-profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '2' - - id: single - vdu-level: - vdu-id: vdu-b-1 - 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' - - id: big - vdu-profile: - id: vdu-b-1 - 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' - - id: triple - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '3' - default-instantiation-level: double - 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' diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml new file mode 100644 index 000000000..d033e5a2e --- /dev/null +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -0,0 +1,138 @@ +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 + vdu: + 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 -- GitLab From 71788593472711463c77dcd157575dc786fa59de Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 5 Jan 2021 20:25:07 +0500 Subject: [PATCH 226/580] SOL006 descriptors updated --- .../NSLCMOperationKeywords.robot | 14 ++++++++++---- .../NotificationConsumer.robot | 2 +- .../NsLcmOperationOccurrenceNotification.json | 4 +++- .../VNFPackageManagementKeywords.robot | 4 +--- .../jsons/subscriptions.json | 2 +- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 0472e3a83..c7d01465b 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -8,7 +8,7 @@ Library OperatingSystem Library MockServerLibrary Library Collections Library String -Variables descriptors/SOL001/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml *** Keywords *** @@ -255,8 +255,10 @@ Parse SOL006 ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} ${external_cp}= Get Variable Value ${nfv.vnfd[0].ext-cpd[0].id} ${vdu_id}= Get Variable Value ${nfv.vnfd[0].vdu[0].id} - ${virtual_storage}= Get Variable Value ${nfv.vnfd[0].vdu[0].virtual-storage-desc} - + ${vdu_cpid}= Get Variable Value ${nfv.vnfd[0].vdu[0].int-cpd[2].id} + ${virtual_storage}= Get Variable Value ${nfv.vnfd[0].virtual-storage-desc.id} + ${virtual_link}= Get Variable Value ${nfv.vnfd[0].int-virtual-link-desc.id} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${descriptor_id} Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${provider} Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${product_name} @@ -264,7 +266,10 @@ Parse SOL006 Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${descriptor_version} Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} ${external_cp} Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} ${vdu_id} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} ${vdu_cpid} Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} ${virtual_storage} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} ${virtual_link} + Get key for VNF Descriptor FOR ${key} IN @{topology_template.node_templates.keys()} @@ -583,7 +588,8 @@ Parse SOL006 NS Instance ${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} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + ${virtualLink_id}= Get Variable Value ${nfv.vnfd[0].int-virtual-link-desc.id} ${instantiationLevel_id}= Get Variable Value ${nfv.vnfd[0].df[0].instantiation-level[0].id} DELETE Heal NSInstance diff --git a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot index 2ad41997f..546b10860 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot @@ -68,7 +68,7 @@ Post Ns Lcm Operation Occurrence Notification Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Notification ${template} = Get File jsons/NsLcmOperationOccurrenceNotification.json - ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} affectedVnf=${descriptor_id} + ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} vnfdId=${descriptor_id} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json index 414dc2d13..9a4e3cfb0 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json +++ b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json @@ -9,6 +9,8 @@ "notificationStatus":"START", "operationState":"PROCESSING", "isAutomaticInvocation":"True", - "affectedVnf": "{affectedVnf}", + "affectedVnf": {{ + "vnfdId": "{vnfdId}" + }}, "_links":"" }} diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index c886c0442..b1c600a40 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -8,7 +8,7 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_veri Library Process Library MockServerLibrary Library String -Variables descriptors/SOL001/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml *** Keywords *** @@ -222,14 +222,12 @@ Parse SOL001 ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - #${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} 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']['vnfSoftwareVesion']} ${software_version} Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} - #Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${flavour_id} Parse SOL006 ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} diff --git a/SOL005/VNFPackageManagement-API/jsons/subscriptions.json b/SOL005/VNFPackageManagement-API/jsons/subscriptions.json index 0edaec106..e4db0e2b5 100644 --- a/SOL005/VNFPackageManagement-API/jsons/subscriptions.json +++ b/SOL005/VNFPackageManagement-API/jsons/subscriptions.json @@ -9,7 +9,7 @@ "vnfProductName": {"vnfProductName"}, "versions": {{ "vnfSoftwareVersion": {"vnfSoftwareVersion"}, - "vnfdVersions": [{"vnfdVersions"}] + "vnfdVersions": [{"vnfdVersion"}] }} }} }} -- GitLab From 0001d589d2702e07132901d682c5fd70c648922d Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Thu, 7 Jan 2021 17:29:44 +0100 Subject: [PATCH 227/580] Fix on multiple keywords with same name --- .../NSDManagementKeywords.robot | 250 +++++++++--------- .../VNFPackageManagementKeywords.robot | 220 +++++++-------- 2 files changed, 235 insertions(+), 235 deletions(-) diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index c5a26d96a..355128df6 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -16,7 +16,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} @@ -24,7 +24,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} @@ -37,7 +37,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} @@ -47,7 +47,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} @@ -56,7 +56,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} @@ -66,7 +66,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} @@ -74,7 +74,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} @@ -88,7 +88,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} @@ -102,7 +102,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} @@ -110,7 +110,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} @@ -125,7 +125,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} @@ -141,7 +141,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} @@ -149,7 +149,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 @@ -160,7 +160,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} @@ -169,7 +169,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} @@ -178,7 +178,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} @@ -190,7 +190,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} @@ -203,7 +203,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} @@ -215,7 +215,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} @@ -236,7 +236,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} @@ -247,7 +247,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} @@ -258,7 +258,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} @@ -266,21 +266,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} @@ -292,7 +292,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} @@ -301,7 +301,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} @@ -329,7 +329,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} @@ -337,7 +337,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} @@ -345,7 +345,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} @@ -355,7 +355,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} @@ -365,7 +365,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} @@ -413,7 +413,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} @@ -421,7 +421,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} @@ -429,7 +429,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} @@ -437,7 +437,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} @@ -445,7 +445,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} @@ -458,7 +458,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} @@ -466,7 +466,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} @@ -480,7 +480,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} @@ -494,7 +494,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} @@ -502,7 +502,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} @@ -517,7 +517,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} @@ -533,7 +533,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} @@ -541,7 +541,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 @@ -552,7 +552,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} @@ -561,7 +561,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} @@ -570,7 +570,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} @@ -578,7 +578,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} @@ -591,7 +591,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} @@ -602,7 +602,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} @@ -618,7 +618,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} @@ -626,14 +626,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 @@ -641,7 +641,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} @@ -650,7 +650,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} @@ -658,7 +658,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} @@ -667,7 +667,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} @@ -676,7 +676,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} @@ -684,7 +684,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} @@ -692,7 +692,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} @@ -710,7 +710,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} @@ -718,7 +718,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} @@ -726,7 +726,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} @@ -734,7 +734,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} @@ -747,7 +747,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} @@ -755,7 +755,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} @@ -764,7 +764,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} @@ -773,7 +773,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} @@ -787,21 +787,21 @@ Send Post Request for NSD Management Subscription ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} 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}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} 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 @@ -814,7 +814,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} @@ -824,7 +824,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} @@ -833,7 +833,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} @@ -877,7 +877,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 @@ -886,7 +886,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 @@ -904,7 +904,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} @@ -912,7 +912,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} @@ -920,7 +920,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} @@ -933,31 +933,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} @@ -996,7 +996,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 @@ -1006,7 +1006,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} @@ -1014,7 +1014,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} @@ -1023,7 +1023,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} @@ -1032,7 +1032,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} @@ -1040,7 +1040,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} @@ -1049,7 +1049,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} @@ -1058,7 +1058,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} @@ -1066,7 +1066,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} @@ -1074,7 +1074,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} @@ -1082,7 +1082,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} @@ -1090,7 +1090,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} @@ -1098,14 +1098,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} @@ -1113,7 +1113,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} @@ -1122,7 +1122,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} @@ -1130,7 +1130,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} @@ -1138,7 +1138,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} @@ -1146,7 +1146,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} @@ -1154,7 +1154,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} @@ -1162,7 +1162,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} @@ -1170,7 +1170,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} @@ -1179,7 +1179,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} @@ -1188,7 +1188,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} @@ -1196,7 +1196,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} @@ -1205,7 +1205,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} @@ -1214,7 +1214,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} @@ -1222,7 +1222,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} @@ -1230,7 +1230,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} @@ -1238,7 +1238,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} @@ -1246,7 +1246,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} @@ -1254,14 +1254,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} @@ -1269,7 +1269,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} @@ -1278,7 +1278,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} @@ -1286,7 +1286,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} @@ -1294,7 +1294,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} @@ -1302,7 +1302,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} @@ -1310,6 +1310,6 @@ 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/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 38977de8b..e32dacda4 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -15,7 +15,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} @@ -47,7 +47,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} @@ -62,7 +62,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} @@ -72,7 +72,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} @@ -81,7 +81,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} @@ -89,7 +89,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} @@ -110,7 +110,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} @@ -129,7 +129,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} @@ -148,7 +148,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} @@ -166,7 +166,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} @@ -176,7 +176,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} @@ -184,7 +184,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 @@ -194,7 +194,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} @@ -202,7 +202,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} @@ -210,7 +210,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} @@ -218,7 +218,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} @@ -231,7 +231,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} @@ -239,7 +239,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} @@ -247,7 +247,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} @@ -257,7 +257,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} @@ -272,7 +272,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} @@ -280,21 +280,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} @@ -306,7 +306,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} @@ -314,7 +314,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} @@ -322,7 +322,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} @@ -334,7 +334,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} @@ -343,7 +343,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} @@ -352,7 +352,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} @@ -360,7 +360,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} @@ -368,7 +368,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} @@ -376,7 +376,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} @@ -384,7 +384,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} @@ -392,7 +392,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} @@ -406,7 +406,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} @@ -428,7 +428,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} @@ -436,7 +436,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} @@ -444,7 +444,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} @@ -452,7 +452,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} @@ -460,7 +460,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} @@ -478,7 +478,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 @@ -494,7 +494,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} @@ -502,21 +502,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} @@ -525,7 +525,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} @@ -535,21 +535,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} @@ -557,7 +557,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} @@ -565,7 +565,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} @@ -573,7 +573,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} @@ -581,7 +581,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} @@ -591,7 +591,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} @@ -601,7 +601,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} @@ -609,7 +609,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} @@ -617,7 +617,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} @@ -625,7 +625,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} @@ -633,7 +633,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} @@ -641,7 +641,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} @@ -649,7 +649,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} @@ -657,7 +657,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} @@ -665,7 +665,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} @@ -676,7 +676,7 @@ Send Post Request for VNF Package Subscription ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri} 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} Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 @@ -689,7 +689,7 @@ Send Post Request for Duplicated VNF Package Subscription ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri} 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} @@ -697,7 +697,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} @@ -705,7 +705,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} @@ -713,7 +713,7 @@ 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} @@ -732,9 +732,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 @@ -742,7 +742,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 @@ -760,7 +760,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} @@ -768,7 +768,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} @@ -776,7 +776,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} @@ -789,31 +789,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} @@ -829,7 +829,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 @@ -863,7 +863,7 @@ Check HTTP Response Body Subscription Identifier matches the requested Subscript Log Subscription identifier as expected 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} @@ -892,7 +892,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} @@ -900,7 +900,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} @@ -914,7 +914,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} @@ -922,7 +922,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} @@ -930,14 +930,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} @@ -945,14 +945,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} @@ -960,7 +960,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} @@ -968,7 +968,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} @@ -976,7 +976,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} @@ -984,7 +984,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} @@ -992,7 +992,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} @@ -1000,7 +1000,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} @@ -1008,7 +1008,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} @@ -1017,7 +1017,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} @@ -1025,7 +1025,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} @@ -1034,7 +1034,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} @@ -1042,7 +1042,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} @@ -1050,14 +1050,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} @@ -1067,7 +1067,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} @@ -1075,7 +1075,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} @@ -1083,7 +1083,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} @@ -1091,7 +1091,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} @@ -1099,6 +1099,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} -- GitLab From ea0aeb15c39629910ffcfa35bcec7451a3292c88 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Fri, 8 Jan 2021 17:18:01 +0100 Subject: [PATCH 228/580] Fix on dockerFile --- requirements.txt | 3 +-- scripts/docker/Dockerfile | 17 ++++++----------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/requirements.txt b/requirements.txt index f6c9c6d5d..bafc102d3 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 e6130d455..9f753df87 100644 --- a/scripts/docker/Dockerfile +++ b/scripts/docker/Dockerfile @@ -28,23 +28,13 @@ RUN DEBIAN_FRONTEND=noninteractive \ && mkdir -p /home/etsi/dev/robot \ && cd /home/etsi/dev/robot -RUN pip3 install robotframework - -RUN DEBIAN_FRONTEND=noninteractive \ - && cd /home/etsi/dev/robot \ - && git clone https://github.com/etsi-cti-admin/robotframework-mockserver +#RUN pip3 install robotframework ADD requirements.txt /home/etsi/dev/robot/ ADD extensions /home/etsi/dev/robot/extensions RUN ls /home/etsi/dev/robot -RUN DEBIAN_FRONTEND=noninteractive \ - && cd /home/etsi/dev/robot \ - && pip3 install -r requirements.txt \ - && cd robotframework-mockserver \ - && patch -p1 < ../extensions/mockserverlibrary.patch \ - && python3 -m pip install -e . RUN DEBIAN_FRONTED=noninteractive \ cd /home/etsi/dev/ \ @@ -54,6 +44,11 @@ RUN DEBIAN_FRONTED=noninteractive \ && pip3 install -r requirements.txt \ && 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/* -- GitLab From 26dbefb4176078087f57dfbb3c39b5655450d78f Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Mon, 11 Jan 2021 15:28:53 +0100 Subject: [PATCH 229/580] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 4255e98cb..bafc102d3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ # pip -r requirements.txt -robotframework==3.2.2 +robotframework==3.1 RESTinstance==1.0.0rc4 robotframework-dependencylibrary==1.0.0.post1 robotframework-jsonlibrary==0.3 -- GitLab From f96f746f3b45e58c69832cd39dec78948cc97ab4 Mon Sep 17 00:00:00 2001 From: zafar Date: Thu, 14 Jan 2021 17:23:55 +0500 Subject: [PATCH 230/580] Reference descriptor YAMLs updated for both SOL001 and SOL006 --- .../reference_tst010_vnf_b_2vdu_SOL001.yaml | 82 ++++---- .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 185 +++++++++--------- .../reference_tst010_vnf_b_2vdu_SOL001.yaml | 82 ++++---- .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 185 +++++++++--------- .../environment/variables.txt | 2 +- 5 files changed, 267 insertions(+), 269 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml index 797d8bec3..e9159106a 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -15,44 +15,6 @@ topology_template: virtual_link_right: [right, virtual_link_right] node_templates: - 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" right: type: "tosca.nodes.nfv.VduCp" properties: @@ -101,7 +63,7 @@ topology_template: requirements: - virtual_binding: VDU-B-2 - virtual_link: internal_vl - vdu-b-1-vsd: + vdu_b_1_vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: @@ -122,14 +84,14 @@ topology_template: sw_image: type: "tosca.artifacts.nfv.SwImage" file: vdu-b-1.qcow2 - vdu-b-1-vsd: + 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-1 image" + name: "vdu-b-2 image" version: "1.1" checksum: algorithm: "sha-224" @@ -166,3 +128,41 @@ topology_template: 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/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml index d033e5a2e..0ea9820f0 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -2,137 +2,136 @@ nfv: vnfd: - id: VNF-B-2vdu provider: ETSI TST WG - product-name: TST010 reference VNF-B with 2 VDUs - software-version: '2.2' + product_name: TST010 reference VNF-B with 2 VDUs + software_version: '2.2' version: '2.2' - vnfm-info: ETSI VNFM + 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 - vdu: - 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 + 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: + virtual_memory: size: '4.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: + 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: + 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' + 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: + virtual_compute_desc: id: vdu-b-2-vcd - virtual-memory: + virtual_memory: size: '6.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: + 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: + 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' + 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: + 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: + 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 + int_cpd: + vdu_id: vdu-b-1 cpd: left - layer-protocol: ethernet + layer_protocol: ethernet - id: management - int-cpd: - vdu-id: vdu-b-1 + int_cpd: + vdu_id: vdu-b-1 cpd: management - layer-protocol: ethernet + layer_protocol: ethernet - id: ext-b-right - int-cpd: - vdu-id: vdu-b-2 + int_cpd: + vdu_id: vdu-b-2 cpd: right - layer-protocol: ethernet + layer_protocol: ethernet df: id: normal - vdu-profile: + vdu_profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' + 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: + 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' + 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 + 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/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml index 797d8bec3..e9159106a 100644 --- a/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -15,44 +15,6 @@ topology_template: virtual_link_right: [right, virtual_link_right] node_templates: - 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" right: type: "tosca.nodes.nfv.VduCp" properties: @@ -101,7 +63,7 @@ topology_template: requirements: - virtual_binding: VDU-B-2 - virtual_link: internal_vl - vdu-b-1-vsd: + vdu_b_1_vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: @@ -122,14 +84,14 @@ topology_template: sw_image: type: "tosca.artifacts.nfv.SwImage" file: vdu-b-1.qcow2 - vdu-b-1-vsd: + 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-1 image" + name: "vdu-b-2 image" version: "1.1" checksum: algorithm: "sha-224" @@ -166,3 +128,41 @@ topology_template: 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/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml index d033e5a2e..0ea9820f0 100644 --- a/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -2,137 +2,136 @@ nfv: vnfd: - id: VNF-B-2vdu provider: ETSI TST WG - product-name: TST010 reference VNF-B with 2 VDUs - software-version: '2.2' + product_name: TST010 reference VNF-B with 2 VDUs + software_version: '2.2' version: '2.2' - vnfm-info: ETSI VNFM + 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 - vdu: - 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 + 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: + virtual_memory: size: '4.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: + 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: + 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' + 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: + virtual_compute_desc: id: vdu-b-2-vcd - virtual-memory: + virtual_memory: size: '6.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: + 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: + 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' + 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: + 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: + 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 + int_cpd: + vdu_id: vdu-b-1 cpd: left - layer-protocol: ethernet + layer_protocol: ethernet - id: management - int-cpd: - vdu-id: vdu-b-1 + int_cpd: + vdu_id: vdu-b-1 cpd: management - layer-protocol: ethernet + layer_protocol: ethernet - id: ext-b-right - int-cpd: - vdu-id: vdu-b-2 + int_cpd: + vdu_id: vdu-b-2 cpd: right - layer-protocol: ethernet + layer_protocol: ethernet df: id: normal - vdu-profile: + vdu_profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' + 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: + 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' + 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 + 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/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 82d338955..22b71fb75 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -88,7 +88,7 @@ ${callbackResp} 127.0.0.1 ${descriptorType} SOL001 ${vnfKey} {} -${check_descriptors} 1 +${check_descriptors} 1 # If True test suite will validate VNF/NS descriptors ${descriptor_id} ${provider} -- GitLab From ba31126dcde29e2b2e2114a5f5571f027fbdde1d Mon Sep 17 00:00:00 2001 From: zafar Date: Thu, 14 Jan 2021 20:06:24 +0500 Subject: [PATCH 231/580] SOL001 & SOL006 Descriptor parsing and checking updated for VNFPackageManagement & NS-LCM APIs --- .../NSLCMOperationKeywords.robot | 198 ++++++++++------ .../NotificationConsumer.robot | 9 +- .../environment/variables.txt | 33 ++- .../NotificationConsumer.robot | 8 +- .../VNFPackageManagementKeywords.robot | 220 +++++++++++------- .../environment/variables.txt | 32 ++- 6 files changed, 319 insertions(+), 181 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index c7d01465b..c18055e35 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -8,6 +8,7 @@ Library OperatingSystem Library MockServerLibrary Library Collections Library String +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -228,55 +229,139 @@ Check HTTP Response Body NsInstance content against VNF Descriptor Run Keyword If ${check_descriptors} == 1 Check Individual NsInstance Content Check Individual NsInstance Content - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 - -Parse SOL001 - Get key for VNF Descriptor + PARSE the Descriptor File + Match the Response Attributes with Descriptors - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} +PARSE the Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 descriptor file ELSE Fetch Information from SOL006 descriptor file - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${provider} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${product_name} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${descriptor_version} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['flavourId']} ${flavour_id} +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} -Parse SOL006 - ${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} - ${external_cp}= Get Variable Value ${nfv.vnfd[0].ext-cpd[0].id} - ${vdu_id}= Get Variable Value ${nfv.vnfd[0].vdu[0].id} - ${vdu_cpid}= Get Variable Value ${nfv.vnfd[0].vdu[0].int-cpd[2].id} - ${virtual_storage}= Get Variable Value ${nfv.vnfd[0].virtual-storage-desc.id} - ${virtual_link}= Get Variable Value ${nfv.vnfd[0].int-virtual-link-desc.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} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${provider} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${product_name} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${descriptor_version} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} ${external_cp} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} ${vdu_id} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} ${vdu_cpid} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} ${virtual_storage} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} ${virtual_link} +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 key for VNF Descriptor - FOR ${key} IN @{topology_template.node_templates.keys()} - Log ${key} - ${check1}= Run Keyword And Return Status Should End With ${key} VNF - Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} +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 Response Attributes with Descriptors + #Checking Response attributes with VNF Descriptors + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${Descriptor_ID} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${Provider} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${Product_Name} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVesion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${Descriptor_Version} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['flavourId']} ${Flavour_ID} + List Should Contain Value ${VDU_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} + List Should Contain value ${Storage_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} POST New nsInstance with DISABLED nsd Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances @@ -518,9 +603,9 @@ POST scale nsInstance 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 NS Instance + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/ScaleNs.json - ${body}= Format String ${template} scaleType=${scaleType} scaleTimeout=${scaleTimeout} scaleVnfType=${scaleVnfType} scaleGroupDescriptor=${scaleGroupDescriptor} scaleMemberVnfIndex=${scaleMemberVnfIndex} vnfInstantiationLevelId=${instantiationLevel_id} + ${body}= Format String ${template} scaleType=${scaleType} scaleTimeout=${scaleTimeout} scaleVnfType=${scaleVnfType} scaleGroupDescriptor=${scaleGroupDescriptor} scaleMemberVnfIndex=${scaleMemberVnfIndex} vnfInstantiationLevelId=${InstantiationLevel_IDs[0]} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -564,33 +649,12 @@ POST Update NSInstance 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 NS Instance + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template} = Get File jsons/UpdateNsRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} vnfFlavourId=${flavour_Id} newFlavourId=${flavour_Id} vnfVirtualLinkDescId=${virtualLink_id} instantiationLevelId=${instantiationLevel_id} vnfInstantiationLevelId=${instantiationLevel_id} + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfFlavourId=${Flavour_ID} newFlavourId=${Flavour_ID} vnfVirtualLinkDescId=${VirtualLink_IDs[0]} instantiationLevelId=${InstantiationLevel_IDs[1]} vnfInstantiationLevelId=${InstantiationLevel_IDs[0]} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - -Add VNF Descriptor Content to NS Instance - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 NS Instance ELSE Parse SOL006 NS Instance - -Parse SOL001 NS Instance - Get key for VNF Descriptor - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - ${flavour_Id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} - -Parse SOL006 NS Instance - ${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} - ${virtualLink_id}= Get Variable Value ${nfv.vnfd[0].int-virtual-link-desc.id} - ${instantiationLevel_id}= Get Variable Value ${nfv.vnfd[0].df[0].instantiation-level[0].id} DELETE Heal NSInstance log Trying to Delete an Heal NS instance. This method should not be implemented diff --git a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot index 546b10860..a76b3a899 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot @@ -66,16 +66,13 @@ Post Ns Lcm Operation Occurrence Notification 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 Notification + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template} = Get File jsons/NsLcmOperationOccurrenceNotification.json - ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} vnfdId=${descriptor_id} + ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} vnfdId=${Descriptor_ID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - -Add VNF Descriptor Content to Notification - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 NS Instance ELSE Parse SOL006 NS Instance - + Post Ns Identifier Creation Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index f13e6903c..f7346a6e5 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -78,16 +78,27 @@ ${json} {"notificationStatus": ""} ${callbackResp} 127.0.0.1 -${descriptorType} SOL001 -${vnfKey} {} -${check_descriptors} 1 +${check_descriptors} 1 +${descriptorType} SOL006 -${descriptor_id} -${provider} -${product_name} -${software_version} -${descriptor_version} -${flavour_id} +${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} -${virtualLink_id} -${instantiationLevel_id} \ No newline at end of file +${Descriptor_ID} +${Provider} +${Product_Name} +${Software_Version} +${Descriptor_Version} +${Flavour_ID} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot index d8a5f0087..62fd52bc1 100644 --- a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot +++ b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot @@ -53,9 +53,9 @@ Post VNF Package Onboarding Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package + Run Keyword If ${check_descriptors} == 1 Parse the Descriptor File ${template} = Get File jsons/VnfPackageOnboardingNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${descriptor_id} + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${Descriptor_ID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -65,9 +65,9 @@ Post VNF Package Change Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package + Run Keyword If ${check_descriptors} == 1 Parse the Descriptor File ${template} = Get File jsons/VnfPackageChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${descriptor_id} + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${Descriptor_ID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index b1c600a40..6842187b1 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -8,8 +8,10 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_veri Library Process Library MockServerLibrary Library String +Library Collections +Library String Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml - +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml *** Keywords *** Get all VNF Packages @@ -175,73 +177,143 @@ Send Post Request to create new VNF Package Resource Log Creating a new VNF Package Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package ${body} = Get File jsons/CreateVnfPkgInfoRequest.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${body} ${output}= Output response Set Suite Variable ${response} ${output} - -Get key for VNF Descriptor - FOR ${key} IN @{topology_template.node_templates.keys()} - Log ${key} - ${check1}= Run Keyword And Return Status Should End With ${key} VNF - Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} - END -Add VNF Descriptor Content to VNF Package - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Package ELSE Parse SOL006 VNF Package - -Parse SOL001 VNF Package - Get key for VNF Descriptor - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} -Parse SOL006 VNF Package - ${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} - Check HTTP Response Body vnfPkginfo content against VNF Descriptor #${check_descriptors} flag, 1 to check descriptors Run Keyword If ${check_descriptors} == 1 Check Individual VNFPkgInfo Content - + Check Individual VNFPkgInfo Content - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 - -Parse SOL001 - Get key for VNF Descriptor + PARSE the Descriptor File + Match the Response Attributes of vnfPkgInfo with Descriptors - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} +PARSE the Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 descriptor file ELSE Fetch Information from SOL006 descriptor file - 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']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} +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} -Parse SOL006 - ${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} - - 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']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfdVersion']} ${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} + ${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 Response Attributes of vnfPkgInfo 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']['vnfSoftwareVesion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${Descriptor_Version} + Check Postcondition VNF Package Resource Exists Log Checking that nsd info exists Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -735,9 +807,9 @@ Send Post Request for VNF Package Subscription Log Trying to create a new subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package + 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_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} ${output}= Output response @@ -929,36 +1001,16 @@ Check HTTP Response Body PkgmSubscription content against VNF Descriptor #${check_descriptors} flag, 1 to check descriptors Run Keyword If ${check_descriptors} == 1 Check Individual PkgmSubscription Content -Check Individual PkgmSubscription Content - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 for Subscription ELSE Parse SOL006 for Subscription - -Parse SOL001 for Subscription - Get key for VNF Descriptor - - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - - Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${provider} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${product_name} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfSoftwareVersion']} ${software_version} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfdVersion']} ${descriptor_version} +Check Individual PkgmSubscription Content + PARSE the Descriptor File + Match the Response Attributes of PkgmSubscription with Descriptors -Parse SOL006 for Subscription - ${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} - - Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${provider} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${product_name} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfSoftwareVersion']} ${software_version} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfdVersion']} ${descriptor_version} +Match the Response Attributes of PkgmSubscription with Descriptors + Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${Descriptor_ID} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${Provider} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${Product_Name} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfSoftwareVersion']} ${Software_Version} + 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} diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 22b71fb75..926a45ae2 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -86,12 +86,26 @@ ${NFVO_non-MANO_OK} 1 # If 1 means that non-MANO artifacts are supported b ${non_mano_artifact_sets} ${callbackResp} 127.0.0.1 -${descriptorType} SOL001 -${vnfKey} {} -${check_descriptors} 1 # If True test suite will validate VNF/NS descriptors - -${descriptor_id} -${provider} -${product_name} -${software_version} -${descriptor_version} \ No newline at end of file +${check_descriptors} 1 +${descriptorType} SOL006 + +${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} -- GitLab From ad5297ca8ad07b952f3d1e7820db8a1622b4a8f2 Mon Sep 17 00:00:00 2001 From: zafar Date: Fri, 15 Jan 2021 13:08:17 +0500 Subject: [PATCH 232/580] Updated reference descriptor YAML files for SOL001 and SOL006 --- .../reference_tst010_vnf_b_2vdu_SOL001.yaml | 82 ++++---- .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 185 +++++++++--------- .../environment/variables.txt | 33 +++- 3 files changed, 156 insertions(+), 144 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml index 797d8bec3..e9159106a 100644 --- a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +++ b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -15,44 +15,6 @@ topology_template: virtual_link_right: [right, virtual_link_right] node_templates: - 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" right: type: "tosca.nodes.nfv.VduCp" properties: @@ -101,7 +63,7 @@ topology_template: requirements: - virtual_binding: VDU-B-2 - virtual_link: internal_vl - vdu-b-1-vsd: + vdu_b_1_vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: @@ -122,14 +84,14 @@ topology_template: sw_image: type: "tosca.artifacts.nfv.SwImage" file: vdu-b-1.qcow2 - vdu-b-1-vsd: + 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-1 image" + name: "vdu-b-2 image" version: "1.1" checksum: algorithm: "sha-224" @@ -166,3 +128,41 @@ topology_template: 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/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml index d033e5a2e..0ea9820f0 100644 --- a/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +++ b/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -2,137 +2,136 @@ nfv: vnfd: - id: VNF-B-2vdu provider: ETSI TST WG - product-name: TST010 reference VNF-B with 2 VDUs - software-version: '2.2' + product_name: TST010 reference VNF-B with 2 VDUs + software_version: '2.2' version: '2.2' - vnfm-info: ETSI VNFM + 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 - vdu: - 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 + 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: + virtual_memory: size: '4.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: + 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: + 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' + 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: + virtual_compute_desc: id: vdu-b-2-vcd - virtual-memory: + virtual_memory: size: '6.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: + 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: + 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' + 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: + 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: + 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 + int_cpd: + vdu_id: vdu-b-1 cpd: left - layer-protocol: ethernet + layer_protocol: ethernet - id: management - int-cpd: - vdu-id: vdu-b-1 + int_cpd: + vdu_id: vdu-b-1 cpd: management - layer-protocol: ethernet + layer_protocol: ethernet - id: ext-b-right - int-cpd: - vdu-id: vdu-b-2 + int_cpd: + vdu_id: vdu-b-2 cpd: right - layer-protocol: ethernet + layer_protocol: ethernet df: id: normal - vdu-profile: + vdu_profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' + 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: + 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' + 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 + 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 f0679b13b..08edc6357 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -79,13 +79,26 @@ ${vnfdIds} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${callbackResp} localhost -${descriptorType} SOL001 -${vnfKey} {} -${check_descriptors} 1 - -${descriptor_id} -${provider} -${product_name} -${software_version} -${descriptor_version} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} \ No newline at end of file +${check_descriptors} 1 +${descriptorType} SOL006 + +${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} -- GitLab From 861199659f2dbd43ec6fecc8368352c98b7ef66c Mon Sep 17 00:00:00 2001 From: zafar Date: Fri, 15 Jan 2021 16:43:07 +0500 Subject: [PATCH 233/580] SOL001 & SOL006 Descriptor parsing and checking updated for VNFLCM-API --- .../VNFInstances.robot | 1 + .../VnfLcmOperationKeywords.robot | 255 +++++++++++------- .../VnfLcmOperationOccurences.robot | 3 +- .../environment/variables.txt | 2 + 4 files changed, 169 insertions(+), 92 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index 6c042d821..c2d5451b4 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -33,6 +33,7 @@ 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 diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 1119823c3..3cf609f26 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -11,6 +11,7 @@ Library Collections Library JSONSchemaLibrary schemas/ Library String Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml *** Keywords *** @@ -80,9 +81,9 @@ POST Create a new vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Instance + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template} = Get File jsons/createVnfRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} + ${body}= Format String ${template} vnfdId=${Descriptor_ID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1020,107 +1021,179 @@ 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} + +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 -Get key for VNF Descriptor - FOR ${key} IN @{topology_template.node_templates.keys()} - Log ${key} - ${check1}= Run Keyword And Return Status Should End With ${key} VNF - Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} - END +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 - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 - -Parse SOL001 - Get key for VNF Descriptor - - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} - - 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']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} - Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${flavour_id} - -Parse SOL006 - ${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} - ${external_cp}= Get Variable Value ${nfv.vnfd[0].ext-cpd[0].id} - ${vdu_id}= Get Variable Value ${nfv.vnfd[0].vdu[0].id} - ${vdu_cpid}= Get Variable Value ${nfv.vnfd[0].vdu[0].int-cpd[2].id} - ${virtual_storage}= Get Variable Value ${nfv.vnfd[0].virtual-storage-desc.id} - ${virtual_link}= Get Variable Value ${nfv.vnfd[0].int-virtual-link-desc.id} - - - 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']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} - Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['extCpInfo']['cpdId']} ${external_cp} - Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} ${vdu_id} - Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} ${vdu_cpid} - Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} ${virtual_storage} - Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} ${virtual_link} - - -Add VNF Descriptor Content to VNF Instance - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Instance ELSE Parse SOL006 VNF Instance +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 -Parse SOL001 VNF Instance - Get key for VNF Descriptor - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} +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} -Parse SOL006 VNF Instance + 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} - -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 - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 LCM Op Occ ELSE Parse SOL006 LCM Op Occ - -Parse SOL001 LCM Op Occ - Get key for VNF Descriptor + ${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} - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} +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']['vnfSoftwareVesion']} ${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']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} + List Should Contain value ${Storage_IDs} ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} - Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} +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 -Parse SOL006 LCM Op Occ - ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} - ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} - ${vdu_id}= Get Variable Value ${nfv.vnfd[0].vdu[0].id} - ${virtual_storage}= Get Variable Value ${nfv.vnfd[0].virtual-storage-desc.id} - ${virtual_link}= Get Variable Value ${nfv.vnfd[0].int-virtual-link-desc.id} - - Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} - Should Be Equal As Strings ${response['body']['resourceChanges']['affectedVirtualLinks']['vnfVirtualLinkDescId']} ${virtual_link} - Should Be Equal As Strings ${response['body']['resourceChanges']['affectedVnfcs']['vduId']} ${vdu_id} - Should Be Equal As Strings ${response['body']['resourceChanges']['affectedVirtualStorages']['virtualStorageDescId']} ${virtual_storage} - \ No newline at end of file +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']['vduId']} + List Should Contain value ${Storage_IDs} ${response['body']['resourceChanges']['affectedVirtualStorages']['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['resourceChanges']['affectedVirtualLinks']['vnfVirtualLinkDescId']} diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index 687c6f711..d5e329d38 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/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index 08edc6357..ee664f186 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -81,6 +81,7 @@ ${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 @@ -102,3 +103,4 @@ ${Provider} ${Product_Name} ${Software_Version} ${Descriptor_Version} +${Flavour_ID} -- GitLab From 96ac9300e7914a6780fe89b3344e8f81d44f71f8 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Mon, 18 Jan 2021 12:55:53 +0100 Subject: [PATCH 234/580] Updated reference descriptor files for SOL001 and SOL006 --- ...1_reference_tst010_vnf_b_2vdu_SOL001.yaml} | 337 +++++++++--------- ...06_reference_tst010_vnf_b_2vdu_SOL006.yaml | 137 +++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 ------ 3 files changed, 305 insertions(+), 274 deletions(-) rename SOL003/VNFLifecycleManagement-API/descriptors/SOL001/{vnf-b-1_VNF.yaml => SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml} (91%) create mode 100644 SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml delete mode 100644 SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 91% rename from SOL003/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml rename to SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml index 357d2b351..e9159106a 100644 --- a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml +++ b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -1,169 +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: - 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" - 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-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-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 - +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/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml new file mode 100644 index 000000000..0ea9820f0 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_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/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml deleted file mode 100644 index fe0909358..000000000 --- a/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml +++ /dev/null @@ -1,105 +0,0 @@ -nfv: - vnfd: - - id: VNF-B-2df - provider: ETSI TST WG - product-name: TST010 reference VNF-B with 2 DFs - software-version: '2.1' - version: '2.1' - 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: right - layer-protocol: ethernet - virtual-compute-desc: vdu-b-1-vcd - virtual-storage-desc: vdu-b-1-vsd - sw-image-desc: vdu-b-1-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' - 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-1 - cpd: right - layer-protocol: ethernet - df: - - id: small - vdu-profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '2' - - id: single - vdu-level: - vdu-id: vdu-b-1 - 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' - - id: big - vdu-profile: - id: vdu-b-1 - 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' - - id: triple - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '3' - default-instantiation-level: double - 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 -- GitLab From 28ecd83a42d550e0c2cbdb027bf11fc6187c29a7 Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 19 Jan 2021 14:54:50 +0500 Subject: [PATCH 235/580] SOL006 reference descriptor file and checking functionality updated (with dashes instead of underscores) --- .../VnfLcmOperationKeywords.robot | 30 ++-- .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 164 +++++++++--------- 2 files changed, 96 insertions(+), 98 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 3cf609f26..2b541dd46 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -1077,31 +1077,29 @@ Get VNF Attributes from SOL001 ${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} + ${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} + ${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 + ${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 + ${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} @@ -1117,8 +1115,8 @@ Get VDU IDs @{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} + 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} @@ -1126,10 +1124,10 @@ Get VDU IDs Get Internal CPs for each VDU [Arguments] ${vdu} - ${count}= Get Length ${nfv.vnfd[0].vdu[${vdu}].int_cpd} + ${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} + Append To List ${internal_CPs} ${nfv.vnfd[0].vdu[${vdu}]['int-cpd'][${i}]['id']} END Set Global Variable ${internalCP_IDs} ${internal_CPs} @@ -1137,7 +1135,7 @@ 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} + Append To List ${external_CPs} ${nfv.vnfd[0]['ext-cpd'][${i}]['id']} END Set Global Variable ${externalCP_IDs} ${external_CPs} @@ -1145,7 +1143,7 @@ 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} + Append To List ${VirtualLink_labels} ${nfv.vnfd[0]['int-virtual-link-desc'][${i}]['id']} END Set Global Variable ${VirtualLink_IDs} ${VirtualLink_labels} @@ -1153,7 +1151,7 @@ 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} + Append To List ${Instantiation_Levels} ${nfv.vnfd[0].df['instantiation-level'][${i}]['id']} END Set Global Variable ${InstantiationLevel_IDs} ${Instantiation_Levels} diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml index 0ea9820f0..d902779a2 100644 --- a/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +++ b/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -2,136 +2,136 @@ nfv: vnfd: - id: VNF-B-2vdu provider: ETSI TST WG - product_name: TST010 reference VNF-B with 2 VDUs - software_version: '2.2' + product-name: TST010 reference VNF-B with 2 VDUs + software-version: '2.2' version: '2.2' - vnfm_info: ETSI VNFM + vnfm-info: ETSI VNFM vdu: - id: vdu-b-1 name: VNF-B VDU 1 - int_cpd: + int-cpd: - id: left - layer_protocol: ethernet + layer-protocol: ethernet - id: management - layer_protocol: ethernet + 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 + 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: + int-cpd: - id: right - layer_protocol: ethernet + layer-protocol: ethernet - id: management - layer_protocol: ethernet + 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: + 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: + virtual-memory: size: '4.0' - virtual_cpu: - num_virtual_cpu: '2' - virtual_storage_desc: + 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: + 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' + 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: + virtual-compute-desc: id: vdu-b-2-vcd - virtual_memory: + virtual-memory: size: '6.0' - virtual_cpu: - num_virtual_cpu: '2' - virtual_storage_desc: + 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: + 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' + 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: + 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: + 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 + int-cpd: + vdu-id: vdu-b-1 cpd: left - layer_protocol: ethernet + layer-protocol: ethernet - id: management - int_cpd: - vdu_id: vdu-b-1 + int-cpd: + vdu-id: vdu-b-1 cpd: management - layer_protocol: ethernet + layer-protocol: ethernet - id: ext-b-right - int_cpd: - vdu_id: vdu-b-2 + int-cpd: + vdu-id: vdu-b-2 cpd: right - layer_protocol: ethernet + layer-protocol: ethernet df: id: normal - vdu_profile: + vdu-profile: - id: vdu-b-1 - min_number_of_instances: '1' - max_number_of_instances: '2' + 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: + 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' + 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 + 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 -- GitLab From 5a464a59d134c710e77bd6edfc91429ce920bd4b Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 19 Jan 2021 15:01:31 +0500 Subject: [PATCH 236/580] minor bug fix for previous commit (FlavorId got deleted by mistake) --- SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 2b541dd46..97fae54e4 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -1077,12 +1077,14 @@ Get VNF Attributes from SOL001 ${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} -- GitLab From b6598a734a2deb99bcf1f72ea1faa3d6cbc631ae Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Tue, 19 Jan 2021 15:25:04 +0100 Subject: [PATCH 237/580] Fix on mockserver configuration --- SOL002/VNFFaultManagement-API/Subscriptions.robot | 2 +- SOL002/VNFIndicator-API/Subscriptions.robot | 4 ++-- .../VnfLcmOperationKeywords.robot | 6 +++--- SOL002/VNFPerformanceManagement-API/PMJobs.robot | 2 +- SOL002/VNFPerformanceManagement-API/Thresholds.robot | 2 +- .../FaultManagement-APIKeyword.robot | 6 +++--- .../VNFFaultManagement-API/environment/variables.txt | 1 + .../VnfLcmMntOperationKeywords.robot | 6 +++--- .../VRQANOperationKeywords.robot | 6 +++--- ...uest .json => vrQuotaAvailSubscriptionRequest.json} | 0 .../NSFaultManagement-API/NSFMOperationKeywords.robot | 6 +++--- .../NSPerformanceManagementKeywords.robot | 2 +- .../environment/variables.txt | 2 +- .../VNFPackageManagementKeywords.robot | 10 +++++----- 14 files changed, 28 insertions(+), 27 deletions(-) rename SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/{vrQuotaAvailSubscriptionRequest .json => vrQuotaAvailSubscriptionRequest.json} (100%) diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index 7885715f0..df7d5d84d 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -320,7 +320,7 @@ 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} diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index d0f7f89dd..b12f6693f 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/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index f4dd79745..83832de65 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -789,7 +789,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} @@ -800,7 +800,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} @@ -811,7 +811,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} diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 160d12642..1c7dc8e97 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 5ed05061c..7505e15f2 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/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot index cbf26efb8..b833c9354 100644 --- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot @@ -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 5908e8e4a..8f264481e 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/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index f01d3b2d9..0ef1ebdeb 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -974,7 +974,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 +985,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 +996,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} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot index 8aab471ed..237409f64 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot @@ -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/NSFaultManagement-API/NSFMOperationKeywords.robot b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot index 20e4d62ac..d67a251d2 100644 --- a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot +++ b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot @@ -214,7 +214,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} 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} @@ -226,7 +226,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} 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} @@ -238,7 +238,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} 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} diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index 3da49c3c0..d70330ae1 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 b2e1aacbd..ff91e2963 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/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index e32dacda4..aaecf440d 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -674,7 +674,7 @@ Send Post Request for 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}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response @@ -687,7 +687,7 @@ 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}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response @@ -720,7 +720,7 @@ Send Delete Request for VNF Package Subscriptions 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']} @@ -751,7 +751,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 @@ -873,7 +873,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']} -- GitLab From d506d7cc5897c8433da959c235a073a05303778c Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 20 Jan 2021 08:22:44 +0100 Subject: [PATCH 238/580] Descriptor checks added for 7.3.1.1.1 --- .../VnfLcmMntOperationKeywords.robot | 171 ++++++++++++++---- .../environment/variables.txt | 27 ++- 2 files changed, 156 insertions(+), 42 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index e9baab89a..7581de58c 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -8,7 +8,8 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ -Variables descriptors/SOL001/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml *** Keywords *** Get Vnf Instance @@ -371,9 +372,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 Add VNF Descriptor Content to VNF Instance + 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} + ${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} @@ -1200,46 +1201,144 @@ 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 - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 + PARSE the Descriptor File + Match the VNF Instance Response Attributes with Descriptors -Parse SOL001 - Get key for VNF Descriptor +PARSE the Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 descriptor file ELSE Fetch Information from SOL006 descriptor file - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} +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} - 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']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} - Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${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} -Parse SOL006 - #Log SOL006 code - ${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} - - 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']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfdVersion']} ${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 key for VNF Descriptor - FOR ${key} IN @{topology_template.node_templates.keys()} - Log ${key} - ${check1}= Run Keyword And Return Status Should Be Equal As Strings ${topology_template.node_templates.${key}.type} tosca.nodes.nfv.VNF - Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} +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']['vnfSoftwareVesion']} ${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']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} + List Should Contain value ${Storage_IDs} ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['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 diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index cb28b2f2a..9d110b13a 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -100,11 +100,26 @@ ${scaleOutResponse} ${callbackResp} localhost ${descriptorType} SOL001 -${vnfKey} {} ${check_descriptors} 1 -${descriptor_id} -${provider} -${product_name} -${software_version} -${descriptor_version} \ No newline at end of file +${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 -- GitLab From 2e63adf7930cf42ede64a26980749de54e25772f Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 20 Jan 2021 09:54:56 +0100 Subject: [PATCH 239/580] Descriptor checks added for 7.3.1.2.4 and 7.3.1.6.1-2 --- .../VnfLcmMntOperationKeywords.robot | 24 +-- ...06_reference_tst010_vnf_b_2vdu_SOL006.yaml | 164 +++++++++--------- 2 files changed, 89 insertions(+), 99 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 7581de58c..ddcee119d 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -333,12 +333,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 Add VNF Descriptor Content to Change VNF Flavour + 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}"} @@ -504,9 +505,9 @@ PATCH individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Instance + 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} + ${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} @@ -1337,8 +1338,6 @@ Match the VNF Instance Response Attributes with Descriptors List Should Contain value ${Storage_IDs} ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} List Should Contain Value ${VirtualLink_IDs} ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['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 @@ -1376,13 +1375,4 @@ Parse SOL006 VNF Instance ${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} - -Add VNF Descriptor Content to Change VNF Flavour - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Change VNF Flavour ELSE Parse SOL006 Change VNF Flavour - -Parse SOL001 Change VNF Flavour - Get key for VNF Descriptor - ${newFlavourId}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} - -Parse SOL006 Change VNF Flavour - Log flavour id is not present in SOL006 descriptors \ No newline at end of file + \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml index 0ea9820f0..d902779a2 100644 --- a/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml +++ b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -2,136 +2,136 @@ nfv: vnfd: - id: VNF-B-2vdu provider: ETSI TST WG - product_name: TST010 reference VNF-B with 2 VDUs - software_version: '2.2' + product-name: TST010 reference VNF-B with 2 VDUs + software-version: '2.2' version: '2.2' - vnfm_info: ETSI VNFM + vnfm-info: ETSI VNFM vdu: - id: vdu-b-1 name: VNF-B VDU 1 - int_cpd: + int-cpd: - id: left - layer_protocol: ethernet + layer-protocol: ethernet - id: management - layer_protocol: ethernet + 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 + 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: + int-cpd: - id: right - layer_protocol: ethernet + layer-protocol: ethernet - id: management - layer_protocol: ethernet + 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: + 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: + virtual-memory: size: '4.0' - virtual_cpu: - num_virtual_cpu: '2' - virtual_storage_desc: + 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: + 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' + 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: + virtual-compute-desc: id: vdu-b-2-vcd - virtual_memory: + virtual-memory: size: '6.0' - virtual_cpu: - num_virtual_cpu: '2' - virtual_storage_desc: + 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: + 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' + 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: + 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: + 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 + int-cpd: + vdu-id: vdu-b-1 cpd: left - layer_protocol: ethernet + layer-protocol: ethernet - id: management - int_cpd: - vdu_id: vdu-b-1 + int-cpd: + vdu-id: vdu-b-1 cpd: management - layer_protocol: ethernet + layer-protocol: ethernet - id: ext-b-right - int_cpd: - vdu_id: vdu-b-2 + int-cpd: + vdu-id: vdu-b-2 cpd: right - layer_protocol: ethernet + layer-protocol: ethernet df: id: normal - vdu_profile: + vdu-profile: - id: vdu-b-1 - min_number_of_instances: '1' - max_number_of_instances: '2' + 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: + 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' + 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 + 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 -- GitLab From 46830e431c1a18a058d9808f16e53294f919ee69 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 20 Jan 2021 15:13:46 +0100 Subject: [PATCH 240/580] Descriptor checks added in 7.3.1.12.2 --- .../VnfLcmMntOperationKeywords.robot | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index ddcee119d..b45510731 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1342,21 +1342,18 @@ Check HTTP Response Body of Individual VNF LCM Operation occurrences content aga Run Keyword If ${check_descriptors} == 1 Check Individual VNF LCM Operation Occurence Content Check Individual VNF LCM Operation Occurence Content - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF LCM ELSE Parse SOL006 VNF LCM + PARSE the Descriptor File + Match the VNF LCM Operation Occurence Response Attributes with Descriptors -Parse SOL001 Individual VNF LCM - Get key for VNF Descriptor +Match the VNF LCM Operation Occurence 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']['vnfdVersion']} ${Descriptor_Version} + List Should Contain Value ${VDU_IDs} ${response['body']['resourceChanges']['AffectedVnfc']['vduId']} + List Should Contain value ${Storage_IDs} ${response['body']['resourceChanges']['affectedVirtualStorages']['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['resourceChanges']['affectedVirtualLinks']['vnfVirtualLinkDescId']} - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} -Parse SOL006 Individual VNF LCM - ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} - ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} - Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} Add VNF Descriptor Content to VNF Instance Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Instance ELSE Parse SOL006 VNF Instance -- GitLab From 480667a6a4ac7ada25e97c9ad83d312bc32212fb Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 20 Jan 2021 16:01:10 +0100 Subject: [PATCH 241/580] Descriptor checks added for 7.3.3.1.1 --- .../IndividualVNFPackage.robot | 1 + .../VNFPackageManagementKeywords.robot | 90 +++++++----- ...1_reference_tst010_vnf_b_2vdu_SOL001.yaml} | 90 ++++++------ ...06_reference_tst010_vnf_b_2vdu_SOL006.yaml | 137 ++++++++++++++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 -------------- .../environment/variables.txt | 14 +- 6 files changed, 252 insertions(+), 185 deletions(-) rename SOL003/VNFPackageManagement-API/descriptors/SOL001/{vnf-b-1_VNF.yaml => SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml} (93%) create mode 100644 SOL003/VNFPackageManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml delete mode 100644 SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot index 67fda5b2c..875b06bf8 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 diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 009ef0e6d..7dd71a838 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/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml *** Keywords *** Get all VNF Packages @@ -1530,42 +1531,65 @@ Check HTTP Response Body of Individual VNF Package content against VNF Descripto Run Keyword If ${check_descriptors} == 1 Check Individual VNF Package Content Check Individual VNF Package Content - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Package ELSE Parse SOL006 VNF Package - -Parse SOL001 VNF Package - Get key for VNF Descriptor - - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - - 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']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} - -Get key for VNF Descriptor + 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 + @{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()} - Log ${key} - ${check1}= Run Keyword And Return Status Should Be Equal As Strings ${topology_template.node_templates.${key}.type} tosca.nodes.nfv.VNF - Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} + ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} + + ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VNF} + Run Keyword If ${VNF_check} Append To List ${VNF_labels} ${key} + Run Keyword If ${VNF_check} Get VNF Attributes from SOL001 ${key} END - -Parse SOL006 VNF Package + Set Global Variable @{VNF_IDs} @{VNF_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} - - 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']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + ${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']['vnfSoftwareVesion']} ${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 diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 93% rename from SOL003/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml rename to SOL003/VNFPackageManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml index 1712e2b33..e9159106a 100644 --- a/SOL003/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -15,44 +15,6 @@ topology_template: virtual_link_right: [right, virtual_link_right] node_templates: - 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" right: type: "tosca.nodes.nfv.VduCp" properties: @@ -75,7 +37,7 @@ topology_template: virtual_link_left: virtual_binding: VDU-B-1 internal_vl: - type: tosca.nodes.nfv.VnfVirtualLink + type: "tosca.nodes.nfv.VnfVirtualLink" properties: connectivity_type: layer_protocols: [ ipv4 ] @@ -88,20 +50,20 @@ topology_template: root: 10000 leaf: 10000 internal_vdu_b_1_cp: - type: tosca.nodes.nfv.VduCp + 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 + type: "tosca.nodes.nfv.VduCp" properties: order: 0 requirements: - virtual_binding: VDU-B-2 - virtual_link: internal_vl - vdu-b-1-vsd: + vdu_b_1_vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: @@ -120,16 +82,16 @@ topology_template: size: '1' artifacts: sw_image: - type: tosca.artifacts.nfv.SwImage + type: "tosca.artifacts.nfv.SwImage" file: vdu-b-1.qcow2 - vdu-b-1-vsd: + 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-1 image" + name: "vdu-b-2 image" version: "1.1" checksum: algorithm: "sha-224" @@ -166,3 +128,41 @@ topology_template: 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/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml new file mode 100644 index 000000000..d902779a2 --- /dev/null +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_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/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml deleted file mode 100644 index 4b84be92b..000000000 --- a/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml +++ /dev/null @@ -1,105 +0,0 @@ -nfv: - vnfd: - - id: VNF-B-2df - provider: ETSI TST WG - product-name: TST010 reference VNF-B with 2 DFs - software-version: '2.1' - version: '2.1' - 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: right - layer-protocol: ethernet - virtual-compute-desc: vdu-b-1-vcd - virtual-storage-desc: vdu-b-1-vsd - sw-image-desc: vdu-b-1-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' - 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-1 - cpd: right - layer-protocol: ethernet - df: - - id: small - vdu-profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '2' - - id: single - vdu-level: - vdu-id: vdu-b-1 - 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' - - id: big - vdu-profile: - id: vdu-b-1 - 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' - - id: triple - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '3' - default-instantiation-level: double - 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' diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index e2621e31d..d45836b12 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -90,5 +90,15 @@ ${VAR_SEPERATOR} & ${callbackResp} localhost ${descriptorType} SOL001 -${vnfKey} {} -${check_descriptors} 1 \ No newline at end of file +${check_descriptors} 1 + +${tosca_type_VNF} tosca.nodes.nfv.VNF + +@{VNF_IDs} + +${Descriptor_ID} +${Provider} +${Product_Name} +${Software_Version} +${Descriptor_Version} +${Flavour_ID} -- GitLab From 73e16fb84f0ec70bb720fc2d1cb03530fafebbbb Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 20 Jan 2021 16:48:04 +0100 Subject: [PATCH 242/580] Descriptor checks added in 7.3.3.7.1 --- .../VnfLcmMntOperationKeywords.robot | 2 +- .../VNFPackageManagementKeywords.robot | 44 +++++-------------- 2 files changed, 12 insertions(+), 34 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index b45510731..c9758467c 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1327,7 +1327,7 @@ Match the VNF Instance Response Attributes with 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']['vnfSoftwareVesion']} ${Software_Version} + 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']} diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 7dd71a838..2775dba47 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1538,11 +1538,7 @@ 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} @@ -1587,7 +1583,7 @@ Match the VNF Package Response Attributes with 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']['vnfSoftwareVesion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfSoftwareVersion']} ${Software_Version} Should Be Equal As Strings ${response['body']['vnfdVersion']} ${Descriptor_Version} @@ -1595,32 +1591,14 @@ Check HTTP Response Body of Individual Subscription content against VNF Descript Run Keyword If ${check_descriptors} == 1 Check Individual VNF Subscription Content Check Individual VNF Subscription Content - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Package Subscription ELSE Parse SOL006 Package Subscription - -Parse SOL001 Package Subscription - Get key for VNF Descriptor - - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - - Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${provider} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${product_name} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfdVersion']} ${descriptor_version} + PARSE the Descriptor File + Match the VNF subscription Response Attributes with Descriptors -Parse SOL006 Package Subscription - ${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} - - Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${provider} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${product_name} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfdVersion']} ${descriptor_version} \ No newline at end of file +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']['vnfProvider']} ${Provider} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${Product_Name} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfSoftwareVersion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfdVersion']} ${Descriptor_Version} + \ No newline at end of file -- GitLab From 2e51b6bd665810f65b2c7811416eefcce6e61ac7 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Thu, 21 Jan 2021 10:01:10 +0100 Subject: [PATCH 243/580] Descriptor checks added in 7.3.2.2.2 --- .../IndividualGrant.robot | 139 ++++++++++++++++++ ...1_reference_tst010_vnf_b_2vdu_SOL001.yaml} | 90 ++++++------ ...06_reference_tst010_vnf_b_2vdu_SOL006.yaml | 137 +++++++++++++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 ------------- .../environment/variables.txt | 26 +++- 5 files changed, 345 insertions(+), 152 deletions(-) rename SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/{vnf-b-1_VNF.yaml => SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml} (93%) create mode 100644 SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml delete mode 100644 SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index 52b961997..b25baa69a 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -4,6 +4,8 @@ Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_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 +35,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 @@ -160,3 +163,139 @@ Check HTTP Response Body Json Schema Is [Arguments] ${input} ${schema} = Catenate ${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 + @{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 + ${Compute_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']} + Append To List ${Compute_labels} ${nfv.vnfd[0].vdu[${i}]['virtual-compute-desc']} + Get Internal CPs for each VDU ${i} + END + Set Global Variable ${VDU_IDs} ${VDU_labels} + Set Global Variable ${Storage_IDs} ${Storage_labels} + Set Global Variable ${Compute_IDs} ${Compute_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 grant Response Attributes with Descriptors + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['Grant']['extVirtualLinks']['extCps']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['Grant']['extVirtualLinks']['extCps']['cpdId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['Grant']['ExtManagedVirtualLinkData']['vnfVirtualLinkDescId']} + List Should Contain value ${Compute_IDs} ${response['body']['Grant']['vimAssets']['computeResourceFlavours']['vnfdVirtualComputeDescId']} + + + + diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 93% rename from SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/vnf-b-1_VNF.yaml rename to SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml index 1712e2b33..e9159106a 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/vnf-b-1_VNF.yaml +++ b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -15,44 +15,6 @@ topology_template: virtual_link_right: [right, virtual_link_right] node_templates: - 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" right: type: "tosca.nodes.nfv.VduCp" properties: @@ -75,7 +37,7 @@ topology_template: virtual_link_left: virtual_binding: VDU-B-1 internal_vl: - type: tosca.nodes.nfv.VnfVirtualLink + type: "tosca.nodes.nfv.VnfVirtualLink" properties: connectivity_type: layer_protocols: [ ipv4 ] @@ -88,20 +50,20 @@ topology_template: root: 10000 leaf: 10000 internal_vdu_b_1_cp: - type: tosca.nodes.nfv.VduCp + 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 + type: "tosca.nodes.nfv.VduCp" properties: order: 0 requirements: - virtual_binding: VDU-B-2 - virtual_link: internal_vl - vdu-b-1-vsd: + vdu_b_1_vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: @@ -120,16 +82,16 @@ topology_template: size: '1' artifacts: sw_image: - type: tosca.artifacts.nfv.SwImage + type: "tosca.artifacts.nfv.SwImage" file: vdu-b-1.qcow2 - vdu-b-1-vsd: + 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-1 image" + name: "vdu-b-2 image" version: "1.1" checksum: algorithm: "sha-224" @@ -166,3 +128,41 @@ topology_template: 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/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml new file mode 100644 index 000000000..d902779a2 --- /dev/null +++ b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_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/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml deleted file mode 100644 index 4b84be92b..000000000 --- a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml +++ /dev/null @@ -1,105 +0,0 @@ -nfv: - vnfd: - - id: VNF-B-2df - provider: ETSI TST WG - product-name: TST010 reference VNF-B with 2 DFs - software-version: '2.1' - version: '2.1' - 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: right - layer-protocol: ethernet - virtual-compute-desc: vdu-b-1-vcd - virtual-storage-desc: vdu-b-1-vsd - sw-image-desc: vdu-b-1-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' - 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-1 - cpd: right - layer-protocol: ethernet - df: - - id: small - vdu-profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '2' - - id: single - vdu-level: - vdu-id: vdu-b-1 - 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' - - id: big - vdu-profile: - id: vdu-b-1 - 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' - - id: triple - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '3' - default-instantiation-level: double - 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' diff --git a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index 7a1fed179..82e338c4a 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -44,5 +44,27 @@ ${vnfdId} myVnF ${flavourId} string ${descriptorType} SOL001 -${vnfKey} {} -${check_descriptors} 1 \ No newline at end of file +${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} +@{Compute_IDs + +${Descriptor_ID} +${Provider} +${Product_Name} +${Software_Version} +${Descriptor_Version} +${Flavour_ID} \ No newline at end of file -- GitLab From 1c4a49293d73e4fe6dd1b1af267a4b248b576693 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Thu, 21 Jan 2021 11:11:13 +0100 Subject: [PATCH 244/580] Descriptor checks added for 7.3.2.1.1-3 --- .../Grants.robot | 63 +++++++++++++++---- 1 file changed, 52 insertions(+), 11 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 6b6cdc04c..bb1ad698a 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -117,7 +117,7 @@ Send Request Grant Request in Synchronous mode 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} @@ -130,7 +130,7 @@ Send Request Grant Request in Asynchronous mode 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} @@ -143,7 +143,7 @@ Send Request for a new Grant Forbiden Operation 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} @@ -197,8 +197,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 @@ -209,12 +208,54 @@ Delete Grants Set Suite Variable ${response} ${body} Add VNF Descriptor Content to Grant Request - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Grant Request ELSE Parse SOL006 Grant Request + PARSE the Descriptor File -Parse SOL001 Grant Request - Get key for VNF Descriptor - ${flavourId}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} +PARSE the Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 descriptor file ELSE Fetch Information from SOL006 descriptor file -Parse SOL006 Grant Request - Log flavour id is not present in SOL006 descriptors +Fetch Information from SOL001 descriptor file + @{VNF_labels}= Create List + FOR ${key} IN @{topology_template.node_templates.keys()} + ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} + ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VNF} + + Run Keyword If ${VNF_check} Append To List ${VNF_labels} ${key} + Run Keyword If ${VNF_check} Get VNF Attributes from SOL001 ${key} + END + Set Global Variable @{VNF_IDs} @{VNF_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']} + + 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} + -- GitLab From b4d9f52cd0f2959896777e014df86728ba61216a Mon Sep 17 00:00:00 2001 From: zafar Date: Thu, 21 Jan 2021 15:21:16 +0500 Subject: [PATCH 245/580] minor typo error resolved --- SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 97fae54e4..1f5c1e031 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -1162,7 +1162,7 @@ Match the VNF Instance Response Attributes with 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']['vnfSoftwareVesion']} ${Software_Version} + 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']} -- GitLab From 8147bf29a13930e0eaba99054a369fb61ff53ee9 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Thu, 21 Jan 2021 13:31:05 +0100 Subject: [PATCH 246/580] minor fixes --- .../VnfLcmMntOperationKeywords.robot | 36 +++---------------- .../Grants.robot | 3 +- .../IndividualGrant.robot | 8 ++--- 3 files changed, 11 insertions(+), 36 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index c9758467c..632c511ca 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -125,16 +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}"} - Get key for VNF Descriptor - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - ${configurable_properties}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.configurable_properties} - ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + 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} vnfConfigurableProperties=${configurable_properties} flavourId=${flavour_id} + ${body}= Format String ${template} vnfdId=${Descriptor_ID} vnfProvider=${Provider} vnfProductName=${Product_Name} vnfSoftwareVersion=${Software_Version} vnfdVersion= ${Descriptor_Version} vnfConfigurableProperties=${configurable_properties} flavourId=${Flavour_ID} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} Send VNF Instance Resource Delete Request @@ -1347,29 +1340,10 @@ Check Individual VNF LCM Operation Occurence Content Match the VNF LCM Operation Occurence 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']['vnfdVersion']} ${Descriptor_Version} + 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']['AffectedVnfc']['vduId']} List Should Contain value ${Storage_IDs} ${response['body']['resourceChanges']['affectedVirtualStorages']['virtualStorageDescId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['resourceChanges']['affectedVirtualLinks']['vnfVirtualLinkDescId']} - + List Should Contain Value ${VirtualLink_IDs} ${response['body']['resourceChanges']['affectedVirtualLinks']['virtualStorageDescId']} - -Add VNF Descriptor Content to VNF Instance - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Instance ELSE Parse SOL006 VNF Instance - -Parse SOL001 VNF Instance - Get key for VNF Descriptor - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - -Parse SOL006 VNF Instance - ${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} \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index bb1ad698a..6c220769b 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -5,7 +5,8 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=fals Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ -Variables descriptors/SOL001/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_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. diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index b25baa69a..def9600d3 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -291,10 +291,10 @@ Get Instantiation Levels Set Global Variable ${InstantiationLevel_IDs} ${Instantiation_Levels} Match the grant Response Attributes with Descriptors - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['Grant']['extVirtualLinks']['extCps']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['Grant']['extVirtualLinks']['extCps']['cpdId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['Grant']['ExtManagedVirtualLinkData']['vnfVirtualLinkDescId']} - List Should Contain value ${Compute_IDs} ${response['body']['Grant']['vimAssets']['computeResourceFlavours']['vnfdVirtualComputeDescId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['extVirtualLinks']['extCps']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['extVirtualLinks']['extCps']['cpdId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['ExtManagedVirtualLinkData']['vnfVirtualLinkDescId']} + List Should Contain value ${Compute_IDs} ${response['body']['vimAssets']['computeResourceFlavours']['vnfdVirtualComputeDescId']} -- GitLab From 0f221f29a260580185e389acae6442f08e56697c Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 21 Jan 2021 18:50:45 +0100 Subject: [PATCH 247/580] fixed CI/CD errors --- .../VnfLcmMntOperationKeywords.robot | 4 ++-- SOL003/VNFLifecycleOperationGranting-API/Grants.robot | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 632c511ca..679fd6102 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -8,8 +8,8 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml *** Keywords *** Get Vnf Instance diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 6c220769b..12effdd71 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -5,8 +5,9 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=fals Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +Library Collections +Variables descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_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. -- GitLab From 9a5d058b174c8ab693fc47d78b912ddf207751e1 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 21 Jan 2021 18:51:02 +0100 Subject: [PATCH 248/580] fixed CI/CD errors --- .../VNFLifecycleOperationGranting-API/environment/variables.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index 82e338c4a..64dfe501f 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -60,7 +60,7 @@ ${tosca_type_storage} tosca.nodes.nfv.Vdu.VirtualBlockStorage @{internalCP_IDs} @{externalCP_IDs} @{InstantiationLevel_IDs} -@{Compute_IDs +@{Compute_IDs} ${Descriptor_ID} ${Provider} -- GitLab From f72a15e398189efa928547e5ad23cd429b13525f Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 21 Jan 2021 18:57:48 +0100 Subject: [PATCH 249/580] fixed CI/CD errors --- .../VNFLifecycleOperationGranting-API/IndividualGrant.robot | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index def9600d3..b0d176297 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -3,9 +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/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_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. -- GitLab From 3c830c85ded04a0935c4e6e1a0ba21d99d34a365 Mon Sep 17 00:00:00 2001 From: zafar Date: Mon, 25 Jan 2021 18:38:20 +0500 Subject: [PATCH 250/580] NS Descriptors added --- .../NSLCMOperationKeywords.robot | 71 ++++- ...eference_tst010_nsd_simple_a_b_SOL001.yaml | 113 +++++++ .../reference_tst010_vnf_b_2vdu_SOL001.yaml | 0 ...eference_tst010_nsd_simple_a_b_SOL006.yaml | 284 ++++++++++++++++++ .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 137 --------- .../environment/variables.txt | 14 + .../VNFPackageManagementKeywords.robot | 2 +- 7 files changed, 476 insertions(+), 145 deletions(-) create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml rename SOL005/NSLifecycleManagement-API/descriptors/SOL001/{ => VNFD}/reference_tst010_vnf_b_2vdu_SOL001.yaml (100%) create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml delete mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index c18055e35..2d14cc8af 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -8,9 +8,9 @@ Library OperatingSystem Library MockServerLibrary Library Collections Library String -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml - +Variables descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml +Variables descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml *** Keywords *** Initialize System @@ -353,13 +353,13 @@ Match the Response Attributes with Descriptors Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${Descriptor_ID} Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${Provider} Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${Product_Name} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVesion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVersion']} ${Software_Version} Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${Descriptor_Version} Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['flavourId']} ${Flavour_ID} List Should Contain Value ${VDU_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value ${CP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} List Should Contain value ${Storage_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} List Should Contain Value ${VirtualLink_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} @@ -1090,8 +1090,9 @@ POST subscriptions 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 NS Descriptor File ${template}= Get File jsons/LccnSubscriptionRequest.json - ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${nsdId} + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${NS_DescriptorID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1119,7 +1120,6 @@ POST subscriptions NO DUPLICATION Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - GET Subscriptions Log Get the list of active subscriptions @@ -1284,3 +1284,60 @@ PUT notification Check HTTP Response Header Contains Location ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} + +PARSE the NS Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 NS descriptor file ELSE Fetch Information from SOL006 NS descriptor file + +Fetch Information from SOL001 NS descriptor file + @{NsVirtualLink_labels}= Create List + @{NsCP_labels}= Create List + FOR ${key} IN @{topology_template.node_templates.keys()} + ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} + ${NS_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_NS} + ${NSLink_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_NsVirtualLink} + ${NsCP_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_NsCP} + Run Keyword If ${NS_check} Get NS Attributes from SOL001 ${key} + Run Keyword If ${NSLink_check} Append To List ${Ns_VirtualLink_labels} ${key} + Run Keyword If ${NsCP_check} Append To List ${NsCp_labels} ${key} + END + Set Global Variable @{NS_VirtualLink_IDs} @{NsVirtualLink_labels} + Set Global Variable @{NsCP_IDs} @{NsCP_labels} + +Get NS Attributes from SOL001 + [Arguments] ${NS_label} + ${ns_descriptor_id}= Get Variable Value ${topology_template.node_templates.${NS_label}.properties.descriptorId} + ${designer}= Get Variable Value ${topology_template.node_templates.${NS_label}.properties.designer} + ${version}= Get Variable Value ${topology_template.node_templates.${NS_label}.properties.version} + ${name}= Get Variable Value ${topology_template.node_templates.${NS_label}.properties.name} + ${invariantId}= Get Variable Value ${topology_template.node_templates.${NS_label}.properties.invariantId} + + Set Global Variable ${NS_DescriptorID} ${ns_descriptor_id} + Set Global Variable ${Designer} ${designer} + Set Global Variable ${NS_Version} ${version} + Set Global Variable ${NS_Name} ${name} + Set Global Variable ${NS_InvariantID} ${invariantId} + +Fetch Information from SOL006 NS descriptor file + ${nsd_id}= Get Variable Value ${nfv.nsd[0].id} + ${VNFcount}= Get Length ${nfv.vnfd} + FOR ${key} IN @{nfv.keys()} + ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} vnfd + Run Keyword If ${VNF_check} Get External CPs for each VNF ${VNFcount} + Run Keyword If ${VNF_check} Fetch Information from SOL006 descriptor file + END + Set Global Variable ${NS_DescriptorID} ${nsd_id} + +Get External CPs for each VNF + [Arguments] ${vnf} + FOR ${i} IN RANGE ${vnf} + Get Ext CP IDs ${i} + END + +Get Ext CP IDs + [Arguments] ${vnf} + @{extCP_labels}= Create List + ${count}= Get Length ${nfv.vnfd[${vnf}]['ext-cpd']} + FOR ${i} IN RANGE ${count} + Append To List ${extCP_labels} ${nfv.vnfd[${vnf}]['ext-cpd'][${i}]['id']} + END + Set Global Variable ${NsCP_IDs} ${extCP_labels} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml new file mode 100644 index 000000000..a2a363b27 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml @@ -0,0 +1,113 @@ +tosca_definitions_version: "tosca_simple_yaml_1_2" +tosca_default_namespace: "toscanfv" +description: "Referenxce NSD descriptor " +metadata: + descriptor_id: "NSD_WITH_2_VNF" + vendor: "ETSI" + version: "1.0" +topology_template: + substitution_mappings: + node_type: "tosca.nodes.nfv.NS" + requirements: + right: [VNF_A, ext_a_right] + left: [VNF_B, ext_b_left] + mgmt_a: [VNF_A, management_vnf_a] + mgmt_b: [VNF_B, management_vnf_b] + node_templates: + VNF_A: + type: "tosca.nodes.nfv.VNF" + properties: + descriptor_id: "VNF-A" + descriptor_version: "1.0" + provider: "ETSI TST WG" + product_name: "VNF-A" + software_version: "1.0" + product_info_name: "VNF-A" + product_info_description: "TST010 reference VNF-A" + flavour_id: "VNF-A_flavor" + flavour_description: "VNF-A flavor" + vnfm_info: + - 'etsivnfm:v2.3.1' + requirements: + virtualLink: + ext_a_right: "vl_right" + management_vnf_a: "vl_mgmt" + int_a_data: "vl_data" + VNF_B: + type: "tosca.nodes.nfv.VNF" + properties: + descriptorId: "VNF-B" + descriptorVersion: "1.0" + provider: "ETSI TST WG" + productName: "VNF-B" + softwareVersion: "1.0" + productInfoName: "VNF-B" + productInfoDescription: "TST010 reference VNF-A" + defaultLocalizationLanguage: null + flavourId: "VNF-B_flavor" + flavourDescription: "VNF-B flavor" + vnfm_info: + - 'etsivnfm:v2.3.1' + requirements: + virtualLink: + ext_b_left: "vl_left" + management_vnf_b: "vl_mgmt" + int_b_data: "vl_data" + NS_with_2_VNF: + type: "tosca.nodes.nfv.NS" + properties: + descriptorId: "NS with 2 VNFs" + designer: "ETSI TST WG" + version: "1.0" + name: "ns_with_2_vnfs" + invariantId: "ns_with_2_vnfs" + requirements: + virtualLink: + - "vl_left" + - "vl_right" + - "vl_mgmt" + - "vl_data" + vl_left: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "VNF-B external connetivity" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] + vl_right: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "VNF-A external connectivity" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] + vl_mgmt: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "Management network" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] + vl_data: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "Internal network that interconnect VNF-A and VNF-B" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 100% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml new file mode 100644 index 000000000..b29b2dfc7 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml @@ -0,0 +1,284 @@ +nfv: + vnfd: + - id: VNF-A + provider: ETSI TST WG + product-name: TST010 reference VNF-A + software-version: '1.0' + version: '1.0' + vnfm-info: ETSI VNFM + vdu: + - id: vdu-a-1 + name: VNF A VDU 1 + int-cpd: + - id: right + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: left + layer-protocol: ethernet + virtual-compute-desc: vdu-a-1-vcd + virtual-storage-desc: vdu-a-1-vsd + sw-image-desc: asa-image + virtual-compute-desc: + id: vdu-a-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-a-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-a-1-image + name: vdu-a-1 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-a.qcow2' + int-virtual-link-desc: + - id: right-vl + flavour: + id: right-vl-flavour + qos: + latency: '1' + packet-delay-variation: '1' + packet-loss-ratio: '0.02' + connectivity-type: + layer-protocol: ethernet + ext-cpd: + - id: ext-a-right + int-virtual-link-desc: right-vl + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-a-1 + cpd: management + layer-protocol: ethernet + - id: ext-a-left + int-cpd: + vdu-id: vdu-a-1 + cpd: left + layer-protocol: ethernet + df: + id: normal + vdu-profile: + id: vdu-a-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + virtual-link-profile: + id: right-vl + flavour: right-vl-flavour + max-bit-rate-requirements: + root: '10' + min-bit-rate-requirements: + root: '1' + virtual-link-protocol-data: + associated-layer-protocol: ipv4 + l3-protocol-data: + name: right-network + ip-version: ipv4 + cidr: 10.10.10.0/32 + gateway-ip: 10.10.10.1 + dhcp-enabled: 'true' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-a-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-a-1 + 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' + - id: VNF-B + provider: ETSI TST WG + product-name: TST010 reference VNF-B + software-version: '2.0' + version: '2.0' + 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: right + layer-protocol: ethernet + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-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' + 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-1 + cpd: right + layer-protocol: ethernet + df: + id: normal + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-b-1 + 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' + nsd: + - id: tst010-nsd + vnfd-id: + - VNF-A + - VNF-B + sapd: + - id: right-sap + vnf: + vnfd-id: VNF-A + ext-cpd-id: ext-a-right + - id: management-sap + virtual-link-desc: mgmt + - id: left-sap + vnf: + vnfd-id: VNF-B + ext-cpd-id: ext-b-left + virtual-link-desc: + - id: mgmt + connectivity-type: + layer-protocol: ipv4 + df: + id: normal + qos: + latency: '0' + packet-delay-variation: '0' + - id: A-to-B + connectivity-type: + layer-protocol: ethernet + df: + id: normal + qos: + latency: '0' + packet-delay-variation: '0' + df: + - id: normal + vnf-profile: + - id: vnf-a-profile + vnfd-id: VNF-A + flavour-id: normal + instantiation-level: single + min-number-of-instances: '1' + max-number-of-instances: '1' + virtual-link-connectivity: + - virtual-link-profile-id: mgmt + constituent-cpd-id: + constituent-base-element-id: vdu-a-1 + constituent-cpd-id: management + - virtual-link-profile-id: A-to-B + constituent-cpd-id: + constituent-base-element-id: vdu-a-1 + constituent-cpd-id: left + - id: vnf-b-profile + vnfd-id: VNF-B + flavour-id: normal + instantiation-level: single + min-number-of-instances: '1' + max-number-of-instances: '1' + virtual-link-connectivity: + - virtual-link-profile-id: mgmt + constituent-cpd-id: + constituent-base-element-id: vdu-b-1 + constituent-cpd-id: management + - virtual-link-profile-id: A-to-B + constituent-cpd-id: + constituent-base-element-id: vdu-b-1 + constituent-cpd-id: right + virtual-link-profile: + - id: mgmt + virtual-link-desc-id: mgmt + flavour-id: normal + max-bitrate-requirements: + root: '1000' + min-bitrate-requirements: + root: '0' + - id: A-to-B + virtual-link-desc-id: A-to-B + flavour-id: normal + max-bitrate-requirements: + root: '10000000' + min-bitrate-requirements: + root: '0' + ns-instantiation-level: + - id: normal + description: Single VNF-A and VNF-B + vnf-to-level-mapping: + - vnf-profile-id: vnf-a-profile + number-of-instances: '1' + - vnf-profile-id: vnf-b-profile + number-of-instances: '1' + - id: double-A + description: Single VNF-B and Double VNF-A + vnf-to-level-mapping: + - vnf-profile-id: vnf-a-profile + number-of-instances: '2' + - vnf-profile-id: vnf-b-profile + number-of-instances: '1' + default-instantiation-level: normal diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml deleted file mode 100644 index 0ea9820f0..000000000 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +++ /dev/null @@ -1,137 +0,0 @@ -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/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index f7346a6e5..0dae31ed9 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -86,6 +86,10 @@ ${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 + +${tosca_type_NS} tosca.nodes.nfv.NS +${tosca_type_NsVirtualLink} tosca.nodes.nfv.NsVirtualLink +${tosca_type_NsCP} tosca.nodes.nfv.Cp @{VDU_IDs} @{VNF_IDs} @@ -96,6 +100,16 @@ ${tosca_type_storage} tosca.nodes.nfv.Vdu.VirtualBlockStorage @{externalCP_IDs} @{InstantiationLevel_IDs} +@{NsVirtualLink} +@{NsCP_IDs} + +${NS_DescriptorID} +${Designer} +${NS_Name} +${NS_Version} +${NS_InvariantId} + + ${Descriptor_ID} ${Provider} ${Product_Name} diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 6842187b1..93d007475 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -311,7 +311,7 @@ Match the Response Attributes of vnfPkgInfo with 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']['vnfSoftwareVesion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfSoftwareVersion']} ${Software_Version} Should Be Equal As Strings ${response['body']['vnfdVersion']} ${Descriptor_Version} Check Postcondition VNF Package Resource Exists -- GitLab From 0963f5aedf8d90549ad6ede8d5a80b94d5a5a3fd Mon Sep 17 00:00:00 2001 From: zafar Date: Mon, 25 Jan 2021 21:21:02 +0500 Subject: [PATCH 251/580] NS descriptors check implemented in NSInstances resource --- .../NSInstances.robot | 1 + .../NSLCMOperationKeywords.robot | 86 ++++++++++++------- .../environment/variables.txt | 3 +- 3 files changed, 57 insertions(+), 33 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSInstances.robot b/SOL005/NSLifecycleManagement-API/NSInstances.robot index 8c662bcab..40dcf4efd 100644 --- a/SOL005/NSLifecycleManagement-API/NSInstances.robot +++ b/SOL005/NSLifecycleManagement-API/NSInstances.robot @@ -20,6 +20,7 @@ POST Create a new NsInstance Check HTTP Response Status Code Is 201 Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is NsInstance + Check HTTP Response Body NsInstance content against NS Descriptor GET information about multiple NS instances [Documentation] Test ID: 5.3.2.1.2 diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 2d14cc8af..ee1d30742 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -218,8 +218,9 @@ POST New nsInstance 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 NS Descriptor File ${template}= Get File jsons/CreateNsRequest.json - ${body}= Format String ${template} nsdId=${nsdId} nsInstanceName=${nsInstanceName} vimAccountId=${vimAccountId} nsInstanceDescription=${nsInstanceDescription} + ${body}= Format String ${template} nsdId=${NS_DescriptorID} nsInstanceName=${nsInstanceName} vimAccountId=${vimAccountId} nsInstanceDescription=${nsInstanceDescription} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -280,19 +281,19 @@ Get VNF Attributes from SOL001 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} + ${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} + ${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 + ${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 + ${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} @@ -308,8 +309,8 @@ Get VDU IDs @{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} + 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} @@ -317,10 +318,10 @@ Get VDU IDs Get Internal CPs for each VDU [Arguments] ${vdu} - ${count}= Get Length ${nfv.vnfd[0].vdu[${vdu}].int_cpd} + ${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} + Append To List ${internal_CPs} ${nfv.vnfd[0].vdu[${vdu}]['int-cpd'][${i}]['id']} END Set Global Variable ${internalCP_IDs} ${internal_CPs} @@ -328,15 +329,15 @@ 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} + 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 + @{VirtualLink_labels}= Create List FOR ${i} IN RANGE ${count} - Append To List ${VirtualLink_labels} ${nfv.vnfd[0].int_virtual_link_desc[${i}].id} + Append To List ${VirtualLink_labels} ${nfv.vnfd[0]['int-virtual-link-desc'][${i}]['id']} END Set Global Variable ${VirtualLink_IDs} ${VirtualLink_labels} @@ -344,7 +345,7 @@ 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} + Append To List ${Instantiation_Levels} ${nfv.vnfd[0].df['instantiation-level'][${i}]['id']} END Set Global Variable ${InstantiationLevel_IDs} ${Instantiation_Levels} @@ -1103,8 +1104,9 @@ POST subscriptions DUPLICATION 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 NS Descriptor File ${template}= Get File jsons/LccnSubscriptionRequest.json - ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${nsdId} + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${NS_DescriptorID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1115,8 +1117,9 @@ POST subscriptions NO DUPLICATION 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 NS Descriptor File ${template}= Get File jsons/LccnSubscriptionRequest.json - ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${nsdId} + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${NS_DescriptorID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1320,24 +1323,43 @@ Get NS Attributes from SOL001 Fetch Information from SOL006 NS descriptor file ${nsd_id}= Get Variable Value ${nfv.nsd[0].id} ${VNFcount}= Get Length ${nfv.vnfd} + ${SAPcount}= Get Length ${nfv.nsd[0].sapd} + ${NSvirtualLinkCount}= Get Length ${nfv.nsd[0]['virtual-link-desc']} FOR ${key} IN @{nfv.keys()} - ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} vnfd - Run Keyword If ${VNF_check} Get External CPs for each VNF ${VNFcount} - Run Keyword If ${VNF_check} Fetch Information from SOL006 descriptor file + ${VNFD_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} vnfd + ${NSD_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} nsd + Run Keyword If ${VNFD_check} Fetch Information from SOL006 descriptor file + Run Keyword If ${NSD_check} Get SAP IDs ${SAPcount} + Run Keyword If ${NSD_check} Get NS Virtual Link IDs ${NSvirtualLinkCount} + END Set Global Variable ${NS_DescriptorID} ${nsd_id} -Get External CPs for each VNF - [Arguments] ${vnf} - FOR ${i} IN RANGE ${vnf} - Get Ext CP IDs ${i} +Get SAP IDs + [Arguments] ${count} + @{SAPlabels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${SAPlabels} ${nfv.nsd[0].sapd[${i}]['id']} END - -Get Ext CP IDs - [Arguments] ${vnf} - @{extCP_labels}= Create List - ${count}= Get Length ${nfv.vnfd[${vnf}]['ext-cpd']} + Set Global Variable ${SAP_IDs} ${SAPlabels} + +Get NS Virtual Link IDs + [Arguments] ${count} + @{NsVirtualLink_labels}= Create List FOR ${i} IN RANGE ${count} - Append To List ${extCP_labels} ${nfv.vnfd[${vnf}]['ext-cpd'][${i}]['id']} + Append To List ${NsVirtualLink_labels} ${nfv.nsd[0]['virtual-link-desc'][${i}]['id']} END - Set Global Variable ${NsCP_IDs} ${extCP_labels} \ No newline at end of file + Set Global Variable ${NS_VirtualLink_IDs} ${NsVirtualLink_labels} + +Check HTTP Response Body NsInstance content against NS Descriptor + #${check_descriptors} flag, 1 to check descriptors + Run Keyword If ${check_descriptors} == 1 Check Individual NsInstance Content for NSD + +Check Individual NsInstance Content for NSD + PARSE the NS Descriptor File + Match the Response Attributes with NS Descriptors + +Match the Response Attributes with NS Descriptors + Should Be Equal As Strings ${response['body']['nsdId']} ${NSDescriptor_ID} + List Should Contain Value ${NS_VirtualLink_IDs} ${response['body']['virtualLinkInfo']['nsVirtualLinkDescId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${SAP_IDs} ${response['body']['sapInfo']['sapdId']} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index 0dae31ed9..b1eb55915 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -100,8 +100,9 @@ ${tosca_type_NsCP} tosca.nodes.nfv.Cp @{externalCP_IDs} @{InstantiationLevel_IDs} -@{NsVirtualLink} +@{NS_VirtualLink_IDs} @{NsCP_IDs} +@{SAP_IDs} ${NS_DescriptorID} ${Designer} -- GitLab From cf182b247292f815461f15eabe9021253b783746 Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 26 Jan 2021 15:28:44 +0500 Subject: [PATCH 252/580] NS descriptors added & minor correction in response body parsing --- .../IndividualNSInstance.robot | 1 + .../NSLCMOperationKeywords.robot | 36 +++++++++++-------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot index 7ac92c149..7fdf881d8 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot @@ -32,6 +32,7 @@ GET Information about an individual NS Instance GET IndividualNSInstance Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsInstance + Check HTTP Response Body NsInstance content against NS Descriptor Check HTTP Response Body NsInstance content against VNF Descriptor PUT Individual NSInstance - Method not implemented diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index ee1d30742..07adcda22 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -351,18 +351,18 @@ Get Instantiation Levels Match the Response Attributes with Descriptors #Checking Response attributes with VNF Descriptors - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${Descriptor_ID} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${Provider} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${Product_Name} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVersion']} ${Software_Version} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${Descriptor_Version} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['flavourId']} ${Flavour_ID} - List Should Contain Value ${VDU_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value ${CP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} - List Should Contain value ${Storage_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} + Should Be Equal As Strings ${response['body']['vnfInstance'][0]['vnfdId']} ${Descriptor_ID} + Should Be Equal As Strings ${response['body']['vnfInstance'][0]['vnfProvider']} ${Provider} + Should Be Equal As Strings ${response['body']['vnfInstance'][0]['vnfProductName']} ${Product_Name} + Should Be Equal As Strings ${response['body']['vnfInstance'][0]['vnfSoftwareVersion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfInstance'][0]['vnfdVersion']} ${Descriptor_Version} + Should Be Equal As Strings ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['flavourId']} ${Flavour_ID} + List Should Contain Value ${VDU_IDs} ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['extCpInfo'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['extCpInfo'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value ${CP_IDs} ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['extCpInfo'][0]['cpdId']} + List Should Contain value ${Storage_IDs} ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['virtualStorageResourceInfo'][0]['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['extManagedVirtualLinkInfo'][0]['vnfVirtualLinkDescId']} POST New nsInstance with DISABLED nsd Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances @@ -1361,5 +1361,13 @@ Check Individual NsInstance Content for NSD Match the Response Attributes with NS Descriptors Should Be Equal As Strings ${response['body']['nsdId']} ${NSDescriptor_ID} - List Should Contain Value ${NS_VirtualLink_IDs} ${response['body']['virtualLinkInfo']['nsVirtualLinkDescId']} - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${SAP_IDs} ${response['body']['sapInfo']['sapdId']} + List Should Contain Value ${NS_VirtualLink_IDs} ${response['body']['virtualLinkInfo'][0]['nsVirtualLinkDescId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${SAP_IDs} ${response['body']['sapInfo'][0]['sapdId']} + +Check NsLcmOpOcc content against NS Descriptor + PARSE the NS Descriptor File + Match the NsLcmOpOcc Response Attributes with NS Descriptors + +Match the NsLcmOpOcc Response Attributes with NS Descriptors + Should Be Equal As Strings ${response['body']['affectedNss'][0]['nsdId']} ${NSDescriptor_ID} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${SAP_IDs} ${response['body']['affectedSaps'][0]['sapdId']} -- GitLab From 349c85ab8907d9e176454035b99d1e356218ee20 Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 26 Jan 2021 16:37:40 +0500 Subject: [PATCH 253/580] NS descriptors added for NS-LCM-API test cases --- .../IndividualNSLCMOccurences.robot | 1 + .../NSLCMOperationKeywords.robot | 8 +++++--- .../NotificationConsumer.robot | 3 ++- .../jsons/InstantiateNsRequest.json | 8 +++++--- .../jsons/NsLcmOperationOccurrenceNotification.json | 3 +++ .../jsons/UpdateNsRequest.json | 10 ++++++++-- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot index b0e32dba8..f08fced43 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot @@ -31,6 +31,7 @@ Get status information about Individual NS LCM occurrences GET Individual NS LCM OP Occurrence Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsLcmOpOcc + Check NsLcmOpOcc content against NS Descriptor PUT status information about Individual NS LCM occurrences - Method not implemented [Documentation] Test ID: 5.3.2.9.3 diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 07adcda22..80b35b549 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -559,8 +559,9 @@ GET Instantiate NSInstance 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 NS Descriptor File ${template}= Get File jsons/InstantiateNs.json - ${body}= Format String ${template} nsFlavourId=${nsFlavourId} vimAccountId=${vimAccountId} nsdId=${nsdId} + ${body}= Format String ${template} nsFlavourId=${nsFlavourId} vimAccountId=${vimAccountId} nsdId=${nsdId} sapdId=${SAP_IDs[0]} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/instantiate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -650,9 +651,10 @@ POST Update NSInstance 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 + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/UpdateNsRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} vnfFlavourId=${Flavour_ID} newFlavourId=${Flavour_ID} vnfVirtualLinkDescId=${VirtualLink_IDs[0]} instantiationLevelId=${InstantiationLevel_IDs[1]} vnfInstantiationLevelId=${InstantiationLevel_IDs[0]} + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfFlavourId=${Flavour_ID} newFlavourId=${Flavour_ID} vnfVirtualLinkDescId=${VirtualLink_IDs[0]} instantiationLevelId=${InstantiationLevel_IDs[1]} vnfInstantiationLevelId=${InstantiationLevel_IDs[0]} newNsdId=${NS_DescriptorID} sapdId=${SAP_IDs[0]} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot index a76b3a899..5944b173e 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot @@ -67,8 +67,9 @@ Post Ns Lcm Operation Occurrence Notification 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 + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/NsLcmOperationOccurrenceNotification.json - ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} vnfdId=${Descriptor_ID} + ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} vnfdId=${Descriptor_ID} nsdId=${NS_DescriptorID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json index e19b6afbb..5d0c060fa 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json @@ -1,6 +1,8 @@ -{ +{{ "nsFlavourId": "floavour_id", - "sapData":[], + "sapData":[ + "{sapdId}" + ], "addpnfData":[], "vnfInstanceData":[], "nestedNsInstanceData":[], @@ -8,4 +10,4 @@ "additionalParamsForNs":{}, "additionalParamForNestedNs":[], "additionalParamsForVnf":[] -} \ No newline at end of file +}} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json index 9a4e3cfb0..706957a30 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json +++ b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json @@ -12,5 +12,8 @@ "affectedVnf": {{ "vnfdId": "{vnfdId}" }}, + "affectedNs": {{ + "nsdId": "{nsdId}" + }}, "_links":"" }} diff --git a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json index 756fa5756..da42b41c1 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json @@ -6,10 +6,16 @@ "vnfInstantiationLevelId": "{vnfInstantiationLevelId}" "extManagedVirtualLinks": {{ "vnfVirtualLinkDescId": "{vnfVirtualLinkDescId}" - }}, + }}, "changeVnfFlavourData": {{ "vnfInstanceId": {}, "newFlavourId": "{newFlavourId}", "instantiationLevelId": "{instantiationLevelId}" - }} + }}, + "assocNewNsdVersionData": {{ + "newNsdId": "{newNsdId}" + }} + "addSap": {{ + "sapdId": "{sapdId}" + }} }} \ No newline at end of file -- GitLab From b0e44fd2e32f25e4d2db9defa88729584383bfd3 Mon Sep 17 00:00:00 2001 From: Sana Zulfiqar Date: Tue, 26 Jan 2021 14:04:30 +0100 Subject: [PATCH 254/580] Bug fix in response parsing --- .../VnfLcmOperationKeywords.robot | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 1f5c1e031..d7ad8c246 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -1165,13 +1165,13 @@ Match the VNF Instance Response Attributes with Descriptors 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']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} - List Should Contain value ${Storage_IDs} ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} + 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 @@ -1194,6 +1194,6 @@ Check Individual VNF LCM Operation Occurence Content 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']['vduId']} - List Should Contain value ${Storage_IDs} ${response['body']['resourceChanges']['affectedVirtualStorages']['virtualStorageDescId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['resourceChanges']['affectedVirtualLinks']['vnfVirtualLinkDescId']} + 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']} -- GitLab From 2491c817919b68e2019f8bb5d91f8923d0fe32ed Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 26 Jan 2021 18:39:12 +0500 Subject: [PATCH 255/580] NS descriptor checks added in NSDManagement-API --- .../IndividualNSDescriptor.robot | 1 + .../IndividualSubscription.robot | 3 +- .../NSDManagementKeywords.robot | 58 +++- SOL005/NSDManagement-API/NSDescriptors.robot | 1 + .../NotificationConsumer.robot | 13 +- ...eference_tst010_nsd_simple_a_b_SOL001.yaml | 113 +++++++ ...eference_tst010_nsd_simple_a_b_SOL006.yaml | 284 ++++++++++++++++++ .../environment/variables.txt | 11 +- .../notifications/NsdChangeNotification.json | 2 +- .../NsdDeletionNotification.json | 2 +- .../NsdOnBoardingFailureNotification.json | 1 + .../NsdOnBoardingNotification.json | 2 +- .../jsons/subscriptions.json | 9 +- 13 files changed, 488 insertions(+), 12 deletions(-) create mode 100644 SOL005/NSDManagement-API/descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml create mode 100644 SOL005/NSDManagement-API/descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml diff --git a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot index cde65701a..4583ca024 100644 --- a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot @@ -22,6 +22,7 @@ GET Individual Network Service Descriptor Information Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsdInfo Check HTTP Response Header Contains ETag + Check HTTP Response Body NsInstance content against NS Descriptor Check HTTP Response Body NsdInfo Identifier matches the requested Network Service Descriptor Information GET Individual Network Service Descriptor Information with invalid resource identifier diff --git a/SOL005/NSDManagement-API/IndividualSubscription.robot b/SOL005/NSDManagement-API/IndividualSubscription.robot index ec23f9937..932e761c2 100644 --- a/SOL005/NSDManagement-API/IndividualSubscription.robot +++ b/SOL005/NSDManagement-API/IndividualSubscription.robot @@ -18,7 +18,8 @@ GET Individual NSD Management Subscription ... Post-Conditions: none Get Individual NSD Management Subscription Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PkgmSubscription + Check HTTP Response Body Json Schema Is NsdmSubscription + Check HTTP Response Body NsdmSubscription content against NS Descriptor Check HTTP Response Body Subscription Identifier matches the requested Subscription GET Individual NSD Management Subscription with invalid resource identifier diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index c5a26d96a..ab160863c 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -10,6 +10,8 @@ Library JSONSchemaLibrary schemas/ Library RequestsLibrary Library Process Library String +Variables descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml +Variables descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml *** Keywords *** GET all Network Service Descriptors Information @@ -784,8 +786,9 @@ Send Post Request for NSD Management Subscription Log Trying to create a new subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} + ${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} ${output}= Output response @@ -798,8 +801,9 @@ 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}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} + ${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} ${output}= Output response @@ -1313,3 +1317,53 @@ Send DELETE Request for PNFD Archive Manifest DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} + +Check HTTP Response Body NsInstance content against NS Descriptor + #${check_descriptors} flag, 1 to check descriptors + Run Keyword If ${check_descriptors} == 1 Check Individual NsdInfo Content for NSD + +Check Individual NsdInfo Content for NSD + PARSE the NS Descriptor File + Match the Response Attributes with NS Descriptors + +PARSE the NS Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 NS descriptor file ELSE Fetch Information from SOL006 NS descriptor file + +Fetch Information from SOL001 NS descriptor file + ${ns_descriptor_id}= Get Variable Value ${topology_template.node_templates.properties.descriptorId} + ${designer}= Get Variable Value ${topology_template.node_templates.properties.designer} + ${version}= Get Variable Value ${topology_template.node_templates.properties.version} + ${name}= Get Variable Value ${topology_template.node_templates.properties.name} + ${invariantId}= Get Variable Value ${topology_template.node_templates.properties.invariantId} + + Set Global Variable ${NS_DescriptorID} ${ns_descriptor_id} + Set Global Variable ${Designer} ${designer} + Set Global Variable ${NS_Version} ${version} + Set Global Variable ${NS_Name} ${name} + Set Global Variable ${NS_InvariantID} ${invariantId} + +Fetch Information from SOL006 NS descriptor file + ${nsd_id}= Get Variable Value ${nfv.nsd[0].id} + Set Global Variable ${NS_DescriptorID} ${nsd_id} + +Match the Response Attributes with NS Descriptors + Should Be Equal As Strings ${response['body']['nsdId']} ${NSDescriptor_ID} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['nsdName']} ${NS_Name} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['nsdVersion']} ${NS_Version} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['nsdDesigner']} ${Designer} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['nsdInvariantId']} ${NS_InvariantID} + +Check HTTP Response Body NsdmSubscription content against NS Descriptor + #${check_descriptors} flag, 1 to check descriptors + Run Keyword If ${check_descriptors} == 1 Check Individual NsdmSubscription Content for NSD + +Check Individual NsdmSubscription Content for NSD + PARSE the NS Descriptor File + Match the NsdmSubscription Response Attributes with NS Descriptors + +Match the NsdmSubscription Response Attributes with NS Descriptors + Should Be Equal As Strings ${response['body']['filter']['nsdId']} ${NSDescriptor_ID} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['filter']['nsdName']} ${NS_Name} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['filter']['nsdVersion']} ${NS_Version} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['filter']['nsdDesigner']} ${Designer} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['filter']['nsdInvariantId']} ${NS_InvariantID} diff --git a/SOL005/NSDManagement-API/NSDescriptors.robot b/SOL005/NSDManagement-API/NSDescriptors.robot index 1e4c1086b..c03af8250 100644 --- a/SOL005/NSDManagement-API/NSDescriptors.robot +++ b/SOL005/NSDManagement-API/NSDescriptors.robot @@ -154,6 +154,7 @@ Create new Network Service Descriptor Resource Check HTTP Response Body Json Schema Is NsdInfo Check HTTP Response Header Contains Location Check Postcondition NsdInfo Exists + Check HTTP Response Body NsInstance content against NS Descriptor PUT all Network Service Descriptors - Method not implemented [Documentation] Test ID: 5.3.1.1.12 diff --git a/SOL005/NSDManagement-API/NotificationConsumer.robot b/SOL005/NSDManagement-API/NotificationConsumer.robot index c2be1b866..59492691d 100644 --- a/SOL005/NSDManagement-API/NotificationConsumer.robot +++ b/SOL005/NSDManagement-API/NotificationConsumer.robot @@ -6,6 +6,7 @@ Library JSONLibrary Library String Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Suite Setup Check resource existence and get CallbackUri +Resource NSDManagementKeywords.robot *** Test Cases *** NSD Onboarding Notification @@ -112,8 +113,9 @@ Post NSD Onboarding Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/notifications/NsdOnBoardingNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -123,8 +125,9 @@ Post NSD Onboarding Failure Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/notifications/NsdOnBoardingFailureNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -134,8 +137,9 @@ Post NSD Change Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/notifications/NsdChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -145,8 +149,9 @@ Post NSD Deletion Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/notifications/NsdDeletionNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSDManagement-API/descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml b/SOL005/NSDManagement-API/descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml new file mode 100644 index 000000000..a2a363b27 --- /dev/null +++ b/SOL005/NSDManagement-API/descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml @@ -0,0 +1,113 @@ +tosca_definitions_version: "tosca_simple_yaml_1_2" +tosca_default_namespace: "toscanfv" +description: "Referenxce NSD descriptor " +metadata: + descriptor_id: "NSD_WITH_2_VNF" + vendor: "ETSI" + version: "1.0" +topology_template: + substitution_mappings: + node_type: "tosca.nodes.nfv.NS" + requirements: + right: [VNF_A, ext_a_right] + left: [VNF_B, ext_b_left] + mgmt_a: [VNF_A, management_vnf_a] + mgmt_b: [VNF_B, management_vnf_b] + node_templates: + VNF_A: + type: "tosca.nodes.nfv.VNF" + properties: + descriptor_id: "VNF-A" + descriptor_version: "1.0" + provider: "ETSI TST WG" + product_name: "VNF-A" + software_version: "1.0" + product_info_name: "VNF-A" + product_info_description: "TST010 reference VNF-A" + flavour_id: "VNF-A_flavor" + flavour_description: "VNF-A flavor" + vnfm_info: + - 'etsivnfm:v2.3.1' + requirements: + virtualLink: + ext_a_right: "vl_right" + management_vnf_a: "vl_mgmt" + int_a_data: "vl_data" + VNF_B: + type: "tosca.nodes.nfv.VNF" + properties: + descriptorId: "VNF-B" + descriptorVersion: "1.0" + provider: "ETSI TST WG" + productName: "VNF-B" + softwareVersion: "1.0" + productInfoName: "VNF-B" + productInfoDescription: "TST010 reference VNF-A" + defaultLocalizationLanguage: null + flavourId: "VNF-B_flavor" + flavourDescription: "VNF-B flavor" + vnfm_info: + - 'etsivnfm:v2.3.1' + requirements: + virtualLink: + ext_b_left: "vl_left" + management_vnf_b: "vl_mgmt" + int_b_data: "vl_data" + NS_with_2_VNF: + type: "tosca.nodes.nfv.NS" + properties: + descriptorId: "NS with 2 VNFs" + designer: "ETSI TST WG" + version: "1.0" + name: "ns_with_2_vnfs" + invariantId: "ns_with_2_vnfs" + requirements: + virtualLink: + - "vl_left" + - "vl_right" + - "vl_mgmt" + - "vl_data" + vl_left: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "VNF-B external connetivity" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] + vl_right: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "VNF-A external connectivity" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] + vl_mgmt: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "Management network" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] + vl_data: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "Internal network that interconnect VNF-A and VNF-B" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] diff --git a/SOL005/NSDManagement-API/descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml b/SOL005/NSDManagement-API/descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml new file mode 100644 index 000000000..b29b2dfc7 --- /dev/null +++ b/SOL005/NSDManagement-API/descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml @@ -0,0 +1,284 @@ +nfv: + vnfd: + - id: VNF-A + provider: ETSI TST WG + product-name: TST010 reference VNF-A + software-version: '1.0' + version: '1.0' + vnfm-info: ETSI VNFM + vdu: + - id: vdu-a-1 + name: VNF A VDU 1 + int-cpd: + - id: right + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: left + layer-protocol: ethernet + virtual-compute-desc: vdu-a-1-vcd + virtual-storage-desc: vdu-a-1-vsd + sw-image-desc: asa-image + virtual-compute-desc: + id: vdu-a-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-a-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-a-1-image + name: vdu-a-1 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-a.qcow2' + int-virtual-link-desc: + - id: right-vl + flavour: + id: right-vl-flavour + qos: + latency: '1' + packet-delay-variation: '1' + packet-loss-ratio: '0.02' + connectivity-type: + layer-protocol: ethernet + ext-cpd: + - id: ext-a-right + int-virtual-link-desc: right-vl + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-a-1 + cpd: management + layer-protocol: ethernet + - id: ext-a-left + int-cpd: + vdu-id: vdu-a-1 + cpd: left + layer-protocol: ethernet + df: + id: normal + vdu-profile: + id: vdu-a-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + virtual-link-profile: + id: right-vl + flavour: right-vl-flavour + max-bit-rate-requirements: + root: '10' + min-bit-rate-requirements: + root: '1' + virtual-link-protocol-data: + associated-layer-protocol: ipv4 + l3-protocol-data: + name: right-network + ip-version: ipv4 + cidr: 10.10.10.0/32 + gateway-ip: 10.10.10.1 + dhcp-enabled: 'true' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-a-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-a-1 + 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' + - id: VNF-B + provider: ETSI TST WG + product-name: TST010 reference VNF-B + software-version: '2.0' + version: '2.0' + 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: right + layer-protocol: ethernet + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-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' + 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-1 + cpd: right + layer-protocol: ethernet + df: + id: normal + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-b-1 + 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' + nsd: + - id: tst010-nsd + vnfd-id: + - VNF-A + - VNF-B + sapd: + - id: right-sap + vnf: + vnfd-id: VNF-A + ext-cpd-id: ext-a-right + - id: management-sap + virtual-link-desc: mgmt + - id: left-sap + vnf: + vnfd-id: VNF-B + ext-cpd-id: ext-b-left + virtual-link-desc: + - id: mgmt + connectivity-type: + layer-protocol: ipv4 + df: + id: normal + qos: + latency: '0' + packet-delay-variation: '0' + - id: A-to-B + connectivity-type: + layer-protocol: ethernet + df: + id: normal + qos: + latency: '0' + packet-delay-variation: '0' + df: + - id: normal + vnf-profile: + - id: vnf-a-profile + vnfd-id: VNF-A + flavour-id: normal + instantiation-level: single + min-number-of-instances: '1' + max-number-of-instances: '1' + virtual-link-connectivity: + - virtual-link-profile-id: mgmt + constituent-cpd-id: + constituent-base-element-id: vdu-a-1 + constituent-cpd-id: management + - virtual-link-profile-id: A-to-B + constituent-cpd-id: + constituent-base-element-id: vdu-a-1 + constituent-cpd-id: left + - id: vnf-b-profile + vnfd-id: VNF-B + flavour-id: normal + instantiation-level: single + min-number-of-instances: '1' + max-number-of-instances: '1' + virtual-link-connectivity: + - virtual-link-profile-id: mgmt + constituent-cpd-id: + constituent-base-element-id: vdu-b-1 + constituent-cpd-id: management + - virtual-link-profile-id: A-to-B + constituent-cpd-id: + constituent-base-element-id: vdu-b-1 + constituent-cpd-id: right + virtual-link-profile: + - id: mgmt + virtual-link-desc-id: mgmt + flavour-id: normal + max-bitrate-requirements: + root: '1000' + min-bitrate-requirements: + root: '0' + - id: A-to-B + virtual-link-desc-id: A-to-B + flavour-id: normal + max-bitrate-requirements: + root: '10000000' + min-bitrate-requirements: + root: '0' + ns-instantiation-level: + - id: normal + description: Single VNF-A and VNF-B + vnf-to-level-mapping: + - vnf-profile-id: vnf-a-profile + number-of-instances: '1' + - vnf-profile-id: vnf-b-profile + number-of-instances: '1' + - id: double-A + description: Single VNF-B and Double VNF-A + vnf-to-level-mapping: + - vnf-profile-id: vnf-a-profile + number-of-instances: '2' + - vnf-profile-id: vnf-b-profile + number-of-instances: '1' + default-instantiation-level: normal diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index b837bc7c5..b1441c67c 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -91,4 +91,13 @@ ${notifCallbackUri} http://172.22.1.7:9091/nsd/subscriptions ${filter_ok} callbackUri=${notifCallbackUri} ${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based -${callbackResp} 127.0.0.1 \ No newline at end of file +${callbackResp} 127.0.0.1 + +${check_descriptors} 1 +${descriptorType} SOL001 + +${NS_DescriptorID} +${Designer} +${NS_Name} +${NS_Version} +${NS_InvariantId} diff --git a/SOL005/NSDManagement-API/jsons/notifications/NsdChangeNotification.json b/SOL005/NSDManagement-API/jsons/notifications/NsdChangeNotification.json index 349ca5465..302e08521 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/NsdChangeNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/NsdChangeNotification.json @@ -4,7 +4,7 @@ "subscriptionId":"{subscriptionId}", "timeStamp":"", "nsdInfoId":"{nsdInfoId}", - "nsdId":"", + "nsdId":"{nsdId}", "nsdOperationalState":"ENABLED", "_links":"" }} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/notifications/NsdDeletionNotification.json b/SOL005/NSDManagement-API/jsons/notifications/NsdDeletionNotification.json index 6909a5c25..a96e0dd3c 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/NsdDeletionNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/NsdDeletionNotification.json @@ -4,6 +4,6 @@ "subscriptionId":"{subscriptionId}", "timeStamp":"", "nsdInfoId":"{nsdInfoId}", - "nsdId":"", + "nsdId":"{nsdId}", "_links":"" }} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingFailureNotification.json b/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingFailureNotification.json index 80cb4e8b6..23a4e52ae 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingFailureNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingFailureNotification.json @@ -5,5 +5,6 @@ "timeStamp":"", "nsdInfoId":"{nsdInfoId}", "onboardingFailureDetails":"", + "nsdId": "{nsdId}", "_links":"" }} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingNotification.json b/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingNotification.json index 5b9b4a221..9c0481100 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingNotification.json @@ -4,6 +4,6 @@ "subscriptionId":"{subscriptionId}", "timeStamp":"", "nsdInfoId":"{nsdInfoId}", - "nsdId":"", + "nsdId": "{nsdId}", "_links":"" }} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/subscriptions.json b/SOL005/NSDManagement-API/jsons/subscriptions.json index 7aa8965f3..a82df503c 100644 --- a/SOL005/NSDManagement-API/jsons/subscriptions.json +++ b/SOL005/NSDManagement-API/jsons/subscriptions.json @@ -1,3 +1,10 @@ {{ - "callbackUri": "{notifCallbackUri}" + "callbackUri": "{notifCallbackUri}", + "filter": {{ + "nsdId": "{nsdId}", + "nsdName": "{nsdName}", + "nsdVersion": "{nsdVersion}", + "nsdDesigner": "{nsdDesigner}", + "nsdInvariantId": "{nsdInvariantId}" + }} }} \ No newline at end of file -- GitLab From 4f6801ae340be1d026cad1db4ca388b994b076d0 Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 26 Jan 2021 18:48:27 +0500 Subject: [PATCH 256/580] redundant lines of code removed in VNFPackageManagement-API Keywords --- .../VNFPackageManagementKeywords.robot | 96 +------------------ 1 file changed, 5 insertions(+), 91 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 93d007475..f6fa8adbb 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -196,38 +196,11 @@ 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} + ${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} @@ -241,71 +214,12 @@ Fetch Information from SOL006 descriptor file ${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 Response Attributes of vnfPkgInfo with Descriptors #Checking Response attributes with VNF Descriptors Should Be Equal As Strings ${response['body']['vnfdId']} ${Descriptor_Id} -- GitLab From f767c238bced9e7834c39f62f2fb5d9fe42b46d7 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Tue, 26 Jan 2021 18:40:49 +0100 Subject: [PATCH 257/580] updated reference descriptors in NS LCM --- .../NSLCMOperationKeywords.robot | 7 +- ...> reference_tst010_nsd_simple_SOL001.yaml} | 50 +-- ... => reference_tst010_vnf_2vdu_SOL001.yaml} | 4 +- .../reference_tst010_nsd_simple_SOL006.yaml | 58 ++++ ...eference_tst010_nsd_simple_a_b_SOL006.yaml | 284 ------------------ .../reference_tst010_vnf_2vdu_SOL006.yaml | 138 +++++++++ 6 files changed, 211 insertions(+), 330 deletions(-) rename SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/{reference_tst010_nsd_simple_a_b_SOL001.yaml => reference_tst010_nsd_simple_SOL001.yaml} (60%) rename SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/{reference_tst010_vnf_b_2vdu_SOL001.yaml => reference_tst010_vnf_2vdu_SOL001.yaml} (98%) create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml delete mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 80b35b549..8dde1509e 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -8,9 +8,10 @@ Library OperatingSystem Library MockServerLibrary Library Collections Library String -Variables descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml -Variables descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml +Variables descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml +Variables descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml +Variables descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml +Variables descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml *** Keywords *** Initialize System diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml similarity index 60% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml index a2a363b27..484f96376 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml @@ -2,37 +2,17 @@ tosca_definitions_version: "tosca_simple_yaml_1_2" tosca_default_namespace: "toscanfv" description: "Referenxce NSD descriptor " metadata: - descriptor_id: "NSD_WITH_2_VNF" + descriptor_id: "NSD_WITH_1_VNF" vendor: "ETSI" version: "1.0" topology_template: substitution_mappings: node_type: "tosca.nodes.nfv.NS" requirements: - right: [VNF_A, ext_a_right] + right: [VNF_A, ext_b_right] left: [VNF_B, ext_b_left] - mgmt_a: [VNF_A, management_vnf_a] mgmt_b: [VNF_B, management_vnf_b] node_templates: - VNF_A: - type: "tosca.nodes.nfv.VNF" - properties: - descriptor_id: "VNF-A" - descriptor_version: "1.0" - provider: "ETSI TST WG" - product_name: "VNF-A" - software_version: "1.0" - product_info_name: "VNF-A" - product_info_description: "TST010 reference VNF-A" - flavour_id: "VNF-A_flavor" - flavour_description: "VNF-A flavor" - vnfm_info: - - 'etsivnfm:v2.3.1' - requirements: - virtualLink: - ext_a_right: "vl_right" - management_vnf_a: "vl_mgmt" - int_a_data: "vl_data" VNF_B: type: "tosca.nodes.nfv.VNF" properties: @@ -50,23 +30,22 @@ topology_template: - 'etsivnfm:v2.3.1' requirements: virtualLink: + ext_b_right: "vl_right" ext_b_left: "vl_left" management_vnf_b: "vl_mgmt" - int_b_data: "vl_data" - NS_with_2_VNF: + NS_with_1_VNF: type: "tosca.nodes.nfv.NS" properties: - descriptorId: "NS with 2 VNFs" + descriptorId: "NS with 1 VNF" designer: "ETSI TST WG" version: "1.0" - name: "ns_with_2_vnfs" - invariantId: "ns_with_2_vnfs" + name: "ns_with_1_vnfs" + invariantId: "ns_with_1_vnfs" requirements: virtualLink: - "vl_left" - "vl_right" - "vl_mgmt" - - "vl_data" vl_left: type: "tosca.nodes.nfv.NsVirtualLink" properties: @@ -81,7 +60,7 @@ topology_template: vl_right: type: "tosca.nodes.nfv.NsVirtualLink" properties: - description: "VNF-A external connectivity" + description: "VNF-B external connectivity" vlProfile: max_bitrate_requirements: root: 1000 @@ -99,15 +78,4 @@ topology_template: min_bitrate_requirements: root: 1000 connectivityType: - layer_protocols: [ipv4] - vl_data: - type: "tosca.nodes.nfv.NsVirtualLink" - properties: - description: "Internal network that interconnect VNF-A and VNF-B" - vlProfile: - max_bitrate_requirements: - root: 1000 - min_bitrate_requirements: - root: 1000 - connectivityType: - layer_protocols: [ipv4] + layer_protocols: [ipv4] \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml similarity index 98% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml index e9159106a..3a90f45bf 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml @@ -105,10 +105,10 @@ topology_template: sw_image: type: tosca.artifacts.nfv.SwImage file: vdu-b-2.qcow2 - vnf_b_1_VNF: + VNF_B: type: "tosca.nodes.nfv.VNF" properties: - descriptor_id: "VNF-B-2VDUs" + descriptor_id: "VNF_B" descriptor_version: "2.0" provider: "ETSI TST WG" product_name: "VNF-B-2VDUs" diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml new file mode 100644 index 000000000..c0a6f9242 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml @@ -0,0 +1,58 @@ +nfv: + nsd: + - id: tst010-nsd + vnfd-id: + - VNF-B + sapd: + - id: right-sap + vnf: + vnfd-id: VNF-B + ext-cpd-id: ext-b-right + - id: management-sap + virtual-link-desc: mgmt + - id: left-sap + vnf: + vnfd-id: VNF-B + ext-cpd-id: ext-b-left + virtual-link-desc: + - id: mgmt + connectivity-type: + layer-protocol: ipv4 + df: + id: normal + qos: + latency: '0' + packet-delay-variation: '0' + df: + - id: normal + vnf-profile: + - id: vnf-b-profile + vnfd-id: VNF-B + flavour-id: normal + instantiation-level: single + min-number-of-instances: '1' + max-number-of-instances: '1' + virtual-link-connectivity: + - virtual-link-profile-id: mgmt + constituent-cpd-id: + constituent-base-element-id: vdu-b-1 + constituent-cpd-id: management + virtual-link-profile: + - id: mgmt + virtual-link-desc-id: mgmt + flavour-id: normal + max-bitrate-requirements: + root: '1000' + min-bitrate-requirements: + root: '0' + ns-instantiation-level: + - id: normal + description: Single VNF-B + vnf-to-level-mapping: + - vnf-profile-id: vnf-b-profile + number-of-instances: '1' + - id: double-B + description: Double VNF-B + vnf-to-level-mapping: + - vnf-profile-id: vnf-b-profile + number-of-instances: '2' \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml deleted file mode 100644 index b29b2dfc7..000000000 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml +++ /dev/null @@ -1,284 +0,0 @@ -nfv: - vnfd: - - id: VNF-A - provider: ETSI TST WG - product-name: TST010 reference VNF-A - software-version: '1.0' - version: '1.0' - vnfm-info: ETSI VNFM - vdu: - - id: vdu-a-1 - name: VNF A VDU 1 - int-cpd: - - id: right - layer-protocol: ethernet - - id: management - layer-protocol: ethernet - - id: left - layer-protocol: ethernet - virtual-compute-desc: vdu-a-1-vcd - virtual-storage-desc: vdu-a-1-vsd - sw-image-desc: asa-image - virtual-compute-desc: - id: vdu-a-1-vcd - virtual-memory: - size: '4.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: - id: vdu-a-1-vsd - type-of-storage: root-storage - size-of-storage: '0' - sw-image-desc: - id: vdu-a-1-image - name: vdu-a-1 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-a.qcow2' - int-virtual-link-desc: - - id: right-vl - flavour: - id: right-vl-flavour - qos: - latency: '1' - packet-delay-variation: '1' - packet-loss-ratio: '0.02' - connectivity-type: - layer-protocol: ethernet - ext-cpd: - - id: ext-a-right - int-virtual-link-desc: right-vl - layer-protocol: ethernet - - id: management - int-cpd: - vdu-id: vdu-a-1 - cpd: management - layer-protocol: ethernet - - id: ext-a-left - int-cpd: - vdu-id: vdu-a-1 - cpd: left - layer-protocol: ethernet - df: - id: normal - vdu-profile: - id: vdu-a-1 - min-number-of-instances: '1' - max-number-of-instances: '2' - virtual-link-profile: - id: right-vl - flavour: right-vl-flavour - max-bit-rate-requirements: - root: '10' - min-bit-rate-requirements: - root: '1' - virtual-link-protocol-data: - associated-layer-protocol: ipv4 - l3-protocol-data: - name: right-network - ip-version: ipv4 - cidr: 10.10.10.0/32 - gateway-ip: 10.10.10.1 - dhcp-enabled: 'true' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-a-1 - number-of-instances: '2' - - id: single - vdu-level: - vdu-id: vdu-a-1 - 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' - - id: VNF-B - provider: ETSI TST WG - product-name: TST010 reference VNF-B - software-version: '2.0' - version: '2.0' - 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: right - layer-protocol: ethernet - virtual-compute-desc: vdu-b-1-vcd - virtual-storage-desc: vdu-b-1-vsd - sw-image-desc: vdu-b-1-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' - 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-1 - cpd: right - layer-protocol: ethernet - df: - id: normal - vdu-profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '2' - - id: single - vdu-level: - vdu-id: vdu-b-1 - 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' - nsd: - - id: tst010-nsd - vnfd-id: - - VNF-A - - VNF-B - sapd: - - id: right-sap - vnf: - vnfd-id: VNF-A - ext-cpd-id: ext-a-right - - id: management-sap - virtual-link-desc: mgmt - - id: left-sap - vnf: - vnfd-id: VNF-B - ext-cpd-id: ext-b-left - virtual-link-desc: - - id: mgmt - connectivity-type: - layer-protocol: ipv4 - df: - id: normal - qos: - latency: '0' - packet-delay-variation: '0' - - id: A-to-B - connectivity-type: - layer-protocol: ethernet - df: - id: normal - qos: - latency: '0' - packet-delay-variation: '0' - df: - - id: normal - vnf-profile: - - id: vnf-a-profile - vnfd-id: VNF-A - flavour-id: normal - instantiation-level: single - min-number-of-instances: '1' - max-number-of-instances: '1' - virtual-link-connectivity: - - virtual-link-profile-id: mgmt - constituent-cpd-id: - constituent-base-element-id: vdu-a-1 - constituent-cpd-id: management - - virtual-link-profile-id: A-to-B - constituent-cpd-id: - constituent-base-element-id: vdu-a-1 - constituent-cpd-id: left - - id: vnf-b-profile - vnfd-id: VNF-B - flavour-id: normal - instantiation-level: single - min-number-of-instances: '1' - max-number-of-instances: '1' - virtual-link-connectivity: - - virtual-link-profile-id: mgmt - constituent-cpd-id: - constituent-base-element-id: vdu-b-1 - constituent-cpd-id: management - - virtual-link-profile-id: A-to-B - constituent-cpd-id: - constituent-base-element-id: vdu-b-1 - constituent-cpd-id: right - virtual-link-profile: - - id: mgmt - virtual-link-desc-id: mgmt - flavour-id: normal - max-bitrate-requirements: - root: '1000' - min-bitrate-requirements: - root: '0' - - id: A-to-B - virtual-link-desc-id: A-to-B - flavour-id: normal - max-bitrate-requirements: - root: '10000000' - min-bitrate-requirements: - root: '0' - ns-instantiation-level: - - id: normal - description: Single VNF-A and VNF-B - vnf-to-level-mapping: - - vnf-profile-id: vnf-a-profile - number-of-instances: '1' - - vnf-profile-id: vnf-b-profile - number-of-instances: '1' - - id: double-A - description: Single VNF-B and Double VNF-A - vnf-to-level-mapping: - - vnf-profile-id: vnf-a-profile - number-of-instances: '2' - - vnf-profile-id: vnf-b-profile - number-of-instances: '1' - default-instantiation-level: normal diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml new file mode 100644 index 000000000..e0b812b4f --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml @@ -0,0 +1,138 @@ +nfv: + vnfd: + - id: VNF-B + 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 + vdu: + 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 -- GitLab From eb8ec08132b662b72dc815f74e84e9ef55797694 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Wed, 27 Jan 2021 10:52:06 +0100 Subject: [PATCH 258/580] Fix issue: #140 --- SOL003/VNFPackageManagement-API/VNFPackageContent.robot | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot index dc8a2c3b7..a7ed3c023 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot @@ -94,7 +94,7 @@ POST Individual VNF Package Content - Method not implemented ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none - Send POST Request for individual VNF Package + Send POST Request for individual VNF Package Content Check HTTP Response Status Code Is 405 PUT Individual VNF Package Content - Method not implemented @@ -106,7 +106,7 @@ PUT Individual VNF Package Content - Method not implemented ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none - Send PUT Request for individual VNF Package + Send PUT Request for individual VNF Package Content Check HTTP Response Status Code Is 405 PATCH Individual VNF Package Content - Method not implemented @@ -118,7 +118,7 @@ PATCH Individual VNF Package Content - Method not implemented ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none - Send PATCH Request for individual VNF Package + Send PATCH Request for individual VNF Package Content Check HTTP Response Status Code Is 405 DELETE Individual VNF Package Content - Method not implemented @@ -130,7 +130,7 @@ DELETE Individual VNF Package Content - Method not implemented ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none - Send DELETE Request for individual VNF Package + Send DELETE Request for individual VNF Package Content Check HTTP Response Status Code Is 405 GET Individual OnBoarded VNF Package Content -- GitLab From 8be583aa3b50d13be25de459faa143fcedbb3fa0 Mon Sep 17 00:00:00 2001 From: zafar Date: Wed, 27 Jan 2021 15:16:34 +0500 Subject: [PATCH 259/580] minor bug fix in response body parsing & removal of redundant lines of code --- .../VnfLcmMntOperationKeywords.robot | 24 +-- .../reference_tst010_vnf_b_2vdu_SOL001.yaml} | 0 .../reference_tst010_vnf_b_2vdu_SOL006.yaml} | 0 .../Grants.robot | 37 +--- .../IndividualGrant.robot | 81 +-------- .../reference_tst010_vnf_b_2vdu_SOL001.yaml} | 0 .../reference_tst010_vnf_b_2vdu_SOL006.yaml} | 0 .../environment/variables.txt | 6 - .../VNFPackageManagementKeywords.robot | 35 +--- .../reference_tst010_vnf_b_2vdu_SOL001.yaml | 168 ++++++++++++++++++ .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 137 ++++++++++++++ .../environment/variables.txt | 5 - 12 files changed, 344 insertions(+), 149 deletions(-) rename SOL003/{VNFLifecycleOperationGranting-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml => VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml} (100%) rename SOL003/{VNFLifecycleOperationGranting-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml => VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml} (100%) rename SOL003/{VNFPackageManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml => VNFLifecycleOperationGranting-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml} (100%) rename SOL003/{VNFPackageManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml => VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml} (100%) create mode 100644 SOL003/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml create mode 100644 SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 679fd6102..6a172f1f6 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -8,8 +8,8 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ -Variables descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml *** Keywords *** Get Vnf Instance @@ -127,7 +127,7 @@ Send VNF Instance Resource Create Request 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=${Descriptor_ID} vnfProvider=${Provider} vnfProductName=${Product_Name} vnfSoftwareVersion=${Software_Version} vnfdVersion= ${Descriptor_Version} vnfConfigurableProperties=${configurable_properties} flavourId=${Flavour_ID} + ${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 @@ -1324,12 +1324,12 @@ Match the VNF Instance Response Attributes with Descriptors 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']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} - List Should Contain value ${Storage_IDs} ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} + 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 @@ -1342,8 +1342,8 @@ 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']['AffectedVnfc']['vduId']} - List Should Contain value ${Storage_IDs} ${response['body']['resourceChanges']['affectedVirtualStorages']['virtualStorageDescId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['resourceChanges']['affectedVirtualLinks']['virtualStorageDescId']} + 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/VNFLifecycleOperationGranting-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 100% rename from SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL003/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml similarity index 100% rename from SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml rename to SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 12effdd71..0121db906 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -6,8 +6,8 @@ Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ Library Collections -Variables descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_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. @@ -216,26 +216,12 @@ 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 - @{VNF_labels}= Create List - FOR ${key} IN @{topology_template.node_templates.keys()} - ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} - ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VNF} - - Run Keyword If ${VNF_check} Append To List ${VNF_labels} ${key} - Run Keyword If ${VNF_check} Get VNF Attributes from SOL001 ${key} - END - Set Global Variable @{VNF_IDs} @{VNF_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} - + ${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} @@ -248,12 +234,7 @@ Fetch Information from SOL006 descriptor file ${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']} - + ${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} diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index b0d176297..d0865365c 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -5,8 +5,8 @@ Library JSONLibrary Library JSONSchemaLibrary schemas/ Library Collections Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Variables descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_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. @@ -177,56 +177,25 @@ PARSE the 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} @@ -234,39 +203,19 @@ Fetch Information from SOL006 descriptor file 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 - ${Compute_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 ${Storage_labels} ${nfv.vnfd[0].vdu[${i}]['virtual-storage-desc']} Append To List ${Compute_labels} ${nfv.vnfd[0].vdu[${i}]['virtual-compute-desc']} - Get Internal CPs for each VDU ${i} END Set Global Variable ${VDU_IDs} ${VDU_labels} - Set Global Variable ${Storage_IDs} ${Storage_labels} Set Global Variable ${Compute_IDs} ${Compute_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 @@ -283,20 +232,8 @@ Get Virtual Link IDs 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 grant Response Attributes with Descriptors - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['extVirtualLinks']['extCps']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['extVirtualLinks']['extCps']['cpdId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['ExtManagedVirtualLinkData']['vnfVirtualLinkDescId']} - List Should Contain value ${Compute_IDs} ${response['body']['vimAssets']['computeResourceFlavours']['vnfdVirtualComputeDescId']} - - - - + 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/VNFPackageManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 100% rename from SOL003/VNFPackageManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml similarity index 100% rename from SOL003/VNFPackageManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml rename to SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml diff --git a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index 64dfe501f..c9405aec8 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -47,19 +47,13 @@ ${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} @{Compute_IDs} ${Descriptor_ID} diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 2775dba47..56a36420b 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1538,32 +1538,16 @@ 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 - @{VNF_labels}= Create List - FOR ${key} IN @{topology_template.node_templates.keys()} - ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} - - ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VNF} - Run Keyword If ${VNF_check} Append To List ${VNF_labels} ${key} - Run Keyword If ${VNF_check} Get VNF Attributes from SOL001 ${key} - END - Set Global Variable @{VNF_IDs} @{VNF_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} - + ${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} - Set Global Variable ${Flavour_ID} ${flavour_id} Fetch Information from SOL006 descriptor file ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} @@ -1571,7 +1555,6 @@ Fetch Information from SOL006 descriptor file ${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} @@ -1597,8 +1580,8 @@ Check Individual VNF Subscription Content 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']['vnfProvider']} ${Provider} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${Product_Name} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfSoftwareVersion']} ${Software_Version} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfdVersion']} ${Descriptor_Version} + 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/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml new file mode 100644 index 000000000..e9159106a --- /dev/null +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_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/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml new file mode 100644 index 000000000..d902779a2 --- /dev/null +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_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 d45836b12..b5779a0e8 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -21,7 +21,6 @@ ${apiName} vnfpkgm ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint ${NFVO_ALLOWS_DUPLICATE_SUBS} 1 -${descriptorType} SOL001 ${response} httpresponse @@ -92,10 +91,6 @@ ${callbackResp} localhost ${descriptorType} SOL001 ${check_descriptors} 1 -${tosca_type_VNF} tosca.nodes.nfv.VNF - -@{VNF_IDs} - ${Descriptor_ID} ${Provider} ${Product_Name} -- GitLab From f7efa1c8d0213c233ba72a4d9f3b8e7179f32cbb Mon Sep 17 00:00:00 2001 From: zafar Date: Wed, 27 Jan 2021 15:19:59 +0500 Subject: [PATCH 260/580] removed old reference descriptor files --- ...01_reference_tst010_vnf_b_2vdu_SOL001.yaml | 168 ------------------ ...06_reference_tst010_vnf_b_2vdu_SOL006.yaml | 137 -------------- 2 files changed, 305 deletions(-) delete mode 100644 SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml delete mode 100644 SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml deleted file mode 100644 index e9159106a..000000000 --- a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml +++ /dev/null @@ -1,168 +0,0 @@ -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/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml deleted file mode 100644 index d902779a2..000000000 --- a/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml +++ /dev/null @@ -1,137 +0,0 @@ -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 -- GitLab From 756b739965c7c5d20397fea4c8f905b632bd42bb Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Wed, 27 Jan 2021 15:39:33 +0100 Subject: [PATCH 261/580] Fix issue: #136 --- .../VnfLcmOperationOccurrenceNotification.schema.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index 85468696c..bf0bfcd30 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -347,11 +347,11 @@ "type": "string" }, "vnfProvider": { - "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n", + "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId\" attribute.\n", "type": "string" }, "vnfProductName": { - "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n", + "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId\" attribute.\n", "type": "string" }, "vnfSoftwareVersion": { @@ -565,4 +565,4 @@ } } } - } \ No newline at end of file + } -- GitLab From 94758811a40200674094f8a7b0ef9b2ccf398647 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 28 Jan 2021 12:45:48 +0100 Subject: [PATCH 262/580] fixed issue #135 for v2.7.1 --- .../CancelOperationTask.robot | 10 +- .../ChangeVNFFlavourTask.robot | 4 +- .../FailOperationTask.robot | 4 +- .../HealVNFTask.robot | 4 +- .../IndividualVNFInstance.robot | 2 +- .../InstantiateVNFTask.robot | 2 +- .../OperateVNFTask.robot | 4 +- .../RetryOperationTask.robot | 4 +- .../RollbackOperationTask.robot | 4 +- .../ScaleVNFTask.robot | 4 +- .../ScaleVNFToLevelTask.robot | 4 +- .../TerminateVNFTask.robot | 2 +- .../VnfLcmMntOperationKeywords.robot | 201 +++++++++++++++++- .../environment/variables.txt | 12 +- 14 files changed, 231 insertions(+), 30 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot index af06dc10c..92461b333 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -11,7 +11,7 @@ POST Cancel operation task [Documentation] Test ID: 7.3.1.16.1 ... Test title: POST Cancel operation task ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Pre-conditions: the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. + ... Pre-conditions: The "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none @@ -24,12 +24,12 @@ POST Cancel operation task Conflict [Documentation] Test ID: 7.3.1.16.2 ... Test title: POST Cancel operation task Conflict ... Test objective: The POST method is NOT cancelling an ongoing VNF lifecycle operation due to the fact that the VNF instance resource is not in STARTING, PROCESSING or ROLLING_BACK state - ... Pre-conditions: operation is not in STARTING, PROCESSING or ROLLING_BACK state + ... Pre-conditions: The "VNF LCM operation occurrence" is not in STARTING, PROCESSING or ROLLING_BACK state ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Cancel operation task + POST Cancel operation task with conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -37,12 +37,12 @@ POST Cancel operation task Not Found [Documentation] Test ID: 7.3.1.16.3 ... Test title: POST Cancel operation task Not Found ... Test objective: The objective is to test that POST method cannot cancel a VNF lifecycle operation because the resource is not found - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Cancel operation task + POST Cancel operation task not existing Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 4c74ec566..93a4003e0 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -29,7 +29,7 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Change VNF deployment flavour + POST Change VNF deployment flavour of NOT-INSTANTIATED VNF Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -42,7 +42,7 @@ POST Change deployment flavour of a vnfInstance Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Change VNF deployment flavour + POST Change VNF deployment flavour of not existing VNF Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index 89132cbef..3d3cb5877 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -30,7 +30,7 @@ Post Fail operation task Conflict (Not-FAILED_TEMP) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Post Fail operation + Post Fail operation with conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -43,7 +43,7 @@ Post Fail operation task Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Post Fail operation + Post Fail operation not existing Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index f8858ab0f..ca6daf95b 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -29,7 +29,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Heal VNF + POST Heal VNF Not Instantiated Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -42,7 +42,7 @@ POST Heal a vnfInstance Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Heal VNF + POST Heal VNF Not Existing Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index cca928c20..d11844ead 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -108,7 +108,7 @@ DELETE Individual VNFInstance Conflict ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resources are not deleted - DELETE individual vnfInstance + DELETE individual vnfInstance in INSTANTIATED state Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails Check resource existence diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 1bba6b87b..5a2275f77 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -30,7 +30,7 @@ Instantiate a vnfInstance Conflict ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST instantiate individual vnfInstance + POST instantiate individual vnfInstance with conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index 462955700..2f11f363e 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -31,7 +31,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Operate VNF + POST Operate VNF with conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -44,7 +44,7 @@ POST Operate a vnfInstance Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Operate VNF + POST Operate VNF not existing Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index 63a4f7965..31848724f 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -32,7 +32,7 @@ Post Retry operation task Conflict (Not-FAILED_TEMP) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Post Retry operation + Post Retry operation with conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -45,7 +45,7 @@ Post Retry operation task Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Post Retry operation + Post Retry operation not existing Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index 881342094..11038da13 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -31,7 +31,7 @@ POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Post Rollback operation + Post Rollback operation with conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -44,7 +44,7 @@ POST Rollback operation task Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Post Rollback operation + Post Rollback operation not existing Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index e0b40633e..1ce92b0b1 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -30,7 +30,7 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Scale vnfInstance + POST Scale vnfInstance with VNF NOT-INSTANTIATED 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_VNFM ... Applicability: none ... Post-Conditions: none - POST Scale vnfInstance + POST Scale vnfInstance with not existing VNF Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 7c483b568..0b9f1c50d 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -29,7 +29,7 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Scale vnfInstance to level + POST Scale vnfInstance to level with VNF NOT-INSTANTIATED Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -42,7 +42,7 @@ Scale a vnfInstance Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Scale vnfInstance to level + POST Scale vnfInstance to level with not existing VNF Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index 9df78c58b..98018e193 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -30,7 +30,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Terminate VNF + POST Terminate VNF in NOT-INSTANTIATED state Check HTTP Response Status Code Is 202 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 0ef1ebdeb..9affcd431 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -250,6 +250,24 @@ POST Cancel operation task Log Validate Status code ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Cancel operation task with conflict + Log Cancel an ongoing VNF lifecycle operation + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Cancel a VNF lifecycle operation + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotStartingProcessingRollingback}/cancel ${CancelMode} + Log Validate Status code + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Cancel operation task not existing + Log Cancel an ongoing VNF lifecycle operation + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Cancel a VNF lifecycle operation + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingVnfLcmOpOccId}/cancel ${CancelMode} + Log Validate Status code + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Cancel operation task log Trying to perform a GET. This method should not be implemented @@ -326,7 +344,30 @@ POST Change VNF deployment flavour ${body}= Format String ${template} newFlavourId=${newFlavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + +POST Change VNF deployment flavour of NOT-INSTANTIATED VNF + Log Trying to change the deployment flavour of 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/changeVnfFlavourRequest.json + ${body}= Format String ${template} newFlavourId=${newFlavourId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/change_flavour ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Change VNF deployment flavour of not existing VNF + Log Trying to change the deployment flavour of 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/changeVnfFlavourRequest.json + ${body}= Format String ${template} newFlavourId=${newFlavourId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/change_flavour ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET Change VNF deployment flavour log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -501,6 +542,12 @@ DELETE individual vnfInstance Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +DELETE individual vnfInstance in INSTANTIATED state + log Trying to delete an individual VNF instance + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${instantiatedVnfInstanceId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} POST instantiate individual vnfInstance Log Trying to Instantiate a vnf Instance Set Headers {"Accept":"${ACCEPT}"} @@ -511,6 +558,16 @@ POST instantiate individual vnfInstance ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST instantiate individual vnfInstance with conflict + Log Trying to Instantiate a vnf Instance + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/instantiateVnfRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${instantiatedVnfInstanceId}/instantiate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -548,6 +605,26 @@ POST Scale vnfInstance Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance with VNF NOT-INSTANTIATED + 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} scaletype=${scaletype} scaleAspectId=${scaleAspectId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/scale ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance with not existing VNF + 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} scaletype=${scaletype} scaleAspectId=${scaleAspectId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/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}"} @@ -594,6 +671,26 @@ POST Scale vnfInstance to level Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance to level with VNF NOT-INSTANTIATED + Log Trying to scale a vnf Instance to level + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template}= Get File jsons/scaleVnfToLevelRequest.json + ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/scale_to_level ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance to level with not existing VNF + Log Trying to scale a vnf Instance to level + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template}= Get File jsons/scaleVnfToLevelRequest.json + ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/scale_to_level ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance to level log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -630,6 +727,17 @@ POST Terminate VNF ${template}= Get File jsons/terminateVnfRequest.json ${body}= Format String ${template} terminationType=${terminationType} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Terminate VNF in NOT-INSTANTIATED state + Log Trying to terminate 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/terminateVnfRequest.json + ${body}= Format String ${template} terminationType=${terminationType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/terminate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -671,6 +779,28 @@ POST Heal VNF Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Heal VNF Not Instantiated + Log Trying to heal 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/healVnfRequest.json + ${body}= Format String ${template} healingCause=${healingCause} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/heal ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Heal VNF Not Existing + Log Trying to heal 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/healVnfRequest.json + ${body}= Format String ${template} healingCause=${healingCause} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/heal ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Heal VNF log Trying to perform a GET. This method should not be implemented @@ -710,6 +840,28 @@ POST Operate VNF Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Operate VNF with conflict + Log Trying to operate a VNF instance. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template}= Get File jsons/operateVnfRequest.json + ${body}= Format String ${template} changeStateTo=${changeStateTo} stopType=${stopType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/operate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Operate VNF not existing + Log Trying to operate 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/operateVnfRequest.json + ${body}= Format String ${template} changeStateTo=${changeStateTo} stopType=${stopType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/operate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Operate VNF log Trying to perform a GET. This method should not be implemented @@ -866,7 +1018,21 @@ Post Retry operation Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} +Post Retry operation with conflict + Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotFailedTemp}/retry + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Post Retry operation not existing + Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingVnfLcmOpOccId}/retry + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Get Retry operation Log Trying to perform a GET. This method should not be implemented. Set Headers {"Accept":"${ACCEPT}"} @@ -901,6 +1067,20 @@ Post Rollback operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Post Rollback operation with conflict + Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotFailedTemp}/rollback + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Post Rollback operation not existing + Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingVnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Rollback operation @@ -939,6 +1119,23 @@ Post Fail operation Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +Post Fail operation with conflict + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotFailedTemp}/fail + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Fail operation not existing + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingvnfLcmOpOccId}/fail + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Get Fail operation Log Trying to perform a GET. This method should not be implemented. Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index b08bdeff5..acba0ae0b 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -28,12 +28,18 @@ ${ARTIFACT_ID} artifactId ${WRONG_ACCEPT} application/json ${SYNC_MODE} 0 - +${instantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${notInstantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${notExistingVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${vnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -${vnfLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d ${conflicVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${vnfLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d +${notExistingVnfLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d +${vnfLcmOpOccIdNotStartingProcessingRollingback} 6fc3539c-e602-4afa-8e13-962fb5a7d81d +${vnfLcmOpOccIdNotFailedTemp} 6fc3539c-e602-4afa-8e13-962fb5a7d81d + ${VnfLcmOperationOccurrenceNotification} {} ${VnfIdentifierCreationNotification} {} ${VnfIdentifierDeletionNotification} {} @@ -44,8 +50,6 @@ ${requestedFlavour} test ${sub_filter} filter ${sub_filter_invalid} filter_invalid -${notInstantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f - ${fields} criteria,objectInstanceIds ${vnfInstanceName} Test-VnfInstance -- GitLab From 7cd1d95b7fd3ce42328fee74d0d530b9cac587d7 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Thu, 28 Jan 2021 16:25:40 +0100 Subject: [PATCH 263/580] Fix issue: #142 --- SOL003/VNFFaultManagement-API/Alarms.robot | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/Alarms.robot b/SOL003/VNFFaultManagement-API/Alarms.robot index 69001f407..c0dd85276 100644 --- a/SOL003/VNFFaultManagement-API/Alarms.robot +++ b/SOL003/VNFFaultManagement-API/Alarms.robot @@ -70,7 +70,7 @@ GET information about multiple alarms with "all_fields" attribute selector ... Post-Conditions: none GET Alarms Task with all_fields attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is alarms + Check HTTP Response Body Json Schema Is Alarms GET information about multiple alarms with exclude_default attribute selector [Documentation] Test ID: 7.3.5.1.6 @@ -83,7 +83,7 @@ GET information about multiple alarms with exclude_default attribute selector ... Post-Conditions: none GET Alarms Task with exclude_default attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is alarms + Check HTTP Response Body Json Schema Is Alarms GET information about multiple alarms with fields attribute selector [Documentation] Test ID: 7.3.5.1.7 @@ -96,7 +96,7 @@ GET information about multiple alarms with fields attribute selector ... Post-Conditions: none GET Alarms Task with fields attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is alarms + Check HTTP Response Body Json Schema Is Alarms GET information about multiple alarms with "exclude_fields" attribute selector [Documentation] Test ID: 7.3.5.1.8 @@ -109,7 +109,7 @@ GET information about multiple alarms with "exclude_fields" attribute selector ... Post-Conditions: none GET Alarms Task with exclude_fields attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is alarms + Check HTTP Response Body Json Schema Is Alarms PUT Alarms - Method not implemented [Documentation] Test ID: 7.3.5.1.9 -- GitLab From dedf94bbdb57d33359f2ad7700cff672faef81e5 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 28 Jan 2021 18:31:46 +0100 Subject: [PATCH 264/580] renamed descriptors --- .../VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot | 4 ++-- .../vnfd_SOL001.yaml} | 0 .../vnfd_SOL006.yaml} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename SOL002/VNFLifecycleManagement-API/descriptors/SOL001/{reference_tst010_vnf_b_2vdu_SOL001.yaml => VNFD/vnfd_SOL001.yaml} (100%) rename SOL002/VNFLifecycleManagement-API/descriptors/SOL006/{reference_tst010_vnf_b_2vdu_SOL006.yaml => VNFD/vnfd_SOL006.yaml} (100%) diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index d7ad8c246..4a3f22e52 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -10,8 +10,8 @@ Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ Library String -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml similarity index 100% rename from SOL002/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml similarity index 100% rename from SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml rename to SOL002/VNFLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml -- GitLab From 29ab6fa67e5ed77ecda339ef95785f1d70930143 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 28 Jan 2021 18:36:06 +0100 Subject: [PATCH 265/580] renamed descriptors --- .../VnfLcmMntOperationKeywords.robot | 4 ++-- .../vnfd_SOL001.yaml} | 0 .../vnfd_SOL006.yaml} | 0 SOL003/VNFLifecycleOperationGranting-API/Grants.robot | 4 ++-- .../VNFLifecycleOperationGranting-API/IndividualGrant.robot | 4 ++-- .../vnfd_SOL001.yaml} | 0 .../vnfd_SOL006.yaml} | 0 .../VNFPackageManagementKeywords.robot | 4 ++-- .../vnfd_SOL001.yaml} | 0 .../vnfd_SOL006.yaml} | 0 10 files changed, 8 insertions(+), 8 deletions(-) rename SOL003/VNFLifecycleManagement-API/descriptors/SOL001/{reference_tst010_vnf_b_2vdu_SOL001.yaml => VNFD/vnfd_SOL001.yaml} (100%) rename SOL003/VNFLifecycleManagement-API/descriptors/SOL006/{reference_tst010_vnf_b_2vdu_SOL006.yaml => VNFD/vnfd_SOL006.yaml} (100%) rename SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/{reference_tst010_vnf_b_2vdu_SOL001.yaml => VNFD/vnfd_SOL001.yaml} (100%) rename SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/{reference_tst010_vnf_b_2vdu_SOL006.yaml => VNFD/vnfd_SOL006.yaml} (100%) rename SOL003/VNFPackageManagement-API/descriptors/SOL001/{reference_tst010_vnf_b_2vdu_SOL001.yaml => VNFD/vnfd_SOL001.yaml} (100%) rename SOL003/VNFPackageManagement-API/descriptors/SOL006/{reference_tst010_vnf_b_2vdu_SOL006.yaml => VNFD/vnfd_SOL006.yaml} (100%) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 6a172f1f6..bcd2ed4db 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -8,8 +8,8 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** Get Vnf Instance diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml similarity index 100% rename from SOL003/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml similarity index 100% rename from SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml rename to SOL003/VNFLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 0121db906..2221c8558 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -6,8 +6,8 @@ Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ Library Collections -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +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. diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index d0865365c..751e9c695 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -5,8 +5,8 @@ Library JSONLibrary Library JSONSchemaLibrary schemas/ Library Collections Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +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. diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml similarity index 100% rename from SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml similarity index 100% rename from SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml rename to SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 56a36420b..e46f876f8 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -9,8 +9,8 @@ Library Collections Library JSONSchemaLibrary schemas/ Library Process Library String -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** Get all VNF Packages diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml similarity index 100% rename from SOL003/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml similarity index 100% rename from SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml rename to SOL003/VNFPackageManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml -- GitLab From c92a3ef73eb524534447fc96c496745de2722927 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 28 Jan 2021 18:40:17 +0100 Subject: [PATCH 266/580] renamed descriptors --- SOL005/NSDManagement-API/NSDManagementKeywords.robot | 4 ++-- .../nsd_SOL001.yaml} | 0 .../nsd_SOL006.yaml} | 0 .../NSLCMOperationKeywords.robot | 8 ++++---- ...ence_tst010_nsd_simple_SOL001.yaml => nsd_SOL001.yaml} | 0 ...rence_tst010_vnf_2vdu_SOL001.yaml => vnfd_SOL001.yaml} | 0 ...ence_tst010_nsd_simple_SOL006.yaml => nsd_SOL006.yaml} | 0 ...rence_tst010_vnf_2vdu_SOL006.yaml => vnfd_SOL006.yaml} | 0 .../VNFPackageManagementKeywords.robot | 4 ++-- .../vnfd_SOL001.yaml} | 0 .../vnfd_SOL006.yaml} | 0 11 files changed, 8 insertions(+), 8 deletions(-) rename SOL005/NSDManagement-API/descriptors/SOL001/{reference_tst010_nsd_simple_a_b_SOL001.yaml => NSD/nsd_SOL001.yaml} (100%) rename SOL005/NSDManagement-API/descriptors/SOL006/{reference_tst010_nsd_simple_a_b_SOL006.yaml => NSD/nsd_SOL006.yaml} (100%) rename SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/{reference_tst010_nsd_simple_SOL001.yaml => nsd_SOL001.yaml} (100%) rename SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/{reference_tst010_vnf_2vdu_SOL001.yaml => vnfd_SOL001.yaml} (100%) rename SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/{reference_tst010_nsd_simple_SOL006.yaml => nsd_SOL006.yaml} (100%) rename SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/{reference_tst010_vnf_2vdu_SOL006.yaml => vnfd_SOL006.yaml} (100%) rename SOL005/VNFPackageManagement-API/descriptors/SOL001/{reference_tst010_vnf_b_2vdu_SOL001.yaml => VNFD/vnfd_SOL001.yaml} (100%) rename SOL005/VNFPackageManagement-API/descriptors/SOL006/{reference_tst010_vnf_b_2vdu_SOL006.yaml => VNFD/vnfd_SOL006.yaml} (100%) diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index ab160863c..67056a589 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -10,8 +10,8 @@ Library JSONSchemaLibrary schemas/ Library RequestsLibrary Library Process Library String -Variables descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml -Variables descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml +Variables descriptors/SOL006/NSD/nsd_SOL006.yaml +Variables descriptors/SOL001/NSD/nsd_SOL001.yaml *** Keywords *** GET all Network Service Descriptors Information diff --git a/SOL005/NSDManagement-API/descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml b/SOL005/NSDManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml similarity index 100% rename from SOL005/NSDManagement-API/descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml rename to SOL005/NSDManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml diff --git a/SOL005/NSDManagement-API/descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml b/SOL005/NSDManagement-API/descriptors/SOL006/NSD/nsd_SOL006.yaml similarity index 100% rename from SOL005/NSDManagement-API/descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml rename to SOL005/NSDManagement-API/descriptors/SOL006/NSD/nsd_SOL006.yaml diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 8dde1509e..5eefe233d 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -8,10 +8,10 @@ Library OperatingSystem Library MockServerLibrary Library Collections Library String -Variables descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml -Variables descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml -Variables descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml -Variables descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml +Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml +Variables descriptors/SOL006/NSD/nsd_SOL006.yaml +Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +Variables descriptors/SOL001/NSD/nsd_SOL001.yaml *** Keywords *** Initialize System diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml similarity index 100% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml similarity index 100% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/nsd_SOL006.yaml similarity index 100% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/nsd_SOL006.yaml diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml similarity index 100% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index f6fa8adbb..15b7d058e 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -10,8 +10,8 @@ Library MockServerLibrary Library String Library Collections Library String -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** Get all VNF Packages diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml similarity index 100% rename from SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml similarity index 100% rename from SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml rename to SOL005/VNFPackageManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml -- GitLab From 57473add3ed09886fe01a2546ea226f977cd2589 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Mon, 1 Feb 2021 17:48:46 +0100 Subject: [PATCH 267/580] Fix issue #145 --- .../VNFPackageManagement-API/VNFPackageManagementKeywords.robot | 2 +- SOL003/VNFPackageManagement-API/environment/variables.txt | 1 + .../VNFPackageManagement-API/VNFPackageManagementKeywords.robot | 2 +- SOL005/VNFPackageManagement-API/environment/variables.txt | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index d751124a8..7f2eb2a20 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -275,7 +275,7 @@ GET Individual VNF Package Content with Range Request Check HTTP Response Header Content-Range Is Present and Matches the requested range Log Check Content-Range HTTP Header Should Contain ${response['headers']} Content-Range - Should Be Equal As Strings ${response['headers']['Content-Range']} ${range} + Should Be Equal As Strings ${response['headers']['Content-Range']} ${range}/${full_size} Log Header Content-Range is present Check HTTP Response Header Content-Length Is Present and Matches the requested range length diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 1bb5c34f5..b3624ea45 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -73,6 +73,7 @@ ${artifactPath} artifactPath ${CONTENT_TYPE_OCTET} application/octet-stream ${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO ${range} bytes=0-1023 +${full_size} 2000 # Size of the requested artifact to be downloaded via partial downloads ${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes ${vnfPackageOctetStreamId} octetStreamPkgId ${vnfdOctetStreamId} octetStreamVnfdId diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index aaecf440d..435a94f2e 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -413,7 +413,7 @@ GET Individual VNF Package Content with Range Request Check HTTP Response Header Content-Range Is Present and Matches the requested range Log Check Content-Range HTTP Header Should Contain ${response['headers']} Content-Range - Should Be Equal As Strings ${response['headers']['Content-Range']} ${range} + Should Be Equal As Strings ${response['headers']['Content-Range']} ${range}/${full_size} Log Header Content-Range is present Check HTTP Response Header Content-Length Is Present and Matches the requested range length diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 2bd7dd7e9..c09737017 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -64,6 +64,7 @@ ${artifactPath} artifactPath ${CONTENT_TYPE_OCTET} application/octet-stream ${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO ${range} bytes=0-1023 +${full_size} 2000 # Size of the requested artifact to be downloaded via partial downloads ${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes ${vnfPackageOctetStreamId} octetStreamPkgId ${vnfPkgId} 788106a2-d692-44f3-a86d-384f0ce35e42 -- GitLab From f03618aa1353e5fe8192dd059a8f54cd4ded4d34 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Wed, 27 Jan 2021 10:52:06 +0100 Subject: [PATCH 268/580] Fix issue: #140 --- SOL003/VNFPackageManagement-API/VNFPackageContent.robot | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot index dc8a2c3b7..a7ed3c023 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot @@ -94,7 +94,7 @@ POST Individual VNF Package Content - Method not implemented ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none - Send POST Request for individual VNF Package + Send POST Request for individual VNF Package Content Check HTTP Response Status Code Is 405 PUT Individual VNF Package Content - Method not implemented @@ -106,7 +106,7 @@ PUT Individual VNF Package Content - Method not implemented ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none - Send PUT Request for individual VNF Package + Send PUT Request for individual VNF Package Content Check HTTP Response Status Code Is 405 PATCH Individual VNF Package Content - Method not implemented @@ -118,7 +118,7 @@ PATCH Individual VNF Package Content - Method not implemented ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none - Send PATCH Request for individual VNF Package + Send PATCH Request for individual VNF Package Content Check HTTP Response Status Code Is 405 DELETE Individual VNF Package Content - Method not implemented @@ -130,7 +130,7 @@ DELETE Individual VNF Package Content - Method not implemented ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none - Send DELETE Request for individual VNF Package + Send DELETE Request for individual VNF Package Content Check HTTP Response Status Code Is 405 GET Individual OnBoarded VNF Package Content -- GitLab From 32151b8d953058fb5162f08b6e99e161c23a265c Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Wed, 27 Jan 2021 15:39:33 +0100 Subject: [PATCH 269/580] Fix issue: #136 --- .../VnfLcmOperationOccurrenceNotification.schema.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index 85468696c..bf0bfcd30 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -347,11 +347,11 @@ "type": "string" }, "vnfProvider": { - "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n", + "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId\" attribute.\n", "type": "string" }, "vnfProductName": { - "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n", + "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId\" attribute.\n", "type": "string" }, "vnfSoftwareVersion": { @@ -565,4 +565,4 @@ } } } - } \ No newline at end of file + } -- GitLab From 3aec72e775770edbb234acd867282ad6294fff99 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 28 Jan 2021 12:45:48 +0100 Subject: [PATCH 270/580] fixed issue #135 for v2.7.1 --- .../CancelOperationTask.robot | 10 +- .../ChangeVNFFlavourTask.robot | 4 +- .../FailOperationTask.robot | 4 +- .../HealVNFTask.robot | 4 +- .../IndividualVNFInstance.robot | 2 +- .../InstantiateVNFTask.robot | 2 +- .../OperateVNFTask.robot | 4 +- .../RetryOperationTask.robot | 4 +- .../RollbackOperationTask.robot | 4 +- .../ScaleVNFTask.robot | 4 +- .../ScaleVNFToLevelTask.robot | 4 +- .../TerminateVNFTask.robot | 2 +- .../VnfLcmMntOperationKeywords.robot | 202 +++++++++++++++++- .../environment/variables.txt | 12 +- 14 files changed, 231 insertions(+), 31 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot index af06dc10c..92461b333 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -11,7 +11,7 @@ POST Cancel operation task [Documentation] Test ID: 7.3.1.16.1 ... Test title: POST Cancel operation task ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Pre-conditions: the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. + ... Pre-conditions: The "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none @@ -24,12 +24,12 @@ POST Cancel operation task Conflict [Documentation] Test ID: 7.3.1.16.2 ... Test title: POST Cancel operation task Conflict ... Test objective: The POST method is NOT cancelling an ongoing VNF lifecycle operation due to the fact that the VNF instance resource is not in STARTING, PROCESSING or ROLLING_BACK state - ... Pre-conditions: operation is not in STARTING, PROCESSING or ROLLING_BACK state + ... Pre-conditions: The "VNF LCM operation occurrence" is not in STARTING, PROCESSING or ROLLING_BACK state ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Cancel operation task + POST Cancel operation task with conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -37,12 +37,12 @@ POST Cancel operation task Not Found [Documentation] Test ID: 7.3.1.16.3 ... Test title: POST Cancel operation task Not Found ... Test objective: The objective is to test that POST method cannot cancel a VNF lifecycle operation because the resource is not found - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Cancel operation task + POST Cancel operation task not existing Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 4c74ec566..93a4003e0 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -29,7 +29,7 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Change VNF deployment flavour + POST Change VNF deployment flavour of NOT-INSTANTIATED VNF Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -42,7 +42,7 @@ POST Change deployment flavour of a vnfInstance Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Change VNF deployment flavour + POST Change VNF deployment flavour of not existing VNF Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index 89132cbef..3d3cb5877 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -30,7 +30,7 @@ Post Fail operation task Conflict (Not-FAILED_TEMP) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Post Fail operation + Post Fail operation with conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -43,7 +43,7 @@ Post Fail operation task Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Post Fail operation + Post Fail operation not existing Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index f8858ab0f..ca6daf95b 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -29,7 +29,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Heal VNF + POST Heal VNF Not Instantiated Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -42,7 +42,7 @@ POST Heal a vnfInstance Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Heal VNF + POST Heal VNF Not Existing Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index cca0474cb..8a36e6327 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -109,7 +109,7 @@ DELETE Individual VNFInstance Conflict ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resources are not deleted - DELETE individual vnfInstance + DELETE individual vnfInstance in INSTANTIATED state Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails Check resource existence diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 1bba6b87b..5a2275f77 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -30,7 +30,7 @@ Instantiate a vnfInstance Conflict ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST instantiate individual vnfInstance + POST instantiate individual vnfInstance with conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index 462955700..2f11f363e 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -31,7 +31,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Operate VNF + POST Operate VNF with conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -44,7 +44,7 @@ POST Operate a vnfInstance Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Operate VNF + POST Operate VNF not existing Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index 63a4f7965..31848724f 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -32,7 +32,7 @@ Post Retry operation task Conflict (Not-FAILED_TEMP) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Post Retry operation + Post Retry operation with conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -45,7 +45,7 @@ Post Retry operation task Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Post Retry operation + Post Retry operation not existing Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index 881342094..11038da13 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -31,7 +31,7 @@ POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Post Rollback operation + Post Rollback operation with conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -44,7 +44,7 @@ POST Rollback operation task Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Post Rollback operation + Post Rollback operation not existing Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index e0b40633e..1ce92b0b1 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -30,7 +30,7 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Scale vnfInstance + POST Scale vnfInstance with VNF NOT-INSTANTIATED 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_VNFM ... Applicability: none ... Post-Conditions: none - POST Scale vnfInstance + POST Scale vnfInstance with not existing VNF Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 7c483b568..0b9f1c50d 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -29,7 +29,7 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Scale vnfInstance to level + POST Scale vnfInstance to level with VNF NOT-INSTANTIATED Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -42,7 +42,7 @@ Scale a vnfInstance Not Found ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Scale vnfInstance to level + POST Scale vnfInstance to level with not existing VNF Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index 9df78c58b..98018e193 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -30,7 +30,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Terminate VNF + POST Terminate VNF in NOT-INSTANTIATED state Check HTTP Response Status Code Is 202 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 39ff4a627..3323c1132 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -254,6 +254,24 @@ POST Cancel operation task Log Validate Status code ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Cancel operation task with conflict + Log Cancel an ongoing VNF lifecycle operation + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Cancel a VNF lifecycle operation + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotStartingProcessingRollingback}/cancel ${CancelMode} + Log Validate Status code + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Cancel operation task not existing + Log Cancel an ongoing VNF lifecycle operation + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Cancel a VNF lifecycle operation + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingVnfLcmOpOccId}/cancel ${CancelMode} + Log Validate Status code + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Cancel operation task log Trying to perform a GET. This method should not be implemented @@ -331,7 +349,29 @@ POST Change VNF deployment flavour ${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} + +POST Change VNF deployment flavour of NOT-INSTANTIATED VNF + Log Trying to change the deployment flavour of 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/changeVnfFlavourRequest.json + ${body}= Format String ${template} newFlavourId=${newFlavourId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/change_flavour ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Change VNF deployment flavour of not existing VNF + Log Trying to change the deployment flavour of 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/changeVnfFlavourRequest.json + ${body}= Format String ${template} newFlavourId=${newFlavourId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/change_flavour ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Change VNF deployment flavour log Trying to perform a GET. This method should not be implemented @@ -511,6 +551,12 @@ DELETE individual vnfInstance Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +DELETE individual vnfInstance in INSTANTIATED state + log Trying to delete an individual VNF instance + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${instantiatedVnfInstanceId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} POST instantiate individual vnfInstance Log Trying to Instantiate a vnf Instance Set Headers {"Accept":"${ACCEPT}"} @@ -521,6 +567,16 @@ POST instantiate individual vnfInstance ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST instantiate individual vnfInstance with conflict + Log Trying to Instantiate a vnf Instance + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/instantiateVnfRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${instantiatedVnfInstanceId}/instantiate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -558,6 +614,26 @@ POST Scale vnfInstance Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance with VNF NOT-INSTANTIATED + 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} scaletype=${scaletype} scaleAspectId=${scaleAspectId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/scale ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance with not existing VNF + 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} scaletype=${scaletype} scaleAspectId=${scaleAspectId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/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}"} @@ -604,6 +680,26 @@ POST Scale vnfInstance to level Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance to level with VNF NOT-INSTANTIATED + Log Trying to scale a vnf Instance to level + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template}= Get File jsons/scaleVnfToLevelRequest.json + ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/scale_to_level ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance to level with not existing VNF + Log Trying to scale a vnf Instance to level + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template}= Get File jsons/scaleVnfToLevelRequest.json + ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/scale_to_level ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance to level log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -640,6 +736,17 @@ POST Terminate VNF ${template}= Get File jsons/terminateVnfRequest.json ${body}= Format String ${template} terminationType=${terminationType} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Terminate VNF in NOT-INSTANTIATED state + Log Trying to terminate 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/terminateVnfRequest.json + ${body}= Format String ${template} terminationType=${terminationType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/terminate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -681,6 +788,28 @@ POST Heal VNF Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Heal VNF Not Instantiated + Log Trying to heal 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/healVnfRequest.json + ${body}= Format String ${template} healingCause=${healingCause} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/heal ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Heal VNF Not Existing + Log Trying to heal 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/healVnfRequest.json + ${body}= Format String ${template} healingCause=${healingCause} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/heal ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Heal VNF log Trying to perform a GET. This method should not be implemented @@ -720,6 +849,28 @@ POST Operate VNF Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Operate VNF with conflict + Log Trying to operate a VNF instance. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template}= Get File jsons/operateVnfRequest.json + ${body}= Format String ${template} changeStateTo=${changeStateTo} stopType=${stopType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/operate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Operate VNF not existing + Log Trying to operate 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/operateVnfRequest.json + ${body}= Format String ${template} changeStateTo=${changeStateTo} stopType=${stopType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/operate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Operate VNF log Trying to perform a GET. This method should not be implemented @@ -876,7 +1027,21 @@ Post Retry operation Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} +Post Retry operation with conflict + Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotFailedTemp}/retry + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Post Retry operation not existing + Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingVnfLcmOpOccId}/retry + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Get Retry operation Log Trying to perform a GET. This method should not be implemented. Set Headers {"Accept":"${ACCEPT}"} @@ -911,6 +1076,20 @@ Post Rollback operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Post Rollback operation with conflict + Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotFailedTemp}/rollback + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Post Rollback operation not existing + Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingVnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Rollback operation @@ -949,6 +1128,23 @@ Post Fail operation Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +Post Fail operation with conflict + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotFailedTemp}/fail + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Fail operation not existing + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingvnfLcmOpOccId}/fail + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Get Fail operation Log Trying to perform a GET. This method should not be implemented. Set Headers {"Accept":"${ACCEPT}"} @@ -1346,4 +1542,4 @@ Match the VNF LCM Operation Occurence Response Attributes with Descriptors 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/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 9d110b13a..51e5bc7c9 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -28,12 +28,18 @@ ${ARTIFACT_ID} artifactId ${WRONG_ACCEPT} application/json ${SYNC_MODE} 0 - +${instantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${notInstantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${notExistingVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${vnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -${vnfLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d ${conflicVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${vnfLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d +${notExistingVnfLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d +${vnfLcmOpOccIdNotStartingProcessingRollingback} 6fc3539c-e602-4afa-8e13-962fb5a7d81d +${vnfLcmOpOccIdNotFailedTemp} 6fc3539c-e602-4afa-8e13-962fb5a7d81d + ${VnfLcmOperationOccurrenceNotification} {} ${VnfIdentifierCreationNotification} {} ${VnfIdentifierDeletionNotification} {} @@ -44,8 +50,6 @@ ${requestedFlavour} test ${sub_filter} filter ${sub_filter_invalid} filter_invalid -${notInstantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f - ${fields} criteria,objectInstanceIds ${vnfInstanceName} Test-VnfInstance -- GitLab From 5554547c90153a0e56e3fef3e13c001562d84b21 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Thu, 28 Jan 2021 16:25:40 +0100 Subject: [PATCH 271/580] Fix issue: #142 --- SOL003/VNFFaultManagement-API/Alarms.robot | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/Alarms.robot b/SOL003/VNFFaultManagement-API/Alarms.robot index 69001f407..c0dd85276 100644 --- a/SOL003/VNFFaultManagement-API/Alarms.robot +++ b/SOL003/VNFFaultManagement-API/Alarms.robot @@ -70,7 +70,7 @@ GET information about multiple alarms with "all_fields" attribute selector ... Post-Conditions: none GET Alarms Task with all_fields attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is alarms + Check HTTP Response Body Json Schema Is Alarms GET information about multiple alarms with exclude_default attribute selector [Documentation] Test ID: 7.3.5.1.6 @@ -83,7 +83,7 @@ GET information about multiple alarms with exclude_default attribute selector ... Post-Conditions: none GET Alarms Task with exclude_default attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is alarms + Check HTTP Response Body Json Schema Is Alarms GET information about multiple alarms with fields attribute selector [Documentation] Test ID: 7.3.5.1.7 @@ -96,7 +96,7 @@ GET information about multiple alarms with fields attribute selector ... Post-Conditions: none GET Alarms Task with fields attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is alarms + Check HTTP Response Body Json Schema Is Alarms GET information about multiple alarms with "exclude_fields" attribute selector [Documentation] Test ID: 7.3.5.1.8 @@ -109,7 +109,7 @@ GET information about multiple alarms with "exclude_fields" attribute selector ... Post-Conditions: none GET Alarms Task with exclude_fields attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is alarms + Check HTTP Response Body Json Schema Is Alarms PUT Alarms - Method not implemented [Documentation] Test ID: 7.3.5.1.9 -- GitLab From 83ca2d4a1dd15539e2eae87c03e226052a8f9d62 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Mon, 1 Feb 2021 17:48:46 +0100 Subject: [PATCH 272/580] Fix issue #145 --- .../VNFPackageManagement-API/VNFPackageManagementKeywords.robot | 2 +- SOL003/VNFPackageManagement-API/environment/variables.txt | 1 + .../VNFPackageManagement-API/VNFPackageManagementKeywords.robot | 2 +- SOL005/VNFPackageManagement-API/environment/variables.txt | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 04def23c7..a3fdc256e 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -276,7 +276,7 @@ GET Individual VNF Package Content with Range Request Check HTTP Response Header Content-Range Is Present and Matches the requested range Log Check Content-Range HTTP Header Should Contain ${response['headers']} Content-Range - Should Be Equal As Strings ${response['headers']['Content-Range']} ${range} + Should Be Equal As Strings ${response['headers']['Content-Range']} ${range}/${full_size} Log Header Content-Range is present Check HTTP Response Header Content-Length Is Present and Matches the requested range length diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index b5779a0e8..d35a4bae6 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -73,6 +73,7 @@ ${artifactPath} artifactPath ${CONTENT_TYPE_OCTET} application/octet-stream ${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO ${range} bytes=0-1023 +${full_size} 2000 # Size of the requested artifact to be downloaded via partial downloads ${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes ${vnfPackageOctetStreamId} octetStreamPkgId ${vnfdOctetStreamId} octetStreamVnfdId diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index f9277de2d..2b47c3873 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -461,7 +461,7 @@ GET Individual VNF Package Content with Range Request Check HTTP Response Header Content-Range Is Present and Matches the requested range Log Check Content-Range HTTP Header Should Contain ${response['headers']} Content-Range - Should Be Equal As Strings ${response['headers']['Content-Range']} ${range} + Should Be Equal As Strings ${response['headers']['Content-Range']} ${range}/${full_size} Log Header Content-Range is present Check HTTP Response Header Content-Length Is Present and Matches the requested range length diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 926a45ae2..9f677fc5d 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -64,6 +64,7 @@ ${artifactPath} artifactPath ${CONTENT_TYPE_OCTET} application/octet-stream ${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO ${range} bytes=0-1023 +${full_size} 2000 # Size of the requested artifact to be downloaded via partial downloads ${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes ${vnfPackageOctetStreamId} octetStreamPkgId ${vnfPkgId} 788106a2-d692-44f3-a86d-384f0ce35e42 -- GitLab From 9709b1d7f11af4aadb6f68bd8a0665f93e574567 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Fri, 5 Feb 2021 11:36:13 +0100 Subject: [PATCH 273/580] fix issue #148 in v2.7.1 --- .../jsons/CreateNsRequest.json | 4 +-- .../jsons/InstantiateNsRequest.json | 6 ++-- .../jsons/ScaleNsRequest.json | 31 +--------------- .../jsons/UpdateNsRequest.json | 35 ++++++++++--------- 4 files changed, 24 insertions(+), 52 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/jsons/CreateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/CreateNsRequest.json index a8026a810..236708671 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/CreateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/CreateNsRequest.json @@ -1,6 +1,6 @@ -{{ +{ "nsdId": "{nsdId}", "nsName": "{nsInstanceName}", "vimAccountId": "{vimAccountId}", "nsDescription": "{nsInstanceDescription}" -}} \ No newline at end of file +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json index 5d0c060fa..b89a44d19 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json @@ -1,5 +1,5 @@ -{{ - "nsFlavourId": "floavour_id", +{ + "nsFlavourId": "flavour_id", "sapData":[ "{sapdId}" ], @@ -10,4 +10,4 @@ "additionalParamsForNs":{}, "additionalParamForNestedNs":[], "additionalParamsForVnf":[] -}} \ No newline at end of file +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/ScaleNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/ScaleNsRequest.json index f9a87c851..12204fe2b 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/ScaleNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/ScaleNsRequest.json @@ -1,32 +1,3 @@ { - "description": "This type represents a request for the scale NS operation.\n", - "type": "object", - "required": [ - "scaleType" - ], - "properties": { - "scaleType": { - "description": "Indicates the type of scaling to be performed. Possible values: - SCALE_NS - SCALE_VNF\n", - "type": "string", - "enum": [ - "SCALE_NS", - "SCALE_VNF" - ] - }, - "scaleNsData": { - "description": "The necessary information to scale the referenced NS instance. It shall be present when scaleType = SCALE_NS.\n", - "$ref": "#/definitions/ScaleNsData" - }, - "scaleVnfData": { - "description": "The necessary information to scale the referenced NS instance. It shall be present when scaleType = SCALE_VNF.\n", - "type": "array", - "items": { - "$ref": "#/definitions/ScaleVnfData" - } - }, - "scaleTime": { - "description": "Timestamp indicating the scale time of the NS, i.e. the NS will be scaled at this timestamp. Cardinality \"0\" indicates the NS scaling takes place immediately\".\n", - "$ref": "SOL005_def.yaml#/definitions/DateTime" - } - } + "scaleType": "SCALE_NS" } \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json index da42b41c1..4d3449103 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json @@ -1,21 +1,22 @@ -{{ +{ "updateType": "{vnfUpdateType}", - "instantiateVnfData": {{ + "instantiateVnfData": { "vnfdId": "{vnfdId}", "vnfFlavourId": "{vnfFlavourId}", - "vnfInstantiationLevelId": "{vnfInstantiationLevelId}" - "extManagedVirtualLinks": {{ + "vnfInstantiationLevelId": "{vnfInstantiationLevelId}", + "extManagedVirtualLinks": { "vnfVirtualLinkDescId": "{vnfVirtualLinkDescId}" - }}, - "changeVnfFlavourData": {{ - "vnfInstanceId": {}, - "newFlavourId": "{newFlavourId}", - "instantiationLevelId": "{instantiationLevelId}" - }}, - "assocNewNsdVersionData": {{ - "newNsdId": "{newNsdId}" - }} - "addSap": {{ - "sapdId": "{sapdId}" - }} -}} \ No newline at end of file + }, + "changeVnfFlavourData": { + "vnfInstanceId": {}, + "newFlavourId": "{newFlavourId}", + "instantiationLevelId": "{instantiationLevelId}" + }, + "assocNewNsdVersionData": { + "newNsdId": "{newNsdId}" + }, + "addSap": { + "sapdId": "{sapdId}" + } + } +} -- GitLab From c850ccaba6145b0a0a989900a489bdaf5569f5e0 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Mon, 8 Feb 2021 14:36:45 +0100 Subject: [PATCH 274/580] Fix issue #151 --- .../VNFPackageManagement-API/VNFPackageContent.robot | 2 +- .../VNFPackageManagementKeywords.robot | 10 ++++++++++ .../VNFPackageManagement-API/VNFPackageContent.robot | 2 +- .../VNFPackageManagementKeywords.robot | 10 ++++++++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot index a7ed3c023..ded06fca3 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot @@ -43,7 +43,7 @@ GET Individual VNF Package Content with Range Request and NFVO not supporting Ra ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file ... Post-Conditions: none - GET Individual VNF Package Content with Range Request + GET Individual VNF Package Content with explicit Range Request Check HTTP Response Status Code Is 200 Check HTTP Response Header Content-Type Is application/zip diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index a3fdc256e..162315d2d 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -272,6 +272,16 @@ GET Individual VNF Package Content with Range Request GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} + +GET Individual VNF Package Content with explicit Range Request + Log Trying to get a VNF Package Content using RANGE using an NFVO that can handle it + 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 + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Header Content-Range Is Present and Matches the requested range Log Check Content-Range HTTP Header diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot index 1b0c58d4f..57401ae3c 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot @@ -44,7 +44,7 @@ GET Individual VNF Package Content with Range Request and NFVO not supporting Ra ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file ... Post-Conditions: none - GET Individual VNF Package Content with Range Request + GET Individual VNF Package Content with explicit Range Request Check HTTP Response Status Code Is 200 Check HTTP Response Header Content-Type Is application/zip diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 2b47c3873..aab633fa7 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -458,6 +458,16 @@ GET Individual VNF Package Content with Range Request ${output}= Output response Set Suite Variable ${response} ${output} +GET Individual VNF Package Content with explicit Range Request + Log Trying to get a VNF Package Content using RANGE using an NFVO that can handle it + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Range": "${range}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + ${output}= Output response + Set Suite Variable ${response} ${output} + + Check HTTP Response Header Content-Range Is Present and Matches the requested range Log Check Content-Range HTTP Header Should Contain ${response['headers']} Content-Range -- GitLab From ee14a2a4194e6384e70798193e0c06a79ceb8139 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Mon, 8 Feb 2021 17:20:01 +0100 Subject: [PATCH 275/580] Fix issue #94 --- SOL005/NSDManagement-API/environment/variables.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index b1441c67c..27bf687ad 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -44,7 +44,7 @@ ${newSubscriptionId} newSubsciptionId ${origResponse} httpresponse -${POS_FIELDS} name=nsdOnboardingState +${POS_FIELDS} nsdOnboardingState=ONBOARDED ${NEG_FIELDS} wrongName=any_value ${nsdInfoId} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 ${nsdInfoIdPlain} 5a569e1d-4ffe-4e9a-8cf6-c24226651e56 -- GitLab From a2f7d9f9f3efeeda5694caccce78e55d1e13bc6e Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Tue, 9 Feb 2021 09:40:30 +0100 Subject: [PATCH 276/580] Fix issue #98 --- ...IdentifierCreationNotification.schema.json | 87 +++++++++++++++++++ ...IdentifierDeletionNotification.schema.json | 87 +++++++++++++++++++ 2 files changed, 174 insertions(+) diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfIdentifierCreationNotification.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfIdentifierCreationNotification.schema.json index e69de29bb..ad05e0209 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfIdentifierCreationNotification.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfIdentifierCreationNotification.schema.json @@ -0,0 +1,87 @@ +{ + "description": "This type represents a VNF identifier creation notification, which informs the receiver of the creation of a new \"Individual VNF instance\" resource and the associated VNF instance identifier. This notification shall be triggered by the VNFM when it has created an \"Individual VNF instance\" resource and the associated VNF instance identifier.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "vnfInstanceId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"VnfIdentifierCreationNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "VnfIdentifierCreationNotification" + ] + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "_links": { + "description": "This type represents the links to resources that a notification can contain.\n", + "type": "object", + "required": [ + "vnfInstance", + "subscription" + ], + "properties": { + "vnfInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfLcmOpOcc": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfIdentifierDeletionNotification.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfIdentifierDeletionNotification.schema.json index e69de29bb..253ccce96 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfIdentifierDeletionNotification.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfIdentifierDeletionNotification.schema.json @@ -0,0 +1,87 @@ +{ + "description": "This type represents a VNF identifier deletion notification, which informs the receiver of the deletion of a new \"Individual VNF instance\" resource and the associated VNF instance identifier. This notification shall be triggered by the VNFM when it has deleted an \"Individual VNF instance\" resource and the associated VNF instance identifier.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "vnfInstanceId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"VnfIdentifierDeletionNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "VnfIdentifierDeletionNotification" + ] + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "_links": { + "description": "This type represents the links to resources that a notification can contain.\n", + "type": "object", + "required": [ + "vnfInstance", + "subscription" + ], + "properties": { + "vnfInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfLcmOpOcc": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } \ No newline at end of file -- GitLab From cd760d552a4c63a99267c6e60cc5f619ac6a9951 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 10 Feb 2021 19:19:54 +0100 Subject: [PATCH 277/580] aligned vnfPackage.zip filename in VNF Package Management --- .../VNFPackageManagementKeywords.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index aab633fa7..7cf7edbb5 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -525,7 +525,7 @@ Send PUT Request for individual VNF Package Content Send PUT Request to upload VNF Package Content Log Trying to perform a PUT. This method upload the content of a NSD Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False - ${body}= Get Binary File files/hackfest_gateway_vnfd-1.0.tar.gz + ${body}= Get Binary File files/vnfPackage.zip ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${newVnfPackageId}/package_content data=${body} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} @@ -542,7 +542,7 @@ Check Postcondition VNF Package Content is uploaded and available in the NFVO Send PUT Request to upload VNF Package Content with conflict due to onboarding state Log Trying to perform a PUT. This method upload the content of a NSD Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False - ${body}= Get Binary File files/hackfest_gateway_vnfd-1.0.tar.gz + ${body}= Get Binary File files/vnfPackage.zip ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${creatingVnfPackageId}/package_content data=${body} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} -- GitLab From 21fc5ae0bcba8a9f4e43128f30b09086fcb09c2a Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 10 Feb 2021 19:30:49 +0100 Subject: [PATCH 278/580] fixed pnfd file usage --- SOL005/NSDManagement-API/NSDManagementKeywords.robot | 2 +- SOL005/NSDManagement-API/environment/variables.txt | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 9320d4be9..69ba10709 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -701,7 +701,7 @@ Get PNFD Content with conflict due to onboarding state Send PUT Request to upload PNFD Content as zip file Log Trying to perform a PUT. This method upload the content of a PNFD Create Session pnfd ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_PLAIN}", "Content-Type": "${ACCEPT_PLAIN}", "Authorization": "${AUTHORIZATION}"} verify=False - ${body}= Get Binary File ${contentZipFile} + ${body}= Get Binary File ${contentFilePnfd} ${response}= Put Request pnfd ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content data=${body} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index 27bf687ad..e1e647560 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -65,7 +65,6 @@ ${range} bytes=0-1023 ${erroneousRange} bytes=100000-1000000 # Requesting a out of range number of bytes ${onboardingStateNsdInfoId} b992a851-08b1-45a8-9282-a5f7a7df04a6 ${contentZipFile} files/nsdContent.zip -${contentPlainFile} files/nsdContent.yaml ${creatingNsdInfoId} 71241932-994a-46e2-ad6c-1740674dda44 ${BAD_AUTHORIZATION} Bear sometoken ${original_etag} 1234 -- GitLab From 9b8ec7fe770e67ecad5460b2c6154dc7d9548fde Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 11 Feb 2021 12:57:36 +0100 Subject: [PATCH 279/580] updated NSD, VNFD, PNFD files and zip management --- .../NSDManagement-API/NSDManagementKeywords.robot | 10 +++++----- .../NSDManagement-API/environment/variables.txt | 6 ++++-- SOL005/NSDManagement-API/files/nsd.yml | 3 +++ SOL005/NSDManagement-API/files/nsd.zip | Bin 0 -> 182 bytes SOL005/NSDManagement-API/files/pnfd.yml | 3 +++ SOL005/NSDManagement-API/files/pnfd.zip | Bin 0 -> 187 bytes SOL005/NSDManagement-API/files/pnfdContent.zip | Bin 359 -> 0 bytes .../VNFPackageManagementKeywords.robot | 4 ++-- .../environment/variables.txt | 2 ++ .../VNFPackageManagement-API/files/vnfPackage.zip | Bin 0 -> 187 bytes 10 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 SOL005/NSDManagement-API/files/nsd.yml create mode 100644 SOL005/NSDManagement-API/files/nsd.zip create mode 100644 SOL005/NSDManagement-API/files/pnfd.yml create mode 100644 SOL005/NSDManagement-API/files/pnfd.zip delete mode 100644 SOL005/NSDManagement-API/files/pnfdContent.zip create mode 100644 SOL005/VNFPackageManagement-API/files/vnfPackage.zip diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 69ba10709..b07e7dec7 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -373,7 +373,7 @@ GET NSD Content with invalid Range Request Send PUT Request to upload NSD Content as zip file in asynchronous mode Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_JSON}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False - ${body}= Get Binary File ${contentZipFile} + ${body}= Get Binary File ${contentZipNsd} ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} @@ -381,7 +381,7 @@ Send PUT Request to upload NSD Content as zip file in asynchronous mode Send PUT Request to upload NSD Content as zip file in synchronous mode Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_JSON}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False - ${body}= Get Binary File ${contentZipFile} + ${body}= Get Binary File ${contentZipNsd} ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} @@ -405,7 +405,7 @@ Check Postcondition NSD Content is uploaded and available in the NFVO Send PUT Request to upload NSD Content with conflict due to onboarding state Log Trying to perform a PUT. This method upload the content of a NSD Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False - ${body}= Get Binary File ${contentZipFile} + ${body}= Get Binary File ${contentZipNsd} ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} Log ${response} ${response}= Create Dictionary status=${response.status_code} headers=${response.headers} body=${response.json()} @@ -700,8 +700,8 @@ Get PNFD Content with conflict due to onboarding state Send PUT Request to upload PNFD Content as zip file Log Trying to perform a PUT. This method upload the content of a PNFD - Create Session pnfd ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_PLAIN}", "Content-Type": "${ACCEPT_PLAIN}", "Authorization": "${AUTHORIZATION}"} verify=False - ${body}= Get Binary File ${contentFilePnfd} + Create Session pnfd ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_PLAIN}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False + ${body}= Get Binary File ${contentZipPnfd} ${response}= Put Request pnfd ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content data=${body} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index e1e647560..01738ff5d 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -64,7 +64,8 @@ ${NFVO_RANGE_OK} 1 ${range} bytes=0-1023 ${erroneousRange} bytes=100000-1000000 # Requesting a out of range number of bytes ${onboardingStateNsdInfoId} b992a851-08b1-45a8-9282-a5f7a7df04a6 -${contentZipFile} files/nsdContent.zip +${contentZipNsd} files/nsd.zip +${contentFileNsd} files/nsd.zip ${creatingNsdInfoId} 71241932-994a-46e2-ad6c-1740674dda44 ${BAD_AUTHORIZATION} Bear sometoken ${original_etag} 1234 @@ -82,7 +83,8 @@ ${erroneous_pnfdInfoId} erroneous_pnfdInfoId ${enabledPnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 ${erroneous_pnfdId} erroneousPnfdId ${onboardingStatePnfdId} 8ed2bf1f-f6ae-4d18-b478-bfab02fd4cd2 -${contentFilePnfd} files/pnfdContent.zip +${contentZipPnfd} files/pnfd.zip +${contentFilePnfd} files/pnfd.yml ${creatingPnfdId} 2e4ce0ef-3ea8-49f9-92dd-8771866015bb ${userDefinedDataSet} some diff --git a/SOL005/NSDManagement-API/files/nsd.yml b/SOL005/NSDManagement-API/files/nsd.yml new file mode 100644 index 000000000..8cddb97b8 --- /dev/null +++ b/SOL005/NSDManagement-API/files/nsd.yml @@ -0,0 +1,3 @@ +nsd: +-id: nsd_id +-name: nsd_name \ No newline at end of file diff --git a/SOL005/NSDManagement-API/files/nsd.zip b/SOL005/NSDManagement-API/files/nsd.zip new file mode 100644 index 0000000000000000000000000000000000000000..3da59324d05257bf196313ef7c3fddcb70eebdd8 GIT binary patch literal 182 zcmWIWW@h1H0D-Bg-a+PNYigB%Y!GG#;=JM%y~^AiAZ5kNrJI>zr2u5cXQlu-d5O8H z5H5%n;LXTn&w$Gy6`)Zdpa3S}#&SUg7#SoOzU_SAk0$)J KNFePFHUa=jXD5CD literal 0 HcmV?d00001 diff --git a/SOL005/NSDManagement-API/files/pnfd.yml b/SOL005/NSDManagement-API/files/pnfd.yml new file mode 100644 index 000000000..faeeb5256 --- /dev/null +++ b/SOL005/NSDManagement-API/files/pnfd.yml @@ -0,0 +1,3 @@ +pnfd: +-id: pnfd_id +-name: pnfd_name \ No newline at end of file diff --git a/SOL005/NSDManagement-API/files/pnfd.zip b/SOL005/NSDManagement-API/files/pnfd.zip new file mode 100644 index 0000000000000000000000000000000000000000..b7c575541e64bd2f2b3d9fa979c7e6ef4d877139 GIT binary patch literal 187 zcmWIWW@h1H0D(2B-a-51O)6A@Y!K!E;)1-i6urva91v~A%cYx{Vx<6L$7iMhd3lMs zsZc(M8Q{&xWY2)hFcqM2AfNyy5k_-CMHm?*7}j+%C1o>QXN1xHo(91netbM@Dobln&e6b}l*`#>A|eo2#lR5sJu<%taUL6gfW`UT8O zlcXKJVbLF0S(h6^BBQnYYTkGCG~|-YXKq47g(~?bBXL_HB+R0sq=qjtBAW-bXbUB` zg%PzAT7}sEYx_u>c7`asLi?n0$q%3Hi#CoPr)#cCZ8CB@yCGvOYi+sd3dXiu_2U8S zZ=-5|`mmL<^K~^pdmnDPgUhA#8*ulg&8uJM%!>EB(stWVD_m3i_-b-K-F>@|yEk-4 zy}Q4dT#pZ1<2$N&5&A%DEqq(sMm;|DA^-pY000000000000000004lW`T+B0f0zI$ F007z4rv?B3 diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 7cf7edbb5..9473c3fbf 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -525,7 +525,7 @@ Send PUT Request for individual VNF Package Content Send PUT Request to upload VNF Package Content Log Trying to perform a PUT. This method upload the content of a NSD Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False - ${body}= Get Binary File files/vnfPackage.zip + ${body}= Get Binary File ${contentZipVnfPackage} ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${newVnfPackageId}/package_content data=${body} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} @@ -542,7 +542,7 @@ Check Postcondition VNF Package Content is uploaded and available in the NFVO Send PUT Request to upload VNF Package Content with conflict due to onboarding state Log Trying to perform a PUT. This method upload the content of a NSD Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False - ${body}= Get Binary File files/vnfPackage.zip + ${body}= Get Binary File ${contentZipVnfPackage} ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${creatingVnfPackageId}/package_content data=${body} Should Be Empty ${response.text} ${response}= Create Dictionary status=${response.status_code} diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 9f677fc5d..948974169 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -49,6 +49,8 @@ ${disabledVnfPackageId} 87a2c9d3-00ea-4032-8c67-a5106d001868 ${vnfPackageId} 788106a2-d692-44f3-a86d-384f0ce35e42 ${instantiatedVnfPackageId} 0b79bab50daca910b000d4f1a2b675d604257e42 +${contentZipVnfPackage} files/vnfPackage.zip + ${ACCEPT_PLAIN} text/plain ${ACCEPT_ZIP} application/zip ${CONTENT_TYPE_PLAIN} text/plain diff --git a/SOL005/VNFPackageManagement-API/files/vnfPackage.zip b/SOL005/VNFPackageManagement-API/files/vnfPackage.zip new file mode 100644 index 0000000000000000000000000000000000000000..9fcfb621d458e16f5e725f85d697d327ff8ab439 GIT binary patch literal 187 zcmWIWW@h1H0D(f)_yOLmY#?on MKo|w2y}@Px0B=Jl^Z)<= literal 0 HcmV?d00001 -- GitLab From f07f7ba72f1fc60c66b98674e1dca557600db410 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 11 Feb 2021 15:26:14 +0100 Subject: [PATCH 280/580] fixed pnfd file usage --- SOL005/NSDManagement-API/NSDManagementKeywords.robot | 5 +++-- SOL005/NSDManagement-API/environment/variables.txt | 3 ++- SOL005/NSDManagement-API/files/nsd.yml | 3 --- SOL005/NSDManagement-API/files/pnfd.yml | 3 --- 4 files changed, 5 insertions(+), 9 deletions(-) delete mode 100644 SOL005/NSDManagement-API/files/nsd.yml delete mode 100644 SOL005/NSDManagement-API/files/pnfd.yml diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index b07e7dec7..92f43790b 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -710,9 +710,10 @@ Send PUT Request to upload PNFD Content as zip file Send PUT Request to upload PNFD Content with conflict due to onboarding state Log Trying to perform a PUT. This method upload the content of a PNFD Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Content-Type": "application/zip"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get Binary File ${contentFilePnfd} - REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${creatingNsdInfoId}/pnfd_content ${body} + ${body}= Get Binary File ${contentZipPnfd} + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${creatingPnfdInfoId}/pnfd_content data=${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index 01738ff5d..7fd3ab762 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -65,7 +65,7 @@ ${range} bytes=0-1023 ${erroneousRange} bytes=100000-1000000 # Requesting a out of range number of bytes ${onboardingStateNsdInfoId} b992a851-08b1-45a8-9282-a5f7a7df04a6 ${contentZipNsd} files/nsd.zip -${contentFileNsd} files/nsd.zip +${contentFileNsd} files/nsd.yml ${creatingNsdInfoId} 71241932-994a-46e2-ad6c-1740674dda44 ${BAD_AUTHORIZATION} Bear sometoken ${original_etag} 1234 @@ -79,6 +79,7 @@ ${SEPERATOR} = ${pnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 +${creatingPnfdInfoId} 71241932-994a-46e2-ad6c-1740674dda44 ${erroneous_pnfdInfoId} erroneous_pnfdInfoId ${enabledPnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 ${erroneous_pnfdId} erroneousPnfdId diff --git a/SOL005/NSDManagement-API/files/nsd.yml b/SOL005/NSDManagement-API/files/nsd.yml deleted file mode 100644 index 8cddb97b8..000000000 --- a/SOL005/NSDManagement-API/files/nsd.yml +++ /dev/null @@ -1,3 +0,0 @@ -nsd: --id: nsd_id --name: nsd_name \ No newline at end of file diff --git a/SOL005/NSDManagement-API/files/pnfd.yml b/SOL005/NSDManagement-API/files/pnfd.yml deleted file mode 100644 index faeeb5256..000000000 --- a/SOL005/NSDManagement-API/files/pnfd.yml +++ /dev/null @@ -1,3 +0,0 @@ -pnfd: --id: pnfd_id --name: pnfd_name \ No newline at end of file -- GitLab From b53baf8703040cbf78a36566263e57162c240a84 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 11 Feb 2021 16:47:16 +0100 Subject: [PATCH 281/580] fixed rest library use --- SOL005/NSDManagement-API/NSDManagementKeywords.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 92f43790b..cb5c306ff 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -713,7 +713,7 @@ Send PUT Request to upload PNFD Content with conflict due to onboarding state Set Headers {"Content-Type": "application/zip"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body}= Get Binary File ${contentZipPnfd} - REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${creatingPnfdInfoId}/pnfd_content data=${body} + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${creatingPnfdInfoId}/pnfd_content ${body} ${output}= Output response Set Suite Variable ${response} ${output} -- GitLab From 5616c8ce08ea72997393d6ca17d0c9ff26f0dbe1 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Fri, 12 Feb 2021 10:35:09 +0100 Subject: [PATCH 282/580] updated authorization header and token use in SOL005 v2.7.1 --- SOL005/NSDManagement-API/ApiVersion.robot | 20 +- SOL005/NSDManagement-API/NSD.robot | 318 +++++++------- .../NSDArchiveManifest.robot | 188 ++++----- .../NSDManagementKeywords.robot | 250 +++++------ .../NotificationConsumer.robot | 378 ++++++++--------- SOL005/NSDManagement-API/PNFD.robot | 320 +++++++------- .../PNFDArchiveManifest.robot | 188 ++++----- .../environment/variables.txt | 7 +- SOL005/NSFaultManagement-API/ApiVersion.robot | 20 +- .../NSFMOperationKeywords.robot | 102 ++--- .../NotificationConsumer.robot | 184 ++++---- .../environment/variables.txt | 3 +- .../ApiVersion.robot | 20 +- .../NSLCMOperationKeywords.robot | 234 +++++----- .../NotificationConsumer.robot | 194 ++++----- .../environment/variables.txt | 3 +- .../ApiVersion.robot | 20 +- .../NSPerformanceManagementKeywords.robot | 88 ++-- .../NotificationConsumer.robot | 134 +++--- .../environment/variables.txt | 4 +- ...essConfigurationForExternalArtifacts.robot | 216 +++++----- .../VNFPackageManagement-API/ApiVersion.robot | 20 +- .../ManifestInIndividualVNFPackage.robot | 212 +++++----- .../NotificationConsumer.robot | 144 +++---- .../VNFPackageArtifacts.robot | 398 +++++++++--------- .../VNFPackageManagementKeywords.robot | 214 +++++----- .../environment/variables.txt | 7 +- 27 files changed, 1945 insertions(+), 1941 deletions(-) diff --git a/SOL005/NSDManagement-API/ApiVersion.robot b/SOL005/NSDManagement-API/ApiVersion.robot index aa117f09b..483496f5b 100644 --- a/SOL005/NSDManagement-API/ApiVersion.robot +++ b/SOL005/NSDManagement-API/ApiVersion.robot @@ -133,70 +133,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSDManagement-API/NSD.robot b/SOL005/NSDManagement-API/NSD.robot index 2b8d3708f..6bdb58d6c 100644 --- a/SOL005/NSDManagement-API/NSD.robot +++ b/SOL005/NSDManagement-API/NSD.robot @@ -1,160 +1,160 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Resource NSDManagementKeywords.robot -Library JSONLibrary -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library OperatingSystem - -*** Test Cases *** -Get single file NSD in Plain Format - [Documentation] Test ID: 5.3.1.11.1 - ... Test title: Get single file NSD in Plain Format - ... Test objective: The objective is to test the retrieval of the NSD in plain format within a NSD archive and perform a validation that returned content is in plain format - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NSD is implemented as a single file - ... Post-Conditions: none - Get single file NSD in Plain Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is text/plain - -Get NSD in Zip Format - [Documentation] Test ID: 5.3.1.11.2 - ... Test title: Get NSD in Zip Format - ... Test objective: The objective is to test the retrieval of the NSD in zip format within a NSD archive and perform a validation that returned content is in zip format - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get NSD in Zip Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get single file NSD in Plain or Zip Format - [Documentation] Test ID: 5.3.1.11.3 - ... Test title: Get single file NSDin Plain or Zip Format - ... Test objective: The objective is to test the retrieval of the single file NSD within a NSD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that response is in Plain or Zip format - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NSD is implemented as a single file - ... Post-Conditions: none - Get single file NSD in Plain or Zip Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is Any of text/plain application/zip - -Get multi file NSD in Plain or Zip Format - [Documentation] Test ID: 5.3.1.11.4 - ... Test title: Get multi file NSD in Plain or Zip Format - ... Test objective: The objective is to test the retrieval of the multi file NSD within a NSD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NSD is implemented as a multi file - ... Post-Conditions: none - Get multi file NSD in Plain or Zip Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get multi file NSD in Plain Format - [Documentation] Test ID: 5.3.1.11.5 - ... Test title: Get multi file NSD in Plain Format - ... Test objective: The objective is to test that the retrieval of the multi file NSD within a NSD archive fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NSD is implemented as a multi file - ... Post-Conditions: none - Get multi file NSD in Plain Format - Check HTTP Response Status Code Is 406 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get NSD Content with invalid resource identifier - [Documentation] Test ID: 5.3.1.11.6 - ... Test title: Get NSD Content with invalid resource identifier - ... Test objective: The objective is to test that the retrieval of the NSD within a NSD archive fails when using an invalid resource identifier - ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get NSD with invalid resource identifier - Check HTTP Response Status Code Is 404 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get NSD with conflict due to onboarding state - [Documentation] Test ID: 5.3.1.11.7 - ... Test title: Get NSD with conflict due to onboarding state - ... Test objective: The objective is to test that the retrieval of the NSD within a NSD archive fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: The onboarding state of the NSD is different from ONBOARDED. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get NSD with conflict due to onboarding state - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get NSD with security information - [Documentation] Test ID: 5.3.1.11.8 - ... Test title: Get NSD with security information - ... Test objective: The objective is to test the retrieval of the NSD within a NSD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get NSD with security information - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -POST NSD - Method not implemented - [Documentation] Test ID: 5.3.1.11.9 - ... Test title: POST NSD - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor - ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send POST Request for NSD - Check HTTP Response Status Code Is 405 - -PUT NSD - Method not implemented - [Documentation] Test ID: 5.3.1.11.10 - ... Test title: PUT NSD - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor - ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PUT Request for NSD - Check HTTP Response Status Code Is 405 - -PATCH NSD - Method not implemented - [Documentation] Test ID: 5.3.1.11.11 - ... Test title: PATCH NSD - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor - ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PATCH Request for NSD - Check HTTP Response Status Code Is 405 - -DELETE NSD - Method not implemented - [Documentation] Test ID: 5.3.1.11.12 - ... Test title: DELETE NSD - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor - ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send DELETE Request for NSD +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Resource NSDManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem + +*** Test Cases *** +Get single file NSD in Plain Format + [Documentation] Test ID: 5.3.1.11.1 + ... Test title: Get single file NSD in Plain Format + ... Test objective: The objective is to test the retrieval of the NSD in plain format within a NSD archive and perform a validation that returned content is in plain format + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NSD is implemented as a single file + ... Post-Conditions: none + Get single file NSD in Plain Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get NSD in Zip Format + [Documentation] Test ID: 5.3.1.11.2 + ... Test title: Get NSD in Zip Format + ... Test objective: The objective is to test the retrieval of the NSD in zip format within a NSD archive and perform a validation that returned content is in zip format + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD in Zip Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get single file NSD in Plain or Zip Format + [Documentation] Test ID: 5.3.1.11.3 + ... Test title: Get single file NSDin Plain or Zip Format + ... Test objective: The objective is to test the retrieval of the single file NSD within a NSD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that response is in Plain or Zip format + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NSD is implemented as a single file + ... Post-Conditions: none + Get single file NSD in Plain or Zip Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is Any of text/plain application/zip + +Get multi file NSD in Plain or Zip Format + [Documentation] Test ID: 5.3.1.11.4 + ... Test title: Get multi file NSD in Plain or Zip Format + ... Test objective: The objective is to test the retrieval of the multi file NSD within a NSD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NSD is implemented as a multi file + ... Post-Conditions: none + Get multi file NSD in Plain or Zip Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get multi file NSD in Plain Format + [Documentation] Test ID: 5.3.1.11.5 + ... Test title: Get multi file NSD in Plain Format + ... Test objective: The objective is to test that the retrieval of the multi file NSD within a NSD archive fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NSD is implemented as a multi file + ... Post-Conditions: none + Get multi file NSD in Plain Format + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get NSD Content with invalid resource identifier + [Documentation] Test ID: 5.3.1.11.6 + ... Test title: Get NSD Content with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of the NSD within a NSD archive fails when using an invalid resource identifier + ... Pre-conditions: none + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD with invalid resource identifier + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get NSD with conflict due to onboarding state + [Documentation] Test ID: 5.3.1.11.7 + ... Test title: Get NSD with conflict due to onboarding state + ... Test objective: The objective is to test that the retrieval of the NSD within a NSD archive fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the NSD is different from ONBOARDED. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD with conflict due to onboarding state + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get NSD with security information + [Documentation] Test ID: 5.3.1.11.8 + ... Test title: Get NSD with security information + ... Test objective: The objective is to test the retrieval of the NSD within a NSD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +POST NSD - Method not implemented + [Documentation] Test ID: 5.3.1.11.9 + ... Test title: POST NSD - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor + ... Pre-conditions: none + ... Reference: Clause 5.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for NSD + Check HTTP Response Status Code Is 405 + +PUT NSD - Method not implemented + [Documentation] Test ID: 5.3.1.11.10 + ... Test title: PUT NSD - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor + ... Pre-conditions: none + ... Reference: Clause 5.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for NSD + Check HTTP Response Status Code Is 405 + +PATCH NSD - Method not implemented + [Documentation] Test ID: 5.3.1.11.11 + ... Test title: PATCH NSD - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor + ... Pre-conditions: none + ... Reference: Clause 5.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for NSD + Check HTTP Response Status Code Is 405 + +DELETE NSD - Method not implemented + [Documentation] Test ID: 5.3.1.11.12 + ... Test title: DELETE NSD - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor + ... Pre-conditions: none + ... Reference: Clause 5.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for NSD Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSDManagement-API/NSDArchiveManifest.robot b/SOL005/NSDManagement-API/NSDArchiveManifest.robot index cc759e25a..7a09f534f 100644 --- a/SOL005/NSDManagement-API/NSDArchiveManifest.robot +++ b/SOL005/NSDManagement-API/NSDArchiveManifest.robot @@ -1,95 +1,95 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Resource NSDManagementKeywords.robot -Library JSONLibrary -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library OperatingSystem - -*** Test Cases *** -Get NSD Archive Manifest - [Documentation] Test ID: 5.3.1.12.1 - ... Test title: Get NSD Archive Manifest - ... Test objective: The objective is to test that GET method reads the content of the manifest file within an NSD archive - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get NSD Archive Manifest - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is text/plain - -Get NSD Archive Manifest with security information - [Documentation] Test ID: 5.3.1.12.2 - ... Test title: Get NSD Archive Manifest with security information - ... Test objective: The objective is to test the retrieval of content of the manifest file within an NSD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter - ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get NSD Archive Manifest with security information - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get NSD Archive Manifest with conflict due to onboarding state - [Documentation] Test ID: 5.3.1.12.3 - ... Test title: Get NSD Archive Manifest with conflict due to onboarding state - ... Test objective: The objective is to test that the retrieval of content of the manifest file within an NSD archive fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: The onboarding state of the NSD is different from ONBOARDED. - ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get NSD Archive Manifest with conflict due to onboarding state - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -POST NSD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.12.4 - ... Test title: POST NSD Archive Manifest - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor Archive Manifest - ... Pre-conditions: none - ... Reference: Clause 5.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send POST Request for NSD Archive Manifest - Check HTTP Response Status Code Is 405 - -PUT NSD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.12.5 - ... Test title: PUT NSD Archive Manifest - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest - ... Pre-conditions: none - ... Reference: Clause 5.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PUT Request for NSD Archive Manifest - Check HTTP Response Status Code Is 405 - -PATCH NSD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.12.6 - ... Test title: PATCH NSD Archive Manifest - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest - ... Pre-conditions: none - ... Reference: Clause 5.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PATCH Request for NSD Archive Manifest - Check HTTP Response Status Code Is 405 - -DELETE NSD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.12.7 - ... Test title: DELETE NSD Archive Manifest - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor Archive Manifest - ... Pre-conditions: none - ... Reference: Clause 5.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send DELETE Request for NSD Archive Manifest +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Resource NSDManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem + +*** Test Cases *** +Get NSD Archive Manifest + [Documentation] Test ID: 5.3.1.12.1 + ... Test title: Get NSD Archive Manifest + ... Test objective: The objective is to test that GET method reads the content of the manifest file within an NSD archive + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD Archive Manifest + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get NSD Archive Manifest with security information + [Documentation] Test ID: 5.3.1.12.2 + ... Test title: Get NSD Archive Manifest with security information + ... Test objective: The objective is to test the retrieval of content of the manifest file within an NSD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter + ... Pre-conditions: One or more NSDs are onboarded in the NFVO. + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD Archive Manifest with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get NSD Archive Manifest with conflict due to onboarding state + [Documentation] Test ID: 5.3.1.12.3 + ... Test title: Get NSD Archive Manifest with conflict due to onboarding state + ... Test objective: The objective is to test that the retrieval of content of the manifest file within an NSD archive fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the NSD is different from ONBOARDED. + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get NSD Archive Manifest with conflict due to onboarding state + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST NSD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.12.4 + ... Test title: POST NSD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for NSD Archive Manifest + Check HTTP Response Status Code Is 405 + +PUT NSD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.12.5 + ... Test title: PUT NSD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for NSD Archive Manifest + Check HTTP Response Status Code Is 405 + +PATCH NSD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.12.6 + ... Test title: PATCH NSD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for NSD Archive Manifest + Check HTTP Response Status Code Is 405 + +DELETE NSD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.12.7 + ... Test title: DELETE NSD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for NSD Archive Manifest Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index cb5c306ff..9ea91b491 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -17,7 +17,7 @@ Variables descriptors/SOL001/NSD/nsd_SOL001.yaml 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -25,7 +25,7 @@ GET all Network Service Descriptors Information 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?${NSD_NAME} ${output}= Output response Set Suite Variable ${response} ${output} @@ -38,7 +38,7 @@ Check HTTP Response Body NsdInfos Matches the requested attribute-based filter 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -47,7 +47,7 @@ Get all Network Service Descriptors Information with malformed authorization tok Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting authentication Log The GET method queries using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} - Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} + Set Headers {"${AUTHORIZATION_HEADER}": "${BAD_AUTHORIZATION_TOKEN}"} Log Execute Query and validate response REST.Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response @@ -66,7 +66,7 @@ Get all Network Service Descriptors Information with expired or revoked authoriz Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication Log The GET method queries using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} - Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} + Set Headers {"${AUTHORIZATION_HEADER}": "${NEG_AUTHORIZATION_TOKEN}"} Log Execute Query and validate response REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response @@ -75,7 +75,7 @@ Get all Network Service Descriptors Information with expired or revoked authoriz GET all Network Service Descriptors Information with all_fields attribute selector 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -89,7 +89,7 @@ Check HTTP Response Body NsdInfos Matches the requested all_fields selector GET all Network Service Descriptors Information with exclude_default attribute selector 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -103,7 +103,7 @@ Check HTTP Response Body NsdInfos Matches the requested exclude_default selector 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -111,7 +111,7 @@ GET all Network Service Descriptors Information with fields attribute selector GET all Network Service Descriptors Information with exclude_default and 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?exclude_default&fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -126,7 +126,7 @@ GET all Network Service Descriptors Information with exclude_fields attribute se Log Trying to get all NSD Managements present in the NFVO Catalogue, using filter params 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -142,7 +142,7 @@ Send Post Request to create new Network Service Descriptor Resource Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body}= Get File jsons/createNsdInfoRequest.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -150,7 +150,7 @@ Send Post Request to create new Network Service Descriptor Resource 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} @@ -161,7 +161,7 @@ Send PUT Request for all Network Service Descriptors Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -170,7 +170,7 @@ Send PATCH Request for all Network Service Descriptors 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 Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -179,7 +179,7 @@ Send DELETE Request for all Network Service Descriptors 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 Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -191,7 +191,7 @@ Check Postcondition Network Service Descriptors Exist 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -204,7 +204,7 @@ Check HTTP Response Body NsdInfo Identifier matches the requested Network Servic GET Individual Network Service 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId} Integer response status 404 ${output}= Output response @@ -216,7 +216,7 @@ Send PATCH to disable Individual Network Service Descriptor Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set Headers {"If-Match": "${original_etag}"} ${body}= Get File jsons/NsdInfoModificationDisable.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -237,7 +237,7 @@ Send PATCH to enable Individual Network Service Descriptor Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set Headers {"If-Match": "${original_etag}"} ${body}= Get File jsons/NsdInfoModificationEnable.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -248,7 +248,7 @@ Send PATCH to enable Individual Network Service Descriptor in onboarding state d Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set Headers {"If-Match": "${original_etag}"} ${body}= Get File jsons/NsdInfoModificationEnable.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -259,7 +259,7 @@ Send PATCH to enable Individual Network Service Descriptor in onboarding state d Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set Headers {"If-Match": "${wrong_etag}"} ${body}= Get File jsons/NsdInfoModificationEnable.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -267,21 +267,21 @@ Send PATCH to enable Individual Network Service Descriptor in onboarding state d 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -293,7 +293,7 @@ Send POST Request for Individual Network Service Descriptor Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -302,7 +302,7 @@ Send PUT Request for Individual Network Service Descriptor Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -330,7 +330,7 @@ Check HTTP Response Header Content-Length Is Present and Matches the requested r 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -338,7 +338,7 @@ Get NSD Content in Zip Format 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -346,7 +346,7 @@ Get NSD Content with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -356,7 +356,7 @@ GET NSD 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 {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${range}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -366,13 +366,13 @@ GET NSD Content with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} Send PUT Request to upload NSD Content as zip file in asynchronous mode - Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_JSON}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False + Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_JSON}", "Content-Type": "application/zip", "${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} verify=False ${body}= Get Binary File ${contentZipNsd} ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} Should Be Empty ${response.text} @@ -380,7 +380,7 @@ Send PUT Request to upload NSD Content as zip file in asynchronous mode Set Suite Variable ${response} ${response} Send PUT Request to upload NSD Content as zip file in synchronous mode - Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_JSON}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False + Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_JSON}", "Content-Type": "application/zip", "${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} verify=False ${body}= Get Binary File ${contentZipNsd} ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} Should Be Empty ${response.text} @@ -404,7 +404,7 @@ Check Postcondition NSD Content is uploaded and available in the NFVO Send PUT Request to upload NSD Content with conflict due to onboarding state Log Trying to perform a PUT. This method upload the content of a NSD - Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False + Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} verify=False ${body}= Get Binary File ${contentZipNsd} ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content data=${body} Log ${response} @@ -414,7 +414,7 @@ Send PUT Request to upload NSD Content with conflict due to onboarding state 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -422,7 +422,7 @@ Send POST Request for NSD Content 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -430,7 +430,7 @@ Send PATCH Request for NSD Content 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -438,7 +438,7 @@ Send DELETE Request for NSD Content 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -446,7 +446,7 @@ GET all PNF Descriptors Information 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?${PNFD_NAME} ${output}= Output response Set Suite Variable ${response} ${output} @@ -459,7 +459,7 @@ Check HTTP Response Body PnfdInfos Matches the requested attribute-based filter 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -467,7 +467,7 @@ GET PNF Descriptors Information with invalid attribute-based filter 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -481,7 +481,7 @@ Check HTTP Response Body PnfdInfos Matches the requested all_fields selector 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -495,7 +495,7 @@ Check HTTP Response Body PnfdInfos Matches the requested exclude_default selecto 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -503,7 +503,7 @@ GET all PNF Descriptors Information with fields attribute selector GET all PNF Descriptors Information with exclude_default and 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?exclude_default&fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -518,7 +518,7 @@ GET all PNF Descriptors Information with exclude_fields attribute selector Log Trying to get all PNF present in the NFVO Catalogue, using filter params 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -534,7 +534,7 @@ Send Post Request to create new PNF Descriptor Resource Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body}= Get File jsons/createPnfdInfoRequest.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -542,7 +542,7 @@ Send Post Request to create new PNF Descriptor Resource 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} @@ -553,7 +553,7 @@ Send PUT Request for all PNF Descriptors Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -562,7 +562,7 @@ Send PATCH Request for all PNF Descriptors 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 Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -571,7 +571,7 @@ Send DELETE Request for all PNF Descriptors 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 Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -579,7 +579,7 @@ Send DELETE Request for all PNF Descriptors 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -592,7 +592,7 @@ Check HTTP Response Body PnfdInfo Identifier matches the requested PNF Descripto 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${erroneous_pnfdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -603,7 +603,7 @@ Send PATCH to update Individual PNF Descriptor Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set Headers {"If-Match": "${original_etag}"} ${body}= Get File jsons/PnfdInfoModification.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -619,7 +619,7 @@ Send PATCH to update Individual PNF Descriptor with HTTP Etag precondition failu Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set Headers {"If-Match": "${wrong_etag}"} ${body}= Get File jsons/PnfdInfoModification.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -627,14 +627,14 @@ Send PATCH to update Individual PNF Descriptor with HTTP Etag precondition failu 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} Integer response status 404 @@ -642,7 +642,7 @@ Send POST Request for Individual PNF Descriptor Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -651,7 +651,7 @@ Send PUT Request for Individual PNF Descriptor Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -659,7 +659,7 @@ Send PUT Request for Individual PNF Descriptor 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -668,7 +668,7 @@ Get PNFD Content with Range Request Log Trying to get a NSD present in the NFVO Catalogue 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -677,7 +677,7 @@ Get PNFD Content with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -685,7 +685,7 @@ Get PNFD Content with invalid Range Request 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${erroneous_pnfdInfoId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -693,14 +693,14 @@ Get PNFD Content with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${onboardingStatePnfdId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} Send PUT Request to upload PNFD Content as zip file Log Trying to perform a PUT. This method upload the content of a PNFD - Create Session pnfd ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_PLAIN}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False + Create Session pnfd ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_PLAIN}", "Content-Type": "application/zip", "${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} verify=False ${body}= Get Binary File ${contentZipPnfd} ${response}= Put Request pnfd ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content data=${body} Should Be Empty ${response.text} @@ -711,7 +711,7 @@ Send PUT Request to upload PNFD Content with conflict due to onboarding state Log Trying to perform a PUT. This method upload the content of a PNFD Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Content-Type": "application/zip"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get Binary File ${contentZipPnfd} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${creatingPnfdInfoId}/pnfd_content ${body} ${output}= Output response @@ -720,7 +720,7 @@ Send PUT Request to upload PNFD Content with conflict due to onboarding state 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -728,7 +728,7 @@ Send POST Request for PNFD Content 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -736,7 +736,7 @@ Send PATCH Request for PNFD Content 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 ... specified in the Tables 5.4.8.3.2-1 and 5.4.8.3.2-2. Log Trying to get the list of subscriptions Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -757,7 +757,7 @@ Get all NSD Management Subscriptions 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 attribute-based filters 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 attribute-based filters 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -790,7 +790,7 @@ Send Post Request for NSD Management Subscription Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -805,7 +805,7 @@ Send POST Request for Duplicated NSD Management Subscription Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -818,7 +818,7 @@ Send Put Request for NSD Management Subscriptions Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 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 Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 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 Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 Check Postcondition subscription exist Log Trying to get the subscription Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} @@ -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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${response['headers']['Location']} Integer response status 200 Log Received a 200 OK as expected @@ -908,7 +908,7 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -916,7 +916,7 @@ Get Individual NSD Management Subscription 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -924,7 +924,7 @@ GET individual NSD Management Subscription with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -937,19 +937,19 @@ Check Postcondition NSD Management Subscription is Deleted Send Delete request for individual NSD Management Subscription with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -958,7 +958,7 @@ Send Put request for individual NSD Management Subscription Set Suite Variable ${response} ${output} Send Patch request for individual NSD Management Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} Should Be Equal As Strings ${response['status']} 200 @@ -1010,7 +1010,7 @@ Wait for individual grant successful notification 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1018,7 +1018,7 @@ Get single file NSD in Plain Format 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 Log Trying to get a NSD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 Log Trying to get a VNFD from a given NSD Management present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 or Zip Format 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 Log Trying to perform a negative get, using an erroneous package ID Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 Log Trying to get a VNFD from a given NSD Management present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1070,7 +1070,7 @@ Get NSD with conflict due to onboarding state 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1078,7 +1078,7 @@ Send POST Request for NSD 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1086,7 +1086,7 @@ Send PUT Request for NSD 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1094,7 +1094,7 @@ Send PATCH Request for NSD 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1102,14 +1102,14 @@ Send DELETE Request for NSD 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 Log Trying to get a VNFD from a given NSD Management present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1134,7 +1134,7 @@ Get NSD Archive Manifest with conflict due to onboarding state 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1142,7 +1142,7 @@ Send POST Request for NSD Archive Manifest 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1150,7 +1150,7 @@ Send PUT Request for NSD Archive Manifest 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1158,7 +1158,7 @@ Send PATCH Request for NSD Archive Manifest 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1166,7 +1166,7 @@ Send DELETE Request for NSD Archive Manifest 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1174,7 +1174,7 @@ Get single file PNFD in Plain Format 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 Log Trying to get a PNFD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 Log Trying to get a VNFD from a given PNFD Management present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 or Zip Format 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 Log Trying to perform a negative get, using an erroneous package ID Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 Log Trying to get a VNFD from a given PNFD Management present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${onboardingStatePnfdId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1226,7 +1226,7 @@ Get PNFD with conflict due to onboarding state 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1234,7 +1234,7 @@ Get PNFD with security information 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1242,7 +1242,7 @@ Send POST Request for PNFD 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1250,7 +1250,7 @@ Send PUT Request for PNFD 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1258,14 +1258,14 @@ Send PATCH Request for PNFD 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 Log Trying to get a PNFD Management present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1290,7 +1290,7 @@ Get PNFD Archive Manifest with conflict due to onboarding state 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1298,7 +1298,7 @@ Send POST Request for PNFD Archive Manifest 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1306,7 +1306,7 @@ Send PUT Request for PNFD Archive Manifest 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1314,7 +1314,7 @@ Send PATCH Request for PNFD Archive Manifest 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL005/NSDManagement-API/NotificationConsumer.robot b/SOL005/NSDManagement-API/NotificationConsumer.robot index 59492691d..d769f58f1 100644 --- a/SOL005/NSDManagement-API/NotificationConsumer.robot +++ b/SOL005/NSDManagement-API/NotificationConsumer.robot @@ -1,190 +1,190 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library OperatingSystem -Library JSONLibrary -Library String -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Suite Setup Check resource existence and get CallbackUri -Resource NSDManagementKeywords.robot - -*** Test Cases *** -NSD Onboarding Notification - [Documentation] Test ID: 5.3.1.15.1 - ... Test title: NSD Onboarding Notification - ... Test objective: The objective is to test that NSD Onboarding Notification is delivered with success to the notification consumer. - ... Pre-conditions: A NSD management subscription for onboarding notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post NSD Onboarding Notification - Check HTTP Response Status Code Is 204 - -NSD Onboarding Failure Notification - [Documentation] Test ID: 5.3.1.15.2 - ... Test title: NSD Onboarding Failure Notification - ... Test objective: The objective is to test that NSD Onboarding Failure Notification is delivered with success to the notification consumer. - ... Pre-conditions: A NSD management subscription for onboarding failure notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post NSD Onboarding Failure Notification - Check HTTP Response Status Code Is 204 - -NSD Change Notification - [Documentation] Test ID: 5.3.1.15.3 - ... Test title: NSD Change Notification - ... Test objective: The objective is to test that NSD Change Notification is delivered with success to the notification consumer. - ... Pre-conditions: A NSD management subscription for change notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post NSD Change Notification - Check HTTP Response Status Code Is 204 - -NSD Deletion Notification - [Documentation] Test ID: 5.3.1.15.4 - ... Test title: NSD Deletion Notification - ... Test objective: The objective is to test that NSD Deletion Notification is delivered with success to the notification consumer. - ... Pre-conditions: A NSD management subscription for deletion notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post NSD Deletion Notification - Check HTTP Response Status Code Is 204 - -Pnfd Onboarding Notification - [Documentation] Test ID: 5.3.1.15.5 - ... Test title: Pnfd Onboarding Notification - ... Test objective: The objective is to test that Pnfd Onboarding Notification is delivered with success to the notification consumer. - ... Pre-conditions: A Pnfd management subscription for onboarding notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post Pnfd Onboarding Notification - Check HTTP Response Status Code Is 204 - -Pnfd Onboarding Failure Notification - [Documentation] Test ID: 5.3.1.15.6 - ... Test title: Pnfd Onboarding Failure Notification - ... Test objective: The objective is to test that Pnfd Onboarding Failure Notification is delivered with success to the notification consumer. - ... Pre-conditions: A Pnfd management subscription for onboarding failure notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post Pnfd Onboarding Failure Notification - Check HTTP Response Status Code Is 204 - -Pnfd Deletion Notification - [Documentation] Test ID: 5.3.1.15.7 - ... Test title: pnfd Deletion Notification - ... Test objective: The objective is to test that Pnfd Deletion Notification is delivered with success to the notification consumer. - ... Pre-conditions: A Pnfd management subscription for deletion notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post Pnfd Deletion Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body PkgmSubscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post NSD Onboarding Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File - ${template} = Get File jsons/notifications/NsdOnBoardingNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post NSD Onboarding Failure Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File - ${template} = Get File jsons/notifications/NsdOnBoardingFailureNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post NSD Change Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File - ${template} = Get File jsons/notifications/NsdChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post NSD Deletion Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File - ${template} = Get File jsons/notifications/NsdDeletionNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Pnfd Onboarding Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/notifications/PnfdOnBoardingNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} pnfdInfoId=${pnfdInfoId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Pnfd Onboarding Failure Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/notifications/PnfdOnBoardingFailureNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} pnfdInfoId=${pnfdInfoId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Pnfd Deletion Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/notifications/pnfdDeletionNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} pnfdInfoId=${pnfdInfoId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library OperatingSystem +Library JSONLibrary +Library String +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri +Resource NSDManagementKeywords.robot + +*** Test Cases *** +NSD Onboarding Notification + [Documentation] Test ID: 5.3.1.15.1 + ... Test title: NSD Onboarding Notification + ... Test objective: The objective is to test that NSD Onboarding Notification is delivered with success to the notification consumer. + ... Pre-conditions: A NSD management subscription for onboarding notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post NSD Onboarding Notification + Check HTTP Response Status Code Is 204 + +NSD Onboarding Failure Notification + [Documentation] Test ID: 5.3.1.15.2 + ... Test title: NSD Onboarding Failure Notification + ... Test objective: The objective is to test that NSD Onboarding Failure Notification is delivered with success to the notification consumer. + ... Pre-conditions: A NSD management subscription for onboarding failure notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post NSD Onboarding Failure Notification + Check HTTP Response Status Code Is 204 + +NSD Change Notification + [Documentation] Test ID: 5.3.1.15.3 + ... Test title: NSD Change Notification + ... Test objective: The objective is to test that NSD Change Notification is delivered with success to the notification consumer. + ... Pre-conditions: A NSD management subscription for change notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post NSD Change Notification + Check HTTP Response Status Code Is 204 + +NSD Deletion Notification + [Documentation] Test ID: 5.3.1.15.4 + ... Test title: NSD Deletion Notification + ... Test objective: The objective is to test that NSD Deletion Notification is delivered with success to the notification consumer. + ... Pre-conditions: A NSD management subscription for deletion notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post NSD Deletion Notification + Check HTTP Response Status Code Is 204 + +Pnfd Onboarding Notification + [Documentation] Test ID: 5.3.1.15.5 + ... Test title: Pnfd Onboarding Notification + ... Test objective: The objective is to test that Pnfd Onboarding Notification is delivered with success to the notification consumer. + ... Pre-conditions: A Pnfd management subscription for onboarding notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Pnfd Onboarding Notification + Check HTTP Response Status Code Is 204 + +Pnfd Onboarding Failure Notification + [Documentation] Test ID: 5.3.1.15.6 + ... Test title: Pnfd Onboarding Failure Notification + ... Test objective: The objective is to test that Pnfd Onboarding Failure Notification is delivered with success to the notification consumer. + ... Pre-conditions: A Pnfd management subscription for onboarding failure notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Pnfd Onboarding Failure Notification + Check HTTP Response Status Code Is 204 + +Pnfd Deletion Notification + [Documentation] Test ID: 5.3.1.15.7 + ... Test title: pnfd Deletion Notification + ... Test objective: The objective is to test that Pnfd Deletion Notification is delivered with success to the notification consumer. + ... Pre-conditions: A Pnfd management subscription for deletion notification is available in the NFVO. + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Pnfd Deletion Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body PkgmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post NSD Onboarding Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File + ${template} = Get File jsons/notifications/NsdOnBoardingNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post NSD Onboarding Failure Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File + ${template} = Get File jsons/notifications/NsdOnBoardingFailureNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post NSD Change Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File + ${template} = Get File jsons/notifications/NsdChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post NSD Deletion Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File + ${template} = Get File jsons/notifications/NsdDeletionNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Pnfd Onboarding Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/notifications/PnfdOnBoardingNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} pnfdInfoId=${pnfdInfoId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Pnfd Onboarding Failure Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/notifications/PnfdOnBoardingFailureNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} pnfdInfoId=${pnfdInfoId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Pnfd Deletion Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/notifications/pnfdDeletionNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} pnfdInfoId=${pnfdInfoId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/PNFD.robot b/SOL005/NSDManagement-API/PNFD.robot index 342fefbcd..04a83b634 100644 --- a/SOL005/NSDManagement-API/PNFD.robot +++ b/SOL005/NSDManagement-API/PNFD.robot @@ -1,161 +1,161 @@ -*** Settings *** -Documentation This Clause defines the content of the individual NS descriptor, i.e. PNFD content -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Resource NSDManagementKeywords.robot -Library JSONLibrary -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library OperatingSystem - -*** Test Cases *** -Get single file PNFD in Plain Format - [Documentation] Test ID: 5.3.1.13.1 - ... Test title: Get single file PNFD in Plain Format - ... Test objective: The objective is to test the retrieval of the PNFD in plain format within a PNFD archive and perform a validation that returned content is in plain format - ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The PNFD is implemented as a single file - ... Post-Conditions: none - Get single file PNFD in Plain Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is text/plain - -Get PNFD in Zip Format - [Documentation] Test ID: 5.3.1.13.2 - ... Test title: Get PNFD in Zip Format - ... Test objective: The objective is to test the retrieval of the PNFD in zip format within a PNFD archive and perform a validation that returned content is in zip format - ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get PNFD in Zip Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get single file PNFD in Plain or Zip Format - [Documentation] Test ID: 5.3.1.13.3 - ... Test title: Get single file PNFDin Plain or Zip Format - ... Test objective: The objective is to test the retrieval of the single file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that response is in Plain or Zip format - ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The PNFD is implemented as a single file - ... Post-Conditions: none - Get single file PNFD in Plain or Zip Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is Any of text/plain application/zip - -Get multi file PNFD in Plain or Zip Format - [Documentation] Test ID: 5.3.1.13.4 - ... Test title: Get multi file PNFD in Plain or Zip Format - ... Test objective: The objective is to test the retrieval of the multi file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format - ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The PNFD is implemented as a multi file - ... Post-Conditions: none - Get multi file PNFD in Plain or Zip Format - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get multi file PNFD in Plain Format - [Documentation] Test ID: 5.3.1.13.5 - ... Test title: Get multi file PNFD in Plain Format - ... Test objective: The objective is to test that the retrieval of the multi file PNFD within a PNFD archive fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The PNFD is implemented as a multi file - ... Post-Conditions: none - Get multi file PNFD in Plain Format - Check HTTP Response Status Code Is 406 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get PNFD Content with invalid resource identifier - [Documentation] Test ID: 5.3.1.13.6 - ... Test title: Get PNFD Content with invalid resource identifier - ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails when using an invalid resource identifier - ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get PNFD with invalid resource identifier - Check HTTP Response Status Code Is 404 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get PNFD with conflict due to onboarding state - [Documentation] Test ID: 5.3.1.13.7 - ... Test title: Get PNFD with conflict due to onboarding state - ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: The onboarding state of the PNFD is different from ONBOARDED. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get PNFD with conflict due to onboarding state - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get PNFD with security information - [Documentation] Test ID: 5.3.1.13.8 - ... Test title: Get PNFD with security information - ... Test objective: The objective is to test the retrieval of the PNFD within a PNFD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter - ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get PNFD with security information - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -POST PNFD - Method not implemented - [Documentation] Test ID: 5.3.1.13.9 - ... Test title: POST PNFD - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new PNFD - ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send POST Request for PNFD - Check HTTP Response Status Code Is 405 - -PUT PNFD - Method not implemented - [Documentation] Test ID: 5.3.1.13.10 - ... Test title: PUT PNFD - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD - ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PUT Request for PNFD - Check HTTP Response Status Code Is 405 - -PATCH PNFD - Method not implemented - [Documentation] Test ID: 5.3.1.13.11 - ... Test title: PATCH PNFD - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD - ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PATCH Request for PNFD - Check HTTP Response Status Code Is 405 - -DELETE PNFD - Method not implemented - [Documentation] Test ID: 5.3.1.13.12 - ... Test title: DELETE PNFD - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete PNFD - ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send DELETE Request for PNFD +*** Settings *** +Documentation This Clause defines the content of the individual NS descriptor, i.e. PNFD content +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Resource NSDManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem + +*** Test Cases *** +Get single file PNFD in Plain Format + [Documentation] Test ID: 5.3.1.13.1 + ... Test title: Get single file PNFD in Plain Format + ... Test objective: The objective is to test the retrieval of the PNFD in plain format within a PNFD archive and perform a validation that returned content is in plain format + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The PNFD is implemented as a single file + ... Post-Conditions: none + Get single file PNFD in Plain Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get PNFD in Zip Format + [Documentation] Test ID: 5.3.1.13.2 + ... Test title: Get PNFD in Zip Format + ... Test objective: The objective is to test the retrieval of the PNFD in zip format within a PNFD archive and perform a validation that returned content is in zip format + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD in Zip Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get single file PNFD in Plain or Zip Format + [Documentation] Test ID: 5.3.1.13.3 + ... Test title: Get single file PNFDin Plain or Zip Format + ... Test objective: The objective is to test the retrieval of the single file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that response is in Plain or Zip format + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The PNFD is implemented as a single file + ... Post-Conditions: none + Get single file PNFD in Plain or Zip Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is Any of text/plain application/zip + +Get multi file PNFD in Plain or Zip Format + [Documentation] Test ID: 5.3.1.13.4 + ... Test title: Get multi file PNFD in Plain or Zip Format + ... Test objective: The objective is to test the retrieval of the multi file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The PNFD is implemented as a multi file + ... Post-Conditions: none + Get multi file PNFD in Plain or Zip Format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get multi file PNFD in Plain Format + [Documentation] Test ID: 5.3.1.13.5 + ... Test title: Get multi file PNFD in Plain Format + ... Test objective: The objective is to test that the retrieval of the multi file PNFD within a PNFD archive fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The PNFD is implemented as a multi file + ... Post-Conditions: none + Get multi file PNFD in Plain Format + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get PNFD Content with invalid resource identifier + [Documentation] Test ID: 5.3.1.13.6 + ... Test title: Get PNFD Content with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails when using an invalid resource identifier + ... Pre-conditions: none + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD with invalid resource identifier + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get PNFD with conflict due to onboarding state + [Documentation] Test ID: 5.3.1.13.7 + ... Test title: Get PNFD with conflict due to onboarding state + ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the PNFD is different from ONBOARDED. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD with conflict due to onboarding state + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get PNFD with security information + [Documentation] Test ID: 5.3.1.13.8 + ... Test title: Get PNFD with security information + ... Test objective: The objective is to test the retrieval of the PNFD within a PNFD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +POST PNFD - Method not implemented + [Documentation] Test ID: 5.3.1.13.9 + ... Test title: POST PNFD - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new PNFD + ... Pre-conditions: none + ... Reference: Clause 5.4.7a.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for PNFD + Check HTTP Response Status Code Is 405 + +PUT PNFD - Method not implemented + [Documentation] Test ID: 5.3.1.13.10 + ... Test title: PUT PNFD - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD + ... Pre-conditions: none + ... Reference: Clause 5.4.7a.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for PNFD + Check HTTP Response Status Code Is 405 + +PATCH PNFD - Method not implemented + [Documentation] Test ID: 5.3.1.13.11 + ... Test title: PATCH PNFD - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD + ... Pre-conditions: none + ... Reference: Clause 5.4.7a.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for PNFD + Check HTTP Response Status Code Is 405 + +DELETE PNFD - Method not implemented + [Documentation] Test ID: 5.3.1.13.12 + ... Test title: DELETE PNFD - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete PNFD + ... Pre-conditions: none + ... Reference: Clause 5.4.7a.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for PNFD Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSDManagement-API/PNFDArchiveManifest.robot b/SOL005/NSDManagement-API/PNFDArchiveManifest.robot index a2adf90a4..8ab2a1874 100644 --- a/SOL005/NSDManagement-API/PNFDArchiveManifest.robot +++ b/SOL005/NSDManagement-API/PNFDArchiveManifest.robot @@ -1,95 +1,95 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Resource NSDManagementKeywords.robot -Library JSONLibrary -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library OperatingSystem - -*** Test Cases *** -Get PNFD Archive Manifest - [Documentation] Test ID: 5.3.1.14.1 - ... Test title: Get PNFD Archive Manifest - ... Test objective: The objective is to test that GET method reads the content of the manifest file within an PNFD archive - ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get PNFD Archive Manifest - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is text/plain - -Get PNFD Archive Manifest with security information - [Documentation] Test ID: 5.3.1.14.2 - ... Test title: Get PNFD Archive Manifest with security information - ... Test objective: The objective is to test the retrieval of content of the manifest file within an PNFD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter - ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get PNFD Archive Manifest with security information - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get PNFD Archive Manifest with conflict due to onboarding state - [Documentation] Test ID: 5.3.1.14.3 - ... Test title: Get PNFD Archive Manifest with conflict due to onboarding state - ... Test objective: The objective is to test that the retrieval of content of the manifest file within an PNFD archive fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: The onboarding state of the PNFD is different from ONBOARDED. - ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get PNFD Archive Manifest with conflict due to onboarding state - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -POST PNFD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.14.4 - ... Test title: POST PNFD Archive Manifest - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor Archive Manifest - ... Pre-conditions: none - ... Reference: Clause 5.4.7b.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send POST Request for PNFD Archive Manifest - Check HTTP Response Status Code Is 405 - -PUT PNFD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.14.5 - ... Test title: PUT PNFD Archive Manifest - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest - ... Pre-conditions: none - ... Reference: Clause 5.4.7b.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PUT Request for PNFD Archive Manifest - Check HTTP Response Status Code Is 405 - -PATCH PNFD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.14.6 - ... Test title: PATCH PNFD Archive Manifest - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest - ... Pre-conditions: none - ... Reference: Clause 5.4.7b.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PATCH Request for PNFD Archive Manifest - Check HTTP Response Status Code Is 405 - -DELETE PNFD Archive Manifest - Method not implemented - [Documentation] Test ID: 5.3.1.14.7 - ... Test title: DELETE PNFD Archive Manifest - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor Archive Manifest - ... Pre-conditions: none - ... Reference: Clause 5.4.7b.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send DELETE Request for PNFD Archive Manifest +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Resource NSDManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem + +*** Test Cases *** +Get PNFD Archive Manifest + [Documentation] Test ID: 5.3.1.14.1 + ... Test title: Get PNFD Archive Manifest + ... Test objective: The objective is to test that GET method reads the content of the manifest file within an PNFD archive + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD Archive Manifest + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get PNFD Archive Manifest with security information + [Documentation] Test ID: 5.3.1.14.2 + ... Test title: Get PNFD Archive Manifest with security information + ... Test objective: The objective is to test the retrieval of content of the manifest file within an PNFD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter + ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD Archive Manifest with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get PNFD Archive Manifest with conflict due to onboarding state + [Documentation] Test ID: 5.3.1.14.3 + ... Test title: Get PNFD Archive Manifest with conflict due to onboarding state + ... Test objective: The objective is to test that the retrieval of content of the manifest file within an PNFD archive fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the PNFD is different from ONBOARDED. + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get PNFD Archive Manifest with conflict due to onboarding state + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST PNFD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.14.4 + ... Test title: POST PNFD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.7b.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for PNFD Archive Manifest + Check HTTP Response Status Code Is 405 + +PUT PNFD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.14.5 + ... Test title: PUT PNFD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.7b.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for PNFD Archive Manifest + Check HTTP Response Status Code Is 405 + +PATCH PNFD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.14.6 + ... Test title: PATCH PNFD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.7b.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for PNFD Archive Manifest + Check HTTP Response Status Code Is 405 + +DELETE PNFD Archive Manifest - Method not implemented + [Documentation] Test ID: 5.3.1.14.7 + ... Test title: DELETE PNFD Archive Manifest - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor Archive Manifest + ... Pre-conditions: none + ... Reference: Clause 5.4.7b.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for PNFD Archive Manifest Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index 7fd3ab762..71dfea8be 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -2,12 +2,13 @@ ${NFVO_HOST} localhost # Hostname of the NFVO ${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json ${apiRoot} / ${AUTH_USAGE} 1 -${NEG_AUTHORIZATION} Bearer negativetoken +${NEG_AUTHORIZATION_TOKEN} Bearer negativetoken ${apiMajorVersion} v1 ${apiName} nsd ${FIELD_USAGE} 1 @@ -67,7 +68,7 @@ ${onboardingStateNsdInfoId} b992a851-08b1-45a8-9282-a5f7a7df04a6 ${contentZipNsd} files/nsd.zip ${contentFileNsd} files/nsd.yml ${creatingNsdInfoId} 71241932-994a-46e2-ad6c-1740674dda44 -${BAD_AUTHORIZATION} Bear sometoken +${BAD_AUTHORIZATION_TOKEN} Bear sometoken ${original_etag} 1234 ${wrong_etag} abcd ${usageState} state diff --git a/SOL005/NSFaultManagement-API/ApiVersion.robot b/SOL005/NSFaultManagement-API/ApiVersion.robot index 5b8291f74..663f8b96d 100644 --- a/SOL005/NSFaultManagement-API/ApiVersion.robot +++ b/SOL005/NSFaultManagement-API/ApiVersion.robot @@ -133,70 +133,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot index d67a251d2..414f1a847 100644 --- a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot +++ b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot @@ -18,7 +18,7 @@ Create Sessions Check Individual Subscription existence Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 @@ -60,7 +60,7 @@ Check Operation Occurrence Id POST Alarms log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -68,7 +68,7 @@ POST Alarms PATCH Alarms log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse} = Output response Set Global Variable ${response} ${outputResponse} @@ -76,7 +76,7 @@ PATCH Alarms PUT Alarms log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -84,7 +84,7 @@ PUT Alarms DELETE Alarms log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -92,7 +92,7 @@ DELETE Alarms GET Alarms Log Query NFVO The GET method queries information about multiple alarms. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response @@ -101,7 +101,7 @@ GET Alarms GET Alarms With Filters Log Query NFVO The GET method queries information about multiple alarms with filters. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${alarm_filter}=${nsInstanceId} ${outputResponse}= Output response @@ -110,7 +110,7 @@ GET Alarms With Filters GET Alarms With Invalid Filters Log Query NFVO The GET method queries information about multiple alarms with filters. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${invalid_alarm_filter}=${nsInstanceId} ${outputResponse}= Output response @@ -118,35 +118,35 @@ GET Alarms With Invalid Filters GET Alarms Task with all_fields attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with exclude_default attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with fields attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with exclude_fields attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} POST Individual Alarm log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -154,7 +154,7 @@ POST Individual Alarm DELETE Individual Alarm log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -162,7 +162,7 @@ DELETE Individual Alarm PUT Individual Alarm log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -171,7 +171,7 @@ GET Individual Alarm Log Query NFVO The GET method queries information about an alarm. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response @@ -181,7 +181,7 @@ GET Invalid Individual Alarm Log Query NFVO The GET method queries information about an invalid alarm. Should return does not exist Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${invalidAlarmId} ${outputResponse}= Output response @@ -191,7 +191,7 @@ PATCH Individual Alarm log Trying to perform a PATCH. This method modifies an individual alarm resource Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/alarmModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response @@ -202,7 +202,7 @@ PATCH Individual Alarm Conflict Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Set Headers {"If-Match": "${Etag}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/alarmModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response @@ -212,7 +212,7 @@ POST Subscription Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${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} @@ -224,7 +224,7 @@ POST Subscription # 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}"} + # Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} # ${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} @@ -236,7 +236,7 @@ POST Subscription # 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}"} + # Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} # ${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} @@ -246,7 +246,7 @@ POST Subscription GET Subscriptions Log Get the list of active subscriptions Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -254,7 +254,7 @@ GET Subscriptions GET Subscriptions with filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -262,7 +262,7 @@ GET Subscriptions with filter GET Subscriptions with Invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -270,35 +270,35 @@ GET Subscriptions with Invalid filter Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} PUT Subscriptions log Trying to perform a PUT Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -306,7 +306,7 @@ PUT Subscriptions PATCH Subscriptions log Trying to perform a PATCH Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -314,7 +314,7 @@ PATCH Subscriptions DELETE Subscriptions log Trying to perform a DELETE Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -322,7 +322,7 @@ DELETE Subscriptions POST Individual Subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -330,7 +330,7 @@ POST Individual Subscription GET Individual Subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -338,7 +338,7 @@ GET Individual Subscription PUT Individual Subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -346,7 +346,7 @@ PUT Individual Subscription PATCH Individual Subscription log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -354,7 +354,7 @@ PATCH Individual Subscription DELETE Individual Subscription log Trying to perform a DELETE. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -435,7 +435,7 @@ Check HTTP Response Header Contains Location GET Alarm With Filter "id" Log Query NFVO The GET method queries information about multiple alarms with filter "id". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?id=${alarmId} ${outputResponse}= Output response @@ -447,7 +447,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba GET Alarms With Filter "rootCauseFaultyComponent_faultyNestedNsInstanceId" Log Query NFVO The GET method queries information about multiple alarms with filter "rootCauseFaultyComponent.faultyNestedNsInstanceId". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?rootCauseFaultyComponent.faultyNestedNsInstanceId=${faultyNestedNsInstanceId} ${outputResponse}= Output response @@ -461,7 +461,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba GET Alarms With Filter "rootCauseFaultyComponent_faultyNsVirtualLinkInstanceId" Log Query NFVO The GET method queries information about multiple alarms with filter "rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId=${faultyNsVirtualLinkInstanceId} ${outputResponse}= Output response @@ -475,7 +475,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba GET Alarms With Filter "rootCauseFaultyComponent_faultyVnfInstanceId" Log Query NFVO The GET method queries information about multiple alarms with filter "rootCauseFaultyComponent.faultyVnfInstanceId". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?rootCauseFaultyComponent.faultyVnfInstanceId=${faultyVnfInstanceId} ${outputResponse}= Output response @@ -489,7 +489,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba GET Alarms With Filter "rootCauseFaultyResource_faultyResourceType" Log Query NFVO The GET method queries information about multiple alarms with filter "rootCauseFaultyResource.faultyResourceType". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?rootCauseFaultyResource.faultyResourceType=${faultyResourceType} ${outputResponse}= Output response @@ -503,7 +503,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba GET Alarms with filter "eventType" Log Query VNF The GET method queries information about multiple alarms with filters "eventType". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?eventType=${eventType} ${outputResponse}= Output response @@ -517,7 +517,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba GET Alarms with filter "perceivedSeverity" Log Query VNF The GET method queries information about multiple alarms with filters "perceivedSeverity". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?perceivedSeverity=${perceivedSeverity} ${outputResponse}= Output response @@ -531,7 +531,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba GET Alarms with filter "probableCause" Log Query VNF The GET method queries information about multiple alarms with filters "probableCause". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?probableCause=${probableCause} ${outputResponse}= Output response @@ -545,7 +545,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba Get subscriptions with filter "id" Log Get the list of active subscriptions using a filter "id" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?id=${subscription_id} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -556,7 +556,7 @@ Check PostCondition HTTP Response Body Subscription Matches the requested attrib Get subscriptions with filter "filter_notificationTypes" Log Get the list of active subscriptions using a filter "filter.notificationTypes" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.notificationTypes=${notification_type} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -569,7 +569,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_faultyResourceTypes" Log Get the list of active subscriptions using a filter "filter.faultyResourceTypes" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.faultyResourceTypes=${faultyResourceType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -582,7 +582,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_perceivedSeverities" Log Get the list of active subscriptions using a filter "filter.perceivedSeverities" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.perceivedSeverities=${perceivedSeverity} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -595,7 +595,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_eventTypes" Log Get the list of active subscriptions using a filter "filter.eventTypes" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.eventTypes=${eventType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -608,7 +608,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_probableCauses" Log Get the list of active subscriptions using a filter "filter.probableCauses" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.probableCauses=${probableCause} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSFaultManagement-API/NotificationConsumer.robot b/SOL005/NSFaultManagement-API/NotificationConsumer.robot index eaeb2cc10..5964b816e 100644 --- a/SOL005/NSFaultManagement-API/NotificationConsumer.robot +++ b/SOL005/NSFaultManagement-API/NotificationConsumer.robot @@ -1,93 +1,93 @@ -*** Settings *** -Library String -Library OperatingSystem -Resource environment/variables.txt -Library JSONLibrary -Library JSONSchemaLibrary schemas/ -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -NS Fault Alarm Notification - [Documentation] Test ID: 5.3.3.7.1 - ... Test title: NS Fault Alarm Notification - ... Test objective: The objective is to test that NS Fault Alarm Notification is delivered with success to the notification consumer - ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post Alarm Notification - Check HTTP Response Status Code Is 204 - -NS Fault Alarm Cleared Notification - [Documentation] Test ID: 5.3.3.7.2 - ... Test title: NS Fault Alarm Cleared Notification - ... Test objective: The objective is to test that NS Fault Alarm Cleared Notification is delivered with success to the notification consumer - ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm cleared notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post Alarm Cleared Notification - Check HTTP Response Status Code Is 204 - -NS Fault Alarm List Rebuilt Notification - [Documentation] Test ID: 5.3.3.7.3 - ... Test title: NS Fault Alarm List Rebuilt Notification - ... Test objective: The objective is to test that NS Fault Alarm List Rebuilt Notification is delivered with success to the notification consumer - ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post Alarm List Rebuilt Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body FmSubscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post Alarm Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/AlarmNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Alarm Cleared Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/AlarmClearedNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Alarm List Rebuilt Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/AlarmListRebuiltNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response +*** Settings *** +Library String +Library OperatingSystem +Resource environment/variables.txt +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +NS Fault Alarm Notification + [Documentation] Test ID: 5.3.3.7.1 + ... Test title: NS Fault Alarm Notification + ... Test objective: The objective is to test that NS Fault Alarm Notification is delivered with success to the notification consumer + ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm notifications is available in the NFVO. + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Alarm Notification + Check HTTP Response Status Code Is 204 + +NS Fault Alarm Cleared Notification + [Documentation] Test ID: 5.3.3.7.2 + ... Test title: NS Fault Alarm Cleared Notification + ... Test objective: The objective is to test that NS Fault Alarm Cleared Notification is delivered with success to the notification consumer + ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm cleared notifications is available in the NFVO. + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Alarm Cleared Notification + Check HTTP Response Status Code Is 204 + +NS Fault Alarm List Rebuilt Notification + [Documentation] Test ID: 5.3.3.7.3 + ... Test title: NS Fault Alarm List Rebuilt Notification + ... Test objective: The objective is to test that NS Fault Alarm List Rebuilt Notification is delivered with success to the notification consumer + ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the NFVO. + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Alarm List Rebuilt Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body FmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Alarm Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/AlarmNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm Cleared Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/AlarmClearedNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm List Rebuilt Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/AlarmListRebuiltNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/environment/variables.txt b/SOL005/NSFaultManagement-API/environment/variables.txt index 0ae86d8e1..2214bef51 100644 --- a/SOL005/NSFaultManagement-API/environment/variables.txt +++ b/SOL005/NSFaultManagement-API/environment/variables.txt @@ -2,7 +2,8 @@ ${NFVO_HOST} localhost # Hostname of the VNFM ${NFVO_PORT} 8080 # Listening port of the VNFM ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${ACCEPT} application/json ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 diff --git a/SOL005/NSLifecycleManagement-API/ApiVersion.robot b/SOL005/NSLifecycleManagement-API/ApiVersion.robot index fcbaad59f..d21b76e5e 100644 --- a/SOL005/NSLifecycleManagement-API/ApiVersion.robot +++ b/SOL005/NSLifecycleManagement-API/ApiVersion.robot @@ -133,70 +133,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 5eefe233d..aa89c7eec 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -31,50 +31,50 @@ Create Sessions Check subscription existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Check Instance Deleted Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} Integer response status 404 Check Fail not supported - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} # how to check if Fail is not supported? Also In Sol002 Check Cancel not supported - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} # how to check if Cancel is not supported? Also In Sol002 Check Continue not supported - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} # how to check if Continue is not supported? Also In Sol002 Check retry not supported - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} # how to check if retry is not supported? Also In Sol002 Check Rollback not supported - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} # how to check if rollback is not supported? Also In Sol002 Check resource FAILED_TEMP - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} String response body operationState FAILED_TEMP Check resource not [Arguments] ${status} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} Should Not Be Equal As Strings response body operationState ${status} @@ -122,7 +122,7 @@ Check resource Instantiated Probe resource Instantiated Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} String response body nsState INSTANTIATED @@ -133,7 +133,7 @@ Probe resource not_instantiated [Arguments] ${fresh_resource}=0 Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log ${fresh_resource} ${instanceId}= Set Variable If ${fresh_resource} == 0 ${nsInstanceId} ${response['body']['id']} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${instanceId} @@ -142,7 +142,7 @@ Probe resource not_instantiated Check operation resource state is FAILED_TEMP Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} String response body instantiationState FAILED_TEMP @@ -150,21 +150,21 @@ Check operation resource state is not FAILED_TEMP Check operation resource state is FAILED_TEMP Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} String response body instantiationState not FAILED_TEMP Check resource is finally failed Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} String response body instantiationState FINALLY_FAILED Launch another LCM operation Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleNsToLevelRequest.json ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale_to_level ${body} @@ -173,7 +173,7 @@ Launch another LCM operation Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} Integer response status 200 @@ -186,7 +186,7 @@ Check HTTP Response Status Code Is Check Postcondition NS Instance is deleted Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${disabledNsdId} Integer response status 404 @@ -204,7 +204,7 @@ Check HTTP Response Body Json Schema Is Check Postcondition NS Instance is not deleted Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} Integer response status 200 @@ -218,7 +218,7 @@ POST New nsInstance Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/CreateNsRequest.json ${body}= Format String ${template} nsdId=${NS_DescriptorID} nsInstanceName=${nsInstanceName} vimAccountId=${vimAccountId} nsInstanceDescription=${nsInstanceDescription} @@ -369,7 +369,7 @@ POST New nsInstance with DISABLED nsd Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/CreateNsRequest.json ${body}= Format String ${template} nsdId=${disabledNsdId} nsInstanceName=${nsInstanceName} vimAccountId=${vimAccountId} nsInstanceDescription=${nsInstanceDescription} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances ${body} @@ -380,7 +380,7 @@ GET NsInstances Log Query NS The GET method queries information about multiple NS instances. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -390,7 +390,7 @@ GET NsInstance Invalid Attribute-Based filtering parameter Log Query NS The GET method queries information about multiple NS instances. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?attribute_not_exist=some_value ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -399,7 +399,7 @@ GET NsInstance Invalid Attribute Selector Log Query NS The GET method queries information about multiple NS instances. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?fields=wrong_field ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -407,35 +407,35 @@ GET NsInstance Invalid Attribute Selector Get NSInstances with all_fields attribute selector Log Get the list of NSInstances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get NSInstances with exclude_default attribute selector Log Get the list of NSInstances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get NSInstances with fields attribute selector Log Get the list of NSInstances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get NSInstances with fields and exclude_default attribute selector Log Get the list of NSInstances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get NSInstances with exclude_fields attribute selector Log Get the list of NSInstances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -444,7 +444,7 @@ PUT NSInstances log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -453,7 +453,7 @@ PATCH NSInstances log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -462,7 +462,7 @@ DELETE NSInstances log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -471,7 +471,7 @@ POST IndividualNSInstance Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nonExistentNsId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -480,7 +480,7 @@ GET IndividualNSInstance Log Trying to get information about an individual NS instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} ${Etag}= Output response headers ETag ${outputResponse}= Output response @@ -491,7 +491,7 @@ PUT IndividualNSInstance Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -500,14 +500,14 @@ PATCH IndividualNSInstance Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE IndividualNSInstance log Trying to delete an individual VNF instance - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -515,7 +515,7 @@ DELETE IndividualNSInstance DELETE IndividualNSInstance Conflict log Trying to delete an individual VNF instance - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${ConflictNsInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -523,7 +523,7 @@ DELETE IndividualNSInstance Conflict DELETE Instantiate NSInstance log Trying to delete an instantiate NS instance. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -532,7 +532,7 @@ DELETE Instantiate NSInstance log Trying to patch an instantiate NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -541,7 +541,7 @@ PUT Instantiate NSInstance log Trying to put an instantiate NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -550,7 +550,7 @@ GET Instantiate NSInstance log Trying to get an instantiate NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -559,7 +559,7 @@ GET Instantiate NSInstance Log Trying to Instantiate a ns Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/InstantiateNs.json ${body}= Format String ${template} nsFlavourId=${nsFlavourId} vimAccountId=${vimAccountId} nsdId=${nsdId} sapdId=${SAP_IDs[0]} @@ -569,7 +569,7 @@ GET Instantiate NSInstance DELETE Scale NSInstance log Trying to delete an Scale NS instance. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -578,7 +578,7 @@ DELETE Scale NSInstance log Trying to patch an Scale NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -587,7 +587,7 @@ PUT Scale NSInstance log Trying to put an Scale NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -596,7 +596,7 @@ GET Scale NSInstance log Trying to get an Scale NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -605,7 +605,7 @@ POST scale nsInstance Log Trying to Instantiate a scale NS Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/ScaleNs.json ${body}= Format String ${template} scaleType=${scaleType} scaleTimeout=${scaleTimeout} scaleVnfType=${scaleVnfType} scaleGroupDescriptor=${scaleGroupDescriptor} scaleMemberVnfIndex=${scaleMemberVnfIndex} vnfInstantiationLevelId=${InstantiationLevel_IDs[0]} @@ -615,7 +615,7 @@ POST scale nsInstance DELETE Update NSInstance log Trying to delete an Update NS instance. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -624,7 +624,7 @@ DELETE Update NSInstance log Trying to patch an Update NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -633,7 +633,7 @@ PUT Update NSInstance log Trying to put an Update NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -642,7 +642,7 @@ GET Update NSInstance log Trying to get an Update NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -651,7 +651,7 @@ POST Update NSInstance Log Trying to Instantiate a Update NS Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/UpdateNsRequest.json @@ -662,7 +662,7 @@ POST Update NSInstance DELETE Heal NSInstance log Trying to Delete an Heal NS instance. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -671,7 +671,7 @@ DELETE Heal NSInstance log Trying to patch an Heal NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -680,7 +680,7 @@ PUT Heal NSInstance log Trying to put an Heal NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -689,7 +689,7 @@ GET Heal NSInstance log Trying to get an Heal NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -698,7 +698,7 @@ POST Heal NSInstance Log Trying to Instantiate a Heal NS Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/HealNsRequest.json ${body}= Format String ${template} nsDegreeHealing=${nsDegreeHealing} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/heal ${body} @@ -707,7 +707,7 @@ POST Heal NSInstance DELETE Terminate NSInstance log Trying to Delete an Terminate NS instance. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -716,7 +716,7 @@ PATCH Terminate NSInstance log Trying to patch an Terminate NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -725,7 +725,7 @@ PUT Terminate NSInstance log Trying to put an Terminate NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -734,7 +734,7 @@ GET Terminate NSInstance log Trying to Get an Terminate NS instance. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -743,7 +743,7 @@ POST Terminate NSInstance Log Trying to Instantiate a Terminate NS Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/TerminateNsRequest.json Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/terminate ${body} ${outputResponse}= Output response @@ -752,7 +752,7 @@ POST Terminate NSInstance POST NS LCM OP Occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -760,7 +760,7 @@ POST NS LCM OP Occurrences PUT NS LCM OP Occurrences log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -768,7 +768,7 @@ PUT NS LCM OP Occurrences PATCH NS LCM OP Occurrences log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -776,7 +776,7 @@ PATCH NS LCM OP Occurrences DELETE NS LCM OP Occurrences log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -784,7 +784,7 @@ DELETE NS LCM OP Occurrences GET NS LCM OP Occurrences Log Query status information about multiple NS lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs ${outputResponse}= Output response @@ -793,7 +793,7 @@ GET NS LCM OP Occurrences GET NS LCM OP Occurrences Invalid attribute-based filtering parameters Log Query status information about multiple NS lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?${NEG_FILTER} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -801,42 +801,42 @@ GET NS LCM OP Occurrences Invalid attribute-based filtering parameters GET NS LCM OP Occurrences Invalid attribute selector Log Query status information about multiple NS lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?${NEG_SELECTOR} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get NS LCM OP Occurrences with all_fields attribute selector Log Query status information about multiple NS lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get NS LCM OP Occurrences with exclude_default attribute selector Log Query status information about multiple NS lifecycle management operation occurrences using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get NS LCM OP Occurrences with fields attribute selector Log Query status information about multiple NS lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get NS LCM OP Occurrences with fields and exclude_default attribute selector Log Query status information about multiple NS lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get NS LCM OP Occurrences with exclude_fields attribute selector Log Query status information about multiple NS lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -844,7 +844,7 @@ Get NS LCM OP Occurrences with exclude_fields attribute selector POST Individual NS LCM OP Occurrence log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -852,7 +852,7 @@ POST Individual NS LCM OP Occurrence PUT Individual NS LCM OP Occurrence log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -860,7 +860,7 @@ PUT Individual NS LCM OP Occurrence PATCH Individual NS LCM OP Occurrence log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -868,7 +868,7 @@ PATCH Individual NS LCM OP Occurrence DELETE Individual NS LCM OP Occurrence log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -876,7 +876,7 @@ DELETE Individual NS LCM OP Occurrence GET Individual NS LCM OP Occurrence Log Query status information about individual NS lifecycle management operation occurrence. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId} ${outputResponse}= Output response @@ -884,14 +884,14 @@ GET Individual NS LCM OP Occurrence GET Retry operation task log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Retry operation task log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -905,14 +905,14 @@ PATCH Retry operation task DELETE Retry operation task log Trying to perform a DELETE. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST Retry operation task Log Retry a NS lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/retry ${outputResponse}= Output response @@ -920,14 +920,14 @@ POST Retry operation task GET Rollback operation task log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Rollback operation task log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -941,14 +941,14 @@ PATCH Rollback operation task DELETE Rollback operation task log Trying to perform a DELETE. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST Rollback operation task Log Rollback a NS lifecycle operation task - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/rollback ${outputResponse}= Output response @@ -956,14 +956,14 @@ POST Rollback operation task GET Continue operation task log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Continue operation task log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -977,14 +977,14 @@ PATCH Continue operation task DELETE Continue operation task log Trying to perform a DELETE. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST Continue operation task Log Continue a NS lifecycle operation task - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/continue ${outputResponse}= Output response @@ -992,14 +992,14 @@ POST Continue operation task GET Fail operation task log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Fail operation task log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1013,14 +1013,14 @@ PATCH Fail operation task DELETE Fail operation task log Trying to perform a DELETE. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST Fail operation task Log Fail a NS lifecycle operation task - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/fail ${outputResponse}= Output response @@ -1028,14 +1028,14 @@ POST Fail operation task GET Cancel operation task log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Cancel operation task log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1049,14 +1049,14 @@ PATCH Cancel operation task DELETE Cancel operation task Log Trying to perform a DELETE. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST Cancel operation task Log Cancel a NS lifecycle operation task - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs/${nsLcmOpOccId}/cancel ${outputResponse}= Output response @@ -1066,7 +1066,7 @@ PUT subscriptions Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1075,7 +1075,7 @@ PATCH subscriptions Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1084,7 +1084,7 @@ DELETE subscriptions Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1093,7 +1093,7 @@ POST subscriptions Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/LccnSubscriptionRequest.json ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${NS_DescriptorID} @@ -1106,7 +1106,7 @@ POST subscriptions DUPLICATION Pass Execution If ${NFVO_DUPLICATION} == 0 NFVO 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/LccnSubscriptionRequest.json ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${NS_DescriptorID} @@ -1119,7 +1119,7 @@ POST subscriptions NO DUPLICATION Pass Execution If ${NFVO_DUPLICATION} == 1 NFVO is permitting duplication. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/LccnSubscriptionRequest.json ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${NS_DescriptorID} @@ -1131,7 +1131,7 @@ GET Subscriptions Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response @@ -1140,28 +1140,28 @@ GET Subscriptions Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?all_fields ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1169,7 +1169,7 @@ Get subscriptions with exclude_fields attribute selector GET subscriptions with filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1177,7 +1177,7 @@ GET subscriptions with filter Get subscriptions - invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1186,7 +1186,7 @@ POST Individual Subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1195,7 +1195,7 @@ PUT Individual Subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1204,7 +1204,7 @@ PATCH Individual Subscription log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1212,7 +1212,7 @@ PATCH Individual Subscription GET Individual subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1220,7 +1220,7 @@ GET Individual subscription DELETE Individual subscription log Try to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot index 5944b173e..09fc94e3e 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot @@ -1,97 +1,97 @@ -*** Settings *** -Library String -Resource environment/variables.txt -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Library JSONSchemaLibrary schemas/ -Resource NSLCMOperationKeywords.robot - -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -Ns Lcm Operation Occurrence Notification - [Documentation] Test ID: 5.3.2.26.1 - ... Test title: Ns Lcm Operation Occurrence Notification - ... Test objective: The objective is to test that Ns Lcm Operation Occurrence Notification is delivered with success to the notification consumer. - ... Pre-conditions: A subscription for NS LCM Operation Occurrence notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post Ns Lcm Operation Occurrence Notification - Check HTTP Response Status Code Is 204 - -Ns Identifier Creation Notification - [Documentation] Test ID: 5.3.2.26.2 - ... Test title: Ns Identifier Creation Notification - ... Test objective: The objective is to test that Ns Identifier Creation Notification is delivered with success to the notification consumer. - ... Pre-conditions: A subscription for Ns Identifier Creation notification is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post Ns Identifier Creation Notification - Check HTTP Response Status Code Is 204 - -Ns Identifier Deletion Notification - [Documentation] Test ID: 5.3.2.26.3 - ... Test title: Ns Identifier Deletion Notification - ... Test objective: The objective is to test that Ns Identifier Deletion Notification is delivered with success to the notification consumer. - ... Pre-conditions: A subscription for Ns Identifier Deletion notification is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post Ns Identifier Deletion Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body subscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post Ns Lcm Operation Occurrence Notification - log Trying to perform a POST to get notification - 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 - Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File - ${template} = Get File jsons/NsLcmOperationOccurrenceNotification.json - ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} vnfdId=${Descriptor_ID} nsdId=${NS_DescriptorID} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Ns Identifier Creation Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/NsIdentifierCreationNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsInstanceId=${nsInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Ns Identifier Deletion Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/NsIdentifierDeletionNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsInstanceId=${nsInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} +*** Settings *** +Library String +Resource environment/variables.txt +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Resource NSLCMOperationKeywords.robot + +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +Ns Lcm Operation Occurrence Notification + [Documentation] Test ID: 5.3.2.26.1 + ... Test title: Ns Lcm Operation Occurrence Notification + ... Test objective: The objective is to test that Ns Lcm Operation Occurrence Notification is delivered with success to the notification consumer. + ... Pre-conditions: A subscription for NS LCM Operation Occurrence notifications is available in the NFVO. + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Ns Lcm Operation Occurrence Notification + Check HTTP Response Status Code Is 204 + +Ns Identifier Creation Notification + [Documentation] Test ID: 5.3.2.26.2 + ... Test title: Ns Identifier Creation Notification + ... Test objective: The objective is to test that Ns Identifier Creation Notification is delivered with success to the notification consumer. + ... Pre-conditions: A subscription for Ns Identifier Creation notification is available in the NFVO. + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Ns Identifier Creation Notification + Check HTTP Response Status Code Is 204 + +Ns Identifier Deletion Notification + [Documentation] Test ID: 5.3.2.26.3 + ... Test title: Ns Identifier Deletion Notification + ... Test objective: The objective is to test that Ns Identifier Deletion Notification is delivered with success to the notification consumer. + ... Pre-conditions: A subscription for Ns Identifier Deletion notification is available in the NFVO. + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Ns Identifier Deletion Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body subscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Ns Lcm Operation Occurrence Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File + ${template} = Get File jsons/NsLcmOperationOccurrenceNotification.json + ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} vnfdId=${Descriptor_ID} nsdId=${NS_DescriptorID} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Ns Identifier Creation Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/NsIdentifierCreationNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsInstanceId=${nsInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Ns Identifier Deletion Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/NsIdentifierDeletionNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsInstanceId=${nsInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index b1eb55915..dd923a049 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -6,7 +6,8 @@ ${NFVO_PORT} 8081 # Listening port of the NFVO ${VNFM_SCHEMA} https ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE} application/json ${CONTENT_TYPE_PATCH} application/merge-patch+json ${ACCEPT_JSON} application/json diff --git a/SOL005/NSPerformanceManagement-API/ApiVersion.robot b/SOL005/NSPerformanceManagement-API/ApiVersion.robot index 8619b4931..a0ca7d926 100644 --- a/SOL005/NSPerformanceManagement-API/ApiVersion.robot +++ b/SOL005/NSPerformanceManagement-API/ApiVersion.robot @@ -133,70 +133,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index d70330ae1..d1cef9426 100644 --- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot +++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot @@ -14,7 +14,7 @@ Library String GET all NS Performance Monitoring Jobs Log Trying to get all PM Jobs present in the NFVO Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -22,7 +22,7 @@ GET all NS Performance Monitoring Jobs GET NS Performance Monitoring Jobs with attribute-based filter Log Trying to get all PM Jobs present in the NFVO, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -30,7 +30,7 @@ GET NS Performance Monitoring Jobs with attribute-based filter GET NS Performance Monitoring Jobs with all_fields attribute selector Log Trying to get all PM Jobs present in the NFVO, using 'all_fields' 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -38,7 +38,7 @@ GET NS Performance Monitoring Jobs with all_fields attribute selector GET NS Performance Monitoring Jobs with exclude_default attribute selector Log Trying to get all NS Packages present in the NFVO, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -47,7 +47,7 @@ GET NS Performance Monitoring Jobs with fields attribute selector Log Trying to get all NS Packages present in the NFVO, using filter params Pass Execution If ${FIELD_USAGE} == 0 Skipping test as NFVO is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -56,7 +56,7 @@ GET NS Performance Monitoring Jobs with fields and exclude_default attribute sel Log Trying to get all NS Packages present in the NFVO, using filter params Pass Execution If ${FIELD_USAGE} == 0 Skipping test as NFVO is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -65,7 +65,7 @@ GET NS Performance Monitoring Jobs with exclude attribute selector Log Trying to get all NS Packages present in the NFVO, using filter params Pass Execution If ${FIELD_USAGE} == 0 Skipping test as NFVO is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?exclude=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -73,7 +73,7 @@ GET NS Performance Monitoring Jobs with exclude attribute selector GET NS Performance Monitoring Jobs with invalid attribute-based filter Log Trying to get all PM Jobs present in the NFVO, using an erroneous filter param Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -81,7 +81,7 @@ GET NS Performance Monitoring Jobs with invalid attribute-based filter GET NS Performance Monitoring Jobs 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_job # wrong URI /pm_job instead of /pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -90,7 +90,7 @@ Send Post Request Create new NS Performance Monitoring Job Log Creating a new PM Job Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/CreatePmJobRequest.json ${body}= Format String ${template} pmJobId=${pmJobId} POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} @@ -100,7 +100,7 @@ Send Post Request Create new NS Performance Monitoring Job Send PUT Request for all NS Performance Monitoring Jobs 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -108,7 +108,7 @@ Send PUT Request for all NS Performance Monitoring Jobs Send PATCH Request for all NS Performance Monitoring Jobs 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -116,7 +116,7 @@ Send PATCH Request for all NS Performance Monitoring Jobs Send DELETE Request for all NS Performance Monitoring Jobs 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -125,7 +125,7 @@ Send DELETE Request for all NS Performance Monitoring Jobs Check Postcondition PmJob Exists Log Checking that Pm Job exists Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} @@ -186,7 +186,7 @@ Check HTTP Response Body PmJobs Do Not Contain reports GET individual NS Performance Job Log Trying to get a Pm Job present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -194,7 +194,7 @@ GET individual NS Performance Job GET individual NS Performance Job with invalid resource identifier Log Trying to perform a negative get, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -202,7 +202,7 @@ GET individual NS Performance Job with invalid resource identifier Send Delete request for individual NS Performance Job Log Trying to delete an existing PM Job Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -210,7 +210,7 @@ Send Delete request for individual NS Performance Job Send Delete request for individual NS Performance Job with invalid resource identifier Log Trying to perform a negative delete, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -218,7 +218,7 @@ Send Delete request for individual NS Performance Job with invalid resource iden Send Post request for individual NS Performance Job 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -226,7 +226,7 @@ Send Post request for individual NS Performance Job Send Put request for individual NS Performance Job 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -238,7 +238,7 @@ Send Patch request for individual NS Performance Job Log Trying to perform a PATCH Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/PmJobModifications.json PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} ${output}= Output response @@ -247,7 +247,7 @@ Send Patch request for individual NS Performance Job Check Postcondition NS Performance Job is not Created Log Trying to get a new Pm Job Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -275,7 +275,7 @@ Check HTTP Response Body Pm Job Identifier matches the requested Pm Job Get Individual Performance Report Log Trying to get a performance report present in the NFVO Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -283,21 +283,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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -307,7 +307,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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -317,7 +317,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_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -325,7 +325,7 @@ Send Delete request for Individual Performance Report GET all Performance Thresholds Log Trying to get all thresholds present in the NFVO Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -333,7 +333,7 @@ GET all Performance Thresholds GET Performance Thresholds with attribute-based filter Log Trying to get thresholds present in the NFVO 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_OK_Threshold} ${output}= Output response Set Suite Variable ${response} ${output} @@ -341,7 +341,7 @@ GET Performance Thresholds with attribute-based filter GET Performance Thresholds with invalid attribute-based filter Log Trying to get thresholds present in the NFVO 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_KO} ${output}= Output response Set Suite Variable ${response} ${output} @@ -349,14 +349,14 @@ GET Performance Thresholds with invalid attribute-based filter GET NS performance Thresholds with invalid resource endpoint Log Trying to get thresholds present in the NFVO 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/threshold ${output}= Output response Set Suite Variable ${response} ${output} Send Post Request Create new Performance Threshold Log Creating a new THreshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/CreateThresholdRequest.json @@ -367,7 +367,7 @@ Send Post Request Create new Performance Threshold Send PUT Request for all Performance Thresholds Log PUT THresholds - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds @@ -376,7 +376,7 @@ Send PUT Request for all Performance Thresholds Send PATCH Request for all Performance Thresholds Log PUT THresholds - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds @@ -385,7 +385,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_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -393,7 +393,7 @@ Send DELETE Request for all Performance Thresholds Check Postcondition Threshold Exists Log Checking that Threshold exists Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} @@ -409,7 +409,7 @@ Check HTTP Response Body Thresholds match the requested attribute-based filter GET Individual NS performance Threshold Log Trying to get a Threhsold present in the NFVO Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -417,28 +417,28 @@ GET Individual NS performance Threshold GET individual NS 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${erroneousThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual NS performance Threshold Log Trying to delete a Threhsold in the NFVO - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual NS performance Threshold with invalid resource identifier Log Trying to delete a Threhsold in the NFVO with invalid id - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${erroneousThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post request for individual NS 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_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -446,7 +446,7 @@ Send Post request for individual NS performance Threshold Send Put request for individual NS 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -458,7 +458,7 @@ Send Patch request for individual NS performance Threshold Log Trying to PUT threshold Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/ThresholdModifications.json PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${body} ${output}= Output response diff --git a/SOL005/NSPerformanceManagement-API/NotificationConsumer.robot b/SOL005/NSPerformanceManagement-API/NotificationConsumer.robot index d4efbea11..3f7aca724 100644 --- a/SOL005/NSPerformanceManagement-API/NotificationConsumer.robot +++ b/SOL005/NSPerformanceManagement-API/NotificationConsumer.robot @@ -1,68 +1,68 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library JSONLibrary -Library OperatingSystem -Library String -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -NS Performance Information Availability Notification - [Documentation] Test ID: 5.3.4.10.1 - ... Test title: NS Performance Information Availability Notification - ... Test objective: The objective is to test that NS Performance Information Availability Notification is delivered with success to the notification consumer - ... Pre-conditions: A NS performance job is created, and information availability notifications is available in the NFVO. - ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post NS Performance Information Availability Notification - Check HTTP Response Status Code Is 204 - -NS Threshold Crossed Notification - [Documentation] Test ID: 5.3.4.10.2 - ... Test title: NS Threshold Crossed Notification - ... Test objective: The objective is to test that NS Threshold Crossed Notification is delivered with success to the notification consumer - ... Pre-conditions: A NS performance job is created, and threshold crossed notifications is available in the NFVO. - ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post NS Threshold Crossed Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} - Integer response status 200 - Validate Json response body PmJob.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post NS Performance Information Availability Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body} = Get File jsons/PerformanceInformationAvailableNotification.json - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post NS Threshold Crossed Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body} = Get File jsons/ThresholdCrossedNotification.json - Post ${callbackResp} ${body} - ${outputResponse}= Output response +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Library String +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +NS Performance Information Availability Notification + [Documentation] Test ID: 5.3.4.10.1 + ... Test title: NS Performance Information Availability Notification + ... Test objective: The objective is to test that NS Performance Information Availability Notification is delivered with success to the notification consumer + ... Pre-conditions: A NS performance job is created, and information availability notifications is available in the NFVO. + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post NS Performance Information Availability Notification + Check HTTP Response Status Code Is 204 + +NS Threshold Crossed Notification + [Documentation] Test ID: 5.3.4.10.2 + ... Test title: NS Threshold Crossed Notification + ... Test objective: The objective is to test that NS Threshold Crossed Notification is delivered with success to the notification consumer + ... Pre-conditions: A NS performance job is created, and threshold crossed notifications is available in the NFVO. + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post NS Threshold Crossed Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + Integer response status 200 + Validate Json response body PmJob.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post NS Performance Information Availability Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body} = Get File jsons/PerformanceInformationAvailableNotification.json + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post NS Threshold Crossed Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body} = Get File jsons/ThresholdCrossedNotification.json + Post ${callbackResp} ${body} + ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/environment/variables.txt b/SOL005/NSPerformanceManagement-API/environment/variables.txt index ff91e2963..46ef3afbb 100644 --- a/SOL005/NSPerformanceManagement-API/environment/variables.txt +++ b/SOL005/NSPerformanceManagement-API/environment/variables.txt @@ -2,12 +2,12 @@ ${NFVO_HOST} localhost # Hostname of the NFVO ${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json ${apiRoot} / ${AUTH_USAGE} 1 -${NEG_AUTHORIZATION} Bearer negativetoken ${apiMajorVersion} v2 ${apiName} nspm ${FIELD_USAGE} 1 diff --git a/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot b/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot index 0637fe22a..c8da3d025 100644 --- a/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot @@ -1,109 +1,109 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Resource VNFPackageManagementKeywords.robot -Library JSONLibrary -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false - -*** Test Cases *** -Get Access configuration for external artifacts - [Documentation] Test ID: 5.3.5.10.1 - ... Test title: Get Access configuration for external artifacts - ... Test objective: The objective is to test the GET method reads the access configuration information that is used by the NFVO to get the content of external VNF package artifacts and perform a JSON schema and content validation of the collected data structure - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get access configuration information for external artifacts - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ExternalArtifactsAccessConfig - -Get Access configuration for external artifacts - Not Found - [Documentation] Test ID: 5.3.5.10.2 - ... Test title: Get Access configuration for external artifacts - Not Found - ... Test objective: The objective is to test that the retrieval of access configuration information that is used by the NFVO to get the content of external VNF package artifacts fails because resource is not present. - ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get access configuration information for external artifacts - Check HTTP Response Status Code Is 404 - Check HTTP Response Body Json Schema Is ProblemDetails - -PUT Access configuration for external artifacts - [Documentation] Test ID: 5.3.5.10.3 - ... Test title: Access configuration for external artifacts - ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. - ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Check Postcondition individual VNF Package is created - Send PUT Request to access configuration information for external artifacts - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ExternalArtifactsAccessConfig - -PUT Access configuration for external artifacts - Downloading - [Documentation] Test ID: 5.3.5.10.4 - ... Test title: Access configuration for external artifacts - Downloading - ... Test objective: The objective is to test that VNF package has been uploaded successfully previously, to indicate that the access configuration information has been stored successfully by the NFVO and the NFVO now starts downloading external artifacts. - ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Check Postcondition individual VNF Package is created - Send PUT Request to access configuration information for external artifacts - Check HTTP Response Status Code Is 202 - -PUT Access configuration for external artifacts - Conflict - [Documentation] Test ID: 5.3.5.10.5 - ... Test title: Access configuration for external artifacts - ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. - ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute is neither "CREATED" nor "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PUT Request to access configuration information for external artifacts - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -POST Access configuration for external artifacts - Method not implemented - [Documentation] Test ID: 5.3.5.10.6 - ... Test title: POST Access configuration for external artifacts - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create access configuration for external artifacts - ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send POST Request for access configuration for external artifacts - Check HTTP Response Status Code Is 405 - -PATCH Access configuration for external artifacts - Method not implemented - [Documentation] Test ID: 5.3.5.10.7 - ... Test title: PATCH Access configuration for external artifacts - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update access configuration for external artifacts - ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PATCH Request for access configuration for external artifacts - Check HTTP Response Status Code Is 405 - -DELETE Access configuration for external artifacts - Method not implemented - [Documentation] Test ID: 5.3.5.10.8 - ... Test title: DELETE Access configuration for external artifacts - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete access configuration for external artifacts - ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send DELETE Request for Access configuration for external artifacts +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false + +*** Test Cases *** +Get Access configuration for external artifacts + [Documentation] Test ID: 5.3.5.10.1 + ... Test title: Get Access configuration for external artifacts + ... Test objective: The objective is to test the GET method reads the access configuration information that is used by the NFVO to get the content of external VNF package artifacts and perform a JSON schema and content validation of the collected data structure + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get access configuration information for external artifacts + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ExternalArtifactsAccessConfig + +Get Access configuration for external artifacts - Not Found + [Documentation] Test ID: 5.3.5.10.2 + ... Test title: Get Access configuration for external artifacts - Not Found + ... Test objective: The objective is to test that the retrieval of access configuration information that is used by the NFVO to get the content of external VNF package artifacts fails because resource is not present. + ... Pre-conditions: none + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get access configuration information for external artifacts + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Access configuration for external artifacts + [Documentation] Test ID: 5.3.5.10.3 + ... Test title: Access configuration for external artifacts + ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. + ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Check Postcondition individual VNF Package is created + Send PUT Request to access configuration information for external artifacts + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ExternalArtifactsAccessConfig + +PUT Access configuration for external artifacts - Downloading + [Documentation] Test ID: 5.3.5.10.4 + ... Test title: Access configuration for external artifacts - Downloading + ... Test objective: The objective is to test that VNF package has been uploaded successfully previously, to indicate that the access configuration information has been stored successfully by the NFVO and the NFVO now starts downloading external artifacts. + ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Check Postcondition individual VNF Package is created + Send PUT Request to access configuration information for external artifacts + Check HTTP Response Status Code Is 202 + +PUT Access configuration for external artifacts - Conflict + [Documentation] Test ID: 5.3.5.10.5 + ... Test title: Access configuration for external artifacts + ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. + ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute is neither "CREATED" nor "ERROR" + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request to access configuration information for external artifacts + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Access configuration for external artifacts - Method not implemented + [Documentation] Test ID: 5.3.5.10.6 + ... Test title: POST Access configuration for external artifacts - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create access configuration for external artifacts + ... Pre-conditions: none + ... Reference: Clause 9.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for access configuration for external artifacts + Check HTTP Response Status Code Is 405 + +PATCH Access configuration for external artifacts - Method not implemented + [Documentation] Test ID: 5.3.5.10.7 + ... Test title: PATCH Access configuration for external artifacts - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update access configuration for external artifacts + ... Pre-conditions: none + ... Reference: Clause 9.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for access configuration for external artifacts + Check HTTP Response Status Code Is 405 + +DELETE Access configuration for external artifacts - Method not implemented + [Documentation] Test ID: 5.3.5.10.8 + ... Test title: DELETE Access configuration for external artifacts - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete access configuration for external artifacts + ... Pre-conditions: none + ... Reference: Clause 9.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for Access configuration for external artifacts Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/ApiVersion.robot b/SOL005/VNFPackageManagement-API/ApiVersion.robot index 5dc01749c..c3b82eec1 100644 --- a/SOL005/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL005/VNFPackageManagement-API/ApiVersion.robot @@ -132,70 +132,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot index 0b6441057..75dbfc62c 100644 --- a/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot @@ -1,107 +1,107 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Resource VNFPackageManagementKeywords.robot -Library JSONLibrary -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false - -*** Test Cases *** -Get Manifest in Individual VNF Package - [Documentation] Test ID: 5.3.5.11.1 - ... Test title: Get Manifest in Individual VNF Package - ... Test objective: The objective is to test that content of manifest within a NVF Package is read successfully. - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Manifest in Individual VNF Package in plainFormat - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is text/plain - -Get Manifest in Individual VNF Package with security information - [Documentation] Test ID: 5.3.5.11.2 - ... Test title: Get Manifest in Individual VNF Package with security information - ... Test objective: The objective is to test the retrieval of the Manifest in individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in zip format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Manifest in Individual VNF Package with security information - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get Manifest in Individual VNF Package - Not Acceptable - [Documentation] Test ID: 5.3.5.11.3 - ... Test title: Get Manifest in Individual VNF Package - Not Acceptable - ... Test objective: The objective is to test that the "Accept" header is not compatible with Content type "application/zip" but "incude_signature" is provided.\ - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Manifest in Individual VNF Package with unacceptable request - Check HTTP Response Status Code Is 406 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get Manifest in Individual VNF Package - Conflict - [Documentation] Test ID: 5.3.5.11.4 - ... Test title: Get Manifest in Individual VNF Package - Conflict - ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the resource. - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Manifest in Individual VNF Package in plainFormat - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -POST Manifest in Individual VNF Package - Method not implemented - [Documentation] Test ID: 5.3.5.11.5 - ... Test title: POST Manifest in Individual VNF Package - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create new Manifest - ... Pre-conditions: none - ... Reference: Clause 9.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send POST Request for Manifest in individual VNF Package - Check HTTP Response Status Code Is 405 - -PUT Manifest in Individual VNF Package - Method not implemented - [Documentation] Test ID: 5.3.5.11.6 - ... Test title: PUT Manifest in Individual VNF Package - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to modify a Manifest - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PUT Request for Manifest in individual VNF Package - Check HTTP Response Status Code Is 405 - -PATCH Manifest in Individual VNF Package - Method not implemented - [Documentation] Test ID: 5.3.5.11.7 - ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update a Manifest - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PATCH Request for Manifest in individual VNF Package - Check HTTP Response Status Code Is 405 - -DELETE Manifest in Individual VNF Package - Method not implemented - [Documentation] Test ID: 5.3.5.11.8 - ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete a Manifest - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send DELETE Request for Manifest in individual VNF Package +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false + +*** Test Cases *** +Get Manifest in Individual VNF Package + [Documentation] Test ID: 5.3.5.11.1 + ... Test title: Get Manifest in Individual VNF Package + ... Test objective: The objective is to test that content of manifest within a NVF Package is read successfully. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package in plainFormat + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get Manifest in Individual VNF Package with security information + [Documentation] Test ID: 5.3.5.11.2 + ... Test title: Get Manifest in Individual VNF Package with security information + ... Test objective: The objective is to test the retrieval of the Manifest in individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get Manifest in Individual VNF Package - Not Acceptable + [Documentation] Test ID: 5.3.5.11.3 + ... Test title: Get Manifest in Individual VNF Package - Not Acceptable + ... Test objective: The objective is to test that the "Accept" header is not compatible with Content type "application/zip" but "incude_signature" is provided.\ + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package with unacceptable request + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get Manifest in Individual VNF Package - Conflict + [Documentation] Test ID: 5.3.5.11.4 + ... Test title: Get Manifest in Individual VNF Package - Conflict + ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the resource. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package in plainFormat + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 5.3.5.11.5 + ... Test title: POST Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create new Manifest + ... Pre-conditions: none + ... Reference: Clause 9.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + +PUT Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 5.3.5.11.6 + ... Test title: PUT Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify a Manifest + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + +PATCH Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 5.3.5.11.7 + ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update a Manifest + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + +DELETE Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 5.3.5.11.8 + ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete a Manifest + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for Manifest in individual VNF Package Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot index 62fd52bc1..751754359 100644 --- a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot +++ b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot @@ -1,73 +1,73 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Resource VNFPackageManagementKeywords.robot -Library OperatingSystem -Library JSONLibrary -Library String -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -VNF Package Onboarding Notification - [Documentation] Test ID: 5.3.5.13.1 - ... Test title: VNF Package Onboarding Notification - ... Test objective: The objective is to test that VNF Package Onboarding Notification is delivered with success to the notification consumer - ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post VNF Package Onboarding Notification - Check HTTP Response Status Code Is 204 - -VNF Package Change Notification - [Documentation] Test ID: 5.3.5.13.2 - ... Test title: VNF Package Change Notification - ... Test objective: The objective is to test that VNF Package Change Notification is delivered with success to the notification consumer - ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post VNF Package Change Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body PkgmSubscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post VNF Package Onboarding Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 Parse the Descriptor File - ${template} = Get File jsons/VnfPackageOnboardingNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${Descriptor_ID} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post VNF Package Change Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 Parse the Descriptor File - ${template} = Get File jsons/VnfPackageChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${Descriptor_ID} - Post ${callbackResp} ${body} - ${outputResponse}= Output response +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot +Library OperatingSystem +Library JSONLibrary +Library String +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Package Onboarding Notification + [Documentation] Test ID: 5.3.5.13.1 + ... Test title: VNF Package Onboarding Notification + ... Test objective: The objective is to test that VNF Package Onboarding Notification is delivered with success to the notification consumer + ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post VNF Package Onboarding Notification + Check HTTP Response Status Code Is 204 + +VNF Package Change Notification + [Documentation] Test ID: 5.3.5.13.2 + ... Test title: VNF Package Change Notification + ... Test objective: The objective is to test that VNF Package Change Notification is delivered with success to the notification consumer + ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post VNF Package Change Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body PkgmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post VNF Package Onboarding Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${check_descriptors} == 1 Parse the Descriptor File + ${template} = Get File jsons/VnfPackageOnboardingNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${Descriptor_ID} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Package Change Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${check_descriptors} == 1 Parse the Descriptor File + ${template} = Get File jsons/VnfPackageChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${Descriptor_ID} + Post ${callbackResp} ${body} + ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot index 4a49bf0bc..4d4b7d5bc 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -1,200 +1,200 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Resource VNFPackageManagementKeywords.robot -Library JSONLibrary -Library OperatingSystem -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false - -*** Test Cases *** -Get VNF Package Artifact - [Documentation] Test ID: 5.3.5.12.1 - ... Test title: Get VNF Package Artifact - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter - [Documentation] Test ID: 5.3.5.12.2 - ... Test title: Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with exclude_all_mano_artifacts parameter - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter - [Documentation] Test ID: 5.3.5.12.3 - ... Test title: Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with exclude_all_non_mano_artifacts parameter - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter - [Documentation] Test ID: 5.3.5.12.4 - ... Test title: Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with select_non_mano_artifact_sets parameter - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get VNF Package Artifact with "include_signatures" parameter - [Documentation] Test ID: 5.3.5.12.5 - ... Test title: Get VNF Package Artifact with "include_signatures" parameter - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with include_signatures parameter - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get VNF Package Artifact with Range Request and NFVO supporting Range Requests - [Documentation] Test ID: 5.3.5.12.6 - ... Test title: Get VNF Package Artifact with Range Request and NFVO supporting Range Requests - ... Test objective: The objective is to test the GET request read the whole content of the archive containing the artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact - ... Post-Conditions: none - Get Artifact in VNF Package with Range Request - Check HTTP Response Status Code Is 206 - Check HTTP Response Header Content-Range Is Present and Matches the requested range - Check HTTP Response Header Content-Length Is Present and Matches the requested range length - -Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" - [Documentation] Test ID: 5.3.5.12.7 - ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifacts" - [Documentation] Test ID: 5.3.5.12.8 - ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get VNF Package Artifact with invalid URI parameters undifend select_non_mano_artifact_sets - [Documentation] Test ID: 5.3.5.12.9 - ... Test title: Get VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with select_non_mano_artifact_sets parameter - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get VNF Package Artifact with conflict due to onboarding state - [Documentation] Test ID: 5.3.5.12.10 - ... Test title: Get VNF Package Artifact with conflict due to onboarding state - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - GET Artifact of VNF Package in onboarding state different from ONBOARDED - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET VNF Package Artifact with invalid Range Request - [Documentation] Test ID: 5.3.5.12.11 - ... Test title: GET VNF Package Artifact with invalid Range Request - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when using a range request that does not match any available byte range in the file. - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact - ... Post-Conditions: none - GET VNF Package Artifact with invalid Range Request - Check HTTP Response Status Code Is 416 - Check HTTP Response Body Json Schema Is ProblemDetails - -POST VNF Package Artifact - Method not implemented - [Documentation] Test ID: 5.3.5.12.12 - ... Test title: POST VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact - ... Pre-conditions: none - ... Reference: Clause 9.4.5a.3.1 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send POST Request for VNF Package Artifact - Check HTTP Response Status Code Is 405 - -PUT VNF Package Artifact - Method not implemented - [Documentation] Test ID: 5.3.5.12.13 - ... Test title: PUT VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.3 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PUT Request for VNF Package Artifact - Check HTTP Response Status Code Is 405 - -PATCH VNF Package Artifact - Method not implemented - [Documentation] Test ID: 5.3.5.12.14 - ... Test title: PATCH VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.4 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PATCH Request for VNF Package Artifact - Check HTTP Response Status Code Is 405 - -DELETE VNF Package Artifact - Method not implemented - [Documentation] Test ID: 5.3.5.12.15 - ... Test title: DELETE VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send DELETE Request for VNF Package Artifact +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot +Library JSONLibrary +Library OperatingSystem +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false + +*** Test Cases *** +Get VNF Package Artifact + [Documentation] Test ID: 5.3.5.12.1 + ... Test title: Get VNF Package Artifact + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter + [Documentation] Test ID: 5.3.5.12.2 + ... Test title: Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_mano_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter + [Documentation] Test ID: 5.3.5.12.3 + ... Test title: Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_non_mano_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter + [Documentation] Test ID: 5.3.5.12.4 + ... Test title: Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with select_non_mano_artifact_sets parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "include_signatures" parameter + [Documentation] Test ID: 5.3.5.12.5 + ... Test title: Get VNF Package Artifact with "include_signatures" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with include_signatures parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with Range Request and NFVO supporting Range Requests + [Documentation] Test ID: 5.3.5.12.6 + ... Test title: Get VNF Package Artifact with Range Request and NFVO supporting Range Requests + ... Test objective: The objective is to test the GET request read the whole content of the archive containing the artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + Get Artifact in VNF Package with Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Response Header Content-Range Is Present and Matches the requested range + Check HTTP Response Header Content-Length Is Present and Matches the requested range length + +Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" + [Documentation] Test ID: 5.3.5.12.7 + ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifacts" + [Documentation] Test ID: 5.3.5.12.8 + ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get VNF Package Artifact with invalid URI parameters undifend select_non_mano_artifact_sets + [Documentation] Test ID: 5.3.5.12.9 + ... Test title: Get VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with select_non_mano_artifact_sets parameter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get VNF Package Artifact with conflict due to onboarding state + [Documentation] Test ID: 5.3.5.12.10 + ... Test title: Get VNF Package Artifact with conflict due to onboarding state + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Artifact of VNF Package in onboarding state different from ONBOARDED + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET VNF Package Artifact with invalid Range Request + [Documentation] Test ID: 5.3.5.12.11 + ... Test title: GET VNF Package Artifact with invalid Range Request + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when using a range request that does not match any available byte range in the file. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + GET VNF Package Artifact with invalid Range Request + Check HTTP Response Status Code Is 416 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST VNF Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.5.12.12 + ... Test title: POST VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact + ... Pre-conditions: none + ... Reference: Clause 9.4.5a.3.1 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PUT VNF Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.5.12.13 + ... Test title: PUT VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.3 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PATCH VNF Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.5.12.14 + ... Test title: PATCH VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.4 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + +DELETE VNF Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.5.12.15 + ... Test title: DELETE VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for VNF Package Artifact Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 9473c3fbf..389a9bf59 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -17,7 +17,7 @@ Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -49,7 +49,7 @@ Check HTTP Response Body Does Not Contain checksum 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -64,7 +64,7 @@ Check HTTP Response Body VnfPkgsInfo Matches the requested Attribute-Based Filte 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -73,7 +73,7 @@ Get all VNF Packages with malformed authorization token Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting authentication Log The GET method queries using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} - Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} + Set Headers {"${AUTHORIZATION_HEADER}": "${BAD_AUTHORIZATION_TOKEN}"} Log Execute Query and validate response REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response @@ -91,7 +91,7 @@ Get all VNF Packages without authorization token 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -112,7 +112,7 @@ Check HTTP Response Body VnfPkgsInfo Matches the requested all_fields selector 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -131,7 +131,7 @@ GET VNF Packages with fields attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -150,7 +150,7 @@ GET VNF Packages with exclude_fields attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -168,7 +168,7 @@ Check HTTP Response Body vnfPkgsInfo Matches the requested exclude_fields select 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -178,7 +178,7 @@ Send Post Request to create new VNF Package Resource Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body} = Get File jsons/CreateVnfPkgInfoRequest.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -231,7 +231,7 @@ Match the Response Attributes of vnfPkgInfo with Descriptors 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} @@ -241,7 +241,7 @@ Check Postcondition VNF Package Resource Exists 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -249,7 +249,7 @@ Send PUT Request for all VNF Packages 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -257,7 +257,7 @@ Send PATCH Request for all VNF Packages 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -265,7 +265,7 @@ Send DELETE Request for all VNF Packages 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -278,7 +278,7 @@ Check HTTP Response Body vnfPkgInfo Identifier matches the requested VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -286,7 +286,7 @@ GET Individual VNF Package with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -294,7 +294,7 @@ Send POST Request for individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -304,7 +304,7 @@ Send PATCH to disable Individual VNF Package Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body}= Get File jsons/VnfPkgInfoModificationsDisabled.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -319,7 +319,7 @@ Send PATCH to enable Individual VNF Package Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body}= Get File jsons/VnfPkgInfoModifications.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -327,21 +327,21 @@ Send PATCH to enable Individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -353,7 +353,7 @@ Check Postcondition VNF Package Exists Send DELETE Request for Individual VNF Package used for instantiated VNF instances 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${instantiatedVnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -361,7 +361,7 @@ Send DELETE Request for Individual VNF Package used for instantiated VNF instanc 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -369,7 +369,7 @@ Get VNFD in Individual VNF Package in Zip Format 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -381,7 +381,7 @@ Check HTTP Response Header Content-Type Is Any of 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -390,7 +390,7 @@ Get VNFD in Individual VNF Package with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -399,7 +399,7 @@ Get VNFD in Individual VNF Package with conflict due to onboarding state Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -407,7 +407,7 @@ Get VNFD in Individual VNF Package with conflict due to onboarding state 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -415,7 +415,7 @@ Send POST Request for VNFD in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -423,7 +423,7 @@ Send PUT Request for VNFD in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -431,7 +431,7 @@ Send PATCH Request for VNFD in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -439,7 +439,7 @@ Send DELETE Request for VNFD in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -453,7 +453,7 @@ GET Individual VNF Package 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 {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${range}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -462,7 +462,7 @@ GET Individual VNF Package Content with explicit Range Request Log Trying to get a VNF Package Content using RANGE using an NFVO that can handle it Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${range}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -485,7 +485,7 @@ GET Individual VNF Package Content with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -493,7 +493,7 @@ GET Individual VNF Package Content with invalid Range Request 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -501,7 +501,7 @@ GET Individual VNF Package Content with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -509,7 +509,7 @@ GET Content for VNF Package in onboarding state different from ONBOARDED 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -517,14 +517,14 @@ Send POST Request for individual VNF Package Content 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} Send PUT Request to upload VNF Package Content Log Trying to perform a PUT. This method upload the content of a NSD - Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False + Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} verify=False ${body}= Get Binary File ${contentZipVnfPackage} ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${newVnfPackageId}/package_content data=${body} Should Be Empty ${response.text} @@ -535,13 +535,13 @@ Send PUT Request to upload VNF Package Content 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 Log Trying to perform a PUT. This method upload the content of a NSD - Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "Authorization": "${AUTHORIZATION}"} verify=False + Create Session nbi ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} headers={"Accept": "${ACCEPT_ZIP}", "Content-Type": "application/zip", "${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} verify=False ${body}= Get Binary File ${contentZipVnfPackage} ${response}= Put Request nbi ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${creatingVnfPackageId}/package_content data=${body} Should Be Empty ${response.text} @@ -551,7 +551,7 @@ Send PUT Request to upload VNF Package Content with conflict due to onboarding s 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -559,21 +559,21 @@ Send PATCH Request for individual VNF Package Content 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageOctetStreamId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -582,7 +582,7 @@ GET Individual VNF Package Artifact with Range Request Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -592,21 +592,21 @@ GET Individual VNF Package Artifact with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -614,7 +614,7 @@ GET Artifact for VNF Package in onboarding state different from ONBOARDED 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -622,7 +622,7 @@ Send POST Request for individual VNF Package Artifact 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -630,7 +630,7 @@ Send PUT Request for individual VNF Package Artifact 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -638,7 +638,7 @@ Send PATCH Request for individual VNF Package Artifact 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -646,7 +646,7 @@ Send DELETE Request for individual VNF Package Artifact Send POST Request to upload VNF Package Content from URI Log Trying to perform a POST. The POST method provides the information for the NFVO to get the content of a VNF package. Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/UploadVnfPkgFromUriRequest.json ${body}= Format String ${template} vnfPkgUri=${vnfPkgUri} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${body} @@ -656,7 +656,7 @@ Send POST Request to upload VNF Package Content from URI Send POST Request to upload VNF Package Content from URI with conflict due to onboarding state Log Trying to perform a POST. The POST method provides the information for the NFVO to get the content of a VNF package. Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/UploadVnfPkgFromUriRequest.json ${body}= Format String ${template} vnfPkgUri=${vnfPkgUri} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${creatingVnfPkgViaUriId}/package_content/upload_from_uri ${body} @@ -666,7 +666,7 @@ Send POST Request to upload VNF Package Content from URI with conflict due to on 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${output}= Output response Set Suite Variable ${response} ${output} @@ -674,7 +674,7 @@ Send GET Request for individual VNF Package Content from URI 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${output}= Output response Set Suite Variable ${response} ${output} @@ -682,7 +682,7 @@ Send PUT Request for individual VNF Package Content from URI 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${output}= Output response Set Suite Variable ${response} ${output} @@ -690,7 +690,7 @@ Send PATCH Request for individual VNF Package Content from URI 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${output}= Output response Set Suite Variable ${response} ${output} @@ -698,7 +698,7 @@ Send DELETE Request for individual VNF Package Content from URI 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -706,7 +706,7 @@ Get all VNF Package Subscriptions 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} @@ -714,7 +714,7 @@ Get VNF Package Subscriptions with attribute-based filters 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} @@ -722,7 +722,7 @@ Get VNF Package Subscriptions with invalid attribute-based filters 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -734,7 +734,7 @@ Send Post Request for VNF Package Subscription 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_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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -747,7 +747,7 @@ Send Post Request for Duplicated VNF Package Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/subscriptions.json ${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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -755,7 +755,7 @@ Send Post Request for Duplicated VNF Package Subscription 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -763,7 +763,7 @@ Send Put Request for VNF Package Subscriptions 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -771,7 +771,7 @@ Send Patch Request for VNF Package Subscriptions 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -789,7 +789,7 @@ Check Postcondition VNF Package Subscription Is Set Log Check Postcondition subscription exist Log Trying to get the subscription Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${location} == Location ... REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} Run Keyword If ${location} == Location @@ -800,7 +800,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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${response['headers']['Location']} Integer response status 200 Log Received a 200 OK as expected @@ -818,7 +818,7 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -826,7 +826,7 @@ Get Individual VNF Package Subscription 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -834,7 +834,7 @@ GET individual VNF Package Subscription with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -847,19 +847,19 @@ Check Postcondition VNF Package Subscription is Deleted Send Delete request for individual VNF Package Subscription with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -868,7 +868,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_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -887,7 +887,7 @@ Check Postcondition VNF Package Subscription is Unmodified (Implicit) 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -965,14 +965,14 @@ Check HTTP Response Header Contains Location Should Not Be Empty ${linkURL} Get access configuration information for external artifacts - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${output}= Output response Set Suite Variable ${response} ${output} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/ExternalArtifactsAccessConfig.json REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${body} ${output}= Output response @@ -987,7 +987,7 @@ Check Postcondition individual VNF Package is created 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${output}= Output response Set Suite Variable ${response} ${output} @@ -995,7 +995,7 @@ Send POST Request for access configuration for external artifacts 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${output}= Output response Set Suite Variable ${response} ${output} @@ -1003,14 +1003,14 @@ Send PATCH Request for access configuration for external artifacts 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1018,14 +1018,14 @@ Get Manifest in Individual VNF Package in plainFormat 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1033,7 +1033,7 @@ Get Manifest in Individual VNF Package with unacceptable request 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1041,7 +1041,7 @@ Send POST Request for manifest in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1049,7 +1049,7 @@ Send PUT Request for manifest in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1057,7 +1057,7 @@ Send PATCH Request for manifest in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1065,7 +1065,7 @@ Send DELETE Request for manifest in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1073,7 +1073,7 @@ Get Artifact in VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1081,7 +1081,7 @@ Get Artifact in VNF Package with exclude_all_mano_artifacts parameter 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1090,7 +1090,7 @@ Get Artifact in VNF Package with select_non_mano_artifact_sets parameter Log Trying to get Artifact in VNF Package with security certificates 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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} @@ -1098,7 +1098,7 @@ Get Artifact in VNF Package with select_non_mano_artifact_sets parameter 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1107,7 +1107,7 @@ Get Artifact in VNF Package with Range Request Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1115,7 +1115,7 @@ Get Artifact in VNF Package with Range Request Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets Log Trying to get Artifact in VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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} @@ -1123,14 +1123,14 @@ Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_m Get Artifact in VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts Log Trying to get Artifact in VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1140,7 +1140,7 @@ GET VNF Package Artifact with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1148,7 +1148,7 @@ GET VNF Package Artifact with invalid Range Request 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1156,7 +1156,7 @@ Send POST Request for VNF Package Artifact 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1164,7 +1164,7 @@ Send PUT Request for VNF Package Artifact 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1172,7 +1172,7 @@ Send PATCH Request for VNF Package Artifact 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 948974169..8846ff677 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -3,12 +3,13 @@ ${NFVO_HOST} localhost # Hostname of the NFVO ${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json ${apiRoot} / ${AUTH_USAGE} 1 -${NEG_AUTHORIZATION} Bearer negativetoken +${NEG_AUTHORIZATION_TOKEN} Bearer negativetoken ${apiMajorVersion} v2 ${apiName} vnfpkgm ${FIELD_USAGE} 1 @@ -78,7 +79,7 @@ ${POS_FILTER} vnfdId=41fdd38a-3d4c-465c-83e0-f80e014425f8&vnfProvider=NXW ${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field ${CAN_FILTER} 1 # NFVO in able to use filters when retrieving VNF Packages ${fields} softwareImages,additionalArtifacts -${BAD_AUTHORIZATION} Bear sometoken +${BAD_AUTHORIZATION_TOKEN} Bear sometoken ${VAR_SEPERATOR} & ${vnfPkgViaUriId} 788106a2-d692-44f3-a86d-384f0ce35e42 -- GitLab From bf39094b9294ff8e16a082185850d857a6a10629 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Fri, 12 Feb 2021 10:51:20 +0100 Subject: [PATCH 283/580] =?UTF-8?q?updated=20authorization=20header=20and?= =?UTF-8?q?=20token=20use=20in=20SOL002=C3=B9=20v2.7.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SOL002/VNFConfiguration-API/ApiVersion.robot | 20 +- .../VNFConfiguration-API/Configuration.robot | 12 +- .../environment/variables.txt | 3 +- SOL002/VNFFaultManagement-API/Alarms.robot | 34 +-- .../VNFFaultManagement-API/ApiVersion.robot | 20 +- .../EscalatePerceivedSeverityTask.robot | 12 +- .../IndividualAlarm.robot | 16 +- .../IndividualSubscription.robot | 16 +- .../NotificationConsumer.robot | 184 +++++++------- .../Subscriptions.robot | 40 +-- .../environment/variables.txt | 3 +- SOL002/VNFIndicator-API/ApiVersion.robot | 20 +- .../IndividualSubscription.robot | 14 +- .../IndividualVNFindicator.robot | 24 +- .../NoificationConsumer.robot | 90 +++---- SOL002/VNFIndicator-API/Subscriptions.robot | 22 +- SOL002/VNFIndicator-API/VNFIndicators.robot | 20 +- .../VnfIndicatorsInVnfInstanceId.robot | 16 +- .../environment/variables.txt | 7 +- .../ApiVersion.robot | 20 +- .../CancelOperationTask.robot | 2 +- .../ChangeExternalVNFConnectivityTask.robot | 2 +- .../ChangeVNFFlavourTask.robot | 2 +- .../HealVNFTask.robot | 2 +- .../InstantiateVNFTask.robot | 2 +- .../NotificationConsumer.robot | 176 +++++++------- .../OperateVNFTask.robot | 2 +- .../RetryOperationTask.robot | 2 +- .../RollbackOperationTask.robot | 2 +- .../ScaleVNFTask.robot | 2 +- .../ScaleVNFToLevelTask.robot | 2 +- .../TerminateVNFTask.robot | 2 +- .../VnfLcmOperationKeywords.robot | 228 +++++++++--------- .../environment/variables.txt | 3 +- .../ApiVersion.robot | 20 +- .../IndividualPmJob.robot | 14 +- .../IndividualReport.robot | 14 +- .../IndividualThreshold.robot | 14 +- .../NotificationConsumer.robot | 142 +++++------ .../VNFPerformanceManagement-API/PMJobs.robot | 28 +-- .../Thresholds.robot | 18 +- .../VNFPerformanceManagementKeywords.robot | 34 +-- .../environment/variables.txt | 3 +- 43 files changed, 657 insertions(+), 652 deletions(-) diff --git a/SOL002/VNFConfiguration-API/ApiVersion.robot b/SOL002/VNFConfiguration-API/ApiVersion.robot index 108cbe0d9..f3afab525 100644 --- a/SOL002/VNFConfiguration-API/ApiVersion.robot +++ b/SOL002/VNFConfiguration-API/ApiVersion.robot @@ -131,70 +131,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFConfiguration-API/Configuration.robot b/SOL002/VNFConfiguration-API/Configuration.robot index a8ccf57c9..69239787a 100644 --- a/SOL002/VNFConfiguration-API/Configuration.robot +++ b/SOL002/VNFConfiguration-API/Configuration.robot @@ -107,7 +107,7 @@ Get VNF configuration Log Query VNF The GET method queries information about a configuration. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/configuration ${output}= Output response @@ -117,7 +117,7 @@ Send VNF configuration log Trying to perform a PATCH. This method modifies the configuration Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/vnfConfigModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/configuration ${body} ${output}= Output response @@ -158,7 +158,7 @@ Send Duplicated VNF configuration Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"If-Match": "${etag}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/vnfConfigModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/configuration ${body} ${output}= Output response @@ -167,7 +167,7 @@ Send Duplicated VNF configuration Send POST Request for VNF Configuration log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/configuration ${output}= Output response Set Suite Variable ${response} ${output} @@ -175,7 +175,7 @@ Send POST Request for VNF Configuration Send PUT Request for VNF Configuration log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/configuration ${output}= Output response Set Suite Variable ${response} ${output} @@ -183,7 +183,7 @@ Send PUT Request for VNF Configuration Send DELETE Request for VNF Configuration log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/configuration ${output}= Output response Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL002/VNFConfiguration-API/environment/variables.txt b/SOL002/VNFConfiguration-API/environment/variables.txt index 0cd66a08c..0d4c026b1 100644 --- a/SOL002/VNFConfiguration-API/environment/variables.txt +++ b/SOL002/VNFConfiguration-API/environment/variables.txt @@ -10,7 +10,8 @@ ${EM-VNF_SCHEMA} https ${ACCEPT} application/json ${AUTH_USAGE} 1 -${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE} application/json diff --git a/SOL002/VNFFaultManagement-API/Alarms.robot b/SOL002/VNFFaultManagement-API/Alarms.robot index b2c226c55..f8827ba03 100644 --- a/SOL002/VNFFaultManagement-API/Alarms.robot +++ b/SOL002/VNFFaultManagement-API/Alarms.robot @@ -261,35 +261,35 @@ GET information about multiple alarms with attribute-based filter "probableCause POST Alarms Task log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Alarms Task log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Alarms Task log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Alarms Task log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Alarms Task Log Query VNF The GET method queries information about multiple alarms. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response @@ -297,7 +297,7 @@ GET Alarms Task GET Alarms Task with filter Log Query VNF The GET method queries information about multiple alarms with filters. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${alarm_filter}=${managedObjectId} ${outputResponse}= Output response @@ -305,7 +305,7 @@ GET Alarms Task with filter GET Alarms Task with invalid filter Log Query VNF The GET method queries information about multiple alarms with filters. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${invalid_alarm_filter}=${managedObjectId} ${outputResponse}= Output response @@ -313,28 +313,28 @@ GET Alarms Task with invalid filter GET Alarms Task with all_fields attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with exclude_default attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with fields attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} GET Alarms Task with exclude_fields attribute selector Log Query VNF The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -364,7 +364,7 @@ Check HTTP Response Header Contain Link GET Alarms Task with filter "id" Log Query VNF The GET method queries information about multiple alarms with filters "id". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?id=${alarmId} ${outputResponse}= Output response @@ -376,7 +376,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba GET Alarms Task with filter "vnfcInstanceIds" Log Query VNF The GET method queries information about multiple alarms with filters "vnfcInstanceIds". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?vnfcInstanceIds=${vnfcInstanceIds} ${outputResponse}= Output response @@ -390,7 +390,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba GET Alarms Task with filter "rootCauseFaultyResource_faultyResourceType" Log Query VNF The GET method queries information about multiple alarms with filters "rootCauseFaultyResource.faultyResourceType". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?rootCauseFaultyResource.faultyResourceType=${faultyResourceType} ${outputResponse}= Output response @@ -404,7 +404,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba GET Alarms Task with filter "eventType" Log Query VNF The GET method queries information about multiple alarms with filters "eventType". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?eventType=${eventType} ${outputResponse}= Output response @@ -418,7 +418,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba GET Alarms Task with filter "perceivedSeverity" Log Query VNF The GET method queries information about multiple alarms with filters "perceivedSeverity". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?perceivedSeverity=${perceivedSeverity} ${outputResponse}= Output response @@ -432,7 +432,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba GET Alarms Task with filter "probableCause" Log Query VNF The GET method queries information about multiple alarms with filters "probableCause". Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?probableCause=${probableCause} ${outputResponse}= Output response diff --git a/SOL002/VNFFaultManagement-API/ApiVersion.robot b/SOL002/VNFFaultManagement-API/ApiVersion.robot index 48a593c97..72ae2f9b3 100644 --- a/SOL002/VNFFaultManagement-API/ApiVersion.robot +++ b/SOL002/VNFFaultManagement-API/ApiVersion.robot @@ -133,70 +133,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot index 63f0d49d9..c06950a48 100644 --- a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot +++ b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot @@ -69,38 +69,38 @@ DELETE Escalate the perceived severity - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} Integer response status 200 POST escalate severity Log escalate the perceived severity of an alarm with the VNFM Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId}/escalate ${PerceivedSeverity} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET escalate severity log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId}/escalate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT escalate severity log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId}/escalate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH escalate severity log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId}/escalate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE escalate severity log Trying to perform a DELETE. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId}/escalate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot index 97c96dc56..1d9d1e7ab 100644 --- a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot @@ -117,14 +117,14 @@ GET information about an individual alarm - Not Found POST Alarm Task log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Alarm Task log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/alarmModifications.json Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response @@ -134,7 +134,7 @@ PATCH Alarm Task Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Set Headers {"If-Match": "${original_etag[0]}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/alarmModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response @@ -143,7 +143,7 @@ PATCH Alarm Task with wrong precondition log Trying to perform a PATCH. This method modifies an individual alarm resource Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/alarmModifications.json GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${origOutput}= Output response @@ -154,14 +154,14 @@ PATCH Alarm Task with wrong precondition DELETE Alarm Task log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET Alarm Task Log Query VNF The GET method queries information about individual alarm. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${etag} Output response headers ETag @@ -171,7 +171,7 @@ GET Alarm Task GET Alarm Task with filter Log Query VNF The GET method queries information about individual alarm with filters. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${alarm_filter}=${managedObjectId} ${outputResponse}= Output response @@ -179,7 +179,7 @@ GET Alarm Task with filter GET Alarm Task with invalid filter Log Query VNF The GET method queries information about individual alarm with filters. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${invalid_alarm_filter}=${managedObjectId} ${outputResponse}= Output response diff --git a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot index 6189b4e04..39c594b6f 100644 --- a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot @@ -86,41 +86,41 @@ GET Information about an individual subscription - Not Found *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Post Create individual subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get individual subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get individual subscription - filter Log Get the list of active individual subscription using a filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get individual subscription - invalid filter Log Get the list of active individual subscription using an invalid filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT individual subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -128,14 +128,14 @@ PATCH individual subscription log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE individual subscription log Try to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFFaultManagement-API/NotificationConsumer.robot b/SOL002/VNFFaultManagement-API/NotificationConsumer.robot index 039fcec98..f03722d4e 100644 --- a/SOL002/VNFFaultManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFFaultManagement-API/NotificationConsumer.robot @@ -1,93 +1,93 @@ -*** Settings *** -Library String -Library OperatingSystem -Resource environment/variables.txt -Library JSONLibrary -Library JSONSchemaLibrary schemas/ -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -VNF Fault Alarm Notification - [Documentation] Test ID: 6.3.4.8.1 - ... Test title: VNF Fault Alarm Notification - ... Test objective: The objective is to test that VNF Fault Alarm Notification is delivered with success to the notification consumer - ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post Alarm Notification - Check HTTP Response Status Code Is 204 - -VNF Fault Alarm Cleared Notification - [Documentation] Test ID: 6.3.4.8.2 - ... Test title: VNF Fault Alarm Cleared Notification - ... Test objective: The objective is to test that VNF Fault Alarm Cleared Notification is delivered with success to the notification consumer - ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post Alarm Cleared Notification - Check HTTP Response Status Code Is 204 - -VNF Fault Alarm List Rebuilt Notification - [Documentation] Test ID: 6.3.4.8.3 - ... Test title: VNF Fault List Rebuilt Alarm List Rebuilt Notification - ... Test objective: The objective is to test that VNF Fault Alarm List Rebuilt Notification is delivered with success to the notification consumer - ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post Alarm List Rebuilt Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body FmSubscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post Alarm Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/AlarmNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Alarm Cleared Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/AlarmClearedNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Alarm List Rebuilt Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/AlarmListRebuiltNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response +*** Settings *** +Library String +Library OperatingSystem +Resource environment/variables.txt +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Fault Alarm Notification + [Documentation] Test ID: 6.3.4.8.1 + ... Test title: VNF Fault Alarm Notification + ... Test objective: The objective is to test that VNF Fault Alarm Notification is delivered with success to the notification consumer + ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Alarm Notification + Check HTTP Response Status Code Is 204 + +VNF Fault Alarm Cleared Notification + [Documentation] Test ID: 6.3.4.8.2 + ... Test title: VNF Fault Alarm Cleared Notification + ... Test objective: The objective is to test that VNF Fault Alarm Cleared Notification is delivered with success to the notification consumer + ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Alarm Cleared Notification + Check HTTP Response Status Code Is 204 + +VNF Fault Alarm List Rebuilt Notification + [Documentation] Test ID: 6.3.4.8.3 + ... Test title: VNF Fault List Rebuilt Alarm List Rebuilt Notification + ... Test objective: The objective is to test that VNF Fault Alarm List Rebuilt Notification is delivered with success to the notification consumer + ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Alarm List Rebuilt Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body FmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Alarm Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/AlarmNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm Cleared Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/AlarmClearedNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm List Rebuilt Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/AlarmListRebuiltNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index df7d5d84d..0783ff138 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -318,7 +318,7 @@ Post Create subscription Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${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} @@ -329,7 +329,7 @@ Post Create subscription # 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}"} + # Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} # ${template}= Get File jsons/fmSubscriptionRequest.json # ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} # Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -340,7 +340,7 @@ Post Create subscription # 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}"} + # Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} # ${template}= Get File jsons/fmSubscriptionRequest.json # ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} # Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -350,7 +350,7 @@ Get subscriptions Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response @@ -358,63 +358,63 @@ Get subscriptions Get subscriptions - filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions - invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} PUT subscriptions log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH subscriptions log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE subscriptions log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -438,7 +438,7 @@ Check HTTP Response Header Contain Link Get subscriptions with filter "id" Log Get the list of active subscriptions using a filter "id" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?id=${subscription_id} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -449,7 +449,7 @@ Check PostCondition HTTP Response Body Subscription Matches the requested attrib Get subscriptions with filter "filter_notificationTypes" Log Get the list of active subscriptions using a filter "filter.notificationTypes" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.notificationTypes=${notification_type} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -462,7 +462,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_faultyResourceTypes" Log Get the list of active subscriptions using a filter "filter.faultyResourceTypes" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.faultyResourceTypes=${faultyResourceType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -475,7 +475,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_perceivedSeverities" Log Get the list of active subscriptions using a filter "filter.perceivedSeverities" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.perceivedSeverities=${perceivedSeverity} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -488,7 +488,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_eventTypes" Log Get the list of active subscriptions using a filter "filter.eventTypes" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.eventTypes=${eventType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -501,7 +501,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_probableCauses" Log Get the list of active subscriptions using a filter "filter.probableCauses" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.probableCauses=${probableCause} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -513,7 +513,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Check Postcondition resource exists Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 diff --git a/SOL002/VNFFaultManagement-API/environment/variables.txt b/SOL002/VNFFaultManagement-API/environment/variables.txt index 7eb09910b..8a8be2d2b 100644 --- a/SOL002/VNFFaultManagement-API/environment/variables.txt +++ b/SOL002/VNFFaultManagement-API/environment/variables.txt @@ -2,7 +2,8 @@ ${VNFM_HOST} localhost # Hostname of the VNFM ${VNFM_PORT} 8080 # Listening port of the VNFM ${VNFM_SCHEMA} https -${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${ACCEPT} application/json ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 diff --git a/SOL002/VNFIndicator-API/ApiVersion.robot b/SOL002/VNFIndicator-API/ApiVersion.robot index a89c0b19d..6ba83e5f0 100644 --- a/SOL002/VNFIndicator-API/ApiVersion.robot +++ b/SOL002/VNFIndicator-API/ApiVersion.robot @@ -133,70 +133,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFIndicator-API/IndividualSubscription.robot b/SOL002/VNFIndicator-API/IndividualSubscription.robot index 68e5bb49d..1e6d3f311 100644 --- a/SOL002/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL002/VNFIndicator-API/IndividualSubscription.robot @@ -97,7 +97,7 @@ POST Individual VNF Indicator Subscription - Method not implemented Get Individual VNF Indicator Subscription Log Trying to get a given subscription identified by subscriptionId Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -105,7 +105,7 @@ Get Individual VNF Indicator Subscription GET Individual VNF Indicator 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -113,7 +113,7 @@ GET Individual VNF Indicator Subscription with invalid resource identifier Send Delete Request for Individual VNF Indicator 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -121,14 +121,14 @@ Send Delete Request for Individual VNF Indicator Subscription Send Delete Request for Individual VNF Indicator Subscription with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post Request for Individual VNF Indicator Subscription Log Trying to create a new subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -136,7 +136,7 @@ Send Post Request for Individual VNF Indicator Subscription Send Put Request for Individual VNF Indicator Subscription 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -146,7 +146,7 @@ Send Put Request for Individual VNF Indicator Subscription Send Patch Request for Individual VNF Indicator Subscription Log Trying to create a new subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} diff --git a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot index 437cb6f3a..206a72b1c 100644 --- a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot @@ -159,7 +159,7 @@ DELETE Individual Performance Indicator - Method not implemented Get Individual Indicator for a VNF instance Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -167,7 +167,7 @@ Get Individual Indicator for a VNF instance Get Individual Indicator for a VNF instance with invalid indicator identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${erroneousIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -175,7 +175,7 @@ Get Individual Indicator for a VNF instance with invalid indicator identifier Send POST Request for individual indicator in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -183,7 +183,7 @@ Send POST Request for individual indicator in VNF instance Send PUT Request for individual indicator in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -191,7 +191,7 @@ Send PUT Request for individual indicator in VNF instance Send PATCH Request for individual indicator in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -199,7 +199,7 @@ Send PATCH Request for individual indicator in VNF instance Send DELETE Request for individual indicator in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -234,7 +234,7 @@ Check HTTP Response Body Includes Requested VNF Instance ID Get Individual Indicator Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -242,7 +242,7 @@ Get Individual Indicator Get Individual Indicator with invalid indicator identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${erroneousIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -250,7 +250,7 @@ Get Individual Indicator with invalid indicator identifier Send POST Request for individual indicator 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -258,7 +258,7 @@ Send POST Request for individual indicator Send PUT Request for individual indicator 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -266,7 +266,7 @@ Send PUT Request for individual indicator Send PATCH Request for individual indicator 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -274,7 +274,7 @@ Send PATCH Request for individual indicator Send DELETE Request for individual indicator 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/NoificationConsumer.robot b/SOL002/VNFIndicator-API/NoificationConsumer.robot index 1f6b1cb25..cb11aa11e 100644 --- a/SOL002/VNFIndicator-API/NoificationConsumer.robot +++ b/SOL002/VNFIndicator-API/NoificationConsumer.robot @@ -1,46 +1,46 @@ -*** Settings *** -Library String -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Library OperatingSystem -Library REST ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT} ssl_verify=false -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -VNF Indicator Value Change Notification - [Documentation] Test ID: 6.3.2.7.1 - ... Test title: VNF Indicator Value Change Notification - ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification . - ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNF. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNF - ... Applicability: none - ... Post-Conditions: none - Post Value Change Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body VnfIndicatorSubscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post Value Change Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/ValueChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} indicatorId=${indicatorId} vnfInstanceId=${vnfInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response +*** Settings *** +Library String +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library OperatingSystem +Library REST ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Indicator Value Change Notification + [Documentation] Test ID: 6.3.2.7.1 + ... Test title: VNF Indicator Value Change Notification + ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification . + ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNF. + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNF + ... Applicability: none + ... Post-Conditions: none + Post Value Change Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body VnfIndicatorSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Value Change Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/ValueChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} indicatorId=${indicatorId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index b12f6693f..91fa1f258 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -185,7 +185,7 @@ Create new VNF indicator Subscription - NO-DUPLICATION Get VNF Indicators Subscriptions Log Trying to get the list of subscriptions Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -193,7 +193,7 @@ Get VNF Indicators Subscriptions Get VNF Indicators Subscriptions with filter 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -201,7 +201,7 @@ Get VNF Indicators Subscriptions with filter Get VNF Indicators Subscriptions with invalid filter 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -209,7 +209,7 @@ Get VNF Indicators Subscriptions with invalid filter Get VNF Indicators 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -220,7 +220,7 @@ Send Post Request for VNF Indicator Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -230,7 +230,7 @@ Send Post Request for VNF Indicator Subscription Send Put Request for VNF Indicator Subscriptions Log Trying to create a new subscription ${body}= Get File jsons/subscriptions.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -238,7 +238,7 @@ Send Put Request for VNF Indicator Subscriptions Send Patch Request for VNF Indicator Subscriptions Log Trying to create a new subscription ${body}= Get File jsons/subscriptions.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -246,7 +246,7 @@ Send Patch Request for VNF Indicator Subscriptions Send Delete Request for VNF Indicator Subscriptions Log Trying to create a new subscription ${body}= Get File jsons/subscriptions.json - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -280,7 +280,7 @@ Check Postcondition VNF Indicator Subscription Is Set Log Check Postcondition subscription exist Log Trying to get the subscription Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} @@ -313,7 +313,7 @@ Post Create subscription - DUPLICATION Pass Execution If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 0 VNFM is not permitting duplication. Skipping the test Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/subscriptions.json Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response @@ -324,7 +324,7 @@ Post Create subscription - NO-DUPLICATION Pass Execution If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1 VNFM permits duplication. Skipping the test Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/subscriptions.json Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response diff --git a/SOL002/VNFIndicator-API/VNFIndicators.robot b/SOL002/VNFIndicator-API/VNFIndicators.robot index 0addde858..a0db14482 100644 --- a/SOL002/VNFIndicator-API/VNFIndicators.robot +++ b/SOL002/VNFIndicator-API/VNFIndicators.robot @@ -177,7 +177,7 @@ Get VNF Indicators - Bad Request Response too Big Get all VNF indicators Log The GET method queries multiple VNF indicators Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response @@ -186,7 +186,7 @@ Get all VNF indicators Get VNF indicators with filter Log The GET method queries multiple VNF indicators using Attribute-based filtering parameters Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${POS_FIELDS} ${output}= Output response @@ -195,7 +195,7 @@ Get VNF indicators with filter Get VNF indicators with invalid filter Log The GET method queries multiple VNF indicators using invalid Attribute-based filtering parameters Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${NEG_FIELDS} ${output}= Output response @@ -205,7 +205,7 @@ Get all VNF indicators with malformed authorization token Pass Execution If ${AUTH_USAGE} == 0 Skipping test as EM/VNF is not supporting authentication Log The GET method queries multiple VNF indicators using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} - Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} + Set Headers {"${AUTHORIZATION_HEADER}": "${BAD_AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response @@ -215,7 +215,7 @@ Get all VNF indicators with expired or revoked authorization token Pass Execution If ${AUTH_USAGE} == 0 Skipping test as EM/VNF is not supporting authentication Log The GET method queries multiple VNF indicators using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} - Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} + Set Headers {"${AUTHORIZATION_HEADER}": "${NEG_AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response @@ -233,7 +233,7 @@ Get all VNF indicators without authorization token Get all VNF indicators with invalid resource endpoint Log The GET method queries multiple VNF indicators omitting token Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicator ${output}= Output response @@ -242,7 +242,7 @@ Get all VNF indicators with invalid resource endpoint Send POST Request for all VNF indicators 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -250,7 +250,7 @@ Send POST Request for all VNF indicators Send PUT Request for all VNF indicators 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -258,7 +258,7 @@ Send PUT Request for all VNF indicators Send PATCH Request for all VNF indicators 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -266,7 +266,7 @@ Send PATCH Request for all VNF indicators Send DELETE Request for all VNF indicators 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index b25da0214..eb01deded 100644 --- a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -139,7 +139,7 @@ Get Indicators for VNF Instance - Bad Request Response too Big Get all indicators for a VNF instance Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -147,7 +147,7 @@ Get all indicators for a VNF instance Get all indicators for a VNF instance with filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${POS_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -155,7 +155,7 @@ Get all indicators for a VNF instance with filter Get all indicators for a VNF instance with invalid filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -163,7 +163,7 @@ Get all indicators for a VNF instance with invalid filter Get all indicators for a VNF instance with invalid resource identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${erroneousVnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -171,7 +171,7 @@ Get all indicators for a VNF instance with invalid resource identifier Send POST Request for indicators in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -179,7 +179,7 @@ Send POST Request for indicators in VNF instance Send PUT Request for indicators in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -187,7 +187,7 @@ Send PUT Request for indicators in VNF instance Send PATCH Request for indicators in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -195,7 +195,7 @@ Send PATCH Request for indicators in VNF instance Send DELETE Request for indicators in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFIndicator-API/environment/variables.txt b/SOL002/VNFIndicator-API/environment/variables.txt index 3439ee7c8..b3efe3d90 100644 --- a/SOL002/VNFIndicator-API/environment/variables.txt +++ b/SOL002/VNFIndicator-API/environment/variables.txt @@ -2,9 +2,10 @@ ${PRODUCER_HOST} localhost ${PRODUCER_PORT} 8081 ${PRODUCER_SCHEMA} https -${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 -${NEG_AUTHORIZATION} Bearer negativetoken -${BAD_AUTHORIZATION} Bear sometoken +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${NEG_AUTHORIZATION_TOKEN} Bearer negativetoken +${BAD_AUTHORIZATION_TOKEN} Bear sometoken ${CONTENT_TYPE_JSON} application/json ${EM-VNF_HOST} localhost ${EM-VNF_PORT} 8002 diff --git a/SOL002/VNFLifecycleManagement-API/ApiVersion.robot b/SOL002/VNFLifecycleManagement-API/ApiVersion.robot index 1c1ea5db5..d22684914 100644 --- a/SOL002/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL002/VNFLifecycleManagement-API/ApiVersion.robot @@ -131,70 +131,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot index 60d04f4b8..db8a558e6 100644 --- a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -100,6 +100,6 @@ DELETE Cancel operation task - Method not implemented *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index f803d37fb..f46fda1db 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -86,6 +86,6 @@ POST Change external VNF connectivity Conflict Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index bf6278856..37a3a5336 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -99,6 +99,6 @@ DELETE Change deployment flavour VNFInstance - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot index e8298325c..63508cafe 100644 --- a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot @@ -100,6 +100,6 @@ DELETE Heal VNFInstance - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 0bf995edd..2c43ee7a6 100644 --- a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -88,6 +88,6 @@ DELETE Instantiate VNFInstance - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot b/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot index 2a81c1142..7befae053 100644 --- a/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot @@ -1,89 +1,89 @@ -*** Settings *** -Library String -Resource environment/variables.txt -Resource VnfLcmOperationKeywords.robot -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Library JSONSchemaLibrary schemas/ -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -VNF LCM Operation Occurrence Notification - [Documentation] Test ID: 6.3.5.21.1 - ... Test title: VNF LCM Operation Occurrence Start Notification - ... Test objective: The objective is to test that VNF LCM Operation Occurrence Notification is delivered with success to the notification consumer - ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post VNF LCM Operation Occurrence Notification - Check HTTP Response Status Code Is 204 - -VNF Identifier Creation Notification - [Documentation] Test ID: 6.3.5.21.2 - ... Test title: VNF Identifier Creation Notification - ... Test objective: The objective is to test that VNF Identifier Creation Notification is delivered with success to the notification consumer - ... Pre-conditions: A subscription for VNF Identifier Creation Notification is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post VNF Identifier Creation Notification - Check HTTP Response Status Code Is 204 - -VNF Identifier Deletion Notification - [Documentation] Test ID: 6.3.5.21.3 - ... Test title: VNF Identifier Deletion Notification - ... Test objective: The objective is to test that VNF Identifier Deletion Notification is delivered with success to the notification consumer - ... Pre-conditions: A subscription for VNF Identifier Deletion Notification is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post VNF Identifier Deletion Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body Subscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Post VNF LCM Operation Occurrence Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/VnfLcmOperationOccurrenceNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post VNF Identifier Creation Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/VnfIdentifierCreationNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post VNF Identifier Deletion Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/VnfIdentifierDeletionNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response +*** Settings *** +Library String +Resource environment/variables.txt +Resource VnfLcmOperationKeywords.robot +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF LCM Operation Occurrence Notification + [Documentation] Test ID: 6.3.5.21.1 + ... Test title: VNF LCM Operation Occurrence Start Notification + ... Test objective: The objective is to test that VNF LCM Operation Occurrence Notification is delivered with success to the notification consumer + ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post VNF LCM Operation Occurrence Notification + Check HTTP Response Status Code Is 204 + +VNF Identifier Creation Notification + [Documentation] Test ID: 6.3.5.21.2 + ... Test title: VNF Identifier Creation Notification + ... Test objective: The objective is to test that VNF Identifier Creation Notification is delivered with success to the notification consumer + ... Pre-conditions: A subscription for VNF Identifier Creation Notification is available in the VNFM. + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post VNF Identifier Creation Notification + Check HTTP Response Status Code Is 204 + +VNF Identifier Deletion Notification + [Documentation] Test ID: 6.3.5.21.3 + ... Test title: VNF Identifier Deletion Notification + ... Test objective: The objective is to test that VNF Identifier Deletion Notification is delivered with success to the notification consumer + ... Pre-conditions: A subscription for VNF Identifier Deletion Notification is available in the VNFM. + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post VNF Identifier Deletion Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body Subscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Post VNF LCM Operation Occurrence Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfLcmOperationOccurrenceNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Identifier Creation Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfIdentifierCreationNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Identifier Deletion Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfIdentifierDeletionNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot index 40448b7c6..ccaea1ae5 100644 --- a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -99,6 +99,6 @@ DELETE Operate VNFInstance - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot index 8e7a7fd2a..638712080 100644 --- a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -98,6 +98,6 @@ DELETE Retry operation task - Method not implemented *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot index 1ed4064c5..382bd0069 100644 --- a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -99,6 +99,6 @@ DELETE Rollback operation task - Method not implemented *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot index e545c237d..9e2a10702 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -99,6 +99,6 @@ DELETE Scale VNFInstance - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index de97db01a..1afc0bd1a 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -98,6 +98,6 @@ DELETE Scale to level VNFInstance - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot index 0656a1724..56ef35f64 100644 --- a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -86,6 +86,6 @@ DELETE Terminate VNFInstance - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index e7b58946b..f4cf32f3e 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -19,7 +19,7 @@ Get Vnf Instance [Arguments] ${vnfInstanceId} Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${body}= Output response body [Return] ${body} @@ -53,7 +53,7 @@ Check VNF Instance [Arguments] ${vnfId} Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${response}= Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfId} Check VNF Status @@ -62,12 +62,12 @@ Check VNF Status Log VNF Status in the correct status Check operation resource state is FAILED_TEMP - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body instantiationState FAILED_TEMP Check operation resource state is FINALLY_FAILED - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body instantiationState FINALLY_FAILED @@ -80,7 +80,7 @@ POST Create a new vnfInstance 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}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template} = Get File jsons/createVnfRequest.json ${body}= Format String ${template} vnfdId=${Descriptor_ID} @@ -92,7 +92,7 @@ GET multiple vnfInstances Log Query VNF The GET method queries information about multiple VNF instances. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Set Headers {"Authorization":"${AUTHORIZATION}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -101,7 +101,7 @@ GET multiple vnfInstances with bad attribute Log Query VNF The GET method queries information about multiple VNF instances. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Set Headers {"Authorization":"${AUTHORIZATION}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?attribute_not_exist=some_value ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -110,42 +110,42 @@ GET multiple vnfInstances with bad filter Log Query VNF The GET method queries information about multiple VNF instances. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=wrong_field ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET multiple vnfInstances with all_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_default attribute selector Log Query status information about multiple VNF instances using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_default and fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -153,7 +153,7 @@ PUT multiple vnfInstances log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -167,7 +167,7 @@ PATCH multiple vnfInstances DELETE multiple vnfInstances Log Trying to perform a DELETE. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -176,7 +176,7 @@ POST individual vnfInstance log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -185,7 +185,7 @@ GET individual vnfInstance log Trying to get information about an individual VNF instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -194,7 +194,7 @@ PUT individual vnfInstance log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -204,7 +204,7 @@ PATCH individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} 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 ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} #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} @@ -213,7 +213,7 @@ PATCH individual vnfInstance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -222,7 +222,7 @@ POST instantiate individual 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/instantiateVnfRequest.json ${body}= Format String ${template} flavourId=${flavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} @@ -231,28 +231,28 @@ POST instantiate individual vnfInstance GET instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -268,7 +268,7 @@ 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${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} @@ -283,7 +283,7 @@ 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}"} + # Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} # ${template}= Get File jsons/scaleVnfRequest.json # ${body}= Format String ${template} scaleVnfRequesttype=${scaleVnfRequesttype} scaleVnfRequestAspect=${scaleVnfRequestAspect} # Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} @@ -293,7 +293,7 @@ GET Scale vnfInstance Log Trying to get a scale a vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfRequest.json Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response @@ -302,7 +302,7 @@ PUT Scale vnfInstance Log Trying to modify a scale vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfRequest.json Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response @@ -311,7 +311,7 @@ PATCH Scale vnfInstance Log Trying to modify a scale vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfRequest.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response @@ -320,7 +320,7 @@ DELETE Scale vnfInstance Log Trying to modify a scale vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfRequest.json Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response @@ -330,7 +330,7 @@ POST Scale vnfInstance to level Log Trying to scale a vnf Instance to level Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfToLevelRequest.json ${body}= Format String ${template} newFlavourId=${newFlavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} @@ -338,28 +338,28 @@ POST Scale vnfInstance to level Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance to level log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Scale vnfInstance to level log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Scale vnfInstance to level log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Scale vnfInstance to level log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -368,7 +368,7 @@ POST Change VNF deployment flavour Log Trying to change the deployment flavour of a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/changeVnfFlavourRequest.json ${body}= Format String ${template} newFlavourId=${newFlavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} @@ -376,14 +376,14 @@ POST Change VNF deployment flavour 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Change VNF deployment flavour log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -397,7 +397,7 @@ PATCH Change VNF deployment flavour DELETE Change VNF deployment flavour Log Trying to perform a DELETE. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -406,7 +406,7 @@ POST Terminate VNF Log Trying to terminate a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/terminateVnfRequest.json ${body}= Format String ${template} terminationType=${terminationType} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} @@ -415,28 +415,28 @@ POST Terminate VNF GET Terminate VNF log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Terminate VNF log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Terminate VNF log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Terminate VNF log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -445,7 +445,7 @@ POST Heal VNF Log Trying to heal a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/healVnfRequest.json ${body}= Format String ${template} healingCause=${healingCause} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} @@ -454,28 +454,28 @@ POST Heal VNF GET Heal VNF log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Heal VNF log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Heal VNF log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Heal VNF log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -484,7 +484,7 @@ POST Change External VNF Connectivity Log Trying to change the external connectivity of a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/changeExtVnfConnectivityRequest.json Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} ${outputResponse}= Output response @@ -492,14 +492,14 @@ POST Change External VNF Connectivity GET Change External VNF Connectivity log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Change External VNF Connectivity log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -513,7 +513,7 @@ PATCH Change External VNF Connectivity DELETE Change External VNF Connectivity Log Trying to perform a DELETE. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -522,7 +522,7 @@ POST Operate VNF Log Trying to operate a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/operateVnfRequest.json ${body}= Format String ${template} changeStateTo=${changeStateTo} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} @@ -531,28 +531,28 @@ POST Operate VNF GET Operate VNF log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Operate VNF log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Operate VNF log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Operate VNF log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -560,14 +560,14 @@ DELETE Operate VNF Post VNF LCM OP occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM OP occurrences Log Query status information about multiple VNF lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response @@ -575,76 +575,76 @@ GET VNF LCM OP occurrences GET VNF LCM OP occurrences invalid attribute Log Query status information about multiple VNF lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?attribute_not_exist=some_value ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM OP occurrences invalid filter Log Query status information about multiple VNF lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=wrong_field ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT VNF LCM OP occurrences log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH VNF LCM OP occurrences log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE VNF LCM OP occurrences log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Individual VNF LCM OP occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Individual VNF LCM OP occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put Individual VNF LCM OP occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Individual VNF LCM OP occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Individual VNF LCM OP occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Retry operation Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response @@ -652,7 +652,7 @@ Post Retry operation Get Retry operation Log Trying to perform a GET. This method should not be implemented. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response @@ -660,27 +660,27 @@ Get Retry operation Put Retry operation log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Retry operation log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Retry operation log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Rollback operation Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response @@ -688,7 +688,7 @@ Post Rollback operation Get Rollback operation Log Trying to perform a GET. This method should not be implemented. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response @@ -696,27 +696,27 @@ Get Rollback operation Put Rollback operation log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Rollback operation log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Rollback operation log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Fail operation Log mark as Failed a VNF lifecycle operation if that operation has experienced a failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response @@ -724,7 +724,7 @@ Post Fail operation Get Fail operation Log Trying to perform a GET. This method should not be implemented. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response @@ -732,28 +732,28 @@ Get Fail operation Put Fail operation log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Fail operation log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Fail operation log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST Cancel operation task Log Cancel an ongoing VNF lifecycle operation - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Cancel a VNF lifecycle operation Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} Log Validate Status code @@ -762,14 +762,14 @@ POST Cancel operation task GET Cancel operation task log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Cancel operation task log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -783,7 +783,7 @@ PATCH Cancel operation task DELETE Cancel operation task Log Trying to perform a DELETE. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -792,7 +792,7 @@ Post Create subscription Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -803,7 +803,7 @@ Post Create subscription - DUPLICATION Pass Execution If ${VNFM_DUPLICATION} == 0 VNFM 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -814,7 +814,7 @@ Post Create subscription - NO-DUPLICATION Pass Execution If ${VNFM_DUPLICATION} == 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -824,7 +824,7 @@ Get subscriptions Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response @@ -833,42 +833,42 @@ Get subscriptions - filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions - invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -876,7 +876,7 @@ PUT subscriptions log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -884,7 +884,7 @@ PATCH subscriptions log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -892,7 +892,7 @@ DELETE subscriptions log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -900,14 +900,14 @@ Post Create Individual subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Individual subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -915,7 +915,7 @@ Put Individual subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -923,14 +923,14 @@ Patch Individual subscription log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Individual subscription log Try to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1000,13 +1000,13 @@ GET test endpoint Check Subscription resource exist Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Get VNF LCM Operation occurrences with all_fields attribute selector Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -1014,28 +1014,28 @@ Get VNF LCM Operation occurrences with all_fields attribute selector Get VNF LCM Operation occurrences with exclude_default attribute selector Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with fields attribute selector Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_default and fields attribute selector Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_fields attribute selector Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index 9bc19c287..7a8e8c363 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -5,7 +5,8 @@ ${NFVO_HOST} localhost # Hostname of the NFVO ${NFVO_PORT} 8081 # Listening port of the NFVO ${VNFM_SCHEMA} https ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE} application/json ${CONTENT_TYPE_PATCH} application/merge-patch+json ${ACCEPT} application/json diff --git a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot index 0e98a8396..7a7e70086 100644 --- a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot @@ -131,70 +131,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index b95e714b4..ca839fbe2 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -115,7 +115,7 @@ PATCH Individual VNF Performance Job - Precondition failed GET individual VNF Performance Job Log Trying to get a Pm Job present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -123,7 +123,7 @@ GET individual VNF Performance Job GET individual VNF Performance Job with invalid resource identifier Log Trying to perform a negative get, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -131,7 +131,7 @@ GET individual VNF Performance Job with invalid resource identifier Send Delete request for individual VNF Performance Job Log Trying to delete an existing PM Job Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -139,7 +139,7 @@ Send Delete request for individual VNF Performance Job Send Delete request for individual VNF Performance Job with invalid resource identifier Log Trying to perform a negative delete, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -147,7 +147,7 @@ Send Delete request for individual VNF Performance Job with invalid resource ide Send Post request for individual VNF Performance Job 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -155,7 +155,7 @@ Send Post request for individual VNF Performance Job Send Put request for individual VNF Performance Job 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -166,7 +166,7 @@ Send Put request for individual VNF Performance Job Send Patch request for individual VNF Performance Job Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/PMJobModification.json PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} ${output}= Output response diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot index 9f038e8bb..38845b3bd 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL002/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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -137,7 +137,7 @@ Check Postcondition VNF Individual Performance Report Exists Check Postcondition VNF Individual Performance Report is not Created Log Trying to get a new report Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${newReportId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index d0e7bc390..cab48da3d 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -114,7 +114,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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -122,28 +122,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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -151,7 +151,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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -162,7 +162,7 @@ Send Put request for individual VNF Performance Threshold Send Patch 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} diff --git a/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot index ed697e43e..2d557051e 100644 --- a/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot @@ -1,71 +1,71 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library JSONLibrary -Library OperatingSystem -Library String -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -VNF Performance Information Availability Notification - [Documentation] Test ID: 6.3.3.10.1 - ... Test title: VNF Performance Information Availability Notification - ... Test objective: The objective is to test that VNF Performance Information Availability Notification is delivered with success to the notification consumer - ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post VNF Performance Information Availability Notification - Check HTTP Response Status Code Is 204 - -VNF Threshold Crossed Notification - [Documentation] Test ID: 6.3.3.10.2 - ... Test title: VNF Threshold Crossed Notification - ... Test objective: The objective is to test that VNF Threshold Crossed Notification is delivered with success to the notification consumer - ... Pre-conditions: A VNF performance job is created, and a subscription for Threshold Crossed Notification is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post VNF Threshold Crossed Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} - Integer response status 200 - Validate Json response body PmJob.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - ${status}= Convert To Integer ${expected_status} - Should Be Equal ${response['status']} ${status} - Log Status code validated - -Post VNF Performance Information Availability Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/PerformanceInformationAvaliableNotification.json - ${body}= Format String ${template} objectInstanceId=${objectInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post VNF Threshold Crossed Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/ThresholdCrossedNotification.json - ${body}= Format String ${template} thresholdId=${thresholdId} objectInstanceId=${objectInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Library String +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Performance Information Availability Notification + [Documentation] Test ID: 6.3.3.10.1 + ... Test title: VNF Performance Information Availability Notification + ... Test objective: The objective is to test that VNF Performance Information Availability Notification is delivered with success to the notification consumer + ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post VNF Performance Information Availability Notification + Check HTTP Response Status Code Is 204 + +VNF Threshold Crossed Notification + [Documentation] Test ID: 6.3.3.10.2 + ... Test title: VNF Threshold Crossed Notification + ... Test objective: The objective is to test that VNF Threshold Crossed Notification is delivered with success to the notification consumer + ... Pre-conditions: A VNF performance job is created, and a subscription for Threshold Crossed Notification is available in the VNFM. + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post VNF Threshold Crossed Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + Integer response status 200 + Validate Json response body PmJob.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + ${status}= Convert To Integer ${expected_status} + Should Be Equal ${response['status']} ${status} + Log Status code validated + +Post VNF Performance Information Availability Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/PerformanceInformationAvaliableNotification.json + ${body}= Format String ${template} objectInstanceId=${objectInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Threshold Crossed Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/ThresholdCrossedNotification.json + ${body}= Format String ${template} thresholdId=${thresholdId} objectInstanceId=${objectInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 1c7dc8e97..8da793e3a 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -208,7 +208,7 @@ GET all VNF Performance Monitoring Jobs with exclude_default and fields attribut GET all VNF Performance Monitoring Jobs Log Trying to get all PM Jobs 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -216,7 +216,7 @@ GET all VNF Performance Monitoring Jobs GET VNF Performance Monitoring Jobs with attribute-based filter Log Trying to get all PM Jobs present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -224,7 +224,7 @@ GET VNF Performance Monitoring Jobs with attribute-based filter GET VNF Performance Monitoring Jobs with all_fields attribute selector Log Trying to get all PM Jobs present in the VNFM, using 'all_fields' 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -232,7 +232,7 @@ GET VNF Performance Monitoring Jobs with all_fields attribute selector GET VNF Performance Monitoring Jobs with exclude_default attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -241,7 +241,7 @@ GET VNF Performance Monitoring Jobs with fields attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -249,7 +249,7 @@ GET VNF Performance Monitoring Jobs with fields attribute selector GET VNF Performance Monitoring Jobs with exclude_default and fields attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -258,7 +258,7 @@ GET VNF Performance Monitoring Jobs with exclude_fields attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -266,7 +266,7 @@ GET VNF Performance Monitoring Jobs with exclude_fields attribute selector GET VNF Performance Monitoring Jobs with invalid attribute-based filter Log Trying to get all PM Jobs present in the VNFM, using an erroneous filter param Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -274,7 +274,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter GET VNF Performance Monitoring Jobs 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_job # wrong URI /pm_job instead of /pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -283,7 +283,7 @@ Send Post Request Create new VNF Performance Monitoring Job Log Creating a new PM Job Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/CreatePmJobRequest.json ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${callback_uri}:${callback_port} POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} @@ -293,7 +293,7 @@ Send Post Request Create new VNF Performance Monitoring Job Send PUT Request for all VNF Performance Monitoring Jobs 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -301,7 +301,7 @@ Send PUT Request for all VNF Performance Monitoring Jobs Send PATCH Request for all VNF Performance Monitoring Jobs 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -309,7 +309,7 @@ Send PATCH Request for all VNF Performance Monitoring Jobs Send DELETE Request for all VNF Performance Monitoring Jobs 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -317,7 +317,7 @@ Send DELETE Request for all VNF Performance Monitoring Jobs Check Postcondition PmJob Exists Log Checking that Pm Job exists Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index 7505e15f2..d02e7c625 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -141,7 +141,7 @@ GET Performance Thresholds for 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -149,7 +149,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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_OK} ${output}= Output response Set Suite Variable ${response} ${output} @@ -157,7 +157,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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_KO} ${output}= Output response Set Suite Variable ${response} ${output} @@ -165,14 +165,14 @@ 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/threshold ${output}= Output response Set Suite Variable ${response} ${output} Send Post Request Create new Performance Threshold Log Creating a new THreshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/CreateThresholdRequest.json @@ -183,7 +183,7 @@ Send Post Request Create new Performance Threshold Send PUT Request for all Performance Thresholds Log PUT THresholds - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds @@ -192,7 +192,7 @@ Send PUT Request for all Performance Thresholds Send PATCH Request for all Performance Thresholds Log PUT THresholds - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds @@ -201,7 +201,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_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -209,7 +209,7 @@ Send DELETE Request for all Performance Thresholds Check Postcondition Threshold Exists Log Checking that Threshold exists Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index f7468404c..a5e14818d 100644 --- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -20,7 +20,7 @@ Get all VNF Performance Subscriptions ... request and response data structures, and response codes. Set headers {"Accept": "application/json"} Set headers {"Content-Type": "application/json"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -39,7 +39,7 @@ Get all VNF Performance Subscriptions ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} @@ -59,7 +59,7 @@ Get VNF Performance Subscriptions with invalid attribute-based filters ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} @@ -78,7 +78,7 @@ Get VNF Performance Subscriptions with invalid resource endpoint ... This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 for URI query parameters, ... request and response data structures, and response codes. Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -104,7 +104,7 @@ Send Post Request for VNF Performance Subscription ... the existing subscription resource with the same filter and callbackUri). Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body_request}= Get File jsons/subscriptions.json POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} ${output}= Output response @@ -135,7 +135,7 @@ Send Post Request for Duplicated VNF Performance Subscription ... the existing subscription resource with the same filter and callbackUri). Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body_request}= Get File jsons/subscriptions.json POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} ${output}= Output response @@ -156,7 +156,7 @@ Send Post Request for Duplicated VNF Performance Subscription Send Put Request for VNF Performance Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in Clause 4.3.5.4. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -166,7 +166,7 @@ Send Put Request for VNF Performance Subscriptions Send Patch Request for VNF Performance Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in Clause 4.3.5.4. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -176,7 +176,7 @@ Send Patch Request for VNF Performance Subscriptions Send Delete Request for VNF Performance Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in Clause 4.3.5.4. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -185,40 +185,40 @@ Send Delete Request for VNF Performance Subscriptions Get Individual VNF Performance Subscription Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} GET individual VNF Performance Subscription with invalid resource identifier Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual VNF Performance Subscription Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual VNF Performance Subscription with invalid resource identifier Log Trying to delete a subscription 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_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post request for individual VNF Performance Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Put request for individual VNF Performance Threshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -227,7 +227,7 @@ Send Put request for individual VNF Performance Threshold Set Suite Variable ${response} ${output} Send Patch request for individual VNF Performance Threshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -246,7 +246,7 @@ Check Postcondition VNF Performance Subscription is Unmodified (Implicit) Check Postcondition VNF Performance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/environment/variables.txt b/SOL002/VNFPerformanceManagement-API/environment/variables.txt index b3453720a..f06af76c5 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/variables.txt @@ -12,7 +12,8 @@ ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json ${NEG_AUTHORIZATION} Bearer negativetoken ${FIELD_USAGE} 1 -${AUTHORIZATION} Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${AUTH_USAGE} 1 ${VNFM_DUPLICATION} 1 ${VNFM_CHECKS_NOTIF_ENDPOINT} 1 -- GitLab From 3289ba78fa29a6c814f7c44c3bb1b259d8ac8d46 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Fri, 12 Feb 2021 10:54:52 +0100 Subject: [PATCH 284/580] updated authorization header and token use in SOL003 v2.7.1 --- .../VNFFaultManagement-API/ApiVersion.robot | 20 +- .../FaultManagement-APIKeyword.robot | 94 +-- .../NotificationConsumer.robot | 186 ++--- .../environment/variables.txt | 3 +- SOL003/VNFIndicator-API/ApiVersion.robot | 20 +- .../NotificationConsumer.robot | 92 +-- .../VNFIndicatorsKeywords.robot | 82 +- .../environment/variables.txt | 7 +- .../ApiVersion.robot | 20 +- .../CancelOperationWorkflow.robot | 6 +- .../FailOperationWorkflow.robot | 2 +- .../IndividualVNFInstance.robot | 2 +- .../InstantiateVNFTaskWorkflow.robot | 2 +- .../NotificationConsumer.robot | 182 ++-- .../OperateVNFTask.robot | 2 +- .../RetryOperationTask.robot | 2 +- .../RetryOperationWorkflow.robot | 4 +- .../RollBackOperationWorkflow.robot | 4 +- .../RollbackOperationTask.robot | 2 +- .../ScaleVNFTask.robot | 2 +- .../SubscriptionKeywords.robot | 2 +- .../TerminateVNFTask.robot | 2 +- .../VnfLcmMntOperationKeywords.robot | 300 +++---- .../environment/variables.txt | 3 +- .../ApiVersion.robot | 20 +- .../Grants.robot | 16 +- .../IndividualGrant.robot | 12 +- .../environment/variables.txt | 3 +- .../VNFPackageManagement-API/ApiVersion.robot | 20 +- .../ManifestInIndividualVNFPackage.robot | 414 +++++----- .../NotificationConsumer.robot | 138 ++-- .../VNFPackageArtifacts.robot | 776 +++++++++--------- .../VNFPackageManagementKeywords.robot | 326 ++++---- .../environment/variables.txt | 3 +- .../ApiVersion.robot | 20 +- .../IndividualPmJob.robot | 16 +- .../IndividualReport.robot | 12 +- .../IndividualThreshold.robot | 14 +- .../NotificationConsumer.robot | 136 +-- .../VNFPerformanceManagement-API/PMJobs.robot | 28 +- .../Thresholds.robot | 18 +- .../environment/variables.txt | 3 +- .../ApiVersion.robot | 20 +- .../NotificationConsumer.robot | 92 +-- .../VRQANOperationKeywords.robot | 30 +- .../environment/variables.txt | 3 +- 46 files changed, 1584 insertions(+), 1577 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/ApiVersion.robot b/SOL003/VNFFaultManagement-API/ApiVersion.robot index b265a9a56..6c7d8bddf 100644 --- a/SOL003/VNFFaultManagement-API/ApiVersion.robot +++ b/SOL003/VNFFaultManagement-API/ApiVersion.robot @@ -133,70 +133,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot index b833c9354..9c1f50f5a 100644 --- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot @@ -15,7 +15,7 @@ ${original_etag} 1234 *** Keywords *** Check created Subscription existence Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} Integer response status 200 Check Postcondition FaultManagement Subscription Is Set @@ -37,13 +37,13 @@ Check Precondition VNF fault management individual alarm Exists Check Individual Subscription existence Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Check Individual Subscription deleted Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 404 @@ -72,7 +72,7 @@ Check HTTP Response Header ContentType is 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${response['headers']['Location']} Integer response status 200 Log Received a 200 OK as expected @@ -85,7 +85,7 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab Send POST request for fault management Alarms log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -93,7 +93,7 @@ Send POST request for fault management Alarms PATCH Fault management Alarms log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse} = Output response Set Global Variable ${response} ${outputResponse} @@ -101,7 +101,7 @@ PATCH Fault management Alarms PUT Fault management Alarms log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -109,7 +109,7 @@ PUT Fault management Alarms DELETE Fault management Alarms log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -117,7 +117,7 @@ DELETE Fault management Alarms GET Fault Management Alarms Log Query NFVO The GET method queries information about multiple alarms. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response @@ -126,7 +126,7 @@ GET Fault Management Alarms GET Fault Management Alarms With Filters Log Query NFVO The GET method queries information about multiple alarms with filters. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${alarm_filter}=${nsInstanceId} ${outputResponse}= Output response @@ -135,7 +135,7 @@ GET Fault Management Alarms With Filters GET Fault Management Alarms With Invalid Filters Log Query NFVO The GET method queries information about multiple alarms with filters. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${invalid_alarm_filter}=${nsInstanceId} ${outputResponse}= Output response @@ -144,7 +144,7 @@ GET Alarms Task with all_fields attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -152,7 +152,7 @@ GET Alarms Task with exclude_default attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -160,7 +160,7 @@ GET Alarms Task with fields attribute selector Log Trying to get all alarms present in the NFVO Catalogue, using fields 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -168,14 +168,14 @@ GET Alarms Task with exclude_fields attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Send POST request for fault management Individual Alarm log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -183,7 +183,7 @@ Send POST request for fault management Individual Alarm DELETE Fault Management Individual Alarm log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -191,7 +191,7 @@ DELETE Fault Management Individual Alarm PUT Fault Management Individual Alarm log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -200,7 +200,7 @@ GET Fault Management Individual Alarm Log Query VNF The GET method queries information about an alarm. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${etag} Output response headers ETag @@ -212,7 +212,7 @@ GET Fault Management Individual Alarm with invalid id Log Query NFVO The GET method queries information about an invalid alarm. Should return does not exist Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${invalidAlarmId} ${outputResponse}= Output response @@ -222,7 +222,7 @@ PATCH Fault Management Individual Alarm log Trying to perform a PATCH. This method modifies an individual alarm resource Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/alarmModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response @@ -233,7 +233,7 @@ PATCH Fault Management Individual Alarm - precondition failed Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Set Headers {"If-Match": "${original_etag[0]}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/alarmModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response @@ -244,7 +244,7 @@ PATCH Fault Management Individual Alarm Conflict Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Set Headers {"If-Match": "${Etag}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/alarmModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} ${outputResponse}= Output response @@ -254,7 +254,7 @@ POST Subscription Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/fmSubscriptionRequest.json ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -266,7 +266,7 @@ Send POST Request for duplicated subscription Pass Execution If ${VNFM_DUPLICATION} == 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/fmSubscriptionRequest.json ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -278,7 +278,7 @@ Send POST Request for duplicated subscription not permitted Pass Execution If ${VNFM_DUPLICATION} == 1 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/fmSubscriptionRequest.json ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -288,7 +288,7 @@ Send POST Request for duplicated subscription not permitted GET Subscriptions Log Get the list of active subscriptions Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -296,7 +296,7 @@ GET Subscriptions GET Subscriptions with filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -304,42 +304,42 @@ GET Subscriptions with filter GET Subscriptions with Invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} PUT Subscriptions log Trying to perform a PUT Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -347,7 +347,7 @@ PUT Subscriptions PATCH Subscriptions log Trying to perform a PATCH Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -355,7 +355,7 @@ PATCH Subscriptions DELETE Subscriptions log Trying to perform a DELETE Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -363,7 +363,7 @@ DELETE Subscriptions POST Individual Subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -371,7 +371,7 @@ POST Individual Subscription GET Individual Subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -379,7 +379,7 @@ GET Individual Subscription PUT Individual Subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -387,7 +387,7 @@ PUT Individual Subscription PATCH Individual Subscription log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -395,7 +395,7 @@ PATCH Individual Subscription DELETE Individual Subscription log Trying to perform a DELETE. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -407,7 +407,7 @@ Check HTTP Response Header Contain Link Get subscriptions with filter "id" Log Get the list of active subscriptions using a filter "id" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?id=${subscription_id} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -418,7 +418,7 @@ Check PostCondition HTTP Response Body Subscription Matches the requested attrib Get subscriptions with filter "filter_notificationTypes" Log Get the list of active subscriptions using a filter "filter.notificationTypes" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.notificationTypes=${notification_type} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -431,7 +431,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_faultyResourceTypes" Log Get the list of active subscriptions using a filter "filter.faultyResourceTypes" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.faultyResourceTypes=${faultyResourceType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -444,7 +444,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_perceivedSeverities" Log Get the list of active subscriptions using a filter "filter.perceivedSeverities" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.perceivedSeverities=${perceivedSeverity} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -457,7 +457,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_eventTypes" Log Get the list of active subscriptions using a filter "filter.eventTypes" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.eventTypes=${eventType} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -470,7 +470,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_probableCauses" Log Get the list of active subscriptions using a filter "filter.probableCauses" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.probableCauses=${probableCause} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFFaultManagement-API/NotificationConsumer.robot b/SOL003/VNFFaultManagement-API/NotificationConsumer.robot index b8cb18b90..17ea2227b 100644 --- a/SOL003/VNFFaultManagement-API/NotificationConsumer.robot +++ b/SOL003/VNFFaultManagement-API/NotificationConsumer.robot @@ -1,94 +1,94 @@ -*** Settings *** -Library String -Library OperatingSystem -Resource environment/variables.txt -Library JSONLibrary -Library JSONSchemaLibrary schemas/ -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -VNF Fault Alarm Notification - [Documentation] Test ID: 7.3.5.7.1 - ... Test title: VNF Fault Alarm Notification - ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Notification. - ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Post Alarm Notification - Check HTTP Response Status Code Is 204 - -VNF Fault Alarm Cleared Notification - [Documentation] Test ID: 7.3.5.7.2 - ... Test title: VNF Fault Alarm Cleared Notification - ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Cleared Notification. - ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Post Alarm Cleared Notification - Check HTTP Response Status Code Is 204 - -VNF Fault Alarm List Reulit Notification - [Documentation] Test ID: 7.3.5.7.3 - ... Test title: VNF Fault Alarm List Rebuilt Notification - ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm List Rebuilt Notification. - ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Post Alarm List Rebuilt Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body FmSubscriptions.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Log Validate Status code - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post Alarm Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/AlarmNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Alarm Cleared Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/AlarmClearedNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Alarm List Rebuilt Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/AlarmListRebuiltNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response +*** Settings *** +Library String +Library OperatingSystem +Resource environment/variables.txt +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Fault Alarm Notification + [Documentation] Test ID: 7.3.5.7.1 + ... Test title: VNF Fault Alarm Notification + ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Notification. + ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Alarm Notification + Check HTTP Response Status Code Is 204 + +VNF Fault Alarm Cleared Notification + [Documentation] Test ID: 7.3.5.7.2 + ... Test title: VNF Fault Alarm Cleared Notification + ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Cleared Notification. + ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Alarm Cleared Notification + Check HTTP Response Status Code Is 204 + +VNF Fault Alarm List Reulit Notification + [Documentation] Test ID: 7.3.5.7.3 + ... Test title: VNF Fault Alarm List Rebuilt Notification + ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm List Rebuilt Notification. + ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Alarm List Rebuilt Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body FmSubscriptions.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Log Validate Status code + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Alarm Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/AlarmNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm Cleared Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/AlarmClearedNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm List Rebuilt Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/AlarmListRebuiltNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API/environment/variables.txt b/SOL003/VNFFaultManagement-API/environment/variables.txt index 8f264481e..44740b77a 100644 --- a/SOL003/VNFFaultManagement-API/environment/variables.txt +++ b/SOL003/VNFFaultManagement-API/environment/variables.txt @@ -2,7 +2,8 @@ ${VNFM_HOST} localhost # Hostname of the VNFM ${VNFM_PORT} 8080 # Listening port of the VNFM ${VNFM_SCHEMA} https -${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE} application/json ${ACCEPT} application/json ${ACCEPT_JSON} application/json diff --git a/SOL003/VNFIndicator-API/ApiVersion.robot b/SOL003/VNFIndicator-API/ApiVersion.robot index 4c8aa20c1..819592ceb 100644 --- a/SOL003/VNFIndicator-API/ApiVersion.robot +++ b/SOL003/VNFIndicator-API/ApiVersion.robot @@ -133,70 +133,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFIndicator-API/NotificationConsumer.robot b/SOL003/VNFIndicator-API/NotificationConsumer.robot index 3fccae93e..cf3822562 100644 --- a/SOL003/VNFIndicator-API/NotificationConsumer.robot +++ b/SOL003/VNFIndicator-API/NotificationConsumer.robot @@ -1,46 +1,46 @@ -*** Settings *** -Library String -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library OperatingSystem -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -VNF Indicator Value Change Notification - [Documentation] Test ID: 7.3.6.7.1 - ... Test title: VNF Indicator Value Change Notification - ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification. - ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNFM. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Post VNF Indicator Value Change Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body VnfIndicatorSubscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post VNF Indicator Value Change Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/VnfIndicatorValueChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} indicatorId=${indicatorId} vnfInstanceId=${vnfInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} +*** Settings *** +Library String +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library OperatingSystem +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Indicator Value Change Notification + [Documentation] Test ID: 7.3.6.7.1 + ... Test title: VNF Indicator Value Change Notification + ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification. + ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNFM. + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post VNF Indicator Value Change Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body VnfIndicatorSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post VNF Indicator Value Change Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfIndicatorValueChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} indicatorId=${indicatorId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot index 1623f460c..2ad8b478e 100644 --- a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot +++ b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot @@ -14,7 +14,7 @@ Library String Get All VNF Indicators Subscriptions Log Trying to get the list of subscriptions Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -30,7 +30,7 @@ Get All VNF Indicators Subscriptions Get VNF Indicators Subscriptions with filter 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} @@ -46,7 +46,7 @@ Get VNF Indicators Subscriptions with filter Get VNF Indicators Subscriptions with invalid filter 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} @@ -63,7 +63,7 @@ Get VNF Indicators Subscriptions with invalid filter Get VNF Indicators 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -100,7 +100,7 @@ Send Post Request for VNF Indicator Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback=${callback} {callback_subscribe}=${callback_subscribe} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -123,7 +123,7 @@ Send Post Request for Duplicated VNF indicator Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback=${callback} {callback_subscribe}=${callback_subscribe} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -140,7 +140,7 @@ Send Post Request for Duplicated VNF indicator Subscription Send Put Request for VNF Indicator 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -149,7 +149,7 @@ Send Put Request for VNF Indicator Subscriptions Send Patch Request for VNF Indicator 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -158,7 +158,7 @@ Send Patch Request for VNF Indicator Subscriptions Send Delete Request for VNF Indicator 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -195,7 +195,7 @@ Check Postcondition VNF Indicator Subscription Is Set Log Check Postcondition subscription exist Log Trying to get the subscription Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If Should Not Be Equal As Strings ${location} Location GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} Run Keyword If Should Be Equal As Strings ${location} Location GET ${response['headers']['Location']} ${output}= Output response @@ -225,7 +225,7 @@ Check HTTP Response Header Contains Get all VNF indicators Log The GET method queries multiple VNF indicators Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response @@ -235,7 +235,7 @@ Get all VNF indicators Get VNF indicators with filter Log The GET method queries multiple VNF indicators using Attribute-based filtering parameters Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${POS_FIELDS} ${output}= Output response @@ -244,7 +244,7 @@ Get VNF indicators with filter Get VNF indicators with invalid filter Log The GET method queries multiple VNF indicators using invalid Attribute-based filtering parameters Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${NEG_FIELDS} ${output}= Output response @@ -254,7 +254,7 @@ Get all VNF indicators with malformed authorization token Pass Execution If ${AUTH_USAGE} == 0 Skipping test as EM/VNF is not supporting authentication Log The GET method queries multiple VNF indicators using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} - Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} + Set Headers {"${AUTHORIZATION_HEADER}": "${BAD_AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response @@ -264,7 +264,7 @@ Get all VNF indicators with expired or revoked authorization token Pass Execution If ${AUTH_USAGE} == 0 Skipping test as EM/VNF is not supporting authentication Log The GET method queries multiple VNF indicators using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} - Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} + Set Headers {"${AUTHORIZATION_HEADER}": "${NEG_AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response @@ -282,7 +282,7 @@ Get all VNF indicators without authorization token Get all VNF indicators with invalid resource endpoint Log The GET method queries multiple VNF indicators omitting token Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response @@ -291,7 +291,7 @@ Get all VNF indicators with invalid resource endpoint Send POST Request for all VNF indicators 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -299,7 +299,7 @@ Send POST Request for all VNF indicators Send PUT Request for all VNF indicators 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -307,7 +307,7 @@ Send PUT Request for all VNF indicators Send PATCH Request for all VNF indicators 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -315,7 +315,7 @@ Send PATCH Request for all VNF indicators Send DELETE Request for all VNF indicators 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response Set Suite Variable ${response} ${output} @@ -335,7 +335,7 @@ Check HTTP Response Body vnfIndicators Matches the requested attribute-based fil Get all indicators for a VNF instance Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -343,7 +343,7 @@ Get all indicators for a VNF instance Get all indicators for a VNF instance with filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${POS_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -351,7 +351,7 @@ Get all indicators for a VNF instance with filter Get all indicators for a VNF instance with invalid filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -359,7 +359,7 @@ Get all indicators for a VNF instance with invalid filter Get all indicators for a VNF instance with invalid resource identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${erroneousVnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -367,7 +367,7 @@ Get all indicators for a VNF instance with invalid resource identifier Send POST Request for indicators in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -375,7 +375,7 @@ Send POST Request for indicators in VNF instance Send PUT Request for indicators in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -383,7 +383,7 @@ Send PUT Request for indicators in VNF instance Send PATCH Request for indicators in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -391,7 +391,7 @@ Send PATCH Request for indicators in VNF instance Send DELETE Request for indicators in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -403,7 +403,7 @@ Check HTTP Response Body Includes Requested VNF Instances ID Get Individual Indicator for a VNF instance Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -411,7 +411,7 @@ Get Individual Indicator for a VNF instance Get Individual Indicator for a VNF instance with invalid indicator identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${erroneousIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -419,7 +419,7 @@ Get Individual Indicator for a VNF instance with invalid indicator identifier Send POST Request for individual indicator in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -427,7 +427,7 @@ Send POST Request for individual indicator in VNF instance Send PUT Request for individual indicator in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -435,7 +435,7 @@ Send PUT Request for individual indicator in VNF instance Send PATCH Request for individual indicator in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -443,7 +443,7 @@ Send PATCH Request for individual indicator in VNF instance Send DELETE Request for individual indicator in VNF instance 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -465,7 +465,7 @@ Check Postcondition Indicator for VNF instance Exist GET Individual VNF Indicator Subscription Log Trying to get a given subscription identified by subscriptionId Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -473,7 +473,7 @@ GET Individual VNF Indicator Subscription GET Individual VNF Indicator 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -481,7 +481,7 @@ GET Individual VNF Indicator Subscription with invalid resource identifier Send Delete Request for Individual VNF Indicator 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -489,14 +489,14 @@ Send Delete Request for Individual VNF Indicator Subscription Send Delete Request for Individual VNF Indicator Subscription with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post Request for Individual VNF Indicator Subscription Log Trying to create a new subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -504,7 +504,7 @@ Send Post Request for Individual VNF Indicator Subscription Send Put Request for Individual VNF Indicator Subscription 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -514,7 +514,7 @@ Send Put Request for Individual VNF Indicator Subscription Send Patch Request for Individual VNF Indicator Subscription Log Trying to create a new subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} diff --git a/SOL003/VNFIndicator-API/environment/variables.txt b/SOL003/VNFIndicator-API/environment/variables.txt index 5d4253fc2..a3d6321d4 100644 --- a/SOL003/VNFIndicator-API/environment/variables.txt +++ b/SOL003/VNFIndicator-API/environment/variables.txt @@ -3,9 +3,10 @@ ${VNFM_HOST} localhost # Hostname of the VNFM ${VNFM_PORT} 8080 # Listening port of the VNFM ${VNFM_SCHEMA} https -${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 -${NEG_AUTHORIZATION} Bearer negativetoken -${BAD_AUTHORIZATION} Bear sometoken +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${NEG_AUTHORIZATION_TOKEN} Bearer negativetoken +${BAD_AUTHORIZATION_TOKEN} Bear sometoken ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 ${CONTENT_TYPE_JSON} application/json diff --git a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot index e19b65ac9..5c35bdd70 100644 --- a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot @@ -131,70 +131,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot index 9cdf4abd8..28738b8e5 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot @@ -52,17 +52,17 @@ Initialize System Create Sessions Precondition Checks - STARTING - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState STARTING Check Postcondition VNF Cancel - STARTING - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState ROLLED_BACK Check Postcondition VNF Cancel - PROCESSING - ROLLING_BACK - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState FAILED_TEMP diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot index 1eff9a23f..e7bdd1e74 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot @@ -31,7 +31,7 @@ Initialize System Create Sessions Check Postcondition VNF Fail - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState FAILED diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 8a36e6327..b87e388ba 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -131,6 +131,6 @@ Get Information about an individual VNF Instance - Not Found Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot index f9e48ae38..3b2377c2d 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot @@ -38,7 +38,7 @@ Send VNF Instantiation Request Log Instantiate a VNF Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/instantiateVnfRequest.json ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} diff --git a/SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot b/SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot index 9e27f5bc7..8310ce197 100644 --- a/SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot @@ -1,92 +1,92 @@ -*** Settings *** -Library String -Library OperatingSystem -Resource environment/variables.txt -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library JSONLibrary -Library JSONSchemaLibrary schemas/ -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -VNF LCM Operation Occurrence Notification - [Documentation] Test ID: 7.3.1.36.1 - ... Test title: VNF LCM Operation Occurrence Notification - ... Test objective: The objective is to test that the POST request triggers VNF LCM Operation Occurrence Notification. - ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Post VNF LCM Operation Occurrence Notification - Check HTTP Response Status Code Is 204 - -VNF Identifier Creation Notification - [Documentation] Test ID: 7.3.1.36.2 - ... Test title: VNF Identifier Creation Notification - ... Test objective: The objective is to test that the POST request triggers VNF Identifier Creation Notification. - ... Pre-conditions: A subscription for VNF identifier creation cotification is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Post VNF Identifier Creation Notification - Check HTTP Response Status Code Is 204 - -VNF Identifier Deletion Notification - [Documentation] Test ID: 7.3.1.36.3 - ... Test title: VNF Identifier Deletion Notification - ... Test objective: The objective is to test that the POST request triggers VNF Identifier Deletion Notification. - ... Pre-conditions: A subscription for VNF identifier deletion notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Post VNF LCM Operation Occurrence Notification - Check HTTP Response Status Code Is 204 -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body Subscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post VNF LCM Operation Occurrence Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/VnfLcmOperationOccurrenceNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post VNF Identifier Creation Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/VnfIdentifierCreationNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post VNF Identifier Deletion Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/VnfIdentifierDeletionNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response +*** Settings *** +Library String +Library OperatingSystem +Resource environment/variables.txt +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF LCM Operation Occurrence Notification + [Documentation] Test ID: 7.3.1.36.1 + ... Test title: VNF LCM Operation Occurrence Notification + ... Test objective: The objective is to test that the POST request triggers VNF LCM Operation Occurrence Notification. + ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post VNF LCM Operation Occurrence Notification + Check HTTP Response Status Code Is 204 + +VNF Identifier Creation Notification + [Documentation] Test ID: 7.3.1.36.2 + ... Test title: VNF Identifier Creation Notification + ... Test objective: The objective is to test that the POST request triggers VNF Identifier Creation Notification. + ... Pre-conditions: A subscription for VNF identifier creation cotification is available in the VNFM. + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post VNF Identifier Creation Notification + Check HTTP Response Status Code Is 204 + +VNF Identifier Deletion Notification + [Documentation] Test ID: 7.3.1.36.3 + ... Test title: VNF Identifier Deletion Notification + ... Test objective: The objective is to test that the POST request triggers VNF Identifier Deletion Notification. + ... Pre-conditions: A subscription for VNF identifier deletion notifications is available in the VNFM. + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post VNF LCM Operation Occurrence Notification + Check HTTP Response Status Code Is 204 +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body Subscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post VNF LCM Operation Occurrence Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfLcmOperationOccurrenceNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Identifier Creation Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfIdentifierCreationNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Identifier Deletion Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfIdentifierDeletionNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index 2f11f363e..f0d227b3e 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -100,6 +100,6 @@ DELETE Operate VNFInstance - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index 31848724f..8f52055f4 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -100,6 +100,6 @@ DELETE Retry operation task - Method not implemented *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot index bf4db381d..c512576c8 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot @@ -42,12 +42,12 @@ Retry VNF LCM Operation - Unsuccessful *** Keywords *** Check Postcondition VNF Retry Successful - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState COMPLETED Check Postcondition VNF Retry Unsuccessful - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState FAILED_TEMP diff --git a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot index 3e42be057..d3787aeca 100644 --- a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot @@ -48,12 +48,12 @@ Initialize System Create Sessions Check Postcondition VNF Roll Back Successful - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState ROLLED_BACK Check Postcondition VNF Roll Back Unsuccessful - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body operationState FAILED_TEMP diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index 11038da13..34443682d 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -99,6 +99,6 @@ DELETE Rollback operation task - Method not implemented *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index 1ce92b0b1..5d6da78ee 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -99,6 +99,6 @@ DELETE Scale VNFInstance - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot b/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot index 6c858da67..835aa876c 100644 --- a/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot @@ -13,7 +13,7 @@ Library MockServerLibrary Check subscriptions about one VNFInstance and operation type [Arguments] ${vnfInstanceId} ${notificationType} ${operationType}="" ${operationState}="" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${notificationType}=="VnfIdentifierCreationNotification" or ${notificationType}=="VnfIdentifierDeletionNotification" GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?vnfInstanceIds=${vnfInstanceId}¬ificationTypes=${notificationType} ... ELSE GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?vnfInstanceIds=${vnfInstanceId}¬ificationTypes=${notificationType}&operationTypes=${operationType}&operationStates=${operationState} Integer response status 200 diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index 98018e193..fd8544442 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -87,6 +87,6 @@ DELETE Terminate VNFInstance - Method not implemented Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 3323c1132..018d6dea5 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -16,7 +16,7 @@ Get Vnf Instance [Arguments] ${vnfInstanceId} Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${body}= Output response body [Return] ${body} @@ -54,7 +54,7 @@ Check VNF Instance [Arguments] ${vnfId} Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${response}= Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfId} Check VNF Status @@ -63,12 +63,12 @@ Check VNF Status Log VNF Status in the correct status Check operation resource state is FAILED_TEMP - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body instantiationState FAILED_TEMP Check operation resource state is FINALLY_FAILED - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} String response body instantiationState FINALLY_FAILED Get Vnf Scale Info @@ -103,7 +103,7 @@ Send VNF Scale Out Request Log Trying to scale a vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfOutRequest.json ${json}= evaluate json.loads('''${body}''') json ${aspectId}= Set Variable ${json.aspectId} @@ -114,7 +114,7 @@ Send VNF Scale To Level Request 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfToLevelRequest.json ${json}= evaluate json.loads('''${body}''') json ${aspectId}= Set Variable ${json.aspectId} @@ -124,7 +124,7 @@ Send VNF Instance Resource Create Request Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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} @@ -132,14 +132,14 @@ Send VNF Instance Resource Create Request Send VNF Instance Resource Delete Request log Delete an individual VNF instance - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${response}= Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} Send Change VNF Flavour Request Log Trying to change the deployment flavour of a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/changeVnfFlavourRequest.json ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} @@ -147,7 +147,7 @@ Send Change VNF Operational State Request Log Trying to change the operational state of a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/operateVnfRequest.json ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} @@ -155,7 +155,7 @@ Send Heal VNF Request Log Trying to heal a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/healVnfRequest.json ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} @@ -163,7 +163,7 @@ Send Change Ext Connectivity Request Log Trying to change the external connectivity of a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/changeExtVnfConnectivityRequest.json ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} @@ -171,7 +171,7 @@ Send Terminate VNF Request Log Trying to terminate a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/terminateVnfRequest.json ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} @@ -179,28 +179,28 @@ Send Info Modification Request Log Trying to update information of a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/patchBodyRequest.json ${response}= Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${body} Send Retry Operation Request Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry Send Roll back Operation Request Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback Send Fail Operation Request Log Fail a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail Send Cancel Operation Request Log Cancel an ongoing VNF lifecycle operation - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} Create a new Grant - Synchronous mode @@ -209,7 +209,7 @@ Create a new Grant - Synchronous mode Pass Execution If ${SYNC_MODE} == 0 The Granting process is asynchronous mode. Skipping the test Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/grantRequest.json ${json_body}= evaluate json.loads('''${body}''') json Set To Dictionary ${json_body} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} operation=${operation} @@ -231,7 +231,7 @@ Create a new Grant - Asynchronous mode Pass Execution If ${SYNC_MODE} == 1 The Granting process is synchronous mode. Skipping the test Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/grantRequest.json ${json_body}= evaluate json.loads('''${body}''') json Set To Dictionary ${json_body} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} operation=${operation} @@ -248,7 +248,7 @@ Create a new Grant - Asynchronous mode POST Cancel operation task Log Cancel an ongoing VNF lifecycle operation - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Cancel a VNF lifecycle operation Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} Log Validate Status code @@ -257,7 +257,7 @@ POST Cancel operation task POST Cancel operation task with conflict Log Cancel an ongoing VNF lifecycle operation - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Cancel a VNF lifecycle operation Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotStartingProcessingRollingback}/cancel ${CancelMode} Log Validate Status code @@ -266,7 +266,7 @@ POST Cancel operation task with conflict POST Cancel operation task not existing Log Cancel an ongoing VNF lifecycle operation - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Cancel a VNF lifecycle operation Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingVnfLcmOpOccId}/cancel ${CancelMode} Log Validate Status code @@ -275,14 +275,14 @@ POST Cancel operation task not existing GET Cancel operation task log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Cancel operation task log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -296,7 +296,7 @@ PATCH Cancel operation task DELETE Cancel operation task Log Trying to perform a DELETE. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -305,7 +305,7 @@ POST Change External VNF Connectivity Log Trying to change the external connectivity of a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/changeExtVnfConnectivityRequest.json Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} ${outputResponse}= Output response @@ -313,14 +313,14 @@ POST Change External VNF Connectivity GET Change External VNF Connectivity log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Change External VNF Connectivity log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -334,7 +334,7 @@ PATCH Change External VNF Connectivity DELETE Change External VNF Connectivity Log Trying to perform a DELETE. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -343,7 +343,7 @@ POST Change VNF deployment flavour Log Trying to change the deployment flavour of a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/changeVnfFlavourRequest.json ${body}= Format String ${template} newFlavourId=${Flavour_ID} @@ -355,7 +355,7 @@ POST Change VNF deployment flavour of NOT-INSTANTIATED VNF Log Trying to change the deployment flavour of a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/changeVnfFlavourRequest.json ${body}= Format String ${template} newFlavourId=${newFlavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/change_flavour ${body} @@ -366,7 +366,7 @@ POST Change VNF deployment flavour of not existing VNF Log Trying to change the deployment flavour of a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/changeVnfFlavourRequest.json ${body}= Format String ${template} newFlavourId=${newFlavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/change_flavour ${body} @@ -375,14 +375,14 @@ POST Change VNF deployment flavour of not existing VNF 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Change VNF deployment flavour log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -396,7 +396,7 @@ PATCH Change VNF deployment flavour DELETE Change VNF deployment flavour Log Trying to perform a DELETE. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -405,7 +405,7 @@ POST Create a new vnfInstance Log Create VNF instance by POST to /vnf_instances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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} @@ -417,7 +417,7 @@ GET multiple vnfInstances Log Query VNF The GET method queries information about multiple VNF instances. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${outputResponse}= Output response @@ -427,7 +427,7 @@ GET multiple vnfInstances with bad attribute Log Query VNF The GET method queries information about multiple VNF instances. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?attribute_not_exist=some_value ${outputResponse}= Output response @@ -437,7 +437,7 @@ GET multiple vnfInstances with bad filter Log Query VNF The GET method queries information about multiple VNF instances. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?attribute_not_exist=some_value ${outputResponse}= Output response @@ -446,35 +446,35 @@ GET multiple vnfInstances with bad filter GET multiple vnfInstances with all_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_default attribute selector Log Query status information about multiple VNF instances using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_default and fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -483,7 +483,7 @@ PUT VNFInstances log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${output}= Output response Set Suite Variable ${response} ${output} @@ -492,7 +492,7 @@ PATCH VNFInstances log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${output}= Output response Set Suite Variable ${response} ${output} @@ -501,7 +501,7 @@ DELETE VNFInstances log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${output}= Output response Set Suite Variable ${response} ${output} @@ -510,7 +510,7 @@ POST individual vnfInstance log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -519,7 +519,7 @@ GET individual vnfInstance log Trying to get information about an individual VNF instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -528,7 +528,7 @@ PUT individual vnfInstance log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -537,7 +537,7 @@ PATCH individual vnfInstance log Trying to modify an individual VNF instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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} @@ -547,13 +547,13 @@ PATCH individual vnfInstance DELETE individual vnfInstance log Trying to delete an individual VNF instance - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE individual vnfInstance in INSTANTIATED state log Trying to delete an individual VNF instance - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${instantiatedVnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -561,7 +561,7 @@ POST instantiate individual 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/instantiateVnfRequest.json Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} ${outputResponse}= Output response @@ -571,7 +571,7 @@ POST instantiate individual vnfInstance with conflict 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/instantiateVnfRequest.json Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${instantiatedVnfInstanceId}/instantiate ${body} ${outputResponse}= Output response @@ -579,28 +579,28 @@ POST instantiate individual vnfInstance with conflict GET instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -608,7 +608,7 @@ 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfRequest.json ${body}= Format String ${template} scaletype=${scaletype} scaleAspectId=${scaleAspectId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} @@ -618,7 +618,7 @@ POST Scale vnfInstance with VNF NOT-INSTANTIATED 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfRequest.json ${body}= Format String ${template} scaletype=${scaletype} scaleAspectId=${scaleAspectId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/scale ${body} @@ -628,7 +628,7 @@ POST Scale vnfInstance with not existing VNF 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfRequest.json ${body}= Format String ${template} scaletype=${scaletype} scaleAspectId=${scaleAspectId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/scale ${body} @@ -638,7 +638,7 @@ GET Scale vnfInstance Log Trying to get a scale a vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfRequest.json Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response @@ -647,7 +647,7 @@ PUT Scale vnfInstance Log Trying to modify a scale vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfRequest.json Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response @@ -656,7 +656,7 @@ PATCH Scale vnfInstance Log Trying to modify a scale vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfRequest.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response @@ -665,7 +665,7 @@ DELETE Scale vnfInstance Log Trying to modify a scale vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfRequest.json Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response @@ -674,7 +674,7 @@ POST Scale vnfInstance to level Log Trying to scale a vnf Instance to level Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfToLevelRequest.json ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} @@ -684,7 +684,7 @@ POST Scale vnfInstance to level with VNF NOT-INSTANTIATED Log Trying to scale a vnf Instance to level Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfToLevelRequest.json ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/scale_to_level ${body} @@ -694,7 +694,7 @@ POST Scale vnfInstance to level with not existing VNF Log Trying to scale a vnf Instance to level Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfToLevelRequest.json ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/scale_to_level ${body} @@ -702,28 +702,28 @@ POST Scale vnfInstance to level with not existing VNF Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance to level log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Scale vnfInstance to level log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Scale vnfInstance to level log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Scale vnfInstance to level log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -732,7 +732,7 @@ POST Terminate VNF Log Trying to terminate a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/terminateVnfRequest.json ${body}= Format String ${template} terminationType=${terminationType} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} @@ -743,7 +743,7 @@ POST Terminate VNF in NOT-INSTANTIATED state Log Trying to terminate a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/terminateVnfRequest.json ${body}= Format String ${template} terminationType=${terminationType} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/terminate ${body} @@ -752,28 +752,28 @@ POST Terminate VNF in NOT-INSTANTIATED state GET Terminate VNF log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Terminate VNF log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Terminate VNF log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Terminate VNF log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -782,7 +782,7 @@ POST Heal VNF Log Trying to heal a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/healVnfRequest.json ${body}= Format String ${template} healingCause=${healingCause} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} @@ -793,7 +793,7 @@ POST Heal VNF Not Instantiated Log Trying to heal a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/healVnfRequest.json ${body}= Format String ${template} healingCause=${healingCause} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/heal ${body} @@ -804,7 +804,7 @@ POST Heal VNF Not Existing Log Trying to heal a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/healVnfRequest.json ${body}= Format String ${template} healingCause=${healingCause} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/heal ${body} @@ -813,28 +813,28 @@ POST Heal VNF Not Existing GET Heal VNF log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Heal VNF log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Heal VNF log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Heal VNF log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -843,7 +843,7 @@ POST Operate VNF Log Trying to operate a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/operateVnfRequest.json ${body}= Format String ${template} changeStateTo=${changeStateTo} stopType=${stopType} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} @@ -854,7 +854,7 @@ POST Operate VNF with conflict Log Trying to operate a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/operateVnfRequest.json ${body}= Format String ${template} changeStateTo=${changeStateTo} stopType=${stopType} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/operate ${body} @@ -865,7 +865,7 @@ POST Operate VNF not existing Log Trying to operate a VNF instance. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/operateVnfRequest.json ${body}= Format String ${template} changeStateTo=${changeStateTo} stopType=${stopType} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/operate ${body} @@ -874,28 +874,28 @@ POST Operate VNF not existing GET Operate VNF log Trying to perform a GET. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT Operate VNF log Trying to perform a PUT. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH Operate VNF log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Operate VNF log Trying to perform a PATCH. This method should not be implemented - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -903,14 +903,14 @@ DELETE Operate VNF Post VNF LCM Operation occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM Operation occurrences Log Query status information about multiple VNF lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response @@ -918,84 +918,84 @@ GET VNF LCM Operation occurrences GET VNF LCM Operation occurrences invalid attribute Log Query status information about multiple VNF lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?attribute_not_exist=some_value ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM Operation occurrences invalid filter Log Query status information about multiple VNF lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=wrong_field ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get VNF LCM Operation occurrences with all_fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_default and fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_default attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} PUT VNF LCM Operation occurrences log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH VNF LCM Operation occurrences log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE VNF LCM Operation occurrences log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Individual VNF LCM Operation occurrences log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Individual VNF LCM Operation occurrences Log Query status information about multiple VNF lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response @@ -1003,41 +1003,41 @@ Get Individual VNF LCM Operation occurrences Put multiple VNF instances log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch multiple VNF instances log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete multiple VNF instances log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Retry operation Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Retry operation with conflict Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotFailedTemp}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Retry operation not existing Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingVnfLcmOpOccId}/retry ${outputResponse}= Output response @@ -1045,7 +1045,7 @@ Post Retry operation not existing Get Retry operation Log Trying to perform a GET. This method should not be implemented. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response @@ -1053,41 +1053,41 @@ Get Retry operation Put Retry operation log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Retry operation log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Retry operation log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Rollback operation Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Rollback operation with conflict Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotFailedTemp}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Rollback operation not existing Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingVnfLcmOpOccId}/rollback ${outputResponse}= Output response @@ -1095,7 +1095,7 @@ Post Rollback operation not existing Get Rollback operation Log Trying to perform a GET. This method should not be implemented. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response @@ -1103,27 +1103,27 @@ Get Rollback operation Put Rollback operation log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Rollback operation log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Rollback operation log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Fail operation Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response @@ -1131,7 +1131,7 @@ Post Fail operation Post Fail operation with conflict Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotFailedTemp}/fail ${outputResponse}= Output response @@ -1139,7 +1139,7 @@ Post Fail operation with conflict Post Fail operation not existing Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingvnfLcmOpOccId}/fail ${outputResponse}= Output response @@ -1148,7 +1148,7 @@ Post Fail operation not existing Get Fail operation Log Trying to perform a GET. This method should not be implemented. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response @@ -1156,21 +1156,21 @@ Get Fail operation Put Fail operation log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Fail operation log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Fail operation log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1178,7 +1178,7 @@ Post Create subscription Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_notification=${callback_notification} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -1189,7 +1189,7 @@ Post Create subscription - DUPLICATION Pass Execution If ${VNFM_DUPLICATION} == 0 VNFM 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_notification=${callback_notification} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -1200,7 +1200,7 @@ Post Create subscription - NO-DUPLICATION Pass Execution If ${VNFM_DUPLICATION} == 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_notification=${callback_notification} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -1210,7 +1210,7 @@ Get subscriptions Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response @@ -1219,42 +1219,42 @@ Get subscriptions - filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions - invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1262,7 +1262,7 @@ PUT subscriptions log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1270,7 +1270,7 @@ PATCH subscriptions log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1278,7 +1278,7 @@ DELETE subscriptions log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1286,14 +1286,14 @@ Post Create Individual subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Individual subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1301,7 +1301,7 @@ Put Individual subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1309,14 +1309,14 @@ Patch Individual subscription log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Individual subscription log Try to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 51e5bc7c9..116c942ab 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -5,7 +5,8 @@ ${VNFM_SCHEMA} https ${ACCEPT} application/json ${ACCEPT_JSON} application/json ${CONTENT_TYPE} application/json -${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${AUTH_USAGE} 1 ${CONTENT_TYPE_PATCH} application/merge-patch+json diff --git a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot index b9291d316..37846692b 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot @@ -133,70 +133,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index c377d7001..f4c920df2 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -116,7 +116,7 @@ Send Request Grant Request in Synchronous mode Pass Execution If ${SYNC_MODE} == 0 The Granting process is asynchronous mode. Skipping the test Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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=${Descriptor_ID} flavourId=${Flavour_ID} @@ -129,7 +129,7 @@ Send Request Grant Request in Asynchronous mode Pass Execution If ${SYNC_MODE} == 1 The Granting process is synchronous mode. Skipping the test Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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=${Descriptor_ID} flavourId=${Flavour_ID} @@ -142,7 +142,7 @@ Send Request for a new Grant Forbiden Operation Log The grant request should be rejected Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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=${Descriptor_ID} flavourId=${Flavour_ID} @@ -172,7 +172,7 @@ Check HTTP Response Body Json Schema Is Get an individual grant - Successful log Trying to read an individual grant Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${response['headers']['Location']} Log Validate Status code Integer response status 200 @@ -180,7 +180,7 @@ Get an individual grant - Successful Get Grants Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response Set Suite Variable ${response} ${body} @@ -188,7 +188,7 @@ Get Grants Put Grants Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response Set Suite Variable ${response} ${body} @@ -196,7 +196,7 @@ Put Grants Patch Grants Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response Set Suite Variable ${response} ${body} @@ -204,7 +204,7 @@ Patch Grants Delete Grants Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response Set Suite Variable ${response} ${body} diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index 554ce5a39..a52f60300 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -106,14 +106,14 @@ DELETE an individual grant - Method not implemented Get individual grant log Trying to read an individual grant Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response Set Suite Variable ${response} ${body} Check resource existence Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 @@ -121,7 +121,7 @@ Post individual Grant log Trying to read an individual grant Pass Execution If ${SYNC_MODE} == 1 Skipping. Synchronous mode is supported Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response Set Suite Variable ${response} ${body} @@ -129,7 +129,7 @@ Post individual Grant Put individual Grant Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response Set Suite Variable ${response} ${body} @@ -137,7 +137,7 @@ Put individual Grant Patch individual Grant Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response Set Suite Variable ${response} ${body} @@ -145,7 +145,7 @@ Patch individual Grant Delete individual Grant Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response Set Suite Variable ${response} ${body} diff --git a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index c9405aec8..dbbedb4bf 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -2,7 +2,8 @@ ${NFVO_HOST} localhost # Hostname of the NFVO ${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE} application/json ${ACCEPT} application/json ${AUTH_USAGE} 1 diff --git a/SOL003/VNFPackageManagement-API/ApiVersion.robot b/SOL003/VNFPackageManagement-API/ApiVersion.robot index 41eeca71b..2f7e5495d 100644 --- a/SOL003/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL003/VNFPackageManagement-API/ApiVersion.robot @@ -133,70 +133,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot index 29e2aeb8b..2635c198a 100644 --- a/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot @@ -1,208 +1,208 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Resource VNFPackageManagementKeywords.robot -Library JSONLibrary -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false - -*** Test Cases *** -Get Manifest in Individual VNF Package - [Documentation] Test ID: 7.3.3.10.1 - ... Test title: Get Manifest in Individual VNF Package - ... Test objective: The objective is to test that the Get request read the content of manifest within a NVF Package and perform a validation that returned content is in plain text format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Manifest in Individual VNF Package - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is text/plain - -Get Manifest in Individual VNF Package with security information - [Documentation] Test ID: 7.3.3.10.2 - ... Test title: Get Manifest in Individual VNF Package with security information - ... Test objective: The objective is to test the retrieval of manifest for an individual VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Manifest in Individual VNF Package with security information - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get Manifest in Individual VNF Package - Not acceptable - [Documentation] Test ID: 7.3.3.10.3 - ... Test title: Get Manifest in Individual VNF Package - Not acceptable - ... Test objective: The objective is to test that retriveal of the of manifest for an individual VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Manifest in Individual VNF Package - Check HTTP Response Status Code Is 406 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get Manifest in Individual VNF Package - Conflict - [Documentation] Test ID: 7.3.3.10.4 - ... Test title: Get Manifest in Individual VNF Package - Conflict - ... Test objective: The objective is to test that the retrieval of the manifest for an individual VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Manifest in Individual VNF Package with conflict due to onboarding state - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -POST Manifest in Individual VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.10.5 - ... Test title: POST Manifest in Individual VNF Package - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create new resource - ... Pre-conditions: none - ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send POST Request for Manifest in individual VNF Package - Check HTTP Response Status Code Is 405 - -PUT Manifest in Individual VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.10.6 - ... Test title: PUT Manifest in Individual VNF Package - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to modify resource - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PUT Request for Manifest in individual VNF Package - Check HTTP Response Status Code Is 405 - -PATCH Manifest in Individual VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.10.7 - ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update resource - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PATCH Request for Manifest in individual VNF Package - Check HTTP Response Status Code Is 405 - -DELETE Manifest in Individual VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.10.8 - ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete resource - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: Resource is not deleted by the failed operation - Send DELETE Request for Manifest in individual VNF Package - Check HTTP Response Status Code Is 405 - - -Get Manifest in Individual OnBoarded VNF Package - [Documentation] Test ID: 7.3.3.10.9 - ... Test title: Get Manifest in Individual OnBoarded VNF Package - ... Test objective: The objective is to test that the Get request read the content of manifest within a OnBoarded NVF Package and perform a validation that returned content is in plain text format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Manifest in Individual OnBoarded VNF Package - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is text/plain - -Get Manifest in Individual OnBoarded VNF Package with security information - [Documentation] Test ID: 7.3.3.10.10 - ... Test title: Get Manifest in Individual OnBoarded VNF Package with security information - ... Test objective: The objective is to test the retrieval of manifest for an individual OnBoarded VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Manifest in Individual OnBoarded VNF Package with security information - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get Manifest in Individual OnBoarded VNF Package - Not acceptable - [Documentation] Test ID: 7.3.3.10.11 - ... Test title: Get Manifest in Individual OnBoarded VNF Package - Not acceptable - ... Test objective: The objective is to test that retriveal of the of manifest for an individual OnBoarded VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Manifest in Individual OnBoarded VNF Package - Check HTTP Response Status Code Is 406 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get Manifest in Individual OnBoarded VNF Package - Conflict - [Documentation] Test ID: 7.3.3.10.12 - ... Test title: Get Manifest in Individual OnBoarded VNF Package - Conflict - ... Test objective: The objective is to test that the retrieval of the manifest for an individual OnBoarded VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Manifest in Individual OnBoarded VNF Package with conflict due to onboarding state - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -POST Manifest in Individual OnBoarded VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.10.13 - ... Test title: POST Manifest in Individual OnBoarded VNF Package - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create new resource - ... Pre-conditions: none - ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send POST Request for Manifest in individual OnBoarded VNF Package - Check HTTP Response Status Code Is 405 - -PUT Manifest in Individual OnBoarded VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.10.14 - ... Test title: PUT Manifest in Individual OnBoarded VNF Package - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to modify resource - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PUT Request for Manifest in individual OnBoarded VNF Package - Check HTTP Response Status Code Is 405 - -PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.10.15 - ... Test title: PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update resource - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PATCH Request for Manifest in individual OnBoarded VNF Package - Check HTTP Response Status Code Is 405 - -DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented - [Documentation] Test ID: 7.3.3.10.16 - ... Test title: DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete resource - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: Resource is not deleted by the failed operation - Send DELETE Request for Manifest in individual OnBoarded VNF Package +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false + +*** Test Cases *** +Get Manifest in Individual VNF Package + [Documentation] Test ID: 7.3.3.10.1 + ... Test title: Get Manifest in Individual VNF Package + ... Test objective: The objective is to test that the Get request read the content of manifest within a NVF Package and perform a validation that returned content is in plain text format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get Manifest in Individual VNF Package with security information + [Documentation] Test ID: 7.3.3.10.2 + ... Test title: Get Manifest in Individual VNF Package with security information + ... Test objective: The objective is to test the retrieval of manifest for an individual VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get Manifest in Individual VNF Package - Not acceptable + [Documentation] Test ID: 7.3.3.10.3 + ... Test title: Get Manifest in Individual VNF Package - Not acceptable + ... Test objective: The objective is to test that retriveal of the of manifest for an individual VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get Manifest in Individual VNF Package - Conflict + [Documentation] Test ID: 7.3.3.10.4 + ... Test title: Get Manifest in Individual VNF Package - Conflict + ... Test objective: The objective is to test that the retrieval of the manifest for an individual VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual VNF Package with conflict due to onboarding state + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.10.5 + ... Test title: POST Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create new resource + ... Pre-conditions: none + ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + +PUT Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.10.6 + ... Test title: PUT Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify resource + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + +PATCH Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.10.7 + ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update resource + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + +DELETE Manifest in Individual VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.10.8 + ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete resource + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: Resource is not deleted by the failed operation + Send DELETE Request for Manifest in individual VNF Package + Check HTTP Response Status Code Is 405 + + +Get Manifest in Individual OnBoarded VNF Package + [Documentation] Test ID: 7.3.3.10.9 + ... Test title: Get Manifest in Individual OnBoarded VNF Package + ... Test objective: The objective is to test that the Get request read the content of manifest within a OnBoarded NVF Package and perform a validation that returned content is in plain text format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual OnBoarded VNF Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is text/plain + +Get Manifest in Individual OnBoarded VNF Package with security information + [Documentation] Test ID: 7.3.3.10.10 + ... Test title: Get Manifest in Individual OnBoarded VNF Package with security information + ... Test objective: The objective is to test the retrieval of manifest for an individual OnBoarded VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual OnBoarded VNF Package with security information + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get Manifest in Individual OnBoarded VNF Package - Not acceptable + [Documentation] Test ID: 7.3.3.10.11 + ... Test title: Get Manifest in Individual OnBoarded VNF Package - Not acceptable + ... Test objective: The objective is to test that retriveal of the of manifest for an individual OnBoarded VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual OnBoarded VNF Package + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get Manifest in Individual OnBoarded VNF Package - Conflict + [Documentation] Test ID: 7.3.3.10.12 + ... Test title: Get Manifest in Individual OnBoarded VNF Package - Conflict + ... Test objective: The objective is to test that the retrieval of the manifest for an individual OnBoarded VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Manifest in Individual OnBoarded VNF Package with conflict due to onboarding state + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Manifest in Individual OnBoarded VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.10.13 + ... Test title: POST Manifest in Individual OnBoarded VNF Package - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create new resource + ... Pre-conditions: none + ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for Manifest in individual OnBoarded VNF Package + Check HTTP Response Status Code Is 405 + +PUT Manifest in Individual OnBoarded VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.10.14 + ... Test title: PUT Manifest in Individual OnBoarded VNF Package - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify resource + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for Manifest in individual OnBoarded VNF Package + Check HTTP Response Status Code Is 405 + +PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.10.15 + ... Test title: PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update resource + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for Manifest in individual OnBoarded VNF Package + Check HTTP Response Status Code Is 405 + +DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented + [Documentation] Test ID: 7.3.3.10.16 + ... Test title: DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete resource + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: Resource is not deleted by the failed operation + Send DELETE Request for Manifest in individual OnBoarded VNF Package Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/NotificationConsumer.robot b/SOL003/VNFPackageManagement-API/NotificationConsumer.robot index b61fe1315..0cc88c3de 100644 --- a/SOL003/VNFPackageManagement-API/NotificationConsumer.robot +++ b/SOL003/VNFPackageManagement-API/NotificationConsumer.robot @@ -1,70 +1,70 @@ -*** Settings *** -Library String -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library OperatingSystem -Library JSONLibrary -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -VNF Package Onboarding Notification - [Documentation] Test ID: 7.3.3.12.1 - ... Test title: VNF Package Onboarding Notification - ... Test objective: The objective is to test that the POST request triggers VNF Package Onboarding notification. - ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Post VNF Package Onboarding Notification - Check HTTP Response Status Code Is 204 - -VNF Package Change Notification - [Documentation] Test ID: 7.3.3.12.2 - ... Test title: VNF Package Change Notification - ... Test objective: The objective is to test that the POST request triggers VNF Package Change notification. - ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Post VNF Package Change Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body PkgmSubscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post VNF Package Onboarding Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/VnfPackageOnboardingNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPackageId=${vnfPackageId} vndId=${vndId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post VNF Package Change Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/VnfPackageChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPackageId=${vnfPackageId} vndId=${vndId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response +*** Settings *** +Library String +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library OperatingSystem +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Package Onboarding Notification + [Documentation] Test ID: 7.3.3.12.1 + ... Test title: VNF Package Onboarding Notification + ... Test objective: The objective is to test that the POST request triggers VNF Package Onboarding notification. + ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Post VNF Package Onboarding Notification + Check HTTP Response Status Code Is 204 + +VNF Package Change Notification + [Documentation] Test ID: 7.3.3.12.2 + ... Test title: VNF Package Change Notification + ... Test objective: The objective is to test that the POST request triggers VNF Package Change notification. + ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Post VNF Package Change Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body PkgmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post VNF Package Onboarding Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfPackageOnboardingNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPackageId=${vnfPackageId} vndId=${vndId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Package Change Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfPackageChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPackageId=${vnfPackageId} vndId=${vndId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot index 35a1ad73a..4fe69be41 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -1,389 +1,389 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Resource VNFPackageManagementKeywords.robot -Library JSONLibrary -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false - -*** Test Cases *** -Get VNF Package Artifact - [Documentation] Test ID: 7.3.3.11.1 - ... Test title: Get VNF Package Artifact - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter - [Documentation] Test ID: 7.3.3.11.2 - ... Test title: Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with exclude_all_mano_artifacts parameter - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter - [Documentation] Test ID: 7.3.3.11.3 - ... Test title: Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with exclude_all_non_mano_artifacts parameter - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter - [Documentation] Test ID: 7.3.3.11.4 - ... Test title: Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with select_non_mano_artifact_sets parameter - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get VNF Package Artifact with "include_signatures" parameter - [Documentation] Test ID: 7.3.3.11.5 - ... Test title: Get VNF Package Artifact with "include_signatures" parameter - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with include_signatures parameter - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get VNF Package Artifact with Range Request and NFVO supporting Range Requests - [Documentation] Test ID: 7.3.3.11.6 - ... Test title: Get VNF Package Artifact with Range Request and NFVO supporting Range Requests - ... Test objective: The objective is to test the GET request read the whole content of the archive containing the artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact - ... Post-Conditions: none - Get Artifact in VNF Package with Range Request - Check HTTP Response Status Code Is 206 - Check HTTP Response Header Content-Range Is Present and Matches the requested range - Check HTTP Response Header Content-Length Is Present and Matches the requested range length - -Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" - [Documentation] Test ID: 7.3.3.11.7 - ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifacts" - [Documentation] Test ID: 7.3.3.11.8 - ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get VNF Package Artifact with invalid URI parameters undifend select_non_mano_artifact_sets - [Documentation] Test ID: 7.3.3.11.9 - ... Test title: Get VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in VNF Package with select_non_mano_artifact_sets parameter - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get VNF Package Artifact with conflict due to onboarding state - [Documentation] Test ID: 7.3.3.11.10 - ... Test title: Get VNF Package Artifact with conflict due to onboarding state - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - GET Artifact of VNF Package in onboarding state different from ONBOARDED - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET VNF Package Artifact with invalid Range Request - [Documentation] Test ID: 7.3.3.11.11 - ... Test title: GET VNF Package Artifact with invalid Range Request - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when using a range request that does not match any available byte range in the file. - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact - ... Post-Conditions: none - GET VNF Package Artifact with invalid Range Request - Check HTTP Response Status Code Is 416 - -POST VNF Package Artifact - Method not implemented - [Documentation] Test ID: 7.3.3.11.12 - ... Test title: POST VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact - ... Pre-conditions: none - ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send POST Request for VNF Package Artifact - Check HTTP Response Status Code Is 405 - -PUT VNF Package Artifact - Method not implemented - [Documentation] Test ID: 7.3.3.11.13 - ... Test title: PUT VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PUT Request for VNF Package Artifact - Check HTTP Response Status Code Is 405 - -PATCH VNF Package Artifact - Method not implemented - [Documentation] Test ID: 7.3.3.11.14 - ... Test title: PATCH VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PATCH Request for VNF Package Artifact - Check HTTP Response Status Code Is 405 - -DELETE VNF Package Artifact - Method not implemented - [Documentation] Test ID: 7.3.3.11.15 - ... Test title: DELETE VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send DELETE Request for VNF Package Artifact - Check HTTP Response Status Code Is 405 - -Get OnBoarded VNF Package Artifact - [Documentation] Test ID: 7.3.3.11.16 - ... Test title: Get OnBoarded VNF Package Artifact - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package Artifact files successfully, and perform a validation that returned content is in Zip format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in OnBoarded VNF Package - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get OnBoarded VNF Package Artifact with "exclude_all_mano_artifacts" parameter - [Documentation] Test ID: 7.3.3.11.17 - ... Test title: Get OnBoarded VNF Package Artifact with "exclude_all_mano_artifacts" parameter - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package Artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in OnBoarded VNF Package with exclude_all_mano_artifacts parameter - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get OnBoarded VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter - [Documentation] Test ID: 7.3.3.11.18 - ... Test title: Get OnBoarded VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts parameter - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get OnBoarded VNF Package Artifact with "select_non_mano_artifact_sets" parameter - [Documentation] Test ID: 7.3.3.11.19 - ... Test title: Get OnBoarded VNF Package Artifact with "select_non_mano_artifact_sets" parameter - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in OnBoarded VNF Package with select_non_mano_artifact_sets parameter - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get OnBoarded VNF Package Artifact with "include_signatures" parameter - [Documentation] Test ID: 7.3.3.11.20 - ... Test title: Get OnBoarded VNF Package Artifact with "include_signatures" parameter - ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in OnBoarded VNF Package with include_signatures parameter - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip - -Get OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range Requests - [Documentation] Test ID: 7.3.3.11.21 - ... Test title: Get OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range Requests - ... Test objective: The objective is to test the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact - ... Post-Conditions: none - Get Artifact in OnBoarded VNF Package with Range Request - Check HTTP Response Status Code Is 206 - Check HTTP Response Header Content-Range Is Present and Matches the requested range - Check HTTP Response Header Content-Length Is Present and Matches the requested range length - -Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" - [Documentation] Test ID: 7.3.3.11.22 - ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifacts" - [Documentation] Test ID: 7.3.3.11.23 - ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get OnBoarded VNF Package Artifact with invalid URI parameters undifend select_non_mano_artifact_sets - [Documentation] Test ID: 7.3.3.11.24 - ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Get Artifact in OnBoarded VNF Package with select_non_mano_artifact_sets parameter - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -Get OnBoarded VNF Package Artifact with conflict due to onboarding state - [Documentation] Test ID: 7.3.3.11.25 - ... Test title: Get OnBoarded VNF Package Artifact with conflict due to onboarding state - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - GET Artifact of OnBoarded VNF Package in onboarding state different from ONBOARDED - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET OnBoarded VNF Package Artifact with invalid Range Request - [Documentation] Test ID: 7.3.3.11.26 - ... Test title: GET OnBoarded VNF Package Artifact with invalid Range Request - ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when using a range request that does not match any available byte range in the file. - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact - ... Post-Conditions: none - GET OnBoarded VNF Package Artifact with invalid Range Request - Check HTTP Response Status Code Is 416 - -POST OnBoarded VNF Package Artifact - Method not implemented - [Documentation] Test ID: 7.3.3.11.27 - ... Test title: POST OnBoarded VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact - ... Pre-conditions: none - ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send POST Request for OnBoarded VNF Package Artifact - Check HTTP Response Status Code Is 405 - -PUT OnBoarded VNF Package Artifact - Method not implemented - [Documentation] Test ID: 7.3.3.11.28 - ... Test title: PUT OnBoarded VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PUT Request for OnBoarded VNF Package Artifact - Check HTTP Response Status Code Is 405 - -PATCH OnBoarded VNF Package Artifact - Method not implemented - [Documentation] Test ID: 7.3.3.11.29 - ... Test title: PATCH OnBoarded VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send PATCH Request for OnBoarded VNF Package Artifact - Check HTTP Response Status Code Is 405 - -DELETE OnBoarded VNF Package Artifact - Method not implemented - [Documentation] Test ID: 7.3.3.11.30 - ... Test title: DELETE OnBoarded VNF Package Artifact - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact - ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: none - ... Post-Conditions: none - Send DELETE Request for OnBoarded VNF Package Artifact +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false + +*** Test Cases *** +Get VNF Package Artifact + [Documentation] Test ID: 7.3.3.11.1 + ... Test title: Get VNF Package Artifact + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter + [Documentation] Test ID: 7.3.3.11.2 + ... Test title: Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_mano_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter + [Documentation] Test ID: 7.3.3.11.3 + ... Test title: Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_non_mano_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter + [Documentation] Test ID: 7.3.3.11.4 + ... Test title: Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with select_non_mano_artifact_sets parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with "include_signatures" parameter + [Documentation] Test ID: 7.3.3.11.5 + ... Test title: Get VNF Package Artifact with "include_signatures" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with include_signatures parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get VNF Package Artifact with Range Request and NFVO supporting Range Requests + [Documentation] Test ID: 7.3.3.11.6 + ... Test title: Get VNF Package Artifact with Range Request and NFVO supporting Range Requests + ... Test objective: The objective is to test the GET request read the whole content of the archive containing the artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + Get Artifact in VNF Package with Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Response Header Content-Range Is Present and Matches the requested range + Check HTTP Response Header Content-Length Is Present and Matches the requested range length + +Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" + [Documentation] Test ID: 7.3.3.11.7 + ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifacts" + [Documentation] Test ID: 7.3.3.11.8 + ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get VNF Package Artifact with invalid URI parameters undifend select_non_mano_artifact_sets + [Documentation] Test ID: 7.3.3.11.9 + ... Test title: Get VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with select_non_mano_artifact_sets parameter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get VNF Package Artifact with conflict due to onboarding state + [Documentation] Test ID: 7.3.3.11.10 + ... Test title: Get VNF Package Artifact with conflict due to onboarding state + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Artifact of VNF Package in onboarding state different from ONBOARDED + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET VNF Package Artifact with invalid Range Request + [Documentation] Test ID: 7.3.3.11.11 + ... Test title: GET VNF Package Artifact with invalid Range Request + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when using a range request that does not match any available byte range in the file. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + GET VNF Package Artifact with invalid Range Request + Check HTTP Response Status Code Is 416 + +POST VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.12 + ... Test title: POST VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact + ... Pre-conditions: none + ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PUT VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.13 + ... Test title: PUT VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PATCH VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.14 + ... Test title: PATCH VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + +DELETE VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.15 + ... Test title: DELETE VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for VNF Package Artifact + Check HTTP Response Status Code Is 405 + +Get OnBoarded VNF Package Artifact + [Documentation] Test ID: 7.3.3.11.16 + ... Test title: Get OnBoarded VNF Package Artifact + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package Artifact files successfully, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get OnBoarded VNF Package Artifact with "exclude_all_mano_artifacts" parameter + [Documentation] Test ID: 7.3.3.11.17 + ... Test title: Get OnBoarded VNF Package Artifact with "exclude_all_mano_artifacts" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package Artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with exclude_all_mano_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get OnBoarded VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter + [Documentation] Test ID: 7.3.3.11.18 + ... Test title: Get OnBoarded VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get OnBoarded VNF Package Artifact with "select_non_mano_artifact_sets" parameter + [Documentation] Test ID: 7.3.3.11.19 + ... Test title: Get OnBoarded VNF Package Artifact with "select_non_mano_artifact_sets" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with select_non_mano_artifact_sets parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get OnBoarded VNF Package Artifact with "include_signatures" parameter + [Documentation] Test ID: 7.3.3.11.20 + ... Test title: Get OnBoarded VNF Package Artifact with "include_signatures" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with include_signatures parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range Requests + [Documentation] Test ID: 7.3.3.11.21 + ... Test title: Get OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range Requests + ... Test objective: The objective is to test the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Response Header Content-Range Is Present and Matches the requested range + Check HTTP Response Header Content-Length Is Present and Matches the requested range length + +Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" + [Documentation] Test ID: 7.3.3.11.22 + ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifacts" + [Documentation] Test ID: 7.3.3.11.23 + ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get OnBoarded VNF Package Artifact with invalid URI parameters undifend select_non_mano_artifact_sets + [Documentation] Test ID: 7.3.3.11.24 + ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with select_non_mano_artifact_sets parameter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get OnBoarded VNF Package Artifact with conflict due to onboarding state + [Documentation] Test ID: 7.3.3.11.25 + ... Test title: Get OnBoarded VNF Package Artifact with conflict due to onboarding state + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Artifact of OnBoarded VNF Package in onboarding state different from ONBOARDED + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET OnBoarded VNF Package Artifact with invalid Range Request + [Documentation] Test ID: 7.3.3.11.26 + ... Test title: GET OnBoarded VNF Package Artifact with invalid Range Request + ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when using a range request that does not match any available byte range in the file. + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact + ... Post-Conditions: none + GET OnBoarded VNF Package Artifact with invalid Range Request + Check HTTP Response Status Code Is 416 + +POST OnBoarded VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.27 + ... Test title: POST OnBoarded VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact + ... Pre-conditions: none + ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for OnBoarded VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PUT OnBoarded VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.28 + ... Test title: PUT OnBoarded VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for OnBoarded VNF Package Artifact + Check HTTP Response Status Code Is 405 + +PATCH OnBoarded VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.29 + ... Test title: PATCH OnBoarded VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for OnBoarded VNF Package Artifact + Check HTTP Response Status Code Is 405 + +DELETE OnBoarded VNF Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.3.11.30 + ... Test title: DELETE OnBoarded VNF Package Artifact - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for OnBoarded VNF Package Artifact Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 162315d2d..523795d9f 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -16,7 +16,7 @@ Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -42,7 +42,7 @@ Check HTTP Response Body Does Not Contain userDefinedData 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -57,7 +57,7 @@ Check HTTP Response Body VnfPkgsInfo Matches the requested Attribute-Based Filte 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -65,7 +65,7 @@ GET VNF Packages with invalid attribute-based filter 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -86,7 +86,7 @@ Check HTTP Response Body VnfPkgsInfo Matches the requested all_fields selector 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -105,7 +105,7 @@ GET VNF Packages with fields attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -124,7 +124,7 @@ GET VNF Packages with fields and exclude_default attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -143,7 +143,7 @@ GET VNF Packages with exclude_fields attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -161,7 +161,7 @@ Check HTTP Response Body vnfPkgsInfo Matches the requested exclude_fields select 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_package ${output}= Output response Set Suite Variable ${response} ${output} @@ -169,7 +169,7 @@ GET all VNF Packages with invalid resource endpoint Send POST Request for all VNF Packages 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -177,7 +177,7 @@ Send POST Request for all VNF Packages 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -185,7 +185,7 @@ Send PUT Request for all VNF Packages 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -193,7 +193,7 @@ Send PATCH Request for all VNF Packages 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -201,7 +201,7 @@ Send DELETE Request for all VNF Packages 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -214,7 +214,7 @@ Check HTTP Response Body vnfPkgInfo Identifier matches the requested VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -222,7 +222,7 @@ GET Individual VNF Package with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -230,7 +230,7 @@ Send POST Request for individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -238,7 +238,7 @@ Send PUT Request for individual VNF Package Send PATCH Request for individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -246,7 +246,7 @@ Send PATCH Request for individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -254,7 +254,7 @@ Send DELETE Request for individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -268,7 +268,7 @@ GET Individual VNF Package 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 {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${range}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -277,7 +277,7 @@ GET Individual VNF Package Content with explicit Range Request Log Trying to get a VNF Package Content using RANGE using an NFVO that can handle it Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${range}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -300,7 +300,7 @@ GET Individual VNF Package Content with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -308,7 +308,7 @@ GET Individual VNF Package Content with invalid Range Request 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -316,7 +316,7 @@ GET Individual VNF Package Content with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -324,7 +324,7 @@ GET Content for VNF Package in onboarding state different from ONBOARDED 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -332,7 +332,7 @@ Send POST Request for individual VNF Package Content 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -340,7 +340,7 @@ Send PUT Request for individual VNF Package Content 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -348,7 +348,7 @@ Send PATCH Request for individual VNF Package Content 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -356,7 +356,7 @@ Send DELETE Request for individual VNF Package Content 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -364,7 +364,7 @@ Get all VNF Package Subscriptions 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} @@ -372,7 +372,7 @@ Get VNF Package Subscriptions with attribute-based filters 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} @@ -380,7 +380,7 @@ Get VNF Package Subscriptions with invalid attribute-based filters 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -391,7 +391,7 @@ Send Post Request for VNF Package Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callbackUri=${callbackUri} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -404,7 +404,7 @@ Send Post Request for Duplicated VNF Package Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callbackUri=${callbackUri} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -412,7 +412,7 @@ Send Post Request for Duplicated VNF Package Subscription 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -420,7 +420,7 @@ Send Put Request for VNF Package Subscriptions 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -428,7 +428,7 @@ Send Patch Request for VNF Package Subscriptions 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -436,7 +436,7 @@ Send Delete Request for VNF Package Subscriptions Get single file VNFD in Individual VNF Package in Plain Format Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -444,7 +444,7 @@ Get single file VNFD in Individual VNF Package in Plain Format 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -453,7 +453,7 @@ Get single file VNFD in Individual VNF Package in Plain or Zip Format Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -462,7 +462,7 @@ Get multi file VNFD in Individual VNF Package in Plain or Zip Format Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -474,7 +474,7 @@ Check HTTP Response Header Content-Type Is Any of 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -483,7 +483,7 @@ Get VNFD in Individual VNF Package with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -492,7 +492,7 @@ Get VNFD in Individual VNF Package Content with conflict due to onboarding state Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -500,7 +500,7 @@ Get VNFD in Individual VNF Package Content with conflict due to onboarding state 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_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -508,7 +508,7 @@ Send POST Request for VNFD in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -516,7 +516,7 @@ Send PUT Request for VNFD in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -524,21 +524,21 @@ Send PATCH Request for VNFD in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageOctetStreamId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -547,7 +547,7 @@ GET Individual VNF Package Artifact with Range Request Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -557,21 +557,21 @@ GET Individual VNF Package Artifact with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -579,7 +579,7 @@ GET Artifact for VNF Package in onboarding state different from ONBOARDED 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -587,7 +587,7 @@ Send POST Request for individual VNF Package Artifact 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -595,7 +595,7 @@ Send PUT Request for individual VNF Package Artifact 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -603,7 +603,7 @@ Send PATCH Request for individual VNF Package Artifact 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -644,7 +644,7 @@ Check Postcondition VNF Package Subscription Is Set Log Check Postcondition subscription exist Log Trying to get the subscription Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${location} == Location ... GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} Run Keyword If ${location} == Location @@ -655,7 +655,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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${response['headers']['Location']} Integer response status 200 Log Received a 200 OK as expected @@ -672,7 +672,7 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -680,7 +680,7 @@ Get Individual VNF Package Subscription 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -688,7 +688,7 @@ GET individual VNF Package Subscription with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -696,19 +696,19 @@ Send Delete request for individual VNF Package Subscription Send Delete request for individual VNF Package Subscription with invalid resource identifier 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -717,7 +717,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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -755,7 +755,7 @@ Check HTTP Response Header Contain Link Get all OnBoarded VNF Packages Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -763,7 +763,7 @@ Get all OnBoarded VNF Packages GET OnBoarded VNF Packages with attribute-based filter Log Trying to get all OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -771,7 +771,7 @@ GET OnBoarded VNF Packages with attribute-based filter GET OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -779,7 +779,7 @@ GET OnBoarded VNF Packages with invalid attribute-based filter GET OnBoarded VNF Packages with all_fields attribute selector Log Trying to get all OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -787,7 +787,7 @@ GET OnBoarded VNF Packages with all_fields attribute selector GET OnBoarded VNF Packages with exclude_default attribute selector Log Trying to get all OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -796,7 +796,7 @@ GET OnBoarded VNF Packages with fields attribute selector Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue, using fields 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -805,7 +805,7 @@ GET OnBoarded VNF Packages with exclude_fields attribute selector Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue, using fields 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -813,7 +813,7 @@ GET OnBoarded VNF Packages with exclude_fields attribute selector GET OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_package ${output}= Output response Set Suite Variable ${response} ${output} @@ -821,7 +821,7 @@ GET OnBoarded all VNF Packages with invalid resource endpoint Send OnBoarded POST Request for all VNF Packages 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -829,7 +829,7 @@ Send OnBoarded POST Request for all VNF Packages Send OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -837,7 +837,7 @@ Send OnBoarded PUT Request for all VNF Packages Send OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -845,7 +845,7 @@ Send OnBoarded PATCH Request for all VNF Packages Send OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -853,7 +853,7 @@ Send OnBoarded DELETE Request for all VNF Packages GET Individual OnBoarded VNF Package Log Trying to get a OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -861,7 +861,7 @@ GET Individual OnBoarded VNF Package GET Individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${erroneousVnfdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -869,7 +869,7 @@ GET Individual OnBoarded VNF Package with invalid resource identifier Send POST Request for individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -877,7 +877,7 @@ Send POST Request for individual OnBoarded VNF Package Send PUT Request for individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -885,7 +885,7 @@ Send PUT Request for individual OnBoarded VNF Package Send PATCH Request for individual OnBoarded VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -893,7 +893,7 @@ Send PATCH Request for individual OnBoarded VNF Package Send DELETE Request for individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -901,7 +901,7 @@ Send DELETE Request for individual OnBoarded VNF Package Get single file VNFD in Individual OnBoarded VNF Package in Plain Format Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -909,7 +909,7 @@ Get single file VNFD in Individual OnBoarded VNF Package in Plain Format Get VNFD in Individual OnBoarded VNF Package in Zip Format Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -918,7 +918,7 @@ Get single file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -927,7 +927,7 @@ Get multi file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -935,7 +935,7 @@ Get multi file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format Get multi file VNFD in Individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndIdZipVnfd}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -944,7 +944,7 @@ Get VNFD in Individual OnBoarded VNF Package with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${erroneousVnfdId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -953,7 +953,7 @@ Get VNFD in Individual OnBoarded VNF Package Content with conflict due to onboar Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -961,7 +961,7 @@ Get VNFD in Individual OnBoarded VNF Package Content with conflict due to onboar Send POST Request for VNFD in individual OnBoarded VNF Package Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -969,7 +969,7 @@ Send POST Request for VNFD in individual OnBoarded VNF Package Send PUT Request for VNFD in individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -977,7 +977,7 @@ Send PUT Request for VNFD in individual OnBoarded VNF Package Send PATCH Request for VNFD in individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -985,7 +985,7 @@ Send PATCH Request for VNFD in individual OnBoarded VNF Package Send DELETE Request for VNFD in individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndIdZipVnfd}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -993,7 +993,7 @@ Send DELETE Request for VNFD in individual OnBoarded VNF Package GET Individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -1003,7 +1003,7 @@ GET Individual OnBoarded VNF Package 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 {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${range}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -1013,7 +1013,7 @@ GET Individual OnBoarded VNF Package Content with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -1021,7 +1021,7 @@ GET Individual OnBoarded VNF Package Content with invalid Range Request GET Individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${erroneousVnfdId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -1029,21 +1029,21 @@ GET Individual OnBoarded VNF Package Content with invalid resource identifier GET Content for OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} GET Individual OnBoarded VNF Package Artifact Log Trying to get a VNF Package Artifact - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} GET Individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfdOctetStreamId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1052,7 +1052,7 @@ GET Individual OnBoarded VNF Package Artifact with Range Request Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1062,21 +1062,21 @@ GET Individual OnBoarded VNF Package Artifact with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} GET Individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${erroneousVnfdId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} GET Artifact for OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1084,7 +1084,7 @@ GET Artifact for OnBoarded VNF Package in onboarding state different from ONBOAR Send POST Request for individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1092,7 +1092,7 @@ Send POST Request for individual OnBoarded VNF Package Artifact Send PUT Request for individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1100,7 +1100,7 @@ Send PUT Request for individual OnBoarded VNF Package Artifact Send PATCH Request for individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1108,7 +1108,7 @@ Send PATCH Request for individual OnBoarded VNF Package Artifact Send DELETE Request for individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1117,7 +1117,7 @@ Get multi file VNFD in Individual OnBoarded VNF Package with security informatio Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1126,7 +1126,7 @@ Get multi file 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_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1134,7 +1134,7 @@ Get multi file VNFD in Individual VNF Package with security information GET Individual VNF Package Artifact with security information Log Trying to get a VNF Package Artifact Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1142,21 +1142,21 @@ GET Individual VNF Package Artifact with security information GET Individual OnBoarded VNF Package Artifact with security information Log Trying to get a VNF Package Artifact Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} GET Individual VNF Package Artifact with encrypted artifact Log Trying to get a VNF Package Artifact - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vndEncryptedArtifactID}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} GET Individual OnBoarded VNF Package Artifact with encrypted artifact Log Trying to get a VNF Package Artifact - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndEncryptedArtifactID}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1164,7 +1164,7 @@ GET Individual OnBoarded VNF Package Artifact with encrypted artifact GET Individual VNF Package Artifact with incompatable header Log Trying to get a VNF Package Artifact Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1172,7 +1172,7 @@ GET Individual VNF Package Artifact with incompatable header GET Individual OnBoarded VNF Package Artifact with incompatable header Log Trying to get a VNF Package Artifact Set Headers {"Accept": "${ACCEPT_PLAIN}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1180,7 +1180,7 @@ GET Individual OnBoarded VNF Package Artifact with incompatable header Get Manifest in Individual VNF Package Log Trying to get content of manifest file 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1189,7 +1189,7 @@ 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 with security certificates Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1198,7 +1198,7 @@ Get Manifest in Individual VNF Package with conflict due to onboarding state Log Trying to get a manifest from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1206,7 +1206,7 @@ Get Manifest in Individual VNF Package with conflict due to onboarding state 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_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1214,7 +1214,7 @@ Send POST Request for Manifest in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1222,7 +1222,7 @@ Send PUT Request for Manifest in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1230,7 +1230,7 @@ Send PATCH Request for Manifest in individual VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1238,7 +1238,7 @@ Send DELETE Request for Manifest in individual VNF Package Get Manifest in Individual OnBoarded VNF Package Log Trying to get content of manifest file from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1247,7 +1247,7 @@ Get Manifest in Individual OnBoarded VNF Package with security information Log Trying to get a manifest from a given OnBoarded VNF Package present in the NFVO Catalogue with security certificates Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndIdZipVnfd}/manifest/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1256,7 +1256,7 @@ Get Manifest in Individual OnBoarded VNF Package with conflict due to onboarding Log Trying to get a manifest from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1264,7 +1264,7 @@ Get Manifest in Individual OnBoarded VNF Package with conflict due to onboarding Send POST Request for Manifest in individual OnBoarded VNF Package Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1272,7 +1272,7 @@ Send POST Request for Manifest in individual OnBoarded VNF Package Send PUT Request for Manifest in individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1280,7 +1280,7 @@ Send PUT Request for Manifest in individual OnBoarded VNF Package Send PATCH Request for Manifest in individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1288,7 +1288,7 @@ Send PATCH Request for Manifest in individual OnBoarded VNF Package Send DELETE Request for Manifest in individual OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1296,7 +1296,7 @@ Send DELETE Request for Manifest in individual OnBoarded VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1304,7 +1304,7 @@ Get Artifact in VNF Package 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1312,7 +1312,7 @@ Get Artifact in VNF Package with exclude_all_mano_artifacts parameter 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1321,7 +1321,7 @@ Get Artifact in VNF Package with select_non_mano_artifact_sets parameter Log Trying to get Artifact in VNF Package with security certificates 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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} @@ -1329,7 +1329,7 @@ Get Artifact in VNF Package with select_non_mano_artifact_sets parameter 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1338,7 +1338,7 @@ Get Artifact in VNF Package with Range Request Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1346,7 +1346,7 @@ Get Artifact in VNF Package with Range Request Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets Log Trying to get Artifact in VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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} @@ -1354,14 +1354,14 @@ Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_m Get Artifact in VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts Log Trying to get Artifact in VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1371,7 +1371,7 @@ GET VNF Package Artifact with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1379,7 +1379,7 @@ GET VNF Package Artifact with invalid Range Request 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1387,7 +1387,7 @@ Send POST Request for VNF Package Artifact 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1395,7 +1395,7 @@ Send PUT Request for VNF Package Artifact 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1403,7 +1403,7 @@ Send PATCH Request for VNF Package Artifact 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1411,7 +1411,7 @@ Send DELETE Request for VNF Package Artifact Get Artifact in OnBoarded VNF Package Log Trying to get Artifact in OnBoarded VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1419,7 +1419,7 @@ Get Artifact in OnBoarded VNF Package Get Artifact in OnBoarded VNF Package with exclude_all_mano_artifacts parameter Log Trying to get Artifact in OnBoarded VNF Package with exclude_all_mano_artifacts Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1427,7 +1427,7 @@ Get Artifact in OnBoarded VNF Package with exclude_all_mano_artifacts parameter Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts parameter Log Trying to get Artifact in OnBoarded VNF Package with security certificates Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1436,7 +1436,7 @@ Get Artifact in OnBoarded VNF Package with select_non_mano_artifact_sets paramet Log Trying to get Artifact in OnBoarded VNF Package with security certificates 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/select_non_mano_artifact_sets=${non_mano_artifact_sets} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1444,7 +1444,7 @@ Get Artifact in OnBoarded VNF Package with select_non_mano_artifact_sets paramet Get Artifact in OnBoarded VNF Package with include_signatures parameter Log Trying to get Artifact in OnBoarded VNF Package with security certificates Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1453,7 +1453,7 @@ Get Artifact in OnBoarded VNF Package with Range Request Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1461,7 +1461,7 @@ Get Artifact in OnBoarded VNF Package with Range Request Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets Log Trying to get Artifact in OnBoarded VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_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} @@ -1469,14 +1469,14 @@ Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and se Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts Log Trying to get Artifact in OnBoarded VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_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 OnBoarded VNF Package in onboarding state different from ONBOARDED Log Trying to get a OnBoarded VNF Package artifact present in the NFVO Catalogue, but not in ONBOARDED operationalStatus - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfPkgId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1486,7 +1486,7 @@ GET OnBoarded VNF Package Artifact with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1494,7 +1494,7 @@ GET OnBoarded VNF Package Artifact with invalid Range Request Send POST Request for OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1502,7 +1502,7 @@ Send POST Request for OnBoarded VNF Package Artifact Send PUT Request for OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1510,7 +1510,7 @@ Send PUT Request for OnBoarded VNF Package Artifact Send PATCH Request for OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1518,7 +1518,7 @@ Send PATCH Request for OnBoarded VNF Package Artifact Send DELETE Request for OnBoarded 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1527,7 +1527,7 @@ GET OnBoarded VNF Packages with fields and exclude_default attribute selector Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue, using fields 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index d35a4bae6..85599df9d 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -2,7 +2,8 @@ ${NFVO_HOST} localhost # Hostname of the NFVO ${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 ${CONTENT_TYPE_JSON} application/json diff --git a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot index 88ba224c7..38ce2dbc4 100644 --- a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot @@ -133,70 +133,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index d8324e537..bbe425897 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -113,7 +113,7 @@ PATCH Individual VNF Performance Job - Precondition failed GET individual VNF Performance Job Log Trying to get a Pm Job present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -121,7 +121,7 @@ GET individual VNF Performance Job GET individual VNF Performance Job with invalid resource identifier Log Trying to perform a negative get, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -129,7 +129,7 @@ GET individual VNF Performance Job with invalid resource identifier Send Delete request for individual VNF Performance Job Log Trying to delete an existing PM Job Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -137,7 +137,7 @@ Send Delete request for individual VNF Performance Job Send Delete request for individual VNF Performance Job with invalid resource identifier Log Trying to perform a negative delete, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -145,7 +145,7 @@ Send Delete request for individual VNF Performance Job with invalid resource ide Send Post request for individual VNF Performance Job 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -153,7 +153,7 @@ Send Post request for individual VNF Performance Job Send Put request for individual VNF Performance Job 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -164,7 +164,7 @@ Send Put request for individual VNF Performance Job Send Patch request for individual VNF Performance Job Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/PMJobModifications.json PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} @@ -174,7 +174,7 @@ Send Patch request for individual VNF Performance Job Check Postcondition VNF Performance Job is not Created Log Trying to get a new Pm Job Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot index 48017858d..e029d6cbe 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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 1790d9cd4..39af0c1aa 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -162,7 +162,7 @@ Send Patch request for individual VNF Performance Threshold Log Trying to PUT threshold Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/ThresholdModifications.json PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response diff --git a/SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot b/SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot index 55d99d44d..ea8f9283a 100644 --- a/SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot +++ b/SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot @@ -1,69 +1,69 @@ -*** Settings *** -Library String -Library OperatingSystem -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library JSONLibrary -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -Performance Information Available Notification - [Documentation] Test ID: 7.3.4.10.1 - ... Test title: Performance Information Available Notification - ... Test objective: The objective is to test that the POST request triggers Performance Information Available Notification. - ... Pre-conditions: A VNF performance job is created, and a subscription for performance information available notification is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Post Performance Information Available Notification - Check HTTP Response Status Code Is 204 - -Threshold Crossed Notification - [Documentation] Test ID: 7.3.4.10.2 - ... Test title: Threshold Crossed Notification - ... Test objective: The objective is to test that the POST request triggers Threshold Crossed Notification - ... Pre-conditions: A VNF performance job is created, and a subscription for threshold crossed notification is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Post Threshold Crossed Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} - Integer response status 200 - Validate Json response body PmJob.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - ${status}= Convert To Integer ${expected_status} - Should Be Equal As Strings ${response['status']} ${status} - Log Status code validated - -Post Performance Information Available Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body} = Get File jsons/PerformanceInformationAvailableNotification.json - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Threshold Crossed Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body} = Get File jsons/ThresholdCrossedNotification.json - Post ${callbackResp} ${body} - ${outputResponse}= Output response +*** Settings *** +Library String +Library OperatingSystem +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +Performance Information Available Notification + [Documentation] Test ID: 7.3.4.10.1 + ... Test title: Performance Information Available Notification + ... Test objective: The objective is to test that the POST request triggers Performance Information Available Notification. + ... Pre-conditions: A VNF performance job is created, and a subscription for performance information available notification is available in the VNFM. + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Performance Information Available Notification + Check HTTP Response Status Code Is 204 + +Threshold Crossed Notification + [Documentation] Test ID: 7.3.4.10.2 + ... Test title: Threshold Crossed Notification + ... Test objective: The objective is to test that the POST request triggers Threshold Crossed Notification + ... Pre-conditions: A VNF performance job is created, and a subscription for threshold crossed notification is available in the VNFM. + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Threshold Crossed Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + Integer response status 200 + Validate Json response body PmJob.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + ${status}= Convert To Integer ${expected_status} + Should Be Equal As Strings ${response['status']} ${status} + Log Status code validated + +Post Performance Information Available Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body} = Get File jsons/PerformanceInformationAvailableNotification.json + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Threshold Crossed Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body} = Get File jsons/ThresholdCrossedNotification.json + Post ${callbackResp} ${body} + ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/PMJobs.robot b/SOL003/VNFPerformanceManagement-API/PMJobs.robot index 5ef0d5a24..be4b8957f 100644 --- a/SOL003/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL003/VNFPerformanceManagement-API/PMJobs.robot @@ -212,7 +212,7 @@ GET all VNF Performance Monitoring Jobs with fields and exclude_default attribut GET all VNF Performance Monitoring Jobs Log Trying to get all PM Jobs 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -220,7 +220,7 @@ GET all VNF Performance Monitoring Jobs GET VNF Performance Monitoring Jobs with attribute-based filter Log Trying to get all PM Jobs present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -228,7 +228,7 @@ GET VNF Performance Monitoring Jobs with attribute-based filter GET VNF Performance Monitoring Jobs with all_fields attribute selector Log Trying to get all PM Jobs present in the VNFM, using 'all_fields' 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -236,7 +236,7 @@ GET VNF Performance Monitoring Jobs with all_fields attribute selector GET VNF Performance Monitoring Jobs with exclude_default attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -245,7 +245,7 @@ GET VNF Performance Monitoring Jobs with fields attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -254,7 +254,7 @@ GET VNF Performance Monitoring Jobs with fields and exclude_default attribute se Log Trying to get all VNF Packages present in the VNFM, using filter params Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -263,7 +263,7 @@ GET VNF Performance Monitoring Jobs with exclude_fields attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -271,7 +271,7 @@ GET VNF Performance Monitoring Jobs with exclude_fields attribute selector GET VNF Performance Monitoring Jobs with invalid attribute-based filter Log Trying to get all PM Jobs present in the VNFM, using an erroneous filter param Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -279,7 +279,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter GET VNF Performance Monitoring Jobs 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_job # wrong URI /pm_job instead of /pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -288,7 +288,7 @@ Send Post Request Create new VNF Performance Monitoring Job Log Creating a new PM Job Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/CreatePmJobRequest.json ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} @@ -298,7 +298,7 @@ Send Post Request Create new VNF Performance Monitoring Job Send PUT Request for all VNF Performance Monitoring Jobs 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -306,7 +306,7 @@ Send PUT Request for all VNF Performance Monitoring Jobs Send PATCH Request for all VNF Performance Monitoring Jobs 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -314,7 +314,7 @@ Send PATCH Request for all VNF Performance Monitoring Jobs Send DELETE Request for all VNF Performance Monitoring Jobs 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -326,7 +326,7 @@ Check Postcondition VNF Performance Monitoring Jobs Exist Check Postcondition PmJob Exists Log Checking that Pm Job exists Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFPerformanceManagement-API/Thresholds.robot b/SOL003/VNFPerformanceManagement-API/Thresholds.robot index 1555adaa8..efcc68988 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_KO} ${output}= Output response Set Suite Variable ${response} ${output} @@ -164,14 +164,14 @@ 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_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/threshold ${output}= Output response Set Suite Variable ${response} ${output} Send Post Request Create new Performance Threshold Log Creating a new THreshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/CreateThresholdRequest.json @@ -182,7 +182,7 @@ Send Post Request Create new Performance Threshold Send PUT Request for all Performance Thresholds Log PUT THresholds - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds @@ -191,7 +191,7 @@ Send PUT Request for all Performance Thresholds Send PATCH Request for all Performance Thresholds Log PUT THresholds - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds @@ -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_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -212,7 +212,7 @@ Check Postcondition Thresholds Exist Check Postcondition Threshold Exists Log Checking that Threshold exists Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFPerformanceManagement-API/environment/variables.txt b/SOL003/VNFPerformanceManagement-API/environment/variables.txt index f61232c97..3b1c0b844 100644 --- a/SOL003/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL003/VNFPerformanceManagement-API/environment/variables.txt @@ -4,7 +4,8 @@ ${VNFM_PORT} 8080 # Listening port of the VNFM ${VNFM_SCHEMA} https -${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${NEG_AUTHORIZATION} Bearer negativetoken ${CONTENT_TYPE_JSON} application/json diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot index 45cf503da..851231ae0 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot @@ -131,70 +131,70 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot index 47465a390..e02be2df5 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot @@ -1,47 +1,47 @@ -*** Settings *** -Library String -Resource environment/variables.txt -Library OperatingSystem -Library JSONLibrary -Library JSONSchemaLibrary schemas/ -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Suite Setup Check resource existence and get CallbackUri - -*** Test Cases *** -Vr Quota Availibility Notification - [Documentation] Test ID: 7.3.7.4.1 - ... Test title: Vr Quota Availibility Notification - ... Test objective: The objective is to test that Vr Quota Availibility Notification is delivered with success to the notification consumer - ... Pre-conditions: The VNF has subscribed to the Vr Quota Availibility resource - ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_Notif_Endpoint - ... Applicability: none - ... Post-Conditions: none - Post Vr Quota Avail Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body VrQuotaAvailSubscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post Vr Quota Avail Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/VrQuotaAvailNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response +*** Settings *** +Library String +Resource environment/variables.txt +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +Vr Quota Availibility Notification + [Documentation] Test ID: 7.3.7.4.1 + ... Test title: Vr Quota Availibility Notification + ... Test objective: The objective is to test that Vr Quota Availibility Notification is delivered with success to the notification consumer + ... Pre-conditions: The VNF has subscribed to the Vr Quota Availibility resource + ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Vr Quota Avail Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body VrQuotaAvailSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Vr Quota Avail Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VrQuotaAvailNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot index 237409f64..b8944baf7 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot @@ -17,7 +17,7 @@ Create Sessions Check Individual Subscription existence Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 @@ -52,7 +52,7 @@ Check Postcondition VNF Virtualised Resources Quota Available Notification indiv Send Post request for Virtualised Resources Quota Available Notification Individual Subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -60,7 +60,7 @@ Send Post request for Virtualised Resources Quota Available Notification Individ Put Virtualised Resources Quota Available Notification individual Subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -68,7 +68,7 @@ Put Virtualised Resources Quota Available Notification individual Subscription Patch Virtualised Resources Quota Available Notification individual subscription log Trying to perform a Patch. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -76,7 +76,7 @@ Patch Virtualised Resources Quota Available Notification individual subscription Get Virtualised Resources Quota Available Notification individual subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -84,7 +84,7 @@ Get Virtualised Resources Quota Available Notification individual subscription Delete Virtualised Resources Quota Available Notification individual subscription log Try to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -93,7 +93,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_subscribe=${callback_subscribe} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -105,7 +105,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Pass Execution If ${NFVO_DUPLICATION} == 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_subscribe=${callback_subscribe} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -117,7 +117,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Pass Execution If ${NFVO_DUPLICATION} == 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_subscribe=${callback_subscribe} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} @@ -127,7 +127,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub GET Virtualised Resources Quota Available Notification Subscriptions Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response @@ -136,7 +136,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions GET Virtualised Resources Quota Available Notification Subscriptions with Filter Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response @@ -145,7 +145,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions with Filter Get Virtualised Resources Quota Available Notification subscriptions with Bad Request Invalid attribute-based filtering parameters Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -154,7 +154,7 @@ Send Put request for Virtualised Resources Quota Available Notification subscrip log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -163,7 +163,7 @@ Send Patch request for Virtualised Resources Quota Available Notification subscr log Trying to perform a Patch. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -172,7 +172,7 @@ Send Delete request for Virtualised Resources Quota Available Notification subsc log Trying to perform a Delete. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt index 742e6b3b6..a705ad751 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt @@ -2,7 +2,8 @@ ${NFVO_HOST} localhost # Hostname of the NFVO ${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https -${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${CONTENT_TYPE} application/json ${AUTH_USAGE} 1 ${ACCEPT} application/json -- GitLab From 9eb1681a2aecf38ce04ff43e010d092b0de49de8 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 15 Feb 2021 11:58:59 +0100 Subject: [PATCH 285/580] fixed issue #154 on SOL005 subscriptions - v2.7.1 --- .../NSDManagementKeywords.robot | 37 +- .../jsons/subscriptions.json | 2 +- .../NSFMOperationKeywords.robot | 14 +- .../NSFaultManagement-API/Subscriptions.robot | 3 + .../NSLCMOperationKeywords.robot | 20 +- .../Subscriptions.robot | 3 + .../VNFPackageManagementKeywords.robot | 31 +- .../jsons/PkgmSubscription.json | 414 ------------------ 8 files changed, 83 insertions(+), 441 deletions(-) delete mode 100644 SOL005/VNFPackageManagement-API/jsons/PkgmSubscription.json diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 9ea91b491..c5fd69b64 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -789,13 +789,19 @@ Send Post Request for NSD Management Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${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} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} nsdId=${NS_DescriptorID} nsdName=${NS_Name} nsdVersion=${NS_Version} nsdDesigner=${Designer} nsdInvariantId=${NS_InvariantId} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - 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 + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint Send POST Request for Duplicated NSD Management Subscription @@ -804,13 +810,19 @@ Send POST Request for Duplicated NSD Management Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${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} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} nsdId=${NS_DescriptorID} nsdName=${NS_Name} nsdVersion=${NS_Version} nsdDesigner=${Designer} nsdInvariantId=${NS_InvariantId} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - 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 + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint @@ -982,7 +994,6 @@ Check HTTP Response Header Contains Etag Set Suite Variable ${original_etag} ${response['headers]['ETag']} 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} diff --git a/SOL005/NSDManagement-API/jsons/subscriptions.json b/SOL005/NSDManagement-API/jsons/subscriptions.json index a82df503c..b94f3efea 100644 --- a/SOL005/NSDManagement-API/jsons/subscriptions.json +++ b/SOL005/NSDManagement-API/jsons/subscriptions.json @@ -1,5 +1,5 @@ {{ - "callbackUri": "{notifCallbackUri}", + "callbackUri": "{callback_uri}{callback_endpoint}", "filter": {{ "nsdId": "{nsdId}", "nsdName": "{nsdName}", diff --git a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot index 414f1a847..406c95fc1 100644 --- a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot +++ b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot @@ -215,9 +215,17 @@ POST Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${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} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint # Post Create subscription - DUPLICATION # Log Trying to create a subscription with an already created content diff --git a/SOL005/NSFaultManagement-API/Subscriptions.robot b/SOL005/NSFaultManagement-API/Subscriptions.robot index b8e00065e..4850c4b07 100644 --- a/SOL005/NSFaultManagement-API/Subscriptions.robot +++ b/SOL005/NSFaultManagement-API/Subscriptions.robot @@ -6,6 +6,9 @@ Library OperatingSystem Library DependencyLibrary Library JSONLibrary Library JSONSchemaLibrary schemas/ +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true *** Test Cases *** Create a new alarm subscription diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index aa89c7eec..37405543c 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -1097,10 +1097,16 @@ POST subscriptions Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/LccnSubscriptionRequest.json ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${NS_DescriptorID} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + Clear Requests ${callback_endpoint} + POST subscriptions DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${NFVO_DUPLICATION} == 0 NFVO is not permitting duplication. Skipping the test @@ -1110,9 +1116,15 @@ POST subscriptions DUPLICATION Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/LccnSubscriptionRequest.json ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${NS_DescriptorID} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} POST subscriptions NO DUPLICATION Log Trying to create a subscription with an already created content @@ -1123,9 +1135,15 @@ POST subscriptions NO DUPLICATION Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/LccnSubscriptionRequest.json ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${NS_DescriptorID} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} GET Subscriptions Log Get the list of active subscriptions diff --git a/SOL005/NSLifecycleManagement-API/Subscriptions.robot b/SOL005/NSLifecycleManagement-API/Subscriptions.robot index d2d0010ce..bce367fd3 100644 --- a/SOL005/NSLifecycleManagement-API/Subscriptions.robot +++ b/SOL005/NSLifecycleManagement-API/Subscriptions.robot @@ -5,6 +5,9 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=fal Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true *** Test Cases *** POST Create a new subscription diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 389a9bf59..2c13b7c5b 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -735,11 +735,17 @@ Send Post Request for VNF Package Subscription ${template}= Get File jsons/subscriptions.json ${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_HEADER}":"${AUTHORIZATION_TOKEN}"} - 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 + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint Send Post Request for Duplicated VNF Package Subscription Log Trying to create a subscription with an already created content @@ -748,9 +754,17 @@ Send Post Request for Duplicated VNF Package Subscription ${template}= Get File jsons/subscriptions.json ${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_HEADER}":"${AUTHORIZATION_TOKEN}"} - REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint Send Put Request for VNF Package Subscriptions Log Trying to perform a PUT. This method should not be implemented @@ -894,7 +908,6 @@ Check Postcondition VNF Package Subscription is not Created Check HTTP Response Status Code Is 404 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}:${callback_port} diff --git a/SOL005/VNFPackageManagement-API/jsons/PkgmSubscription.json b/SOL005/VNFPackageManagement-API/jsons/PkgmSubscription.json deleted file mode 100644 index c01e92b48..000000000 --- a/SOL005/VNFPackageManagement-API/jsons/PkgmSubscription.json +++ /dev/null @@ -1,414 +0,0 @@ -[ - { - "id": "ABCDEFGHIJKL", - "callbackUri": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "_links": { - "self": { - "href": "ABCDEFGHIJKLMNOPQR" - } - }, - "filter": { - "notificationTypes": [ - "VnfPackageChangeNotification" - ], - "vnfProductsFromProviders": [ - { - "vnfProvider": "ABCDEFGHIJKLMNOPQRSTUVW", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGHIJKLMNOPQRSTUVWX", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQ", - "ABCDE" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWXYZA", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC" - ] - } - ] - }, - { - "vnfProductName": "ABCDEFGHIJKLM", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMN", - "vnfdVersions": [ - "ABCDEF", - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "vnfdVersions": [ - "ABCDEFGHIJKLMNO", - "ABCDEFGH", - "ABCDEF" - ] - }, - { - "vnfSoftwareVersion": "ABCD", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXY", - "ABCDEFGHIJ", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRST", - "vnfdVersions": [ - "ABCDEFG", - "ABCDEFGHIJKLMNOPQRSTU" - ] - } - ] - } - ] - }, - { - "vnfProvider": "ABCDEF", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGH", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRST", - "vnfdVersions": [ - "ABCDE", - "ABCDE", - "ABCDEFGHIJKLMNOPQR" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWX", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOP" - ] - } - ] - }, - { - "vnfProductName": "ABCDE", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNO", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJ", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRS" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJK", - "vnfdVersions": [ - "ABCD" - ] - }, - { - "vnfSoftwareVersion": "ABCD", - "vnfdVersions": [ - "ABCDEFGHIJKL", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC" - ] - } - ] - }, - { - "vnfProductName": "ABCD", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRST", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQ", - "ABCDEFGHIJKL" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWXY", - "vnfdVersions": [ - "ABCDEF", - "ABCDEFGHIJKLMNOPQRST" - ] - }, - { - "vnfSoftwareVersion": "ABCDEF", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKLMNOPQR", - "ABCDEFGHIJKLMNOP" - ] - } - ] - } - ] - } - ], - "vnfdId": [ - "ABCDEFGHIJKLMNOPQRS", - "ABCDEFGHIJKLMNO", - "ABCDEFGHIJKLM", - "ABCDEFGHIJK" - ], - "vnfPkgId": [ - "ABCDEFGH", - "ABCDEFGHIJKLMNOPQ", - "ABCDE", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC" - ], - "operationalState": "DISABLED", - "usageState": {} - } - }, - { - "id": "ABCDE", - "callbackUri": "ABCDEFGHIJKLM", - "_links": { - "self": { - "href": "ABCDEFGHIJKLMNOPQRSTU" - } - }, - "filter": { - "notificationTypes": [ - "VnfPackageOnboardingNotification", - "VnfPackageOnboardingNotification", - "VnfPackageOnboardingNotification" - ], - "vnfProductsFromProviders": [ - { - "vnfProvider": "ABCDEFGH", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGHIJKLMNOPQRSTUV", - "versions": [ - { - "vnfSoftwareVersion": "ABCD", - "vnfdVersions": [ - "ABCDEFGHIJKLMN", - "ABCDEFGHIJKLMNOPQRSTUVW", - "ABCDE", - "ABCDEFGHIJKLMNOPQRS" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRS" - ] - } - ] - }, - { - "vnfProductName": "ABCDEFGHIJKLMN", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOP", - "vnfdVersions": [ - "ABCDEFGHIJ", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKLMNOPQRSTUVWX", - "ABCDEFGHIJKLMNOPQR" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMN", - "vnfdVersions": [ - "ABCDEFGHIJKLMNO", - "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "ABCDEFGHIJKLMNOPQRSTUVW" - ] - }, - { - "vnfSoftwareVersion": "ABCDEF", - "vnfdVersions": [ - "ABCDEFGHIJKLM", - "ABCDE", - "ABCDEFGHIJKLMNOPQRSTUVWXYZA" - ] - } - ] - } - ] - }, - { - "vnfProvider": "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGHIJKLMNOPQ", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWXY", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQ", - "ABCDE" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMN", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWX", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC" - ] - } - ] - }, - { - "vnfProductName": "ABCDEFGHIJKLMNOP", - "versions": [ - { - "vnfSoftwareVersion": "ABCD", - "vnfdVersions": [ - "ABCDEFGH", - "ABCDEFGHIJKLMN", - "ABCDEFGHIJKLMNOP" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLM", - "vnfdVersions": [ - "ABCDEFGHIJKLM", - "ABCDEFGH" - ] - } - ] - } - ] - } - ], - "vnfdId": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKLM", - "ABCDEFGHIJKLMNOPQRS", - "ABCDEFGHIJKL" - ], - "vnfPkgId": [ - "ABCDEFGHIJKLMNOPQRSTUVWXY" - ], - "operationalState": "DISABLED", - "usageState": {} - } - }, - { - "id": "ABCDEF", - "callbackUri": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "_links": { - "self": { - "href": "ABCDEFGHIJKLMNOPQ" - } - }, - "filter": { - "notificationTypes": [ - "VnfPackageChangeNotification", - "VnfPackageOnboardingNotification", - "VnfPackageChangeNotification", - "VnfPackageOnboardingNotification" - ], - "vnfProductsFromProviders": [ - { - "vnfProvider": "ABCDEFGHIJKL", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGHIJK", - "versions": [ - { - "vnfSoftwareVersion": "ABCDE", - "vnfdVersions": [ - "ABCDEFGHI", - "ABCDEFGHIJKLMNOPQRS", - "ABCDEFGHIJKLMNOPQR" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWX", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWX", - "ABCDEFG", - "ABCDEFGHIJKLMNOPQRSTUVW", - "ABCDEFGHIJKLMNOPQRSTUVWXY" - ] - } - ] - } - ] - }, - { - "vnfProvider": "ABCDEFGHI", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGHIJ", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKL", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZA", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKL", - "ABCDEFGHIJKLMNOPQR" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQ", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKLMNOPQRSTU", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKLMN" - ] - } - ] - } - ] - }, - { - "vnfProvider": "ABCDEFGHIJKLMNOPQRSTUVWXYZA", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGH", - "versions": [ - { - "vnfSoftwareVersion": "ABCDE", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKLMNOPQRS", - "ABCDEFGHIJKLMNOPQRST" - ] - } - ] - } - ] - } - ], - "vnfdId": [ - "ABCDEFGHIJKLMNOP", - "ABCDEFGHIJKLMNOPQRSTUVWXYZA" - ], - "vnfPkgId": [ - "ABCDEFGHIJKLMNOPQRSTUVW", - "ABCDEFGHIJKLMNOPQ", - "ABCDEFGHIJKLMN" - ], - "operationalState": "ENABLED", - "usageState": [ - 773, - [ - {}, - [ - false, - true - ], - null, - null - ] - ] - } - } -] \ No newline at end of file -- GitLab From c9b85ade1d26276a17f694fbb5c7f430a50e1380 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 15 Feb 2021 12:36:21 +0100 Subject: [PATCH 286/580] fixed issue #154 on SOL002 subscriptions - v2.7.1 --- .../Subscriptions.robot | 22 ++++++- SOL002/VNFIndicator-API/Subscriptions.robot | 64 ++++++++++++++----- .../Subscriptions.robot | 3 + .../VnfLcmOperationKeywords.robot | 49 ++++++++++---- 4 files changed, 109 insertions(+), 29 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index 0783ff138..a03299db3 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -5,6 +5,10 @@ Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ Library String +Library Process +Library MockServerLibrary +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true *** Test Cases *** Create a new subscription @@ -314,6 +318,11 @@ POST Create a new Subscription - Unprocessable Entity Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** +Create Sessions + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} + Post Create subscription Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} @@ -321,9 +330,16 @@ Post Create subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${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} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + Clear Requests ${callback_endpoint} + # 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 diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index 91fa1f258..8642b1d96 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -145,12 +145,12 @@ POST Create a new Subscription - Unprocessable Entity [Documentation] Test ID: 6.3.2.4.11 ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. - ... re-conditions: none + ... Pre-conditions: none ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none - Send Post Request for VNF Indicator Subscription + Send Post Request for VNF Indicator Subscription wih unprocessable entity Check HTTP Response Status Code Is 422 Check HTTP Response Body Json Schema Is ProblemDetails @@ -221,11 +221,28 @@ Send Post Request for VNF Indicator Subscription ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} - Run Keyword If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1 - ... Check Notification Endpoint + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint + +Send Post Request for VNF Indicator Subscription with unprocessable entity + Log Trying to create a new 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=localhost #not reachable endpoint + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Global Variable ${response} ${output} Send Put Request for VNF Indicator Subscriptions Log Trying to create a new subscription @@ -291,8 +308,7 @@ Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filte @{words} = Split String ${POS_FILTER} ,${SEPERATOR} Should Be Equal As Strings ${response['body'][0]['callbackUri']} @{words}[1] -Create Sessions - Pass Execution If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 0 MockServer not necessary to run +Create Sessions Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance Wait For Process handle=mockInstance timeout=5s on_timeout=continue Create Mock Session ${callback_uri}:${callback_port} @@ -315,9 +331,18 @@ Post Create subscription - DUPLICATION Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/subscriptions.json - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint Post Create subscription - NO-DUPLICATION Log Trying to create a subscription with an already created content @@ -326,9 +351,18 @@ Post Create subscription - NO-DUPLICATION Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/subscriptions.json - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint Check Operation Occurrence Id ${vnfLcmOpOccId}= Get Value From Json ${response['headers']} $..Location diff --git a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot index 6f8cbd6ed..65bff9a7c 100644 --- a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot @@ -5,6 +5,9 @@ Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=fal Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true *** Test Cases *** POST Create a new subscription diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index f4cf32f3e..e3c3a231a 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -9,12 +9,17 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ -Library String +Library String +Library Process Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** - +Create Sessions + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} + Get Vnf Instance [Arguments] ${vnfInstanceId} Set Headers {"Accept":"${ACCEPT}"} @@ -795,9 +800,17 @@ Post Create subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json ${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} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} + + Post Create subscription - DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 0 VNFM is not permitting duplication. Skipping the test @@ -806,9 +819,16 @@ Post Create subscription - DUPLICATION Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json ${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} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} + Post Create subscription - NO-DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 1 VNFM permits duplication. Skipping the test @@ -817,9 +837,16 @@ Post Create subscription - NO-DUPLICATION Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json ${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} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} + Get subscriptions Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} -- GitLab From 565276cf54a899560c409b2f2e7e4b446c0ed6ff Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 15 Feb 2021 13:00:52 +0100 Subject: [PATCH 287/580] fix --- SOL002/VNFIndicator-API/Subscriptions.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index 8642b1d96..ba79c1fdd 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -150,7 +150,7 @@ POST Create a new Subscription - Unprocessable Entity ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none - Send Post Request for VNF Indicator Subscription wih unprocessable entity + Send Post Request for VNF Indicator Subscription with unprocessable entity Check HTTP Response Status Code Is 422 Check HTTP Response Body Json Schema Is ProblemDetails -- GitLab From 430db536ce7acbcf90318c2ecf0138fe2a297c6d Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 15 Feb 2021 13:13:37 +0100 Subject: [PATCH 288/580] fixed issue #154 on SOL003 subscriptions - v2.7.1 --- .../FaultManagement-APIKeyword.robot | 42 +- .../Subscriptions.robot | 3 + .../environment/variables.txt | 4 +- .../VNFIndicatorsKeywords.robot | 53 ++- .../environment/variables.txt | 3 - .../VNFIndicator-API/jsons/subscriptions.json | 2 +- .../SubscriptionKeywords.robot | 5 - .../Subscriptions.robot | 6 +- .../VnfLcmMntOperationKeywords.robot | 57 ++- .../jsons/lccnSubscriptionRequest.json | 2 +- .../VNFPackageManagementKeywords.robot | 34 +- .../jsons/PkgmSubscription.json | 414 ------------------ .../jsons/subscriptions.json | 2 +- .../Subscriptions.robot | 3 + .../VRQANOperationKeywords.robot | 34 +- 15 files changed, 169 insertions(+), 495 deletions(-) delete mode 100644 SOL003/VNFPackageManagement-API/jsons/PkgmSubscription.json diff --git a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot index 9c1f50f5a..6b9dcd2d7 100644 --- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot @@ -5,6 +5,7 @@ Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=fal Library JSONLibrary Library JSONSchemaLibrary schemas/ Library OperatingSystem +Library MockServerLibrary #Suite Teardown Terminate All Processes kill=true Library Process @@ -13,6 +14,11 @@ Library Process ${original_etag} 1234 *** Keywords *** +Create Sessions + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} + Check created Subscription existence Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -257,9 +263,15 @@ POST Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/fmSubscriptionRequest.json ${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} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} Send POST Request for duplicated subscription Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions @@ -269,9 +281,15 @@ Send POST Request for duplicated subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/fmSubscriptionRequest.json ${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} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} Send POST Request for duplicated subscription not permitted Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions @@ -281,9 +299,15 @@ Send POST Request for duplicated subscription not permitted Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/fmSubscriptionRequest.json ${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} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} GET Subscriptions Log Get the list of active subscriptions diff --git a/SOL003/VNFFaultManagement-API/Subscriptions.robot b/SOL003/VNFFaultManagement-API/Subscriptions.robot index 6a98f35f8..f41f45a64 100644 --- a/SOL003/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL003/VNFFaultManagement-API/Subscriptions.robot @@ -6,6 +6,9 @@ Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=fal Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true *** Test Cases *** Create a new Fault Management alarm subscription diff --git a/SOL003/VNFFaultManagement-API/environment/variables.txt b/SOL003/VNFFaultManagement-API/environment/variables.txt index 44740b77a..f8bfd19c3 100644 --- a/SOL003/VNFFaultManagement-API/environment/variables.txt +++ b/SOL003/VNFFaultManagement-API/environment/variables.txt @@ -58,4 +58,6 @@ ${callback_endpoint} /subscribe ${vnfdIds} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -${callbackResp} localhost \ No newline at end of file +${callbackResp} localhost + +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar \ No newline at end of file diff --git a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot index 2ad8b478e..eb7e4d107 100644 --- a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot +++ b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot @@ -99,21 +99,19 @@ 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=${callback} {callback_subscribe}=${callback_subscribe} + ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_endpoint=${callback_endpoint} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} - Run Keyword If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1 - ... Check Notification Endpoint - # Integer response status 201 - # Log Received 201 Created as expected - # ${headers}= Output response headers - # Should Contain ${headers} Location - # Log Response has header Location - # ${result}= Output response body - # Validate Json VnfIndicatorSubscription.schema.json ${result} - # Log Validation of VnfIndicatorSubscription OK + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint @@ -122,19 +120,19 @@ Send Post Request for Duplicated 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=${callback} {callback_subscribe}=${callback_subscribe} + ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_endpoint=${callback_endpoint} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} - # Integer response status 201 - # Log Received 201 Created as expected - # ${headers}= Output response headers - # Should Contain ${headers} Location - # Log Response has header Location - # ${result}= Output response body - # Validate Json VnfIndicatorSubscription.schema.json ${result} - # Log Validation of VnfIndicatorSubscription OK + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint Send Put Request for VNF Indicator Subscriptions @@ -527,8 +525,7 @@ Check Postcondition Individual VNF Indicator Subscription is Deleted GET Individual VNF Indicator Subscription Check HTTP Response Status Code Is 404 -Create Sessions - Pass Execution If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 0 MockServer not necessary to run +Create Sessions Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance Wait For Process handle=mockInstance timeout=5s on_timeout=continue Create Mock Session ${callback_uri}:${callback_port} diff --git a/SOL003/VNFIndicator-API/environment/variables.txt b/SOL003/VNFIndicator-API/environment/variables.txt index a3d6321d4..f4df749d5 100644 --- a/SOL003/VNFIndicator-API/environment/variables.txt +++ b/SOL003/VNFIndicator-API/environment/variables.txt @@ -35,9 +35,6 @@ ${notification_response} [] ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -${callback} http://172.22.1.7:${callback_port} -${callback_subscribe} /vnfind/subscribes - ${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa ${erroneousSubscriptionId} erroneousSubscriptionId diff --git a/SOL003/VNFIndicator-API/jsons/subscriptions.json b/SOL003/VNFIndicator-API/jsons/subscriptions.json index d48f9f99d..42d0689a0 100644 --- a/SOL003/VNFIndicator-API/jsons/subscriptions.json +++ b/SOL003/VNFIndicator-API/jsons/subscriptions.json @@ -1,3 +1,3 @@ {{ - "callbackUri": "{callback}{callback_subscribe}" + "callbackUri": "{callback_uri}:{callback_port}{callback_endpoint}" }} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot b/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot index 835aa876c..cc358f27c 100644 --- a/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot @@ -20,11 +20,6 @@ Check subscriptions about one VNFInstance and operation type Array response body minItems=1 ${body} Output response body [Return] ${body} - -Create Sessions - Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance - Wait For Process handle=mockInstance timeout=5s on_timeout=continue - Create Mock Session ${callback_uri}:${callback_port} Configure Notification Status Handler [Arguments] ${endpoint} ${status}="" diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index f3b210195..a8ee0fba1 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -5,7 +5,9 @@ Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ Resource VnfLcmMntOperationKeywords.robot - +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true *** Test Cases *** POST Create a new subscription @@ -24,7 +26,7 @@ POST Create a new subscription Create a new Subscription - DUPLICATION [Documentation] Test ID: 7.3.1.17.2 ... Test title: POST Create a new subscription - DUPLICATION - ... Test objective: The objective is to test request to create a duplicate (same cakkbackurl and filter) subscription + ... Test objective: The objective is to test request to create a duplicate (same callbackurl and filter) subscription ... Pre-conditions: none ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 018d6dea5..e157cac4b 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -7,11 +7,17 @@ Library OperatingSystem Library BuiltIn Library JSONLibrary Library Collections +Library Process Library JSONSchemaLibrary schemas/ Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** +Create Sessions + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} + Get Vnf Instance [Arguments] ${vnfInstanceId} Set Headers {"Accept":"${ACCEPT}"} @@ -1180,10 +1186,19 @@ Post Create subscription Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json - ${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} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint + Post Create subscription - DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 0 VNFM is not permitting duplication. Skipping the test @@ -1191,10 +1206,19 @@ Post Create subscription - DUPLICATION Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json - ${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} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint + Post Create subscription - NO-DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 1 VNFM permits duplication. Skipping the test @@ -1202,10 +1226,19 @@ Post Create subscription - NO-DUPLICATION Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json - ${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} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint + Get subscriptions Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json index 7624e81f2..9ba2f5047 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/lccnSubscriptionRequest.json @@ -6,5 +6,5 @@ ] }} }}, - "callbackUri": "{callback_uri}{callback_notification}" + "callbackUri": "{callback_uri}{callback_endpoint}" }} diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 523795d9f..1cefa6c91 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -390,24 +390,38 @@ Send Post Request for 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} callbackUri=${callbackUri} + ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - 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 + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint Send Post Request for Duplicated VNF Package Subscription Log Trying to create a subscription with an already created content Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} callbackUri=${callbackUri} + ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + Clear Requests ${callback_endpoint} + #Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 #removed as the check of notif endpoint is done by NFVO while processing subscription reques + #... Check Notification Endpoint Send Put Request for VNF Package Subscriptions Log Trying to perform a PUT. This method should not be implemented diff --git a/SOL003/VNFPackageManagement-API/jsons/PkgmSubscription.json b/SOL003/VNFPackageManagement-API/jsons/PkgmSubscription.json deleted file mode 100644 index c01e92b48..000000000 --- a/SOL003/VNFPackageManagement-API/jsons/PkgmSubscription.json +++ /dev/null @@ -1,414 +0,0 @@ -[ - { - "id": "ABCDEFGHIJKL", - "callbackUri": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "_links": { - "self": { - "href": "ABCDEFGHIJKLMNOPQR" - } - }, - "filter": { - "notificationTypes": [ - "VnfPackageChangeNotification" - ], - "vnfProductsFromProviders": [ - { - "vnfProvider": "ABCDEFGHIJKLMNOPQRSTUVW", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGHIJKLMNOPQRSTUVWX", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQ", - "ABCDE" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWXYZA", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC" - ] - } - ] - }, - { - "vnfProductName": "ABCDEFGHIJKLM", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMN", - "vnfdVersions": [ - "ABCDEF", - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "vnfdVersions": [ - "ABCDEFGHIJKLMNO", - "ABCDEFGH", - "ABCDEF" - ] - }, - { - "vnfSoftwareVersion": "ABCD", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXY", - "ABCDEFGHIJ", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRST", - "vnfdVersions": [ - "ABCDEFG", - "ABCDEFGHIJKLMNOPQRSTU" - ] - } - ] - } - ] - }, - { - "vnfProvider": "ABCDEF", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGH", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRST", - "vnfdVersions": [ - "ABCDE", - "ABCDE", - "ABCDEFGHIJKLMNOPQR" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWX", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOP" - ] - } - ] - }, - { - "vnfProductName": "ABCDE", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNO", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJ", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRS" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJK", - "vnfdVersions": [ - "ABCD" - ] - }, - { - "vnfSoftwareVersion": "ABCD", - "vnfdVersions": [ - "ABCDEFGHIJKL", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC" - ] - } - ] - }, - { - "vnfProductName": "ABCD", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRST", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQ", - "ABCDEFGHIJKL" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWXY", - "vnfdVersions": [ - "ABCDEF", - "ABCDEFGHIJKLMNOPQRST" - ] - }, - { - "vnfSoftwareVersion": "ABCDEF", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKLMNOPQR", - "ABCDEFGHIJKLMNOP" - ] - } - ] - } - ] - } - ], - "vnfdId": [ - "ABCDEFGHIJKLMNOPQRS", - "ABCDEFGHIJKLMNO", - "ABCDEFGHIJKLM", - "ABCDEFGHIJK" - ], - "vnfPkgId": [ - "ABCDEFGH", - "ABCDEFGHIJKLMNOPQ", - "ABCDE", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC" - ], - "operationalState": "DISABLED", - "usageState": {} - } - }, - { - "id": "ABCDE", - "callbackUri": "ABCDEFGHIJKLM", - "_links": { - "self": { - "href": "ABCDEFGHIJKLMNOPQRSTU" - } - }, - "filter": { - "notificationTypes": [ - "VnfPackageOnboardingNotification", - "VnfPackageOnboardingNotification", - "VnfPackageOnboardingNotification" - ], - "vnfProductsFromProviders": [ - { - "vnfProvider": "ABCDEFGH", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGHIJKLMNOPQRSTUV", - "versions": [ - { - "vnfSoftwareVersion": "ABCD", - "vnfdVersions": [ - "ABCDEFGHIJKLMN", - "ABCDEFGHIJKLMNOPQRSTUVW", - "ABCDE", - "ABCDEFGHIJKLMNOPQRS" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRS" - ] - } - ] - }, - { - "vnfProductName": "ABCDEFGHIJKLMN", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOP", - "vnfdVersions": [ - "ABCDEFGHIJ", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKLMNOPQRSTUVWX", - "ABCDEFGHIJKLMNOPQR" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMN", - "vnfdVersions": [ - "ABCDEFGHIJKLMNO", - "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "ABCDEFGHIJKLMNOPQRSTUVW" - ] - }, - { - "vnfSoftwareVersion": "ABCDEF", - "vnfdVersions": [ - "ABCDEFGHIJKLM", - "ABCDE", - "ABCDEFGHIJKLMNOPQRSTUVWXYZA" - ] - } - ] - } - ] - }, - { - "vnfProvider": "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGHIJKLMNOPQ", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWXY", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQ", - "ABCDE" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMN", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWX", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC" - ] - } - ] - }, - { - "vnfProductName": "ABCDEFGHIJKLMNOP", - "versions": [ - { - "vnfSoftwareVersion": "ABCD", - "vnfdVersions": [ - "ABCDEFGH", - "ABCDEFGHIJKLMN", - "ABCDEFGHIJKLMNOP" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLM", - "vnfdVersions": [ - "ABCDEFGHIJKLM", - "ABCDEFGH" - ] - } - ] - } - ] - } - ], - "vnfdId": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKLM", - "ABCDEFGHIJKLMNOPQRS", - "ABCDEFGHIJKL" - ], - "vnfPkgId": [ - "ABCDEFGHIJKLMNOPQRSTUVWXY" - ], - "operationalState": "DISABLED", - "usageState": {} - } - }, - { - "id": "ABCDEF", - "callbackUri": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "_links": { - "self": { - "href": "ABCDEFGHIJKLMNOPQ" - } - }, - "filter": { - "notificationTypes": [ - "VnfPackageChangeNotification", - "VnfPackageOnboardingNotification", - "VnfPackageChangeNotification", - "VnfPackageOnboardingNotification" - ], - "vnfProductsFromProviders": [ - { - "vnfProvider": "ABCDEFGHIJKL", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGHIJK", - "versions": [ - { - "vnfSoftwareVersion": "ABCDE", - "vnfdVersions": [ - "ABCDEFGHI", - "ABCDEFGHIJKLMNOPQRS", - "ABCDEFGHIJKLMNOPQR" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQRSTUVWX", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWX", - "ABCDEFG", - "ABCDEFGHIJKLMNOPQRSTUVW", - "ABCDEFGHIJKLMNOPQRSTUVWXY" - ] - } - ] - } - ] - }, - { - "vnfProvider": "ABCDEFGHI", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGHIJ", - "versions": [ - { - "vnfSoftwareVersion": "ABCDEFGHIJKL", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZA", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKL", - "ABCDEFGHIJKLMNOPQR" - ] - }, - { - "vnfSoftwareVersion": "ABCDEFGHIJKLMNOPQ", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKLMNOPQRSTU", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKLMN" - ] - } - ] - } - ] - }, - { - "vnfProvider": "ABCDEFGHIJKLMNOPQRSTUVWXYZA", - "vnfProducts": [ - { - "vnfProductName": "ABCDEFGH", - "versions": [ - { - "vnfSoftwareVersion": "ABCDE", - "vnfdVersions": [ - "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "ABCDEFGHIJKLMNOPQRSTUVWXYZABC", - "ABCDEFGHIJKLMNOPQRS", - "ABCDEFGHIJKLMNOPQRST" - ] - } - ] - } - ] - } - ], - "vnfdId": [ - "ABCDEFGHIJKLMNOP", - "ABCDEFGHIJKLMNOPQRSTUVWXYZA" - ], - "vnfPkgId": [ - "ABCDEFGHIJKLMNOPQRSTUVW", - "ABCDEFGHIJKLMNOPQ", - "ABCDEFGHIJKLMN" - ], - "operationalState": "ENABLED", - "usageState": [ - 773, - [ - {}, - [ - false, - true - ], - null, - null - ] - ] - } - } -] \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/jsons/subscriptions.json b/SOL003/VNFPackageManagement-API/jsons/subscriptions.json index 35c8671eb..42d0689a0 100644 --- a/SOL003/VNFPackageManagement-API/jsons/subscriptions.json +++ b/SOL003/VNFPackageManagement-API/jsons/subscriptions.json @@ -1,3 +1,3 @@ {{ - "callbackUri": "{callbackUri}" + "callbackUri": "{callback_uri}:{callback_port}{callback_endpoint}" }} \ No newline at end of file diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot index 1b7cfe68a..30d90c4f9 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot @@ -5,6 +5,9 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=fal Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true *** Test Cases *** Create new Virtualised Resources Quota Available Notification subscription diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot index b8944baf7..8ba214350 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot @@ -96,9 +96,15 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_subscribe=${callback_subscribe} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} Send Post request for new Virtualised Resources Quota Available Notification subscription - DUPLICATION Log Trying to create a subscription with an already created content @@ -108,9 +114,15 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json ${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} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} Send Post request for new Virtualised Resources Quota Available Notification subscription - NO-DUPLICATION Log Trying to create a subscription with an already created content @@ -120,9 +132,15 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json ${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} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} GET Virtualised Resources Quota Available Notification Subscriptions Log Get the list of active subscriptions -- GitLab From 73b149eef37fa6de27645f51e62b1039f918f6da Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 15 Feb 2021 19:01:15 +0100 Subject: [PATCH 289/580] updated readme for 3.3.1-dev branch --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 185d1a400..9c14d262b 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ # NFV API Conformance Test Specification (NFV-TST 010) This repository hosts the NFV API Conformance test specification for -the APIs defined in ETSI NFV GS [SOL002](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/02.07.01_60/gs_NFV-SOL002v020701p.pdf), -[SOL003](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.07.01_60/gs_NFV-SOL003v020701p.pdf), -[SOL005](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.07.01_60/gs_NFV-SOL005v020701p.pdf), in their versions -v2.7.1. +the APIs defined in ETSI NFV GS [SOL002](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf), +[SOL003](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf), +[SOL005](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_NFV-SOL005v030301p.pdf), in their versions +v3.3.1. -More information and download is available at [DGS/NFV-TST010ed271](https://portal.etsi.org/webapp/WorkProgram/Report_WorkItem.asp?WKI_ID=58931). +More information and download is available at [DGS/NFV-TST010ed331](https://portal.etsi.org/webapp/WorkProgram/Report_WorkItem.asp?WKI_ID=58931). **{- Disclaimer: The content of this repository is related to a DRAFT, i.e. a working document, of ETSI ISG NFV.-}** -- GitLab From 035ce244bf294cdbbe0f4949f0940e13093e66f6 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Tue, 23 Feb 2021 00:14:04 +0500 Subject: [PATCH 290/580] implementation of deltas between 2.7.1 and 3.3.1 --- .../vnfConfigModifications.schema.json | 176 ++++++++++++------ 1 file changed, 124 insertions(+), 52 deletions(-) diff --git a/SOL002/VNFConfiguration-API/schemas/vnfConfigModifications.schema.json b/SOL002/VNFConfiguration-API/schemas/vnfConfigModifications.schema.json index 8545bb293..e69ca505e 100644 --- a/SOL002/VNFConfiguration-API/schemas/vnfConfigModifications.schema.json +++ b/SOL002/VNFConfiguration-API/schemas/vnfConfigModifications.schema.json @@ -1,58 +1,98 @@ { - "description": "This type represents request parameters for the \"Set Configuration\" operation. * NOTE 1: At least one of \"vnfConfigurationData\" and \"vnfcConfigurationData\"\n shall be present.\n * NOTE 2: The VnfcConfiguration data type can only be used to modify the configuration\n of existing VNFC instances.\n", + "description": "This type represents request parameters for the \"Set Configuration\" operation.\n * NOTE 1: At least one of \"vnfConfigurationData\" and \"vnfcConfigurationData\"\n shall be present.\n * NOTE 2: The VnfcConfiguration data type can only be used to modify the configuration\n of existing VNFC instances.\n", "type": "object", + "anyOf": [ + { + "required": [ + "vnfConfigurationData" + ] + }, + { + "required": [ + "vnfcConfigurationData" + ] + } + ], "properties": { "vnfConfigurationData": { "description": "This type represents configuration parameters of a VNF instance.\n", "type": "object", "properties": { "extCpConfig": { - "description": "This type represents configuration parameters of a CP instance.\n", - "type": "object", - "required": [ - "cpId", - "cpdId", - "addresses" - ], - "properties": { - "cpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "addresses": { - "description": "Network address and port assigned to the CP.\n", - "type": "array", - "items": { - "description": "This type represents configuration parameters of a CP instance address. * NOTE 1: Either \"address\" or \"useDynamicAddress\" shall be present.\n * NOTE 2: At least one of \"macAddress\" and \"ipAddress\" shall be present.\n", - "type": "object", - "properties": { - "address": { - "description": "Network address that has been configured on the CP. See NOTE 1.\n", - "type": "object", - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "description": "Configuration parameters for the external CPs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents configuration parameters of a CP instance.\n", + "type": "object", + "required": [ + "cpId", + "cpdId", + "addresses" + ], + "properties": { + "cpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "addresses": { + "description": "Network address and port assigned to the CP.\n", + "type": "array", + "items": { + "description": "This type represents configuration parameters of a CP instance address.\n * NOTE 1: Either \"address\" or \"useDynamicAddress\" shall be present.\n * NOTE 2: At least one of \"macAddress\" and \"ipAddress\" shall be present.\n", + "type": "object", + "oneOf": [ + { + "required": [ + "address" + ] + }, + { + "required": [ + "useDynamicAddress" + ] + } + ], + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddress" + ] + } + ], + "properties": { + "address": { + "description": "Network address that has been configured on the CP. See NOTE 1.\n", + "type": "object", + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "ipAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } } + }, + "useDynamicAddress": { + "description": "Set to true if an address shall be assigned dynamically. Otherwise set to false. The default value shall be false. See NOTE 1.\n", + "type": "boolean" + }, + "port": { + "description": "The port assigned to the CP instance (e.g. IP port number, Ethernet port number, etc.).\n", + "type": "integer" } - }, - "useDynamicAddress": { - "description": "Set to true if an address shall be assigned dynamically. Otherwise set to false. The default value shall be false. See NOTE 1.\n", - "type": "boolean" - }, - "port": { - "description": "The port assigned to the CP instance (e.g. IP port number, Ethernet port number, etc.).\n", - "type": "integer" } } } @@ -60,18 +100,18 @@ } }, "dhcpServer": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" }, "vnfSpecificData": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" } } }, "vnfcConfigurationData": { - "description": "Modifications to configuration data for certain VNFC instances. See NOTE 1 and NOTE 2. If present, the modifications of the \"vnfcConfigurationData\" attribute shall follow these provisions: Modifying an attribute that is an array of objects of type \"VnfcConfigurationData\".\n Assumptions:\n 1) \"oldList\" is the \"VnfcConfigurationData\" array to be modified and \"newList\"\n is the \"VnfcConfigurationData\" array that contains the changes.\n 2) \"oldEntry\" is an entry in \"oldList\" and \"newEntry\" is an entry in \"newList\".\n 3) A \"newEntry\" has a \"corresponding entry\" if there exists an \"oldEntry\" that \n has the same content of the \"vnfcInstanceId\" attribute as the \"newEntry\"; \n a \"newEntry\" has no corresponding entry if no such \"oldEntry\" exists.\n 4) In any array of \"VnfcConfigurationData\" structures, the content of \"vnfcInstanceId\"\n is unique (i.e. there shall be no two entries with the same content of \"vnfcInstanceId\").\n Provisions:\n 1) For each \"newEntry\" in \"newList\" that has no corresponding entry in \"oldList\", \n the \"oldList\" array shall be modified by adding that \"newEntry\".\n\n 2) For each \"newEntry\" in \"newList\" that has a corresponding \"oldEntry\" in \"oldList\",\n the value of \"oldEntry\" shall be updated with the value of \"newEntry\" according to\n the rules of JSON Merge PATCH (see IETF RFC 7396 ).\n", + "description": "Modifications to configuration data for certain VNFC instances. See NOTE 1 and NOTE 2. If present, the modifications of the \"vnfcConfigurationData\" attribute shall follow these provisions:\n Modifying an attribute that is an array of objects of type \"VnfcConfigurationData\".\n Assumptions:\n 1) \"oldList\" is the \"VnfcConfigurationData\" array to be modified and \"newList\"\n is the \"VnfcConfigurationData\" array that contains the changes.\n 2) \"oldEntry\" is an entry in \"oldList\" and \"newEntry\" is an entry in \"newList\".\n 3) A \"newEntry\" has a \"corresponding entry\" if there exists an \"oldEntry\" that\n has the same content of the \"vnfcInstanceId\" attribute as the \"newEntry\";\n a \"newEntry\" has no corresponding entry if no such \"oldEntry\" exists.\n 4) In any array of \"VnfcConfigurationData\" structures, the content of \"vnfcInstanceId\"\n is unique (i.e. there shall be no two entries with the same content of \"vnfcInstanceId\").\n Provisions:\n 1) For each \"newEntry\" in \"newList\" that has no corresponding entry in \"oldList\",\n the \"oldList\" array shall be modified by adding that \"newEntry\".\n\n 2) For each \"newEntry\" in \"newList\" that has a corresponding \"oldEntry\" in \"oldList\",\n the value of \"oldEntry\" shall be updated with the value of \"newEntry\" according to\n the rules of JSON Merge PATCH (see IETF RFC 7396 ).\n", "type": "array", "items": { "description": "This type represents configuration parameters of a VNFC instance.\n", @@ -108,8 +148,32 @@ "description": "Network address and port assigned to the CP.\n", "type": "array", "items": { - "description": "This type represents configuration parameters of a CP instance address. * NOTE 1: Either \"address\" or \"useDynamicAddress\" shall be present.\n * NOTE 2: At least one of \"macAddress\" and \"ipAddress\" shall be present.\n", + "description": "This type represents configuration parameters of a CP instance address.\n * NOTE 1: Either \"address\" or \"useDynamicAddress\" shall be present.\n * NOTE 2: At least one of \"macAddress\" and \"ipAddress\" shall be present.\n", "type": "object", + "oneOf": [ + { + "required": [ + "address" + ] + }, + { + "required": [ + "useDynamicAddress" + ] + } + ], + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddress" + ] + } + ], "properties": { "address": { "description": "Network address that has been configured on the CP. See NOTE 1.\n", @@ -121,7 +185,7 @@ "format": "MAC" }, "ipAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" } @@ -142,16 +206,24 @@ } }, "dhcpServer": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" }, "vnfcSpecificData": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" } } } + }, + "vnfcConfigurationDataDeleteIds": { + "description": "List of identifiers entries to be deleted from the 'vnfcConfigurationData\" attribute array to be used as \"deleteIdList\" as defined below this table.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } } } } \ No newline at end of file -- GitLab From 5592f3471d4e90fdfa761c7ceeffce29d9efd637 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Tue, 23 Feb 2021 19:44:03 +0500 Subject: [PATCH 291/580] updated references --- SOL002/VNFConfiguration-API/ApiVersion.robot | 20 +++++++++---------- .../VNFConfiguration-API/Configuration.robot | 14 ++++++------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/SOL002/VNFConfiguration-API/ApiVersion.robot b/SOL002/VNFConfiguration-API/ApiVersion.robot index f3afab525..b07352770 100644 --- a/SOL002/VNFConfiguration-API/ApiVersion.robot +++ b/SOL002/VNFConfiguration-API/ApiVersion.robot @@ -11,7 +11,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFConfiguration-API/Configuration.robot b/SOL002/VNFConfiguration-API/Configuration.robot index 69239787a..e73d7b725 100644 --- a/SOL002/VNFConfiguration-API/Configuration.robot +++ b/SOL002/VNFConfiguration-API/Configuration.robot @@ -12,7 +12,7 @@ Set new VNF Configuration ... Test title: Set a new VNF Configuration ... Test objective: The objective is to test the creation of a new VNF configuration and perform a JSON schema validation of the returned configuration data structure ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: The configuration is successfully set in the VNF and it matches the issued configuration @@ -28,7 +28,7 @@ Get information about a VNF configuration ... Test title: Get information about a VNF configuration ... Test objective: The objective is to test the retrieval of an existing VNF instance configuration and perform a JSON schema validation of the collected configuration data structure ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ Get information about a VNF configuration with HTTP Etag ... Test title: Get information about a VNF configuration with HTTP Etag ... Test objective: The objective is to test the retrieval of an existing VNF instance configuration, check the generation by the VNF of an HTTP Etag opaque identifier, and perform a JSON schema validation of the collected configuration data structure ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: none @@ -57,7 +57,7 @@ Set new VNF Configuration - HTTP Etag precondition unsuccessful ... Test title: Set a new VNF Configuration - HTTP Etag precondition unsuccessful ... Test objective: The objective is to test the unsuccess in setting a duplication of VNF configuration identified by an already used HTTP Etag identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured (Test ID 6.3.1.1.1) with a given HTTP Etag identifier. - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: The VNF configuration is not modified by the unsuccessful operation and it matches the configuration issued in Test ID 6.3.1.1.1 @@ -71,7 +71,7 @@ POST VNF Configuration - Method not implemented ... Test title: POST VNF Configuration - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF configuration ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ PUT VNF Configuration - Method not implemented ... Test title: PUT VNF Configuration - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing VNF configuration ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ DELETE VNF Configuration - Method not implemented ... Test title: Delete VNF Configuration - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF configuration ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none -- GitLab From 136473f9b89070bea5ab430d759dea394f894711 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Tue, 23 Feb 2021 19:09:36 +0500 Subject: [PATCH 292/580] updated references --- SOL002/VNFFaultManagement-API/Alarms.robot | 38 +++++++-------- .../VNFFaultManagement-API/ApiVersion.robot | 20 ++++---- .../EscalatePerceivedSeverityTask.robot | 10 ++-- .../IndividualAlarm.robot | 16 +++---- .../IndividualSubscription.robot | 12 ++--- .../NotificationConsumer.robot | 6 +-- .../NotificationEndpoint.robot | 6 +-- .../Subscriptions.robot | 46 +++++++++---------- 8 files changed, 77 insertions(+), 77 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/Alarms.robot b/SOL002/VNFFaultManagement-API/Alarms.robot index f8827ba03..38cda3c6b 100644 --- a/SOL002/VNFFaultManagement-API/Alarms.robot +++ b/SOL002/VNFFaultManagement-API/Alarms.robot @@ -13,7 +13,7 @@ POST Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET information about multiple alarms ... Test title: GET information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET information about multiple alarms with attribute-based filter ... Test title: GET information about multiple alarms with attribute-based filter ... Test objective: The objective is to retrieve information about the alarm list with attribute-based filter ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET information about multiple alarms with invalid attribute-based filter ... Test title: GET information about multiple alarms with invalid attribute-based filter ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ GET information about multiple alarms with "all_fields" attribute selector ... Test title: GET information about multiple alarms with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ GET information about multiple alarms with exclude_default attribute selector ... Test title: GET information about multiple alarms with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ GET information about multiple alarms with fields attribute selector ... Test title: GET information about multiple alarms with fields attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ GET information about multiple alarms with "exclude_fields" attribute selector ... Test title: GET information about multiple alarms with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -140,7 +140,7 @@ DELETE Alarms - Method not implemented ... Test title: DELETE Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -152,7 +152,7 @@ GET information about multiple alarms to get Paged Response ... Test title: GET information about multiple alarms to get Paged Response ... Test objective: The objective is to retrieve information about the alarms to get paged response ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ GET information about multiple alarms for Bad Request Response too big ... Test title: GET information about multiple alarms for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about Alarms when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -178,7 +178,7 @@ GET information about alarms with attribute-based filter "id" ... Test title: GET information about alarms with attribute-based filter "id" ... Test objective: The objective is to retrieve information about the alarm list with alarm filter "id" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -192,7 +192,7 @@ GET information about multiple alarms with attribute-based filter "vnfcInstanceI ... Test title: GET information about multiple alarms with attribute-based filter "vnfcInstanceIds" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "vnfcInstanceIds" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -206,7 +206,7 @@ GET information about multiple alarms with attribute-based filter "rootCauseFaul ... Test title: GET information about multiple alarms with attribute-based filter "rootCauseFaultyResource.faultyResourceType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "rootCauseFaultyResource.faultyResourceType" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -220,7 +220,7 @@ GET information about multiple alarms with attribute-based filter "eventType" ... Test title: GET information about multiple alarms with attribute-based filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "eventType" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -234,7 +234,7 @@ GET information about multiple alarms with attribute-based filter "perceivedSeve ... Test title: GET information about multiple alarms with attribute-based filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "perceivedSeverity" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -248,7 +248,7 @@ GET information about multiple alarms with attribute-based filter "probableCause ... Test title: GET information about multiple alarms with attribute-based filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "probableCause" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/ApiVersion.robot b/SOL002/VNFFaultManagement-API/ApiVersion.robot index 72ae2f9b3..908536625 100644 --- a/SOL002/VNFFaultManagement-API/ApiVersion.robot +++ b/SOL002/VNFFaultManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot index c06950a48..3222b7d65 100644 --- a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot +++ b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot @@ -10,7 +10,7 @@ Escalate the perceived severity ... Test title: Escalate the perceived severity ... Test objective: To enable the consumer to escalate the perceived severity of an alarm that is represented by an individual alarm resource. ... Pre-conditions: The resource representing the individual alarm has been created - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -22,7 +22,7 @@ GET Escalate the perceived severity - Method not implemented ... Test title: GET Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the GET HTTP method not implemented for escalate perceived severity ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -34,7 +34,7 @@ PUT Escalate the perceived severity - Method not implemented ... Test title: PUT Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the PUT HTTP method not implemented for escalate perceived severity ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ PATCH Escalate the perceived severity - Method not implemented ... Test title: PATCH Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the PATCH HTTP method not implemented for escalate perceived severity ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -58,7 +58,7 @@ DELETE Escalate the perceived severity - Method not implemented ... Test title: DELETE Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the DELETE HTTP method not implemented for escalate perceived severity ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot index 1d9d1e7ab..84bf414a5 100644 --- a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot @@ -15,7 +15,7 @@ POST Alarm - Method not implemented ... Test title: POST Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET information about an individual alarm ... Test title: GET information about an individual alarm ... Test objective: The objective is to read an individual alarm. ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ PUT Individual Alarm - Method not implemented ... Test title: PUT Individual Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PATCH Individual Alarm ... Test title: PATCH Individual Alarm ... Test objective: The objective is to Modify an individual alarm resource ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PATCH Individual Alarm - Precondition failed ... Test title: PATCH Individual Alarm - Precondition failed ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The alarm resource is not modified @@ -79,7 +79,7 @@ PATCH Individual Alarm - Conflict ... Test title: PATCH Individual Alarm - Conflict ... Test objective: The objective is to Modify an individual alarm resource ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The alarm resource is not modified @@ -93,7 +93,7 @@ DELETE Individual Alarm - Method not implemented ... Test title: DELETE Individual Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ GET information about an individual alarm - Not Found ... Test title: GET information about an individual alarm - Not Found ... Test objective: The objective is to test that GET method fail retrieving status information about individaual Alarms when alarm is not present. ... Pre-conditions: The related alarm doesnot exists - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot index 39c594b6f..bb36528d0 100644 --- a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot @@ -13,7 +13,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Information about an individual subscription ... Test title: GET Information about an individual subscription ... Test objective: The objective is to read an individual subscription for VNF alarms subscribed by the client ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that the deletion of a individual subscription resource. ... Pre-conditions: one or more subscription already exsist - ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: the subscription is deleted @@ -75,7 +75,7 @@ GET Information about an individual subscription - Not Found ... Test title: GET Information about an individual subscription - Not Found ... Test objective: The objective is to test that GET method fail retrieving individual subscription for VNF alarms subscribed by the client because it is not present. ... Pre-conditions: The subscription with the given id donot exists - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/NotificationConsumer.robot b/SOL002/VNFFaultManagement-API/NotificationConsumer.robot index f03722d4e..58e1d97d3 100644 --- a/SOL002/VNFFaultManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFFaultManagement-API/NotificationConsumer.robot @@ -13,7 +13,7 @@ VNF Fault Alarm Notification ... Test title: VNF Fault Alarm Notification ... Test objective: The objective is to test that VNF Fault Alarm Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Fault Alarm Cleared Notification ... Test title: VNF Fault Alarm Cleared Notification ... Test objective: The objective is to test that VNF Fault Alarm Cleared Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ VNF Fault Alarm List Rebuilt Notification ... Test title: VNF Fault List Rebuilt Alarm List Rebuilt Notification ... Test objective: The objective is to test that VNF Fault Alarm List Rebuilt Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot index d5795f5c0..3c7b41fe2 100644 --- a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot @@ -15,7 +15,7 @@ VNF Fault Alarm Notification ... Test title: VNF Fault Alarm Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Notification when a virtualised resource within an VNF instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ VNF Fault Alarm Cleared Notification ... Test title: VNF Fault Alarm Cleared Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Cleared Notification when a faulty virtualised resource within an VNF instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Fault Alarm List Rebuilt Notification ... Test title: VNF Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm List Rebuilt Notification when the VNFM decides to rebuild the list of its VNF alarms, e.g. due to a corruption in the alarm storage, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, one or more virtualised resource are in faulty state, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index a03299db3..460a7bf55 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ Create a new subscription ... Test title: Create a new subscription ... Test objective: The objective is to create a new subscription. ... Pre-conditions: no subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resource created successfully @@ -31,7 +31,7 @@ Create a new subscription # ... 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 + # ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.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 @@ -46,7 +46,7 @@ Create a new subscription # ... 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 + # ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.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 @@ -59,7 +59,7 @@ Create a duplicated Subscription ... 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 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: duplicated subscription is created if the IUT allows duplications, otherwise the duplicated subscription is not created @@ -72,7 +72,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ GET Subscription - Filter ... Test title: GET Subscription - Filter ... Test objective: The objective is to retrieve the list of active subscriptions with filter ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ GET subscriptions with "all_fields" attribute selector ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -137,7 +137,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -150,7 +150,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -163,7 +163,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -175,7 +175,7 @@ PATCH subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -187,7 +187,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -199,7 +199,7 @@ GET Subscriptions to get Paged Response ... Test title: GET Subscriptions to get Paged Response ... Test objective: The objective is to retrieve the list of active subscriptions to get paged response ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -212,7 +212,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that GET method fail retrieving list of active subscription because Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -225,7 +225,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -239,7 +239,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -253,7 +253,7 @@ Get subscriptions with filter "filter.faultyResourceTypes" ... Test title: GET Subscription with attribute-based filter "filter.faultyResourceTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -267,7 +267,7 @@ Get subscriptions with filter "filter.perceivedSeverities" ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -281,7 +281,7 @@ Get subscriptions with filter "filter.eventTypes" ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -295,7 +295,7 @@ Get subscriptions with filter "filter.probableCauses" ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -309,7 +309,7 @@ POST Create a new Subscription - Unprocessable Entity ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 2d904b181fba52c7bb0a8d0e4688c8d357bc36ea Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 19 Feb 2021 12:39:03 +0500 Subject: [PATCH 293/580] implementing deltas for 3.3.1 --- .../ChangeCurrentVNFPackageTask.robot | 91 +++++++++ .../CreateVNFSnapshotTask.robot | 117 +++++++++++ .../RevertToVNFSnapshotTask.robot | 104 ++++++++++ .../VNFInstances.robot | 39 ++-- .../VnfLcmOperationKeywords.robot | 183 ++++++++++++++++++ .../environment/variables.txt | 8 +- .../jsons/CreateVnfSnapshotRequest.json | 3 + .../jsons/RevertToVnfSnapshotRequest.json | 5 + .../jsons/changeCurrentVnfPkgRequest.json | 3 + 9 files changed, 539 insertions(+), 14 deletions(-) create mode 100644 SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot create mode 100644 SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot create mode 100644 SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot create mode 100644 SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotRequest.json create mode 100644 SOL002/VNFLifecycleManagement-API/jsons/RevertToVnfSnapshotRequest.json create mode 100644 SOL002/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json diff --git a/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot new file mode 100644 index 000000000..37fc722db --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -0,0 +1,91 @@ +*** Settings *** +Resource environment/variables.txt +Resource VnfLcmOperationKeywords.robot +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existence + +*** Test Cases *** +POST Change current VNF Package Task + [Documentation] Test ID: 6.3.5.22.1 + ... Test title: POST Change current VNF Package Task + ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based. + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change Current VNF Package Task + Check HTTP Response Status Code Is 202 + Check Operation Occurrence Id + +POST Change current VNF Package Task - Conflict + [Documentation] Test ID: 6.3.5.22.2 + ... Test title: POST Change current VNF Package Task - Conflict + ... Test objective: The objective is to test that the POST method cannot change the current VNF package task when another lifecycle management operation is ongoing. + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: There is another lifecycle management operation ongoing. + ... Post-Conditions: none + POST Change Current VNF Package Task + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Change current VNF Package Task - Method not implemented + [Documentation] Test ID: 6.3.5.22.3 + ... Test title: GET Change current VNF Package Task - Method not implemented + ... Test objective: The objective is to test that GET method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET Change Current VNF Package Task + Check HTTP Response Status Code Is 405 + +PUT Change current VNF Package Task - Method not implemented + [Documentation] Test ID: 6.3.5.22.4 + ... Test title: PUT Change current VNF Package Task - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + PUT Change Current VNF Package Task + Check HTTP Response Status Code Is 405 + +PATCH Change current VNF Package Task - Method not implemented + [Documentation] Test ID: 6.3.5.22.5 + ... Test title: PATCH Change current VNF Package Task - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + PATCH Change Current VNF Package Task + Check HTTP Response Status Code Is 405 + +DELETE Change current VNF Package Task - Method not implemented + [Documentation] Test ID: 6.3.5.22.6 + ... Test title: DELETE Change current VNF Package Task - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + DELETE Change Current VNF Package Task + Check HTTP Response Status Code Is 405 + +*** Keywords *** +Check resource existence + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot new file mode 100644 index 000000000..3befe481a --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -0,0 +1,117 @@ +*** Settings *** +Resource environment/variables.txt +Resource VnfLcmOperationKeywords.robot +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existence + +*** Test Cases *** +POST Create VNF Snapshot Task + [Documentation] Test ID: 6.3.5.23.1 + ... Test title: POST Create VNF Snapshot Task + ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance. + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Create VNF Snapshot Task + Check HTTP Response Status Code Is 202 + Check Operation Occurrence Id + +POST Create VNF Snapshot Task - NOT FOUND + [Documentation] Test ID: 6.3.5.23.2 + ... Test title: POST Create VNF Snapshot Task - NOT FOUND + ... Test objective: The objective is to test that the POST method cannot request for a snapshot if the task is not supported for the VNF instance represented by the parent resource. + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: Task is not supported for the VNF instance represented by the parent resource. + ... Post-Conditions: none + POST Create VNF Snapshot Task NOT SUPPORTED + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Create VNF Snapshot Task - CONFLICT + [Documentation] Test ID: 6.3.5.23.3 + ... Test title: POST Create VNF Snapshot Task - CONFLICT + ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the VNF instance is in NOT_INSTANTIATED state. + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: VNF instance is in NOT_INSTANTIATED state. + ... Post-Conditions: none + POST Create VNF Snapshot Task VNF_NOT_INSTANTIATED + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Create VNF Snapshot Task - UNPROCESSIBLE ENTITY + [Documentation] Test ID: 6.3.5.23.4 + ... Test title: POST Create VNF Snapshot Task - UNPROCESSIBLE ENTITY + ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the provided identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: The identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. + ... Post-Conditions: none + POST Create VNF Snapshot Task INVALID IDENTIFIER + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Create VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 6.3.5.23.5 + ... Test title: GET Create VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that GET method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET Create VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +PUT Create VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 6.3.5.23.6 + ... Test title: PUT Create VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + PUT Create VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +PATCH Create VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 6.3.5.23.7 + ... Test title: PATCH Create VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + PATCH Create VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +DELETE Create VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 6.3.5.23.8 + ... Test title: DELETE Create VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + DELETE Create VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +*** Keywords *** +Check resource existence + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot new file mode 100644 index 000000000..3f14f220d --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -0,0 +1,104 @@ +*** Settings *** +Resource environment/variables.txt +Resource VnfLcmOperationKeywords.robot +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existence + +*** Test Cases *** +POST Revert to VNF Snapshot Task + [Documentation] Test ID: 6.3.5.24.1 + ... Test title: POST Revert to VNF Snapshot Task + ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot. + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Revert to VNF Snapshot Task + Check HTTP Response Status Code Is 202 + Check Operation Occurrence Id + +POST Revert to VNF Snapshot Task - NOT FOUND + [Documentation] Test ID: 6.3.5.24.2 + ... Test title: POST Revert to VNF Snapshot Task - NOT FOUND + ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot if the task is not supported for the VNF instance represented by the parent resource. + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: Task is not supported for the VNF instance represented by the parent resource. + ... Post-Conditions: none + POST Revert to VNF Snapshot Task NOT SUPPORTED + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Revert to VNF Snapshot Task - CONFLICT + [Documentation] Test ID: 6.3.5.24.3 + ... Test title: POST Revert to VNF Snapshot Task - CONFLICT + ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot when the VNF instance is in NOT_INSTANTIATED state. + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: VNF instance is in NOT_INSTANTIATED state. + ... Post-Conditions: none + POST Revert to VNF Snapshot Task VNF_NOT_INSTANTIATED + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Revert to VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 6.3.5.24.4 + ... Test title: GET Revert to VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that GET method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET Revert to VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +PUT Revert to VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 6.3.5.24.5 + ... Test title: PUT Revert to VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + PUT Revert to VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +PATCH Revert to VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 6.3.5.24.6 + ... Test title: PATCH Revert to VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + PATCH Revert to VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +DELETE Revert to VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 6.3.5.24.7 + ... Test title: DELETE Revert to sVNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + DELETE Revert to VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +*** Keywords *** +Check resource existence + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} + Integer response status 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index c2d5451b4..f8dbac29b 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -12,7 +12,7 @@ POST Create a new vnfInstance ... Test title: POST Create a new vnfInstance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance created @@ -26,7 +26,7 @@ GET information about multiple VNF instances ... Test title: GET information about multiple VNF instances ... Test objective: The objective is to get information about multiples VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET information about multiple VNF instances Bad Request Invalid attribute-based ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF instances with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET information about multiple VNF instances Bad Request Invalid attribute selec ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF instances with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ GET information about multiple VNF instances with "all_fields" attribute selecto ... Test title: GET information about multiple VNF instances with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ GET information about multiple VNF instances with "exclude_default" attribute se ... Test title: GET information about multiple VNF instances with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ GET information about multiple VNF instances with "fields" attribute selector ... Test title: GET information about multiple VNF instances with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ GET information about multiple VNF instances with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF instances with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ PUT VNFInstances - Method not implemented ... Test title: PUT VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ PATCH VNFInstances - Method not implemented ... Test title: PATCH VNFInstances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ DELETE VNFInstances - Method not implemented ... Test title: DELETE VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance not deleted @@ -154,10 +154,23 @@ GET information about multiple VNF instances with "exclude_default" and "fields" ... Test title: GET information about multiple VNF instances with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none GET multiple vnfInstances with exclude_default and fields attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is vnfInstances \ No newline at end of file + Check HTTP Response Body Json Schema Is vnfInstances + +POST Create a new vnfInstance - UNPROCESSIBLE ENTITY + [Documentation] Test ID: 6.3.5.1.13 + ... Test title: POST Create a new vnfInstance - UNPROCESSIBLE ENTITY + ... Test objective: The objective is to test that a new VNF instance resource is not created when + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: vnfdId of the referenced VNF package is not in ENABLED state or does not exist. + ... Post-Conditions: VNF instance created + POST Create a new vnfInstance with Invalid vnfdId + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index e3c3a231a..bb432d41c 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -93,6 +93,17 @@ POST Create a new vnfInstance ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Create a new vnfInstance with Invalid vnfdId + Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances with invalid vnfdId + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/createVnfRequest.json + ${body}= Format String ${template} vnfdId=${invalidVnfdId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET multiple vnfInstances Log Query VNF The GET method queries information about multiple VNF instances. Set Headers {"Accept":"${ACCEPT}"} @@ -522,7 +533,179 @@ DELETE Change External VNF Connectivity Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Change Current VNF Package Task + Log Trying to change current VNF package task. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/changeCurrentVnfPkgRequest.json + ${body}= Format String ${template} vnfdId=${vnfdId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Change Current VNF Package Task + log Trying to perform a GET. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Change Current VNF Package Task + log Trying to perform a PUT. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Change Current VNF Package Task + log Trying to perform a PATCH. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Change Current VNF Package Task + log Trying to perform a DELETE. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create VNF Snapshot Task + Log Trying to request a snapshot of a VNF instance + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CreateVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create VNF Snapshot Task NOT SUPPORTED + Log Trying to request a snapshot of a VNF instance for which task resource does not exist + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CreateVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId_NoSnapshotTask}/create_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create VNF Snapshot Task VNF_NOT_INSTANTIATED + Log Trying to request a snapshot of a VNF instance which is in NOT_INSTANTIATED state + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CreateVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId_NOT_INSTANTIATED}/create_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create VNF Snapshot Task INVALID IDENTIFIER + Log Trying to request a snapshot of a VNF instance with invalid "Individual VNF Snapshot" resource identifier + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CreateVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${invalidVnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +GET Create VNF Snapshot Task + log Trying to perform a GET. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Create VNF Snapshot Task + log Trying to perform a PUT. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Create VNF Snapshot Task + log Trying to perform a PATCH. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Create VNF Snapshot Task + log Trying to perform a DELETE. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Revert to VNF Snapshot Task + Log Trying to initiate revert to VNF snapshot task. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/RevertToVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Revert to VNF Snapshot Task NOT SUPPORTED + Log Trying to revert to a snapshot of a VNF instance for which task resource does not exist + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/RevertToVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId_NoSnapshotTask}/revert_to_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Revert to VNF Snapshot Task VNF_NOT_INSTANTIATED + Log Trying to revert to a snapshot of a VNF instance which is in NOT_INSTANTIATED state + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/RevertToVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId_NOT_INSTANTIATED}/revert_to_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Revert to VNF Snapshot Task + log Trying to perform a GET. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Revert to VNF Snapshot Task + log Trying to perform a PUT. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Revert to VNF Snapshot Task + log Trying to perform a PATCH. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Revert to VNF Snapshot Task + log Trying to perform a DELETE. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + POST Operate VNF Log Trying to operate a VNF instance. Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index 7a8e8c363..a6a16693c 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -13,10 +13,12 @@ ${ACCEPT} application/json ${ACCEPT_JSON} application/json ${apiRoot} / ${apiName} vnflcm -${apiMajorVersion} v1 +${apiMajorVersion} v2 ${AUTH_USAGE} 1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX ${vnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${vnfInstanceId_NoSnapshotTask} vnfInstanceIdForWhichSnapshotResourceDoesNotExist +${vnfInstanceId_NOT_INSTANTIATED} vnfResourceIsInNOT_INSTANTIATEDstate ${badVnfInstanceId} wrongId ${instantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f #Change with an instantiated vnfInstanceID ${conflicVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f @@ -43,6 +45,9 @@ ${notInstantiatedVnfInstanceId} NOT_INSTANTIATED_VNF_INSTANCE_ID ${NOT_EXISTANT_VNF_INSTANCE_ID} NOT_EXISTANT_VNF_INSTANCE_ID ${SYNC_MODE} 0 +${vnfSnapshotInfoId} +${invalidVnfSnapshotInfoId} + ${callback_uri} http://localhost ${callback_port} 9091 ${callback_endpoint} /endpoint @@ -64,6 +69,7 @@ ${fields} ${original_etag} some_etag ${vnfdId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${invalidVnfdId} vnfdId-in-DISABLED-state-or-DNE ${flavourId} vnf flavour ${scaleVnfRequesttype} SCALE_OUT diff --git a/SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotRequest.json new file mode 100644 index 000000000..55e7f94ce --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotRequest.json @@ -0,0 +1,3 @@ +{{ + "vnfSnapshotInfoId": "{vnfSnapshotInfoId}" +}} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/RevertToVnfSnapshotRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/RevertToVnfSnapshotRequest.json new file mode 100644 index 000000000..014b500d3 --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/jsons/RevertToVnfSnapshotRequest.json @@ -0,0 +1,5 @@ +{{ + "vnfSnapshotInfoId": "{vnfSnapshotInfoId}", + "vnfcInstanceId": "", + "vnfcSnapshotInfoId": "" +}} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json new file mode 100644 index 000000000..c0d7e2a63 --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json @@ -0,0 +1,3 @@ +{{ + "vnfdId": "{vnfdId}" +}} -- GitLab From 8a02ccc392c53f7745720c6ac5a4a72830182064 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 19 Feb 2021 22:25:26 +0500 Subject: [PATCH 294/580] added new resources and updated references --- .../ApiVersion.robot | 20 +- .../CancelOperationTask.robot | 14 +- .../ChangeExternalVNFConnectivityTask.robot | 12 +- .../ChangeVNFFlavourTask.robot | 14 +- .../FailOperationTask.robot | 14 +- .../HealVNFTask.robot | 14 +- .../IndividualSubscription.robot | 10 +- .../IndividualVNFInstance.robot | 16 +- .../IndividualVNFSnapshot.robot | 91 + .../IndividualVnfLcmOperationOccurence.robot | 10 +- .../InstantiateVNFTask.robot | 12 +- .../NotificationConsumer.robot | 6 +- .../NotificationEndpoint.robot | 8 +- .../OperateVNFTask.robot | 14 +- .../RetryOperationTask.robot | 14 +- .../RollbackOperationTask.robot | 14 +- .../ScaleVNFTask.robot | 14 +- .../ScaleVNFToLevelTask.robot | 14 +- .../Subscriptions.robot | 32 +- .../TerminateVNFTask.robot | 12 +- .../VNFSnapshots.robot | 184 ++ .../VnfLcmOperationKeywords.robot | 180 +- .../VnfLcmOperationOccurences.robot | 28 +- .../environment/variables.txt | 3 + .../jsons/CreateVnfSnapshotInfoRequest.json | 3 + .../schemas/VnfSnapshotInfo.schema.json | 1531 ++++++++++++++++ .../schemas/VnfSnapshotsInfo.schema.json | 1535 +++++++++++++++++ 27 files changed, 3672 insertions(+), 147 deletions(-) create mode 100644 SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot create mode 100644 SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot create mode 100644 SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotInfoRequest.json create mode 100644 SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json create mode 100644 SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json diff --git a/SOL002/VNFLifecycleManagement-API/ApiVersion.robot b/SOL002/VNFLifecycleManagement-API/ApiVersion.robot index d22684914..3cbf78a9e 100644 --- a/SOL002/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL002/VNFLifecycleManagement-API/ApiVersion.robot @@ -11,7 +11,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot index db8a558e6..459342cb0 100644 --- a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -14,7 +14,7 @@ Post Cancel operation task ... Test title: POST Cancel operation task ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. ... Pre-conditions: the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: the resource is in FAILED_TEMP state @@ -27,7 +27,7 @@ Post Cancel operation task Conflict ... Test title: POST Cancel operation task Conflict ... Test objective: The POST method is NOT cancelling an ongoing VNF lifecycle operation due to the fact that the VNF instance resource is not in STARTING, PROCESSING or ROLLING_BACK state ... Pre-conditions: operation is not in STARTING, PROCESSING or ROLLING_BACK state - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ Post Cancel operation task Not Found ... Test title: POST Cancel operation task ... Test objective: The objective is to test that POST method cannot cancel a VNF lifecycle operation because the resource is not found ... Pre-conditions: - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Cancel operation task - Method not implemented ... Test title: GET Cancel operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ PUT Cancel operation task - Method not implemented ... Test title: PUT Cancel operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ PATCH Cancel operation task - Method not implemented ... Test title: PATCH Cancel operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ DELETE Cancel operation task - Method not implemented ... Test title: DELETE Cancel operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index f46fda1db..cbccf0f75 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -13,7 +13,7 @@ POST Change external VNF connectivity ... Test title: POST Change external VNF connectivity ... Test objective: The objective is to test that POST method triggers a change in VNF external connectivity ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ GET Change external VNF connectivity - Method not implemented ... Test title: GET Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT Change external VNF connectivity - Method not implemented ... Test title: PUT Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH Change external VNF connectivity - Method not implemented ... Test title: PATCH Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE Change external VNF connectivity - Method not implemented ... Test title: DELETE Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST Change external VNF connectivity Conflict ... Test title: POST Change external VNF connectivity Conflict ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 37a3a5336..0ad837b2c 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -13,7 +13,7 @@ POST Change deployment flavour of a vnfInstance ... Test title: POST Change deployment flavour of a vnfInstance ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because of a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Change deployment flavour of a vnfInstance Not Found ... Test title: POST Change deployment flavour of a vnfInstance Not Found ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because the VNF instance resource is not found. ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Change deployment flavour VNFInstance - Method not implemented ... Test title: GET Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Change deployment flavour VNFInstance - Method not implemented ... Test title: PUT Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Change deployment flavour VNFInstance - Method not implemented ... Test title: PATCH Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Change deployment flavour VNFInstance - Method not implemented ... Test title: DELETE Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot index 071e57c71..00c244dce 100644 --- a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot @@ -12,7 +12,7 @@ POST Fail operation task ... Test title: POST Fail operation task ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation if that operation has experienced a failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Fail operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Fail operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method cannot mark as "finally failed" due to confilct with the state of LCM Operation Occurrence ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Fail operation task Not Found ... Test title: POST Fail operation task Not Found ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation because the operation is not supported ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Fail operation task - Method not implemented ... Test title: GET Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Fail operation task - Method not implemented ... Test title: PUT Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Fail operation task - Method not implemented ... Test title: PATCH Fail operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Fail operation task - Method not implemented ... Test title: DELETE Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot index 63508cafe..3b72583ed 100644 --- a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot @@ -13,7 +13,7 @@ POST Heal a vnfInstance ... Test title: POST Heal a vnfInstance ... Test objective: The objective is to test that POST method heal a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Heal a vnfInstance (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Heal a vnfInstance Not Found ... Test title: POST Heal a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Heal VNFInstance - Method not implemented ... Test title: GET Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Heal VNFInstance - Method not implemented ... Test title: PUT Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Heal VNFInstance - Method not implemented ... Test title: PATCH Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Heal VNFInstance - Method not implemented ... Test title: DELETE Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot index 03e5e173b..45052754d 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the Get individual subscription ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE an individual subscription ... Test title: DELETE Individual Subscription ... Test objective: The objective is to test that the DELETE method removes an individual subscription ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 65aba97b4..c50fd9f01 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -18,7 +18,7 @@ POST Individual VNFInstance - Method not implemented ... Test title: POST Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET Information about an individual VNF Instance ... Test title: GET Information about an individual VNF Instance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ PUT Individual VNFInstance - Method not implemented ... Test title: PUT Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance not modified @@ -56,7 +56,7 @@ PATCH Individual VNFInstance ... Test title: PATCH Individual VNFInstance ... Test objective: This method modifies an individual VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance modified @@ -69,7 +69,7 @@ PATCH Individual VNFInstance Precondition failed ... Test title: PATCH Individual VNFInstance Precondition failed ... Test objective: The objective is to that the modification of individual VNFInstance fails because precondition given in an HTTP request header is not fulfilled. Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ PATCH Individual VNFInstance Conflict ... Test title: PATCH Individual VNFInstance Conflict ... Test objective: The objective is to verify that modification operation cannot be executed currently, due to a conflict with the state of the VNF instance resource because another LCM Operation is ongoing. ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ DELETE Individual VNFInstance ... Test title: DELETE Individual VNFInstance ... Test objective: The objective is to delete a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance deleted @@ -107,7 +107,7 @@ DELETE Individual VNFInstance Conflict ... Test title: DELETE Individual VNFInstance Conflict ... Test objective: The objective is to verify that The operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot new file mode 100644 index 000000000..c76466be2 --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -0,0 +1,91 @@ +*** Settings *** +Resource environment/variables.txt +Resource VnfLcmOperationKeywords.robot + +*** Test Cases *** +POST Individual VNF Snapshot - Method not implemented + [Documentation] Test ID: 6.3.5.26.1 + ... Test title: POST Individual VNF Snapshot - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + POST individual VNF Snapshot + Check HTTP Response Status Code Is 405 + +GET Information about an individual VNF Snapshot - SUCCESSFUL + [Documentation] Test ID: 6.3.5.26.2 + ... Test title: GET Information about an individual VNF Snapshot - SUCCESSFUL + ... Test objective: The objective is to create a new VNF Snapshot resource + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET individual VNF Snapshot + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotInfo + +GET Information about an individual VNF Snapshot - NOT FOUND + [Documentation] Test ID: 6.3.5.26.3 + ... Test title: GET Information about an individual VNF Snapshot - NOT FOUND + ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot fails when using an invalid resource identifier. + ... Pre-conditions: At least one individual VNF Snapshot is available in the NFV-MANO. + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Snapshot with Invalid URI + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Individual VNF Snapshot - Method not implemented + [Documentation] Test ID: 6.3.5.26.4 + ... Test title: PUT Individual VNF Snapshot - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: VNF Snapshot not modified + PUT individual VNF Snapshot + Check HTTP Response Status Code Is 405 + +PATCH Individual VNF Snapshot - Method Not Allowed + [Documentation] Test ID: 6.3.5.26.5 + ... Test title: PATCH Individual VNF Snapshot + ... Test objective: This method modifies an individual VNF Snapshot resource + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: VNF Snapshot modified + PATCH individual VNF Snapshot + Check HTTP Response Status Code Is 405 + +DELETE Individual VNF Snapshot + [Documentation] Test ID: 6.3.5.26.6 + ... Test title: DELETE Individual VNF Snapshot + ... Test objective: The objective is to delete a VNF Snapshot + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: VNF Snapshot deleted + DELETE individual VNF Snapshot + Check HTTP Response Status Code Is 204 + +DELETE Individual VNF Snapshot - Conflict + [Documentation] Test ID: 6.3.5.26.7 + ... Test title: DELETE Individual VNF Snapshot Conflict + ... Test objective: The objective is to verify that The operation cannot be executed currently, due to a conflict with the state of the VNF Snapshot resource. + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: VNF snapshot is in use by some operation such as reverting a VNF instance to a VNF snapshot or creating a VNF snapshot package. + ... Post-Conditions: none + DELETE individual VNF Snapshot - CONFLICT + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index cf5882df8..1b6401654 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -10,7 +10,7 @@ Post Individual VNF LCM OP occurrences - Method not implemented ... Test title: Post Individual VNF LCM OP occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -22,7 +22,7 @@ Get status information about multiple VNF instances ... Test title: Get status information about multiple VNF instances ... Test objective: The objective is to test that this method retrieve status information about a VNF lifecycle management operation occurrence ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT status information about multiple VNF instances - Method not implemented ... Test title: PUT status information about multiple VNF instances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH status information about multiple VNF instances - Method not implemented ... Test title: PATCH status information about multiple VNF instances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE status information about multiple VNF instances - Method not implemented ... Test title: DELETE status information about multiple VNF instances - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 2c43ee7a6..ec1d6faeb 100644 --- a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -15,7 +15,7 @@ POST Instantiate a vnfInstance ... Test title: POST Instantiate a vnfInstance ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ POST Instantiate a vnfInstance Conflict ... Test title: POST Instantiate a vnfInstance Conflict ... Test objective: The objective is to verify that the instantiation of the vnf cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET Instantiate VNFInstance - Method not implemented ... Test title: GET Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ PUT Instantiate VNFInstance - Method not implemented ... Test title: PUT Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PATCH Instantiate VNFInstance - Method not implemented ... Test title: PATCH Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ DELETE Instantiate VNFInstance - Method not implemented ... Test title: DELETE Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot b/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot index 7befae053..375066cc0 100644 --- a/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot @@ -14,7 +14,7 @@ VNF LCM Operation Occurrence Notification ... Test title: VNF LCM Operation Occurrence Start Notification ... Test objective: The objective is to test that VNF LCM Operation Occurrence Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test that VNF Identifier Creation Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for VNF Identifier Creation Notification is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test that VNF Identifier Deletion Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for VNF Identifier Deletion Notification is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot index 6a3ecfce5..54704f213 100644 --- a/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF LCM Operation Occurrence Start Notification ... Test title: VNF LCM Operation Occurrence Start Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Start Notification when a new VNF LCM operation is started in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ VNF LCM Operation Occurrence Result Notification ... Test title: VNF LCM Operation Occurrence Result Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Result Notification when a VNF LCM operation is completed in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: An VNF LCM operation is in progress, and a subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Creation Notification when a new VNF instance resource is created in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Deletion Notification when a VNF instance resource is deleted in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance resource is created, and a subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot index ccaea1ae5..eaf8b0836 100644 --- a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -13,7 +13,7 @@ POST Operate a vnfInstance ... Test title: POST Operate a vnfInstance ... Test objective: The objective is to test that POST method operate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: the VNF instance resource is in NOT_INSTANTIATED state - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Operate a vnfInstance Not Found ... Test title: POST Operate a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed currently, because the resource is not existing ... Pre-conditions: the VNF instance resource is in not existing - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Operate VNFInstance - Method not implemented ... Test title: GET Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Operate VNFInstance - Method not implemented ... Test title: PUT Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Operate VNFInstance - Method not implemented ... Test title: PATCH Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Operate VNFInstance - Method not implemented ... Test title: DELETE Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot index 638712080..15f3ebd8c 100644 --- a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -14,7 +14,7 @@ POST Retry operation task ... Test title: POST Retry operation task ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Retry operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Retry operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that the retry operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. (i.e. the VNF instance resource is not in FAILED_TEMP state) ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Retry operation task Not Found ... Test title: POST Retry operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Retry operation task - Method not implemented ... Test title: GET Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.14.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Retry operation task - Method not implemented ... Test title: PUT Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.14.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Retry operation task - Method not implemented ... Test title: PATCH Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.14.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Retry operation task - Method not implemented ... Test title: DELETE Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.14.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot index 382bd0069..7e38d0f0c 100644 --- a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -14,7 +14,7 @@ POST Rollback operation task ... Test title: POST Rollback operation task ... Test objective: The objective is to test that POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method The POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Rollback operation task Not Found ... Test title: POST Rollback operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Rollback operation task - Method not implemented ... Test title: GET Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Rollback operation task - Method not implemented ... Test title: PUT Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Rollback operation task - Method not implemented ... Test title: PATCH Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Rollback operation task - Method not implemented ... Test title: DELETE Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot index 9e2a10702..8e5fe90e5 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -13,7 +13,7 @@ POST Scale a vnfInstance ... Test title: POST Scale a vnfInstance ... Test objective: The objective is to scale a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Scale a vnfInstance Not Found ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Scale VNFInstance - Method not implemented ... Test title: GET Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Scale VNFInstance - Method not implemented ... Test title: PUT Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Scale VNFInstance - Method not implemented ... Test title: PATCH Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Scale VNFInstance - Method not implemented ... Test title: DELETE Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 1afc0bd1a..d1bccb6ee 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -12,7 +12,7 @@ POST Scale a vnfInstance to level ... Test title: POST Scale a vnfInstance to level ... Test objective: The objective is to scale a VNF instance to a target level. ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ POST Scale a vnfInstance Not Found ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the VNF Scale operation fails when the VNF instance resource is not present ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET Scale to level VNFInstance - Method not implemented ... Test title: GET Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Scale to level VNFInstance - Method not implemented ... Test title: PUT Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH Scale to level VNFInstance - Method not implemented ... Test title: PATCH Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE Scale to level VNFInstance - Method not implemented ... Test title: DELETE Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot index 65bff9a7c..13a1206ac 100644 --- a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot @@ -15,7 +15,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The POST method creates a new subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -28,7 +28,7 @@ POST Create a new Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: SUT should support duplication of subscription creation ... Post-Conditions: in response header Location shall not be null @@ -41,7 +41,7 @@ POST Create a new Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: SUT should not support duplication of subscription creation ... Post-Conditions: in response header Location shall not be null @@ -54,7 +54,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET Subscription - Filter ... Test title: GET Subscriptions - Filter ... Test objective: The objective is Get the list of active subscriptions using a "filter" ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is Get the list of active subscriptions using a filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions with all_fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ GET subscriptions with exclude_default attribute selector ... Test title: GET subscriptions with exclude_default attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -119,7 +119,7 @@ GET subscriptions with fields attribute selector ... Test title: GET subscriptions with fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -132,7 +132,7 @@ GET subscriptions with exclude_fields attribute selector ... Test title: GET subscriptions with exclude_fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -145,7 +145,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -157,7 +157,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -169,7 +169,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: check that resources are not deleted @@ -182,7 +182,7 @@ POST Create a new Subscription - Unprocessable Entity ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -195,7 +195,7 @@ GET information about multiple subscriptions to get Paged Response ... Test title: GET information about multiple subscriptions to get Paged Response ... Test objective: The objective is to retrieve information about the subscriptions to get paged response ... Pre-conditions: - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -208,7 +208,7 @@ GET information about multiple subscriptions for Bad Request Response too big ... Test title: GET information about multiple subscriptions for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about subscriptions when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: diff --git a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot index 56ef35f64..a5799b244 100644 --- a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -13,7 +13,7 @@ POST Terminate a vnfInstance ... Test title: POST Terminate a vnfInstance ... Test objective: The objective is to test that POST method terminate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is in NOT_INSTANTIATED state - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Terminate VNFInstance - Method not implemented ... Test title: GET Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Terminate VNFInstance - Method not implemented ... Test title: PUT Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Terminate VNFInstance - Method not implemented ... Test title: PATCH Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Terminate VNFInstance - Method not implemented ... Test title: DELETE Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot new file mode 100644 index 000000000..bd87090b0 --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -0,0 +1,184 @@ +*** Settings *** +Resource environment/variables.txt +Resource VnfLcmOperationKeywords.robot + +*** Test Cases *** +POST Create a new VNF Snapshot + [Documentation] Test ID: 6.3.5.25.1 + ... Test title: POST Create a new VNF Snapshot + ... Test objective: The objective is to create a new VNF snapshot + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: VNF snapshot is created + POST Create a new VNF Snapshot + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is VnfSnapshotInfo + Check HTTP Location Header Contains URI of Created Resource + +GET information about multiple VNF Snapshots + [Documentation] Test ID: 6.3.5.25.2 + ... Test title: GET information about multiple VNF Snapshots + ... Test objective: The objective is to get information about multiples VNF snapshots + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 6.3.5.25.3 + ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters + ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with bad attribute + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF Snapshots Bad Request Invalid attribute selector + [Documentation] Test ID: 6.3.5.25.4 + ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute selector + ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with bad filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF Snapshots with "all_fields" attribute selector + [Documentation] Test ID: 6.3.5.25.5 + ... Test title: GET information about multiple VNF Snapshots with "all_fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots with "exclude_default" attribute selector + [Documentation] Test ID: 6.3.5.25.6 + ... Test title: GET information about multiple VNF Snapshots with "exclude_default" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots with "fields" attribute selector + [Documentation] Test ID: 6.3.5.25.7 + ... Test title: GET information about multiple VNF Snapshots with "fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 6.3.5.25.8 + ... Test title: GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots with "exclude_fields" attribute selector + [Documentation] Test ID: 6.3.5.25.9 + ... Test title: GET information about multiple VNF Snapshots with "exclude_fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET VNF Snapshots - Bad Request Response too Big + [Documentation] Test ID: 6.3.5.25.10 + ... Test title: GET VNF Snapshots - Bad Request Response too Big + ... Test objective: The objective is test that the retrieval of existing VNF Snapshots list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: VNFM does not support paged response. + ... Post-Conditions: none + GET VNF Snapshots without Paging support + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET VNF Snapshots as Paged Response + [Documentation] Test ID: 6.3.5.25.11 + ... Test title: GET VNF Snapshots as Paged Response + ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshots as paged response. + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: VNFM supports paged response. + ... Post-Conditions: none + GET VNF Snapshots with Paging support + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +PUT VNF Snapshots - Method not implemented + [Documentation] Test ID: 6.3.5.25.12 + ... Test title: PUT VNF Snapshots - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + PUT VNF Snapshots + Check HTTP Response Status Code Is 405 + +PATCH VNF Snapshots - Method not implemented + [Documentation] Test ID: 6.3.5.25.13 + ... Test title: PATCH VNF Snapshots - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + PATCH VNF Snapshots + Check HTTP Response Status Code Is 405 + +DELETE VNF Snapshots - Method not implemented + [Documentation] Test ID: 6.3.5.25.11 + ... Test title: DELETE VNF Snapshots - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: VNF instance not deleted + DELETE VNF Snapshots + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index bb432d41c..f1867db71 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -38,6 +38,10 @@ Check Operation Occurrence Id ${vnfLcmOpOccId}= Get Value From Json ${response['headers']} $..Location Should Not Be Empty ${vnfLcmOpOccId} +Check HTTP Location Header Contains URI of Created Resource + ${URI}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${URI} + Check HTTP Response Body Json Schema Is [Arguments] ${input} ${schema} = Catenate SEPARATOR= ${input} .schema.json @@ -188,6 +192,117 @@ DELETE multiple vnfInstances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Create a new VNF Snapshot + Log Create VNF snapshot by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/CreateVnfSnapshotInfoRequest.json + ${body}= Format String ${template} vnfdId=${Descriptor_ID} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots + Log Query VNF The GET method queries information about multiple VNF snapshots. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots with bad attribute + Log Query VNF The GET method queries information about multiple VNF snapshots. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?attribute_not_exist=some_value + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots with bad filter + Log Query VNF The GET method queries information about multiple VNF snapshots. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=wrong_field + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots with all_fields attribute selector + Log Query status information about multiple VNF snapshots, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshots with exclude_default attribute selector + Log Query status information about multiple VNF snapshots using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshots with fields attribute selector + Log Query status information about multiple VNF snapshots, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshots with exclude_default and fields attribute selector + Log Query status information about multiple VNF snapshots, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshots with exclude_fields attribute selector + Log Query status information about multiple VNF snapshots, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?exclude_fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET VNF Snapshots without Paging support + Run Keyword If ${PAGING_SUPPORTED} == 0 GET multiple VNF Snapshots + +GET VNF Snapshots with Paging support + Run Keyword If ${PAGING_SUPPORTED} == 1 GET multiple VNF Snapshots + +Check HTTP Response Header Contains Link + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + +PUT VNF Snapshots + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH VNF Snapshots + Log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE VNF Snapshots + Log Trying to perform a DELETE. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snaphots + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + POST individual vnfInstance log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -227,6 +342,7 @@ PATCH individual vnfInstance 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_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -234,6 +350,69 @@ DELETE individual vnfInstance ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST individual VNF Snapshot + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot + log Trying to get information about an individual VNF snapshot + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot with invalid URI + log Trying to get information about an individual VNF snapshot + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${invalidVnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT individual VNF Snapshot + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH individual VNF Snapshot + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE individual VNF Snapshot + log Trying to DELETE an individual VNF Snapshot + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE individual VNF Snapshot - CONFLICT + log Trying to DELETE an individual VNF Snapshot that is already in use by another operation + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId_InUse} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + POST instantiate individual vnfInstance Log Trying to Instantiate a vnf Instance Set Headers {"Accept":"${ACCEPT}"} @@ -273,7 +452,6 @@ DELETE instantiate individual vnfInstance ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - POST Scale vnfInstance [Arguments] ${vnf_state} [Documentation] ${vnf_state} differentiate the VNF ID to be used in the different POST requests diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index d5e329d38..37a48e473 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -13,7 +13,7 @@ POST VNF LCM operation occurrences - Method not implemented ... Test title: POST VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET status information about multiple VNF LCM operation occurrences ... Test title: GET status information about multiple VNF LCM operation occurrences ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET status information about multiple VNF LCM operation occurrences Bad Request ... Test title: GET status information about multiple VNF LCM operation occurrences Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET status information about multiple VNF LCM Operation occurrences Bad Request ... Test title: GET status information about multiple VNF LCM Operation occurrences Bad Request Invalid attribute selector ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ GET status information about multiple VNF LCM Operation occurrences with "all_fi ... Test title: GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ GET status information about multiple VNF LCM Operation occurrences with "exlude ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ GET status information about multiple VNF LCM Operation occurrences with "fields ... Test title: GET status information about multiple VNF LCM Operation OCC with "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ GET status information about multiple VNF LCM Operation occurrences with "exclud ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ PUT status information about multiple VNF LCM operation occurrences - Method not ... Test title: PUT status information about multiple VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH status information about multiple VNF LCM operation occurrences - Method n ... Test title: PATCH status information about multiple VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE status information about multiple VNF LCM operation occurrences - Method ... Test title: DELETE status information about multiple VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ GET status information about multiple VNF LCM operation occurances to get Paged ... Test title: GET status information about multiple VNF LCM operation occurances to get Paged Response ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences to get paged response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ GET status information about multiple VNF LCM Operation occurrences Bad Request ... Test title: GET status information about multiple VNF LCM Operation occurrences Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because Response is too big. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -179,7 +179,7 @@ GET status information about multiple VNF LCM Operation occurrences with "exlude ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" and "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index a6a16693c..e16cba00d 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -45,8 +45,11 @@ ${notInstantiatedVnfInstanceId} NOT_INSTANTIATED_VNF_INSTANCE_ID ${NOT_EXISTANT_VNF_INSTANCE_ID} NOT_EXISTANT_VNF_INSTANCE_ID ${SYNC_MODE} 0 +${PAGING_SUPPORTED} 0 + ${vnfSnapshotInfoId} ${invalidVnfSnapshotInfoId} +${vnfSnapshotInfoId_InUse} snapshotId-of-a-resource-AlreadyInUse ${callback_uri} http://localhost ${callback_port} 9091 diff --git a/SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotInfoRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotInfoRequest.json new file mode 100644 index 000000000..55fd9aa67 --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotInfoRequest.json @@ -0,0 +1,3 @@ +{ + "vnfSnapshotPkgId": "" +} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json new file mode 100644 index 000000000..7f4f90f38 --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json @@ -0,0 +1,1531 @@ +{ + "description": "This type represents an individual VNF snapshot resource.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshotPkgId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshot": { + "description": "This type represents a VNF snapshot.\n", + "type": "object", + "required": [ + "id", + "vnfInstanceId", + "triggeredAt", + "vnfdId", + "vnfInfo", + "vnfcSnapshots" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstance": { + "description": "This type represents a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "instantiationState", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState", + "extCpInfo" + ], + "properties": { + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [ + { + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "extManagedVirtualLinkInfo": { + "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + } + } + } + }, + "monitoringParameters": { + "description": "Active monitoring parameters.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource", + "vnfcCpInfo" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfVirtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfVirtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfcInfo": { + "description": "Information about the VNFC instances.\n", + "type": "array", + "items": { + "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n", + "type": "object", + "required": [ + "id", + "vduId", + "vnfcState" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcState": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "indicators": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "instantiate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "terminate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scale": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scaleToLevel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeFlavour": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "heal": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "operate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeExtConn": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + }, + "vnfcSnapshots": { + "description": "Information about VNFC snapshots constituting this VNF snapshot.\n", + "type": "array", + "items": { + "description": "This type represents a VNFC snapshot.\n", + "type": "object", + "required": [ + "id", + "vnfcInstanceId", + "triggeredAt", + "vnfcInfo" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfcResourceInfoId": { + "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n", + "type": "object", + "required": [ + "id", + "vduId", + "vnfcState" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcState": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "computeSnapshotResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "storageSnapshotResources": { + "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n", + "type": "object", + "required": [ + "storageResourceId" + ], + "properties": { + "storageResourceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "storageSnapshotResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "takenFrom": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json new file mode 100644 index 000000000..1ea63e51f --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json @@ -0,0 +1,1535 @@ +{ + "type": "array", + "items": + { + "description": "This type represents an individual VNF snapshot resource.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshotPkgId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshot": { + "description": "This type represents a VNF snapshot.\n", + "type": "object", + "required": [ + "id", + "vnfInstanceId", + "triggeredAt", + "vnfdId", + "vnfInfo", + "vnfcSnapshots" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstance": { + "description": "This type represents a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "instantiationState", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState", + "extCpInfo" + ], + "properties": { + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [ + { + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "extManagedVirtualLinkInfo": { + "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + } + } + } + }, + "monitoringParameters": { + "description": "Active monitoring parameters.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource", + "vnfcCpInfo" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfVirtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfVirtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfcInfo": { + "description": "Information about the VNFC instances.\n", + "type": "array", + "items": { + "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n", + "type": "object", + "required": [ + "id", + "vduId", + "vnfcState" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcState": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "indicators": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "instantiate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "terminate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scale": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scaleToLevel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeFlavour": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "heal": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "operate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeExtConn": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + }, + "vnfcSnapshots": { + "description": "Information about VNFC snapshots constituting this VNF snapshot.\n", + "type": "array", + "items": { + "description": "This type represents a VNFC snapshot.\n", + "type": "object", + "required": [ + "id", + "vnfcInstanceId", + "triggeredAt", + "vnfcInfo" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfcResourceInfoId": { + "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n", + "type": "object", + "required": [ + "id", + "vduId", + "vnfcState" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcState": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "computeSnapshotResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "storageSnapshotResources": { + "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n", + "type": "object", + "required": [ + "storageResourceId" + ], + "properties": { + "storageResourceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "storageSnapshotResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "takenFrom": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} +} \ No newline at end of file -- GitLab From 12587b403d51685710a79cc742d99567418084be Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Sat, 20 Feb 2021 01:04:59 +0500 Subject: [PATCH 295/580] updated JSONs and schemas according to deltas --- .../jsons/changeCurrentVnfPkgRequest.json | 19 +- .../changeExtVnfConnectivityRequest.json | 66 +- .../jsons/createVnfRequest.json | 6 +- .../jsons/healVnfRequest.json | 3 +- .../jsons/instantiateVnfRequest.json | 77 +- .../jsons/operateVnfRequest.json | 2 + .../jsons/terminateVnfRequest.json | 2 +- ...perationOccurrenceNotification.schema.json | 832 ++++++ .../schemas/subscription.schema.json | 396 +-- .../schemas/subscriptions.schema.json | 360 ++- .../schemas/vnfInstance.schema.json | 2255 +++++++++------- .../schemas/vnfInstances.schema.json | 2262 ++++++++++------- .../schemas/vnfLcmOpOcc.schema.json | 1313 ++++++---- .../schemas/vnfLcmOpOccs.schema.json | 1490 ++++++----- 14 files changed, 5633 insertions(+), 3450 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json index c0d7e2a63..1a7652ddf 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json @@ -1,3 +1,20 @@ {{ - "vnfdId": "{vnfdId}" + "vnfdId": "{vnfdId}", + "extVirtualLinks": [ + { + "id": "", + "vimConnectionId": "", + "resourceProviderId": "", + "resourceId": "" + } + ], + "extManagedVirtualLinks": [ + { + "id": "", + "vnfVirtualLinkDescId": "", + "resourceId": "" + } + ], + "additionalParams": {}, + "vnfConfigurableProperties": {} }} diff --git a/SOL002/VNFLifecycleManagement-API/jsons/changeExtVnfConnectivityRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/changeExtVnfConnectivityRequest.json index b53584eea..d9dd498d6 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/changeExtVnfConnectivityRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/changeExtVnfConnectivityRequest.json @@ -1,65 +1,11 @@ { "extVirtualLinks": [ - { - "id": "string", - "vimConnectionId": "string", - "resourceProviderId": "string", - "resourceId": "string", - "extCps": [ - { - "cpdId": "string", - "cpConfig": [ - { - "cpInstanceId": "string", - "linkPortId": "string", - "cpProtocolData": [ - { - "layerProtocol": "IP_OVER_ETHERNET", - "ipOverEthernet": { - "macAddress": "string", - "ipAddresses": [ - { - "type": "IPV4", - "fixedAddresses": [ - "string" - ], - "numDynamicAddresses": 0, - "addressRange": { - "minAddress": "string", - "maxAddress": "string" - }, - "subnetId": "string" - } - ] - } - } - ] - } - ] - } - ], - "extLinkPorts": [ - { - "id": "string", - "resourceHandle": { - "vimConnectionId": "string", - "resourceProviderId": "string", - "resourceId": "string", - "vimLevelResourceType": "string" - } - } - ] - } - ], - "vimConnectionInfo": [ - { - "id": "string", - "vimId": "string", - "vimType": "string", - "interfaceInfo": {}, - "accessInfo": {}, - "extra": {} - } + { + "id": "", + "vimConnectionId": "", + "resourceProviderId": "", + "resourceId": "" + } ], "additionalParams": {} } \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 5b1a730e3..710694f38 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", - "vnfdId": "{vnfdId}" -}} + "vnfInstanceDescription": "string" +}} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/healVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/healVnfRequest.json index 8e57871a5..7b24749c6 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/healVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/healVnfRequest.json @@ -1,4 +1,5 @@ {{ + "vnfcInstanceId": [], "cause": "{healingCause}", - "additionalParams": {} + "healScript": "" }} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/instantiateVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/instantiateVnfRequest.json index c8a0ed85c..eaf4f76fc 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/instantiateVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/instantiateVnfRequest.json @@ -1,77 +1,4 @@ {{ "flavourId": "{flavourId}", - "extVirtualLinks": [ - { - "id": "string", - "vimConnectionId": "string", - "resourceProviderId": "string", - "resourceId": "string", - "extCps": [ - { - "cpdId": "string", - "cpConfig": [ - { - "cpInstanceId": "string", - "linkPortId": "string", - "cpProtocolData": [ - { - "layerProtocol": "IP_OVER_ETHERNET", - "ipOverEthernet": { - "macAddress": "string", - "ipAddresses": [ - { - "type": "IPV4", - "fixedAddresses": [ - "string" - ], - "numDynamicAddresses": 0, - "addressRange": { - "minAddress": "string", - "maxAddress": "string" - }, - "subnetId": "string" - } - ] - } - } - ] - } - ] - } - ], - "extLinkPorts": [ - { - "id": "string", - "resourceHandle": { - "vimConnectionId": "string", - "resourceProviderId": "string", - "resourceId": "string", - "vimLevelResourceType": "string" - } - } - ] - } - ], - "extManagedVirtualLinks": [ - { - "id": "string", - "virtualLinkDescId": "string", - "vimConnectionId": "string", - "resourceProviderId": "string", - "resourceId": "string" - } - ], - "vimConnectionInfo": [ - { - "id": "string", - "vimId": "string", - "vimType": "string", - "interfaceInfo": {}, - "accessInfo": {}, - "extra": {} - } - ], - "localizationLanguage": "English", - "extensions": {}, - "additionalParams": {} -}} \ No newline at end of file + "instantiationLevelId": "" +}} diff --git a/SOL002/VNFLifecycleManagement-API/jsons/operateVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/operateVnfRequest.json index c32dd2c4e..d5d7ac26d 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/operateVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/operateVnfRequest.json @@ -1,5 +1,7 @@ {{ + "vnfcInstanceId": [], "changeStateTo": "{changeStateTo}", "stopType": "FORCEFUL", + "gracefulStopTimeout": "", "additionalParams": {} }} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/terminateVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/terminateVnfRequest.json index b317c4de9..5b133c085 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/terminateVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/terminateVnfRequest.json @@ -1,4 +1,4 @@ {{ "terminationType": "{terminationType}", - "additionalParams": {} + "gracefulTerminationTimeout": "" }} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index e69de29bb..7abc26eae 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -0,0 +1,832 @@ +{ + "description": "This type represents a VNF lifecycle management operation occurrence notification, which informs the receiver of changes in the VNF lifecycle caused by a VNF LCM operation occurrence. The support of the notification is mandatory. This notification shall be triggered by the VNFM when there is a change in the VNF lifecycle caused by a VNF LCM operation occurrence, including: * Instantiation of the VNF * Scaling of the VNF instance (including auto-scaling) * Healing of the VNF instance (including auto-healing) * Change of the state of the VNF instance (i.e. Operate VNF) * Change of the deployment flavour of the VNF instance * Change of the external connectivity of the VNF instance * Termination of the VNF instance * Modification of VNF instance information and/or VNF configurable\n properties through the \"PATCH\" method on the \"Individual VNF instance\"\n resource.\nIf this is the initial notification about the start of a VNF LCM operation occurrence, it is assumed that the notification is sent by the VNFM before any action (including sending the grant request) is taken as part of the LCM operation. Due to possible race conditions, the \"start\" notification, the grant request and the LCM operation acknowledgment can arrive in any order at the NFVO, and the NFVO shall be able to handle such a situation. If this is a notification about a final or intermediate result state of a VNF LCM operation occurrence, the notification shall be sent after all related actions of the LCM operation that led to this state have been executed. The new state shall be set in the \"Individual VNF LCM operation occurrence\" resource before the notification about the state change is sent.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "notificationStatus", + "operationState", + "vnfInstanceId", + "operation", + "isAutomaticInvocation", + "vnfLcmOpOccId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"VnfLcmOperationOccurrenceNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "VnfLcmOperationOccurrenceNotification" + ] + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notificationStatus": { + "description": "Indicates whether this notification reports about the start of a lifecycle operation or the result of a lifecycle operation. Permitted values: * START: Informs about the start of the VNF LCM operation\n occurrence.\n* RESULT: Informs about the final or intermediate result of the VNF\n LCM operation occurrence.\n", + "type": "string", + "enum": [ + "START", + "RESULT" + ] + }, + "operationState": { + "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The 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" + ] + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operation": { + "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. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO", + "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", + "CHANGE_VNFPKG" + ] + }, + "isAutomaticInvocation": { + "description": "Set to true if this VNF LCM operation occurrence has been triggered by an automated procedure inside the VNFM (i.e. ScaleVnf / ScaleVnfToLevel triggered by auto-scale, or HealVnf triggered by auto-heal). Set to false otherwise.\n", + "type": "boolean" + }, + "verbosity": { + "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", + "type": "string", + "enum": [ + "FULL", + "SHORT" + ] + }, + "vnfLcmOpOccId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "affectedVnfcs": { + "description": "Information about VNFC instances that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the VNF LCM operation occurrence and by any of the error handling procedures for that operation occurrence.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n", + "type": "object", + "required": [ + "id", + "vduId", + "changeType", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "affectedVnfcCpIds": { + "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "addedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "removedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + }, + "affectedVirtualLinks": { + "description": "Information about VL instances that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the VNF LCM operation occurrence and by any of the error handling procedures for that operation occurrence.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "changeType", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY", + "LINK_PORT_ADDED", + "LINK_PORT_REMOVED" + ] + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "vnfLinkPortIds": { + "description": "Identifiers of the link ports of the affected VL (reference to the vnfLinkPortInfo) related to the change. Each identifier references a \"VnfLinkPortInfo\" structure. Shall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related “VnfLinkPortInfo” structures are present (case \"added\") or have been present (case \"removed\") in the “VnfVirtualLinkResourceInfo” or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResourceInfo\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "affectedExtLinkPorts": { + "description": "Information about external VNF link ports that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the VNF LCM operation occurrence and by any of the error handling procedures for that operation occurrence.\n", + "type": "array", + "items": { + "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\n", + "type": "object", + "required": [ + "id", + "changeType", + "extCpInstanceId", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED" + ] + }, + "extCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + } + } + } + }, + "affectedVirtualStorages": { + "description": "Information about virtualised storage instances that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the VNF LCM operation occurrence and by any of the error handling procedures for that operation occurrence.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "changeType", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "changedInfo": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n", + "type": "object", + "properties": { + "vnfInstanceName": { + "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\".\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\".\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n", + "type": "string" + }, + "vnfProductName": { + "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfcInfoModifications": { + "description": "If present, this attribute signals modifications of certain entries in the \"vnfcInfo\" attribute array in the \"instantiatedVnfInfo\" attribute of \"VnfInstance\", as defined in clause 5.5.2.12\n", + "type": "array", + "items": { + "description": "This type represents modifications of an entry in an array of \"VnfcInfo\" objects. It shall comply with the provisions defined in table 5.5.3.24-1.\n", + "type": "object", + "required": [ + "id", + "vnfcConfigurableProperties" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "changedExtConnectivity": { + "description": "Information about changed external connectivity, if this notification represents the result of a lifecycle operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the \"operation\" has made any change of the external connectivity of the VNF instance. Shall be absent otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "modificationsTriggeredByVnfPkgChange": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\n", + "type": "object", + "properties": { + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfProductName": { + "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + } + } + }, + "error": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + }, + "_links": { + "description": "This type represents the links to resources that a notification can contain.\n", + "type": "object", + "required": [ + "vnfInstance", + "subscription" + ], + "properties": { + "vnfInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfLcmOpOcc": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json index 82bbcc8fc..c86be18a0 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json @@ -1,181 +1,219 @@ { - "type": "object", - "description": "This type represents a subscription related to notifications about VNF lifecycle changes.\n", - "required": [ - "id", - "callbackUri", - "_links" - ], - "properties": { - "id": { - "type": "string", - "description": "An identifier with the intention of being globally unique.\n" - }, - "filter": { - "type": "object", - "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", - "properties": { - "vnfInstanceSubscriptionFilter": { - "type": "object", - "description": "This type represents subscription filter criteria to match VNF instances.\n", - "properties": { - "vnfdIds": { - "type": "array", - "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", - "items": { - "type": "string", - "description": "An identifier with the intention of being globally unique.\n" - } - }, - "vnfProductsFromProviders": { - "type": "array", - "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", - "items": { - "type": "object", - "required": [ - "vnfProvider" - ], - "properties": { - "vnfProvider": { - "type": "string", - "description": "Name of the VNF provider to match.\n" - }, - "vnfProducts": { - "type": "array", - "description": "If present, match VNF instances that belong to VNF products with certain product names, from one particular provider.\n", - "items": { - "type": "object", - "required": [ - "vnfProductName" - ], - "properties": { - "vnfProductName": { - "type": "string", - "description": "Name of the VNF product to match.\n" - }, - "versions": { - "type": "array", - "description": "If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider.\n", - "items": { - "type": "object", - "required": [ - "vnfSoftwareVersion" - ], - "properties": { - "vnfSoftwareVersion": { - "type": "string", - "description": "A version.\n" - }, - "vnfdVersions": { - "type": "array", - "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", - "items": { - "type": "string", - "description": "A version.\n" - } - } - } - } - } - } - } - } - } - } - }, - "vnfInstanceIds": { - "type": "array", - "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", - "items": { - "type": "string", - "description": "An identifier with the intention of being globally unique.\n" - } - }, - "vnfInstanceNames": { - "type": "array", - "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", - "items": { - "type": "string" - } - } - } - }, - "notificationTypes": { - "type": "array", - "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", - "items": { - "type": "string", - "enum": [ - "VnfLcmOperationOccurrenceNotification", - "VnfIdentifierCreationNotification", - "VnfIdentifierDeletionNotification" - ] - } - }, - "operationTypes": { - "type": "array", - "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", - "items": { - "type": "string", - "enum": [ - "INSTANTIATE", - "SCALE", - "SCALE_TO_LEVEL", - "CHANGE_FLAVOUR", - "TERMINATE", - "HEAL", - "OPERATE", - "CHANGE_EXT_CONN", - "MODIFY_INFO" - ], - "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" - } - }, - "operationStates": { - "type": "array", - "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", - "items": { - "type": "string", - "enum": [ - "STARTING", - "PROCESSING", - "COMPLETED", - "FAILED_TEMP", - "FAILED", - "ROLLING_BACK", - "ROLLED_BACK" - ], - "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" - } - } - } - }, - "callbackUri": { - "type": "string", - "description": "String formatted according to IETF RFC 3986.\n" - }, - "_links": { - "type": "object", - "description": "Links to resources related to this resource.\n", - "required": [ - "self" - ], - "properties": { - "self": { - "type": "object", - "description": "This type represents a link to a resource.\n", - "required": [ - "href" - ], - "properties": { - "href": { - "type": "string", - "description": "URI of the referenced resource.\n", - "format": "url" - } - } - } - } - } - } + "description": "This type represents a subscription related to notifications about VNF lifecycle changes.\n", + "type": "object", + "required": [ + "id", + "callbackUri", + "verbosity", + "_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", + "anyOf": [{ + "oneOf": [{ + "required": [ + "vnfdId" + ] + }, + { + "required": [ + "vnfProductsFromProviders" + ] + } + ] + }, + { + "oneOf": [{ + "required": [ + "vnfInstanceIds" + ] + }, + { + "required": [ + "vnfInstanceNames" + ] + } + ] + } + ], + "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. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO", + "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", + "CHANGE_VNFPKG" + ] + } + }, + "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": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The 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" + }, + "verbosity": { + "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", + "type": "string", + "enum": [ + "FULL", + "SHORT" + ] + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } } \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json index 1da3ee69a..5b58184ce 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json @@ -1,145 +1,223 @@ { "type": "array", - "items": { - "description": "This type represents a subscription.", - "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" - } - } - } - } - } - } + "items": + { + "description": "This type represents a subscription related to notifications about VNF lifecycle changes.\n", + "type": "object", + "required": [ + "id", + "callbackUri", + "verbosity", + "_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", + "anyOf": [{ + "oneOf": [{ + "required": [ + "vnfdId" + ] + }, + { + "required": [ + "vnfProductsFromProviders" + ] + } + ] + }, + { + "oneOf": [{ + "required": [ + "vnfInstanceIds" + ] + }, + { + "required": [ + "vnfInstanceNames" + ] + } + ] + } + ], + "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. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO", + "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", + "CHANGE_VNFPKG" + ] + } + }, + "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": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The 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" + }, + "verbosity": { + "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", + "type": "string", + "enum": [ + "FULL", + "SHORT" + ] + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } } } \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 4fd68f853..f6e0ab087 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -1,960 +1,1299 @@ { - "description": "This type represents a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vnfdId", - "vnfProvider", - "vnfProductName", - "vnfSoftwareVersion", - "vnfdVersion", - "vnfPkgInfoId", - "instantiationState" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstanceName": { - "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfProductName": { - "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfPkgInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "instantiationState": { - "description": "The instantiation state of the VNF.\n", - "type": "string", - "enum": [ - "NOT_INSTANTIATED", - "INSTANTIATED" - ] - }, - "instantiatedVnfInfo": { - "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", - "type": "object", - "required": [ - "flavourId", - "vnfState", - "extCpInfo" - ], - "properties": { - "flavourId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfState": { - "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", - "type": "string", - "enum": [ - "STARTED", - "STOPPED" - ] - }, - "scaleStatus": { - "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n", - "type": "array", - "items": { - "required": [ - "aspectId", - "scaleLevel" - ], - "type": "object", - "properties": { - "aspectId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleLevel": { - "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", - "type": "integer" - } - } - } - }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance.\n", - "type": "array", - "minItems": 1, - "items": { - "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n", - "type": "object", - "required": [ - "id", - "cpdId", - "cpProtocolInfo" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\n", - "type": "object", - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - } - } - } - } - } - } - }, - "extLinkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "associatedVnfcCpId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "associatedVnfVirtualLinkId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "extVirtualLinkInfo": { - "description": "Information about the external VLs the VNF instance is connected to.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - } - } - }, - "extManagedVirtualLinkInfo": { - "description": "External virtual links the VNF instance is connected to.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "vnfLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - } - } - } - } - } - } - }, - "monitoringParameters": { - "description": "Active monitoring parameters.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "performanceMetric" - ], - "properties": { - "id": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", - "type": "string" - }, - "performanceMetric": { - "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", - "type": "string" - } - } - } - }, - "localizationLanguage": { - "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", - "type": "string" - }, - "vnfcResourceInfo": { - "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "cpdId" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\n", - "type": "object", - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - } - } - } - } - } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "virtualLinkResourceInfo": { - "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "virtualStorageResourceInfo": { - "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "_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 using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "indicators": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "instantiate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "terminate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scale": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scaleToLevel": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeFlavour": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "heal": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "operate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeExtConn": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - } - } - } - } + "description": "This type represents a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "instantiationState", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState", + "extCpInfo" + ], + "properties": { + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [{ + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "extManagedVirtualLinkInfo": { + "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + } + } + } + }, + "monitoringParameters": { + "description": "Active monitoring parameters.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource", + "vnfcCpInfo" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfVirtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfVirtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfcInfo": { + "description": "Information about the VNFC instances.\n", + "type": "array", + "items": { + "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n", + "type": "object", + "required": [ + "id", + "vduId", + "vnfcState" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcState": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "indicators": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "instantiate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "terminate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scale": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scaleToLevel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeFlavour": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "heal": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "operate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeExtConn": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } } \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index ca8a733e8..9cd0bf256 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -1,963 +1,1303 @@ { - "type:" : "array", - "items": { - "description": "This type represents a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vnfdId", - "vnfProvider", - "vnfProductName", - "vnfSoftwareVersion", - "vnfdVersion", - "vnfPkgInfoId", - "instantiationState" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstanceName": { - "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfProductName": { - "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfPkgInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "instantiationState": { - "description": "The instantiation state of the VNF.\n", - "type": "string", - "enum": [ - "NOT_INSTANTIATED", - "INSTANTIATED" - ] - }, - "instantiatedVnfInfo": { - "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", - "type": "object", - "required": [ - "flavourId", - "vnfState", - "extCpInfo" - ], - "properties": { - "flavourId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfState": { - "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", - "type": "string", - "enum": [ - "STARTED", - "STOPPED" - ] - }, - "scaleStatus": { - "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n", - "type": "array", - "items": { - "required": [ - "aspectId", - "scaleLevel" - ], - "type": "object", - "properties": { - "aspectId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleLevel": { - "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", - "type": "integer" - } - } - } - }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance.\n", - "type": "array", - "minItems": 1, - "items": { - "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n", - "type": "object", - "required": [ - "id", - "cpdId", - "cpProtocolInfo" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\n", - "type": "object", - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - } - } - } - } - } - } - }, - "extLinkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "associatedVnfcCpId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "associatedVnfVirtualLinkId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "extVirtualLinkInfo": { - "description": "Information about the external VLs the VNF instance is connected to.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - } - } - }, - "extManagedVirtualLinkInfo": { - "description": "External virtual links the VNF instance is connected to.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "vnfLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - } - } - } - } - } - } - }, - "monitoringParameters": { - "description": "Active monitoring parameters.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "performanceMetric" - ], - "properties": { - "id": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", - "type": "string" - }, - "performanceMetric": { - "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", - "type": "string" - } - } - } - }, - "localizationLanguage": { - "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", - "type": "string" - }, - "vnfcResourceInfo": { - "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "cpdId" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\n", - "type": "object", - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - } - } - } - } - } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "virtualLinkResourceInfo": { - "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "virtualStorageResourceInfo": { - "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "_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 using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "indicators": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "instantiate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "terminate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scale": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scaleToLevel": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeFlavour": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "heal": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "operate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeExtConn": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - } - } - } + "type": "array", + "items": + { + "description": "This type represents a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "instantiationState", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState", + "extCpInfo" + ], + "properties": { + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [{ + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "extManagedVirtualLinkInfo": { + "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + } + } + } + }, + "monitoringParameters": { + "description": "Active monitoring parameters.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource", + "vnfcCpInfo" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfVirtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfVirtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfcInfo": { + "description": "Information about the VNFC instances.\n", + "type": "array", + "items": { + "description": "This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the provisions defined in table 5.5.3.23-1.\n", + "type": "object", + "required": [ + "id", + "vduId", + "vnfcState" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcState": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "indicators": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "instantiate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "terminate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scale": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scaleToLevel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeFlavour": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "heal": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "operate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeExtConn": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } } -} - } \ No newline at end of file +} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json index 5558c94a4..49192438c 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json @@ -1,247 +1,557 @@ { - "description": "This type represents a VNF lifecycle management operation occurrence.\n", - "type": "object", - "required": [ - "id", - "operationState", - "stateEnteredTime", - "startTime", - "vnfInstanceId", - "operation", - "isAutomaticInvocation", - "isCancelPending" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "operationState": { - "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The 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" - ] - }, - "stateEnteredTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "grantId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "operation": { - "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" - ] - }, - "isAutomaticInvocation": { - "description": "The Boolean is a data type having two values (true and false).\n", - "type": "boolean" - }, - "operationParams": { - "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications\n", - "type": "object" - }, - "isCancelPending": { - "description": "The Boolean is a data type having two values (true and false).\n", - "type": "boolean" - }, - "cancelMode": { - "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n", - "type": "string", - "enum": [ - "GRACEFUL", - "FORCEFUL" - ] - }, - "error": { - "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", - "type": "object", - "required": [ - "status", - "detail" - ], - "properties": { - "type": { - "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", - "type": "string", - "format": "URI" - }, - "title": { - "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", - "type": "string" - }, - "status": { - "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", - "type": "integer" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem.\n", - "type": "string" - }, - "instance": { - "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", - "type": "string", - "format": "URI" - } + "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists.\n", + "type": "object", + "oneOf": [ + { + "required": [ + "changedInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ], + "required": [ + "id", + "operationState", + "stateEnteredTime", + "startTime", + "vnfInstanceId", + "operation", + "isAutomaticInvocation", + "isCancelPending" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operationState": { + "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The 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" + ] + }, + "stateEnteredTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "grantId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operation": { + "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. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO", + "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", + "CHANGE_VNFPKG" + ] + }, + "isAutomaticInvocation": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "operationParams": { + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n", + "type": "object" + }, + "isCancelPending": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "cancelMode": { + "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n", + "type": "string", + "enum": [ + "GRACEFUL", + "FORCEFUL" + ] + }, + "error": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" } - }, - "resourceChanges": { - "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n", - "type": "object", - "properties": { - "affectedVnfcs": { - "description": "Information about VNFC instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n", - "type": "object", - "required": [ - "id", - "vduId", - "changeType", - "computeResource" - ], - "properties": { - "id": { + } + }, + "resourceChanges": { + "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n", + "type": "object", + "properties": { + "affectedVnfcs": { + "description": "Information about VNFC instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n", + "type": "object", + "required": [ + "id", + "vduId", + "changeType", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "affectedVnfcCpIds": { + "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", + "type": "array", + "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + } + }, + "addedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY" - ] - }, - "computeResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "affectedVnfcCpIds": { - "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + } + }, + "removedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + }, + "affectedVirtualLinks": { + "description": "Information about VL instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter. For a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed for signalling the different types of changes, i.e., one per virtual link and change type. For instance, in the case of signaling affected VL instances involving the addition of a particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\", and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the \"changeType\" equal to \"LINK_PORT_ADDED\".\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "changeType", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY", + "LINK_PORT_ADDED", + "LINK_PORT_REMOVED" + ] + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", "type": "string" } - }, - "addedStorageResourceIds": { - "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + } + }, + "vnfLinkPortIds": { + "description": "Identifiers of the link ports of the affected VL (reference to the vnfLinkPortInfo) related to the change. Each identifier references a \"VnfLinkPortInfo\" structure. Shall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related “VnfLinkPortInfo” structures are present (case \"added\") or have been present (case \"removed\") in the “VnfVirtualLinkResourceInfo” or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResourceInfo\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "affectedExtLinkPorts": { + "description": "Information about external VNF link ports that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\n", + "type": "object", + "required": [ + "id", + "changeType", + "extCpInstanceId", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED" + ] + }, + "extCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", "type": "string" } - }, - "removedStorageResourceIds": { - "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + } + } + } + } + }, + "affectedVirtualStorages": { + "description": "Information about virtualised storage instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "changeType", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", "type": "string" } } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "changedInfo": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n", + "type": "object", + "properties": { + "vnfInstanceName": { + "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\".\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\".\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n", + "type": "string" + }, + "vnfProductName": { + "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfcInfoModifications": { + "description": "If present, this attribute signals modifications of certain entries in the \"vnfcInfo\" attribute array in the \"instantiatedVnfInfo\" attribute of \"VnfInstance\", as defined in clause 5.5.2.12\n", + "type": "array", + "items": { + "description": "This type represents modifications of an entry in an array of \"VnfcInfo\" objects. It shall comply with the provisions defined in table 5.5.3.24-1.\n", + "type": "object", + "required": [ + "id", + "vnfcConfigurableProperties" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "changedExtConnectivity": { + "description": "Information about changed external connectivity, if applicable. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" } } }, - "affectedVirtualLinks": { - "description": "Information about VL instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "extLinkPorts": { + "description": "Link ports of this VL.\n", "type": "array", "items": { - "description": "This type provides information about added, deleted, modified and temporary VLs.\n", + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", "type": "object", "required": [ "id", - "vnfVirtualLinkDescId", - "changeType", - "networkResource" + "resourceHandle" ], "properties": { "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY", - "LINK_PORT_ADDED", - "LINK_PORT_REMOVED" - ] - }, - "networkResource": { + "resourceHandle": { "required": [ - "vimConnectionId", "resourceId" ], "type": "object", @@ -265,316 +575,339 @@ } } }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" } } } }, - "affectedVirtualStorages": { - "description": "Information about virtualised storage instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", "type": "array", "items": { - "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n", + "description": "This type represents configuration information for external CPs created from a CPD.\n", "type": "object", "required": [ - "id", - "virtualStorageDescId", - "changeType", - "storageResource" + "cpdId" ], "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { + "cpdId": { "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY" - ] - }, - "storageResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - } - } - }, - "changedInfo": { - "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n", - "type": "object", - "properties": { - "vnfInstanceName": { - "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\".\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\".\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId†attribute.\n", - "type": "string" - }, - "vnfProductName": { - "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId†attribute.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - } - } - }, - "changedExtConnectivity": { - "description": "Information about changed external connectivity, if applicable. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "resourceProviderId": { + "linkPortId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } } } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" } } } } } } - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": [ - "self", - "vnfInstance" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + } + }, + "modificationsTriggeredByVnfPkgChange": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\n", + "type": "object", + "properties": { + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfProductName": { + "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + } + } + }, + "vnfSnapshotInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "vnfInstance" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "vnfInstance": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + } + }, + "vnfInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "grant": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + } + }, + "grant": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "cancel": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + } + }, + "cancel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "retry": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + } + }, + "retry": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "rollback": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + } + }, + "rollback": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "fail": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + } + }, + "fail": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } } } } } - } \ No newline at end of file + } +} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json index d4e093968..98c6928cf 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json @@ -1,583 +1,913 @@ { "type": "array", - "items": { - "description": "This type represents a VNF lifecycle management operation occurrence.\n", - "type": "object", - "required": [ - "id", - "operationState", - "stateEnteredTime", - "startTime", - "vnfInstanceId", - "operation", - "isAutomaticInvocation", - "isCancelPending" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "operationState": { - "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The 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" - ] - }, - "stateEnteredTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "grantId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "operation": { - "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" - ] - }, - "isAutomaticInvocation": { - "description": "The Boolean is a data type having two values (true and false).\n", - "type": "boolean" - }, - "operationParams": { - "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications\n", - "type": "object" - }, - "isCancelPending": { - "description": "The Boolean is a data type having two values (true and false).\n", - "type": "boolean" - }, - "cancelMode": { - "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n", - "type": "string", - "enum": [ - "GRACEFUL", - "FORCEFUL" - ] - }, - "error": { - "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", - "type": "object", - "required": [ - "status", - "detail" - ], - "properties": { - "type": { - "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", - "type": "string", - "format": "URI" - }, - "title": { - "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", - "type": "string" - }, - "status": { - "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", - "type": "integer" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem.\n", - "type": "string" - }, - "instance": { - "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", - "type": "string", - "format": "URI" - } - } - }, - "resourceChanges": { - "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n", - "type": "object", - "properties": { - "affectedVnfcs": { - "description": "Information about VNFC instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n", - "type": "object", - "required": [ - "id", - "vduId", - "changeType", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY" - ] - }, - "computeResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "affectedVnfcCpIds": { - "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "addedStorageResourceIds": { - "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "removedStorageResourceIds": { - "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - }, - "affectedVirtualLinks": { - "description": "Information about VL instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VLs.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "changeType", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY", - "LINK_PORT_ADDED", - "LINK_PORT_REMOVED" - ] - }, - "networkResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "affectedVirtualStorages": { - "description": "Information about virtualised storage instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "changeType", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY" - ] - }, - "storageResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - } - } - }, - "changedInfo": { - "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n", - "type": "object", - "properties": { - "vnfInstanceName": { - "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\".\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\".\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId†attribute.\n", - "type": "string" - }, - "vnfProductName": { - "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId†attribute.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - } - } - }, - "changedExtConnectivity": { - "description": "Information about changed external connectivity, if applicable. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - } - } - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": [ - "self", - "vnfInstance" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "vnfInstance": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "grant": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "cancel": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "retry": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "rollback": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "fail": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - } - } - } - } - } + "items": + { + "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists.\n", + "type": "object", + "oneOf": [{ + "required": [ + "changedInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ], + "required": [ + "id", + "operationState", + "stateEnteredTime", + "startTime", + "vnfInstanceId", + "operation", + "isAutomaticInvocation", + "isCancelPending" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operationState": { + "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The 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" + ] + }, + "stateEnteredTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "grantId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operation": { + "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. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO", + "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", + "CHANGE_VNFPKG" + ] + }, + "isAutomaticInvocation": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "operationParams": { + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n", + "type": "object" + }, + "isCancelPending": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "cancelMode": { + "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n", + "type": "string", + "enum": [ + "GRACEFUL", + "FORCEFUL" + ] + }, + "error": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + }, + "resourceChanges": { + "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n", + "type": "object", + "properties": { + "affectedVnfcs": { + "description": "Information about VNFC instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n", + "type": "object", + "required": [ + "id", + "vduId", + "changeType", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "affectedVnfcCpIds": { + "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "addedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "removedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + }, + "affectedVirtualLinks": { + "description": "Information about VL instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter. For a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed for signalling the different types of changes, i.e., one per virtual link and change type. For instance, in the case of signaling affected VL instances involving the addition of a particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\", and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the \"changeType\" equal to \"LINK_PORT_ADDED\".\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "changeType", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY", + "LINK_PORT_ADDED", + "LINK_PORT_REMOVED" + ] + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "vnfLinkPortIds": { + "description": "Identifiers of the link ports of the affected VL (reference to the vnfLinkPortInfo) related to the change. Each identifier references a \"VnfLinkPortInfo\" structure. Shall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related “VnfLinkPortInfo” structures are present (case \"added\") or have been present (case \"removed\") in the “VnfVirtualLinkResourceInfo” or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResourceInfo\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "affectedExtLinkPorts": { + "description": "Information about external VNF link ports that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\n", + "type": "object", + "required": [ + "id", + "changeType", + "extCpInstanceId", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED" + ] + }, + "extCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + } + } + } + }, + "affectedVirtualStorages": { + "description": "Information about virtualised storage instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "changeType", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "changedInfo": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n", + "type": "object", + "properties": { + "vnfInstanceName": { + "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\".\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\".\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n", + "type": "string" + }, + "vnfProductName": { + "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfcInfoModifications": { + "description": "If present, this attribute signals modifications of certain entries in the \"vnfcInfo\" attribute array in the \"instantiatedVnfInfo\" attribute of \"VnfInstance\", as defined in clause 5.5.2.12\n", + "type": "array", + "items": { + "description": "This type represents modifications of an entry in an array of \"VnfcInfo\" objects. It shall comply with the provisions defined in table 5.5.3.24-1.\n", + "type": "object", + "required": [ + "id", + "vnfcConfigurableProperties" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "changedExtConnectivity": { + "description": "Information about changed external connectivity, if applicable. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "modificationsTriggeredByVnfPkgChange": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\n", + "type": "object", + "properties": { + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfProductName": { + "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + } + } + }, + "vnfSnapshotInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "vnfInstance" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "grant": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "cancel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "retry": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "rollback": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "fail": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } } \ No newline at end of file -- GitLab From 293a21279cf54b698885c73c7e96f2a802e67481 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Tue, 2 Mar 2021 18:23:28 +0500 Subject: [PATCH 296/580] minor bugs resolved --- SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot | 2 +- SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot | 2 +- SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot index c76466be2..15645a48a 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -18,7 +18,7 @@ POST Individual VNF Snapshot - Method not implemented GET Information about an individual VNF Snapshot - SUCCESSFUL [Documentation] Test ID: 6.3.5.26.2 ... Test title: GET Information about an individual VNF Snapshot - SUCCESSFUL - ... Test objective: The objective is to create a new VNF Snapshot resource + ... Test objective: The objective is to GET information about an individual VNF Snapshot ... Pre-conditions: none ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE diff --git a/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot index bd87090b0..baa1fce58 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -174,7 +174,7 @@ PATCH VNF Snapshots - Method not implemented DELETE VNF Snapshots - Method not implemented [Documentation] Test ID: 6.3.5.25.11 ... Test title: DELETE VNF Snapshots - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented + ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none ... Reference: Clause 5.4.23.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index f1867db71..d093d31d8 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -299,7 +299,7 @@ PATCH VNF Snapshots DELETE VNF Snapshots Log Trying to perform a DELETE. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snaphots + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -- GitLab From ad1b2ff23468f96749693e36db1ab5058b2114b0 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Thu, 4 Mar 2021 12:22:15 +0500 Subject: [PATCH 297/580] corrected test ID and updated template variable for CreateVnfSnapshotInfoRequest.json --- SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot | 2 +- .../VnfLcmOperationKeywords.robot | 2 +- SOL002/VNFLifecycleManagement-API/environment/variables.txt | 1 + .../jsons/CreateVnfSnapshotInfoRequest.json | 6 +++--- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot index baa1fce58..59df66d7e 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -172,7 +172,7 @@ PATCH VNF Snapshots - Method not implemented Check HTTP Response Status Code Is 405 DELETE VNF Snapshots - Method not implemented - [Documentation] Test ID: 6.3.5.25.11 + [Documentation] Test ID: 6.3.5.25.14 ... Test title: DELETE VNF Snapshots - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index d093d31d8..4ff17df6d 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -198,7 +198,7 @@ POST Create a new VNF Snapshot Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/CreateVnfSnapshotInfoRequest.json - ${body}= Format String ${template} vnfdId=${Descriptor_ID} + ${body}= Format String ${template} vnfSnapshotPkgId=${vnfSnapshotPkgId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index e16cba00d..fb0bb2907 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -50,6 +50,7 @@ ${PAGING_SUPPORTED} 0 ${vnfSnapshotInfoId} ${invalidVnfSnapshotInfoId} ${vnfSnapshotInfoId_InUse} snapshotId-of-a-resource-AlreadyInUse +${vnfSnapshotPkgId} ${callback_uri} http://localhost ${callback_port} 9091 diff --git a/SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotInfoRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotInfoRequest.json index 55fd9aa67..c16bca9c0 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotInfoRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotInfoRequest.json @@ -1,3 +1,3 @@ -{ - "vnfSnapshotPkgId": "" -} \ No newline at end of file +{{ + "vnfSnapshotPkgId": "{vnfSnapshotPkgId}" +}} \ No newline at end of file -- GitLab From 52911bf04ce72940364980fabbeff65bb934f07c Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Thu, 4 Mar 2021 12:47:46 +0500 Subject: [PATCH 298/580] updated importing variables for descriptors --- .../VnfLcmOperationKeywords.robot | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 4ff17df6d..5568a8b60 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -11,8 +11,8 @@ Library Collections Library JSONSchemaLibrary schemas/ Library String Library Process -Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml -Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml +#Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +#Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** Create Sessions @@ -1455,6 +1455,7 @@ 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 + Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @{VDU_labels}= Create List @{VNF_labels}= Create List @{VirtualLink_labels}= Create List @@ -1482,6 +1483,7 @@ Fetch Information from SOL001 descriptor file Get VNF Attributes from SOL001 [Arguments] ${VNF_label} + Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml ${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} @@ -1497,6 +1499,7 @@ Get VNF Attributes from SOL001 Set Global Variable ${Flavour_ID} ${flavour_id} Fetch Information from SOL006 descriptor file + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${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']} @@ -1524,6 +1527,7 @@ Fetch Information from SOL006 descriptor file Get VDU IDs [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @{VDU_labels}= Create List ${Storage_labels}= Create List FOR ${i} IN RANGE ${count} @@ -1536,6 +1540,7 @@ Get VDU IDs Get Internal CPs for each VDU [Arguments] ${vdu} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${count}= Get Length ${nfv.vnfd[0].vdu[${vdu}]['int-cpd']} ${internal_CPs}= Create List FOR ${i} IN RANGE ${count} @@ -1545,6 +1550,7 @@ Get Internal CPs for each VDU Get External CP IDs [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @{external_CPs}= Create List FOR ${i} IN RANGE ${count} Append To List ${external_CPs} ${nfv.vnfd[0]['ext-cpd'][${i}]['id']} @@ -1553,6 +1559,7 @@ Get External CP IDs Get Virtual Link IDs [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${VirtualLink_labels}= Create List FOR ${i} IN RANGE ${count} Append To List ${VirtualLink_labels} ${nfv.vnfd[0]['int-virtual-link-desc'][${i}]['id']} @@ -1561,6 +1568,7 @@ Get Virtual Link IDs Get Instantiation Levels [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @{Instantiation_Levels}= Create List FOR ${i} IN RANGE ${count} Append To List ${Instantiation_Levels} ${nfv.vnfd[0].df['instantiation-level'][${i}]['id']} -- GitLab From 64074d5d78ce581a5a02fbc4d412e83ba8eb075b Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 5 Mar 2021 14:39:30 +0500 Subject: [PATCH 299/580] minor fix in documentation --- .../IndividualVNFSnapshot.robot | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot index 15645a48a..d97136967 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -53,15 +53,15 @@ PUT Individual VNF Snapshot - Method not implemented PUT individual VNF Snapshot Check HTTP Response Status Code Is 405 -PATCH Individual VNF Snapshot - Method Not Allowed +PATCH Individual VNF Snapshot - Method not implemented [Documentation] Test ID: 6.3.5.26.5 - ... Test title: PATCH Individual VNF Snapshot - ... Test objective: This method modifies an individual VNF Snapshot resource + ... Test title: PATCH Individual VNF Snapshot - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none - ... Post-Conditions: VNF Snapshot modified + ... Post-Conditions: none PATCH individual VNF Snapshot Check HTTP Response Status Code Is 405 -- GitLab From b374abb3f43e122697cfa85840a9de67f9ce72fc Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Mon, 22 Feb 2021 23:41:55 +0500 Subject: [PATCH 300/580] implemented deltas between 2.7.1 and 3.3.1 --- .../ApiVersion.robot | 20 +- .../IndividualPmJob.robot | 45 +++- .../IndividualReport.robot | 12 +- .../IndividualThreshold.robot | 54 +++-- .../NotificationConsumer.robot | 4 +- .../VNFPerformanceManagement-API/PMJobs.robot | 61 ++++-- .../Thresholds.robot | 51 +++-- .../environment/variables.txt | 3 + .../jsons/CreatePmJobRequestInvalidURI.json | 10 + .../jsons/CreateThresholdRequest.json | 1 + .../jsons/PMJobModification.json | 2 +- .../schemas/Threshold.schema.json | 197 ++++++++++-------- .../schemas/Thresholds.schema.json | 121 ++++++++++- 13 files changed, 423 insertions(+), 158 deletions(-) create mode 100644 SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequestInvalidURI.json diff --git a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot index 7a7e70086..c85bbab47 100644 --- a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot @@ -11,7 +11,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index ca839fbe2..32440446f 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -5,6 +5,7 @@ Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem Library DependencyLibrary +Library String *** Test Cases *** GET individual VNF Performance Job @@ -12,7 +13,7 @@ GET individual VNF Performance Job ... Test title: Get individual VNF Performance Job ... Test objective: The objective is to test the retrieval of an individual VNF performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +27,7 @@ GET individual VNF Performance Job with invalid resource identifier ... Test title: Get individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +40,7 @@ DELETE Individual VNF Performance Job ... Test title: Delete Individual VNF Performance Job ... Test objective: The objective is to test the deletion of an individual VNF performance monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is no more available in the VNFM @@ -52,7 +53,7 @@ DELETE Individual VNF Performance Job with invalid resource identifier ... Test title: Delete individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +66,7 @@ POST Individual VNF Performance Job - Method not implemented ... Test title: POST Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Monitoring Job ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +78,7 @@ PUT Individual VNF Performance Job - Method not implemented ... Test title: PUT Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance Monitoring Job ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +90,7 @@ PATCH Individual VNF Performance Job ... Test title: PATCH Individual VNF Performance Job ... Test objective: The objective is to test that PATCH method allows to modify an exsisting individual PM job resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -102,7 +103,7 @@ PATCH Individual VNF Performance Job - Precondition failed ... Test title: PATCH Individual VNF Performance Job - Precondition failed ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation @@ -111,6 +112,19 @@ PATCH Individual VNF Performance Job - Precondition failed Check HTTP Response Body Json Schema Is ProblemDetails Check Postcondition VNF Performance Job is Unmodified (Implicit) +PATCH Individual VNF Performance Job - UNPROCESSIBLE ENTITY + [Documentation] Test ID: 6.3.3.2.9 + ... Test title: PATCH Individual VNF Performance Job - UNPROCESSIBLE ENTITY + ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual PM job resource when the callback URI provided in the Request body is unreachable by the VNFM. + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM cannot reach the Notification endpoint. + ... Post-Conditions: none + Send Patch request for individual VNF Performance Job with Unreachable Callback URI + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** GET individual VNF Performance Job Log Trying to get a Pm Job present in the NFVO Catalogue @@ -165,9 +179,20 @@ Send Put request for individual VNF Performance Job Send Patch request for individual VNF Performance Job Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/PMJobModification.json + ${body}= Format String ${template} callback_uri=${new_callback_uri}:${callback_port} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch request for individual VNF Performance Job with Unreachable Callback URI + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${body}= Get File jsons/PMJobModification.json + ${template}= Get File jsons/PMJobModification.json + ${body}= Format String ${template} callback_uri=${unreachable_callback_uri} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot index 38845b3bd..c441161df 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot @@ -10,7 +10,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual VNF performance report associated to a monitoring job fails when using an invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ POST Individual Performance Report - Method not implemented ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PUT Individual Performance Report - Method not implemented ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ PATCH Individual Performance Report - Method not implemented ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ DELETE Individual Performance Report - Method not implemented ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index cab48da3d..043a73c86 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -4,6 +4,7 @@ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem +Library String *** Test Cases *** GET Individual Threshold @@ -11,7 +12,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +26,7 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance threshold fails when using an invalid resource identifier ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +39,7 @@ DELETE Individual Threshold ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not available anymore in the VNFM @@ -51,7 +52,7 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +65,7 @@ POST Individual Threshold - Method not implemented ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Threshold ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not created on the VNFM @@ -76,7 +77,7 @@ PUT Individual Threshold - Method not implemented ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance threshold ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +89,7 @@ PATCH Individual Threshold ... Test title: PATCH Individual Threshold ... Test objective: The objective is to test that PATCH method allows to modify an Individual threshold resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not modified by the operation @@ -101,7 +102,7 @@ PATCH Individual Threshold - Precondition failed ... Test title: PATCH Individual Threshold - Preconition failed ... Test objective: The objective is to attempt to modify an individual threshold resource, where the precondition was not met. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation @@ -109,6 +110,19 @@ PATCH Individual Threshold - Precondition failed Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails Check Postcondition VNF Performance Threshold is Unmodified (Implicit) + +PATCH Individual Threshold - Unprocessible Entity + [Documentation] Test ID: 6.3.3.5.9 + ... Test title: PATCH Individual Threshold - Unprocessible Entity + ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual PM job resource when the callback URI provided in the Request body is unreachable by the VNFM. + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM cannot reach the Notification endpoint. + ... Post-Conditions: The VNF Performance Threshold is not modified by the operation + Send Patch request for individual VNF Performance Threshold with Unreachable Callback URI + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** GET Individual VNF Performance Threshold @@ -142,14 +156,14 @@ Send Delete request for individual VNF Performance Threshold with invalid resour Set Suite Variable ${response} ${output} Send Post request for individual VNF Performance Threshold - Log Trying to create new threshold + Log Trying to perform a POST. This method should not be supported. Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Send Put request for individual VNF Performance Threshold - Log Trying to PUT threshold + Log Trying to perform a PUT. This method should not be supported. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} @@ -158,15 +172,27 @@ Send Put request for individual VNF Performance Threshold PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} - + Send Patch request for individual VNF Performance Threshold - Log Trying to PUT threshold - Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} + ${template}= Get File jsons/ThresholdModification.json + ${body}= Format String ${template} callback_uri=${new_callback_uri}:${callback_port} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch request for individual VNF Performance Threshold with Unreachable Callback URI + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/ThresholdModification.json + ${body}= Format String ${template} callback_uri=${unreachable_callback_uri} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot index 2d557051e..ef27080ce 100644 --- a/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot +++ b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot @@ -13,7 +13,7 @@ VNF Performance Information Availability Notification ... Test title: VNF Performance Information Availability Notification ... Test objective: The objective is to test that VNF Performance Information Availability Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Threshold Crossed Notification ... Test title: VNF Threshold Crossed Notification ... Test objective: The objective is to test that VNF Threshold Crossed Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF performance job is created, and a subscription for Threshold Crossed Notification is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 8da793e3a..46b92cb66 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -12,7 +12,7 @@ GET all VNF Performance Monitoring Jobs ... Test title: GET all VNF Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET VNF Performance Monitoring Jobs with attribute-based filter ... Test title: GET all VNF Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs all_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued all_fileds selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_default selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -81,7 +81,7 @@ GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -95,7 +95,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -108,7 +108,7 @@ GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test title: GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -116,12 +116,12 @@ GET VNF Performance Monitoring Jobs with invalid resource endpoint Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -Create new VNF Performance Monitoring Job +POST Create new VNF Performance Monitoring Job - SUCCESSFUL [Documentation] Test ID: 6.3.3.1.9 - ... Test title: Create a new VNF Performance Monitoring Job - ... Test objective: The objective is to test the creation of a new VNF performance monitoring job and perform the JSON schema validation of the returned job data structure + ... Test title: POST Create a new VNF Performance Monitoring Job - SUCCESSFUL + ... Test objective: The objective is to test that the POST method creates a new VNF performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is successfully created on the VNFM @@ -135,7 +135,7 @@ PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test title: PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -147,7 +147,7 @@ PATCH all VNF Performance Monitoring Jobs - Method not implemented ... Test title: PATCH all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -159,7 +159,7 @@ DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test title: DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -171,7 +171,7 @@ GET VNF Performance Monitoring Jobs to get Paged Response ... Test title: GET VNF Performance Monitoring Jobs to get Paged Response ... Test objective: The objective is to test the retrieval of VNF performance monitoring jobs to get Paged response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -184,7 +184,7 @@ GET VNF Performance Monitoring Jobs for Bad Request Response too big ... Test title: GET VNF Performance Monitoring Jobs for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about VNF Performance Monitoring when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -197,13 +197,27 @@ GET all VNF Performance Monitoring Jobs with exclude_default and fields attribut ... Test title: GET all VNF Performance Monitoring Jobs with exclude_default and fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs with exclude_default and fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_default selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none GET VNF Performance Monitoring Jobs with exclude_default and fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PmJobs + +POST Create new VNF Performance Monitoring Job - UNPROCESSIBLE ENTITY + [Documentation] Test ID: 6.3.3.1.16 + ... Test title: POST Create a new VNF Performance Monitoring Job - UNPROCESSIBLE ENTITY + ... Test objective: The objective is to test that the POST method cannot create a new VNF performance monitoring job when the callback URI provided in the Request body is unreachable by the VNFM. + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. + ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM cannot reach the Notification endpoint. + ... Post-Conditions: none + Send Post Request Create new VNF Performance Monitoring Job with Unreachable Callback URI + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** GET all VNF Performance Monitoring Jobs Log Trying to get all PM Jobs present in the VNFM @@ -290,6 +304,17 @@ Send Post Request Create new VNF Performance Monitoring Job ${output}= Output response Set Suite Variable ${response} ${output} +Send Post Request Create new VNF Performance Monitoring Job with Unreachable Callback URI + Log Creating a new PM Job + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CreatePmJobRequest.json + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${unreachable_callback_uri} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + Send PUT Request for all VNF Performance Monitoring Jobs Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index d02e7c625..63cc80724 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -12,7 +12,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds and perform a JSON schema validation of the collected thresholds data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Performance Thresholds with invalid attribute-based filter ... Test title: GET Performance Thresholds with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Performance Thresholds with invalid resource endpoint ... Test title: GET Performance Thresholds with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,12 +60,12 @@ GET Performance Thresholds with invalid resource endpoint Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -Create new Performance Threshold +POST Create new Performance Threshold [Documentation] Test ID: 6.3.3.4.5 - ... Test title: Create new Performance Threshold - ... Test objective: The objective is to test the creation of a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure + ... Test title: POST Create new Performance Threshold + ... Test objective: The objective is to test that the POST method creates a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is successfully created on the VNFM @@ -80,7 +80,7 @@ PUT Performance Thresholds - Method not implemented ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ PATCH Performance Thresholds - Method not implemented ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ DELETE Performance Thresholds - Method not implemented ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Thresholds ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ GET Performance Thresholds with Paged Response ... Test title: GET Performance Thresholds with Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds with Paged response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ GET Performance Thresholds for Bad Request Response too big ... Test title: GET Performance Thresholds for Bad Request Response too big ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -137,6 +137,20 @@ GET Performance Thresholds for Bad Request Response too big Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails +POST Create new Performance Threshold - UNPROCESSIBLE ENTITY + [Documentation] Test ID: 6.3.3.4.11 + ... Test title: POST Create new Performance Threshold + ... Test objective: The objective is to test that the POST method does not create a new VNF performance threshold when the callback URI provided in the Request body is unreachable by the VNFM. + ... Pre-conditions: A VNF instance is instantiated. + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM cannot reach the Notification endpoint. + ... Post-Conditions: none + Send Post Request Create new Performance Threshold with Unreachable Callback URI + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + + *** Keywords *** GET all Performance Thresholds Log Trying to get all thresholds present in the VNFM @@ -181,6 +195,17 @@ Send Post Request Create new Performance Threshold ${output}= Output response Set Suite Variable ${response} ${output} +Send Post Request Create new Performance Threshold with Unreachable Callback URI + Log Creating a new THreshold + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + 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=${unreachable_callback_uri}:${callback_port} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + Send PUT Request for all Performance Thresholds Log PUT THresholds Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} diff --git a/SOL002/VNFPerformanceManagement-API/environment/variables.txt b/SOL002/VNFPerformanceManagement-API/environment/variables.txt index f06af76c5..ace498e55 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/variables.txt @@ -9,6 +9,7 @@ ${apiName} vnfpm ${CONTENT_TYPE_JSON} application/json +${CONTENT_TYPE_PATCH} application/merge-patch+json ${ACCEPT_JSON} application/json ${NEG_AUTHORIZATION} Bearer negativetoken ${FIELD_USAGE} 1 @@ -18,6 +19,8 @@ ${AUTH_USAGE} 1 ${VNFM_DUPLICATION} 1 ${VNFM_CHECKS_NOTIF_ENDPOINT} 1 ${callback_uri} http://localhost +${unreachable_callback_uri} http://not-reachable-uri +${new_callback_uri} http://newcallbackuri-for-PMJobModifications ${callback_port} 9091 ${callback_endpoint} /endpoint ${callback_endpoint_error} /endpoint_404 diff --git a/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequestInvalidURI.json b/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequestInvalidURI.json new file mode 100644 index 000000000..5986c37f1 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequestInvalidURI.json @@ -0,0 +1,10 @@ +{{ + "objectInstanceIds" : ["{objectInstanceIds}"], + "criteria" : {{ + "performanceMetric": [], + "performanceMetricGroup": [], + "collectionPeriod": 10, + "reportingPeriod": 30 + }}, + "callbackUri": "{callbackUri}" +}} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json b/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json index 9f7640468..e7e5c863a 100644 --- a/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json +++ b/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json @@ -1,4 +1,5 @@ {{ + "objectType": "", "objectInstanceIds" : "{objectInstanceIds}", "criteria" : {{ "performanceMetric": "cpu_util", diff --git a/SOL002/VNFPerformanceManagement-API/jsons/PMJobModification.json b/SOL002/VNFPerformanceManagement-API/jsons/PMJobModification.json index 3aeb5f91c..5c534b277 100644 --- a/SOL002/VNFPerformanceManagement-API/jsons/PMJobModification.json +++ b/SOL002/VNFPerformanceManagement-API/jsons/PMJobModification.json @@ -1,3 +1,3 @@ { - "callbackUri":"127.0.0.1" + "callbackUri":"{callback_uri}" } \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/schemas/Threshold.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/Threshold.schema.json index d31387274..938d19919 100644 --- a/SOL002/VNFPerformanceManagement-API/schemas/Threshold.schema.json +++ b/SOL002/VNFPerformanceManagement-API/schemas/Threshold.schema.json @@ -1,85 +1,116 @@ { - "description": "This type represents a threshold.\n", - "type": "object", - "required": [ - "id", - "objectInstanceId", - "criteria", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "objectInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "criteria": { - "description": "This type represents criteria that define a threshold.\n", - "type": "object", - "required": [ - "performanceMetric", - "thresholdType" - ], - "properties": { - "performanceMetric": { - "description": "Defines the performance metric associated with the threshold, as specified in ETSI GS NFV-IFA 027).\n", - "type": "string" - }, - "thresholdType": { - "description": "Type of threshold. This attribute determines which other attributes are present in the data structure. Permitted values: * SIMPLE: Single-valued static threshold In the present document, simple thresholds are defined. The definition of additional threshold types is left for future specification.\n", - "type": "string", - "enum": [ - "SIMPLE" - ] - }, - "simpleThresholdDetails": { - "description": "Details of a simple threshold. Shall be present if thresholdType=\"SIMPLE\".\n", - "type": "object", - "required": [ - "thresholdValue", - "hysteresis" - ], - "properties": { - "thresholdValue": { - "description": "The threshold value. Shall be represented as a floating point number.\n", - "type": "integer" - }, - "hysteresis": { - "description": "The hysteresis of the threshold. Shall be represented as a non-negative floating point number. A notification with crossing direction \"UP\" will be generated if the measured value reaches or exceeds \"thresholdValue\" + \"hysteresis\". A notification with crossing direction \"DOWN\" will be generated if the measured value reaches or undercuts \"thresholdValue\" - \"hysteresis\". The hysteresis is defined to prevent storms of threshold crossing notifications. When processing a request to create a threshold, implementations should enforce a suitable minimum value for this attribute (e.g. override the value or reject the request).\n", - "type": "integer" - } - } - } - } - }, - "_links": { - "description": "Links for 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" - } - } - }, - "object": { - "description": "Link to a resource representing the VNF instance for which performance information is collected. Shall be present if the VNF instance information is accessible as a resource.\n" - } - } - } - } + "description": "This type represents a threshold.\n", + "type": "object", + "required": [ + "id", + "objectType", + "objectInstanceId", + "criteria", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectType": { + "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + }, + "objectInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance associated with the threshold. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measurement type. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "criteria": { + "description": "This type represents criteria that define a threshold.\n", + "type": "object", + "required": [ + "performanceMetric", + "thresholdType" + ], + "properties": { + "performanceMetric": { + "description": "Defines the performance metric associated with the threshold. Valid values are specified as \"Measurement Name\" values in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + }, + "thresholdType": { + "description": "Type of threshold. This attribute determines which other attributes are present in the data structure. Permitted values: * SIMPLE: Single-valued static threshold In the present document, simple thresholds are defined. The definition of additional threshold types is left for future specification.\n", + "type": "string", + "enum": [ + "SIMPLE" + ] + }, + "simpleThresholdDetails": { + "description": "Details of a simple threshold. Shall be present if thresholdType=\"SIMPLE\".\n", + "type": "object", + "required": [ + "thresholdValue", + "hysteresis" + ], + "properties": { + "thresholdValue": { + "description": "The threshold value. Shall be represented as a floating point number.\n", + "type": "number", + "format": "float" + }, + "hysteresis": { + "description": "The hysteresis of the threshold. Shall be represented as a non-negative floating point number. A notification with crossing direction \"UP\" will be generated if the measured value reaches or exceeds \"thresholdValue\" + \"hysteresis\". A notification with crossing direction \"DOWN\" will be generated if the measured value reaches or undercuts \"thresholdValue\" - \"hysteresis\". The hysteresis is defined to prevent storms of threshold crossing notifications. When processing a request to create a threshold, implementations should enforce a suitable minimum value for this attribute (e.g. override the value or reject the request).\n", + "type": "number", + "minimum": 0, + "maximum": 1024, + "format": "float" + } + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "object": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } } \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/schemas/Thresholds.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/Thresholds.schema.json index d642b93fa..74bddb4bc 100644 --- a/SOL002/VNFPerformanceManagement-API/schemas/Thresholds.schema.json +++ b/SOL002/VNFPerformanceManagement-API/schemas/Thresholds.schema.json @@ -1 +1,120 @@ -{ "type": "array", "items": { "description": "This type represents a threshold.\n", "type": "object", "required": [ "id", "objectInstanceId", "criteria", "_links" ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "objectInstanceId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "criteria": { "description": "This type represents criteria that define a threshold.\n", "type": "object", "required": [ "performanceMetric", "thresholdType" ], "properties": { "performanceMetric": { "description": "Defines the performance metric associated with the threshold, as specified in ETSI GS NFV-IFA 027).\n", "type": "string" }, "thresholdType": { "description": "Type of threshold. This attribute determines which other attributes are present in the data structure. Permitted values: * SIMPLE: Single-valued static threshold In the present document, simple thresholds are defined. The definition of additional threshold types is left for future specification.\n", "type": "string", "enum": [ "SIMPLE" ] }, "simpleThresholdDetails": { "description": "Details of a simple threshold. Shall be present if thresholdType=\"SIMPLE\".\n", "type": "object", "required": [ "thresholdValue", "hysteresis" ], "properties": { "thresholdValue": { "description": "The threshold value. Shall be represented as a floating point number.\n", "type": "integer" }, "hysteresis": { "description": "The hysteresis of the threshold. Shall be represented as a non-negative floating point number. A notification with crossing direction \"UP\" will be generated if the measured value reaches or exceeds \"thresholdValue\" + \"hysteresis\". A notification with crossing direction \"DOWN\" will be generated if the measured value reaches or undercuts \"thresholdValue\" - \"hysteresis\". The hysteresis is defined to prevent storms of threshold crossing notifications. When processing a request to create a threshold, implementations should enforce a suitable minimum value for this attribute (e.g. override the value or reject the request).\n", "type": "integer" } } } } }, "_links": { "description": "Links for 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" } } }, "object": { "description": "Link to a resource representing the VNF instance for which performance information is collected. Shall be present if the VNF instance information is accessible as a resource.\n" } } } } }} \ No newline at end of file +{ + "type": "array", + "items": + { + "description": "This type represents a threshold.\n", + "type": "object", + "required": [ + "id", + "objectType", + "objectInstanceId", + "criteria", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectType": { + "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + }, + "objectInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance associated with the threshold. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measurement type. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "criteria": { + "description": "This type represents criteria that define a threshold.\n", + "type": "object", + "required": [ + "performanceMetric", + "thresholdType" + ], + "properties": { + "performanceMetric": { + "description": "Defines the performance metric associated with the threshold. Valid values are specified as \"Measurement Name\" values in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + }, + "thresholdType": { + "description": "Type of threshold. This attribute determines which other attributes are present in the data structure. Permitted values: * SIMPLE: Single-valued static threshold In the present document, simple thresholds are defined. The definition of additional threshold types is left for future specification.\n", + "type": "string", + "enum": [ + "SIMPLE" + ] + }, + "simpleThresholdDetails": { + "description": "Details of a simple threshold. Shall be present if thresholdType=\"SIMPLE\".\n", + "type": "object", + "required": [ + "thresholdValue", + "hysteresis" + ], + "properties": { + "thresholdValue": { + "description": "The threshold value. Shall be represented as a floating point number.\n", + "type": "number", + "format": "float" + }, + "hysteresis": { + "description": "The hysteresis of the threshold. Shall be represented as a non-negative floating point number. A notification with crossing direction \"UP\" will be generated if the measured value reaches or exceeds \"thresholdValue\" + \"hysteresis\". A notification with crossing direction \"DOWN\" will be generated if the measured value reaches or undercuts \"thresholdValue\" - \"hysteresis\". The hysteresis is defined to prevent storms of threshold crossing notifications. When processing a request to create a threshold, implementations should enforce a suitable minimum value for this attribute (e.g. override the value or reject the request).\n", + "type": "number", + "minimum": 0, + "maximum": 1024, + "format": "float" + } + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "object": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } +} \ No newline at end of file -- GitLab From f935e6277c9c0ef4d9b8d8d8fbbaefd1cad1ddd3 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Tue, 23 Feb 2021 20:16:59 +0500 Subject: [PATCH 301/580] minor bug fixes --- .../IndividualThreshold.robot | 7 ++++--- SOL002/VNFPerformanceManagement-API/PMJobs.robot | 2 +- .../jsons/CreatePmJobRequestInvalidURI.json | 10 ---------- 3 files changed, 5 insertions(+), 14 deletions(-) delete mode 100644 SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequestInvalidURI.json diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index 043a73c86..b89cfb101 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -123,6 +123,7 @@ PATCH Individual Threshold - Unprocessible Entity Send Patch request for individual VNF Performance Threshold with Unreachable Callback URI Check HTTP Response Status Code Is 422 Check HTTP Response Body Json Schema Is ProblemDetails + Check Postcondition VNF Performance Threshold is Unmodified (Implicit) *** Keywords *** GET Individual VNF Performance Threshold @@ -166,9 +167,6 @@ Send Put request for individual VNF Performance Threshold Log Trying to perform a PUT. This method should not be supported. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} - ${origOutput}= Output response - Set Suite Variable ${origResponse} ${origOutput} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -190,6 +188,9 @@ Send Patch request for individual VNF Performance Threshold with Unreachable Cal Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} ${template}= Get File jsons/ThresholdModification.json ${body}= Format String ${template} callback_uri=${unreachable_callback_uri} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${body} diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 46b92cb66..6729e776e 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -310,7 +310,7 @@ Send Post Request Create new VNF Performance Monitoring Job with Unreachable Cal Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/CreatePmJobRequest.json - ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${unreachable_callback_uri} + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${unreachable_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/jsons/CreatePmJobRequestInvalidURI.json b/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequestInvalidURI.json deleted file mode 100644 index 5986c37f1..000000000 --- a/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequestInvalidURI.json +++ /dev/null @@ -1,10 +0,0 @@ -{{ - "objectInstanceIds" : ["{objectInstanceIds}"], - "criteria" : {{ - "performanceMetric": [], - "performanceMetricGroup": [], - "collectionPeriod": 10, - "reportingPeriod": 30 - }}, - "callbackUri": "{callbackUri}" -}} \ No newline at end of file -- GitLab From 4cb2f5d3c13d48b62338cf6fba004ca2e03eed77 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Tue, 23 Feb 2021 20:28:50 +0500 Subject: [PATCH 302/580] updated VNFPerformanceManagementNotification-API --- ...manceInformationAvaliableNotification.json | 1 + ...manceInformationAvailableNotification.json | 1 + ...formationAvailableNotification.schema.json | 187 +++++++++--------- 3 files changed, 93 insertions(+), 96 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json b/SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json index 5ac84f0a4..6350a4836 100644 --- a/SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json +++ b/SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json @@ -2,6 +2,7 @@ "id":"", "notificationType":"PerformanceInformationAvailableNotification", "timeStamp":"", + "pmJobId":"", "objectType":"", "objectInstanceId":"{objectInstanceId}", "_links":{{ diff --git a/SOL002/VNFPerformanceManagementNotification-API/jsons/PerformanceInformationAvailableNotification.json b/SOL002/VNFPerformanceManagementNotification-API/jsons/PerformanceInformationAvailableNotification.json index cbe45fa78..b1ae3c476 100644 --- a/SOL002/VNFPerformanceManagementNotification-API/jsons/PerformanceInformationAvailableNotification.json +++ b/SOL002/VNFPerformanceManagementNotification-API/jsons/PerformanceInformationAvailableNotification.json @@ -3,6 +3,7 @@ "notificationType" : "PerformanceInformationAvailableNotification", "subscriptionId ": "subscriptionId", "timeStamp": "2012-04-21T18:25:43-05:00", + "pmJobId": "", "objectInstanceId": "vnfID", "_links": { "subscription": "link to subscription", diff --git a/SOL002/VNFPerformanceManagementNotification-API/schemas/PerformanceInformationAvailableNotification.schema.json b/SOL002/VNFPerformanceManagementNotification-API/schemas/PerformanceInformationAvailableNotification.schema.json index 04ae7ead4..512c26401 100644 --- a/SOL002/VNFPerformanceManagementNotification-API/schemas/PerformanceInformationAvailableNotification.schema.json +++ b/SOL002/VNFPerformanceManagementNotification-API/schemas/PerformanceInformationAvailableNotification.schema.json @@ -1,105 +1,100 @@ { - "description": "This notification informs the receiver that performance information is available. The timing of sending this notification is determined by the capability of the producing entity to evaluate the threshold crossing condition. The notification shall be triggered by the VNFM when new performance information collected by a PM job is available.\n", - "type": "object", - "required": [ - "id", - "notificationType", - "subscriptionId", - "timeStamp", - "objectInstanceId", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", + "description": "This notification informs the receiver that performance information is available. The notification shall be triggered by the VNFM when new performance information collected by a PM job is available. The periodicity of triggering this notification is influenced by the \"reportingPeriod\" attribute in the \"PmJobCriteria\" data structure.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "timeStamp", + "pmJobId", + "objectType", + "objectInstanceId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"PerformanceInformationAvailableNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "PerformanceInformationAvailableNotification" + ] + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "pmJobId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectType": { + "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + }, + "objectInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance for which the measurements have been taken. Shall be present if the related PM job has been set up to measure only a subset of all sub-object instances of the measured object instance and a sub-object is defined in clause\n 6.2 of ETSI GS NFV-IFA 027 for the related measured object type.\nShall be absent otherwise.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - }, - "notificationType": { - "description": "Discriminator for the different notification types. Shall be set to \"PerformanceInformationAvailableNotification\" for this notification type.\n", - "type": "string", - "enum": [ - "PerformanceInformationAvailableNotification" - ] - }, - "subscriptionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "timeStamp": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "objectInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "_links": { - "description": "Links to resources related to this notification.\n", - "type": "object", - "required": [ - "subscription", - "pmJob", - "performanceReport" - ], - "properties": { - "subscription": { - "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" - } - } - }, - "objectInstance": { - "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" - } + } + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "type": "object", + "required": [ + "pmJob", + "performanceReport" + ], + "properties": { + "objectInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "pmJob": { - "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" - } + } + }, + "pmJob": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "performanceReport": { - "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" - } + } + }, + "performanceReport": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } } } } } - } \ No newline at end of file + } +} \ No newline at end of file -- GitLab From 66cb63580f269bfb4527624aee89cfeabef38048 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Tue, 23 Feb 2021 13:41:47 +0500 Subject: [PATCH 303/580] implementation of deltas between 2.7.1 and 3.3.1 --- SOL002/VNFIndicator-API/ApiVersion.robot | 20 +- .../IndividualSubscription.robot | 14 +- .../IndividualVNFindicator.robot | 24 +- .../NoificationConsumer.robot | 133 +++++++- SOL002/VNFIndicator-API/Subscriptions.robot | 30 +- SOL002/VNFIndicator-API/VNFIndicators.robot | 26 +- .../VnfIndicatorsInVnfInstanceId.robot | 20 +- .../environment/variables.txt | 1 + ...SupportedIndicatorsChangeNotification.json | 17 + .../jsons/ValueChangeNotification.json | 2 + .../VnfIndicatorSubscription.schema.json | 316 ++++++++++-------- .../VnfIndicatorSubscriptions.schema.json | 181 +++++++++- 12 files changed, 574 insertions(+), 210 deletions(-) create mode 100644 SOL002/VNFIndicator-API/jsons/SupportedIndicatorsChangeNotification.json diff --git a/SOL002/VNFIndicator-API/ApiVersion.robot b/SOL002/VNFIndicator-API/ApiVersion.robot index 6ba83e5f0..27451adeb 100644 --- a/SOL002/VNFIndicator-API/ApiVersion.robot +++ b/SOL002/VNFIndicator-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/IndividualSubscription.robot b/SOL002/VNFIndicator-API/IndividualSubscription.robot index 1e6d3f311..4281108b3 100644 --- a/SOL002/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL002/VNFIndicator-API/IndividualSubscription.robot @@ -10,7 +10,7 @@ GET Individual VNF Indicator Subscription ... Test title: Get individual subscription to VNF performance indicators ... Test objective: The objective is to test the retrieval of individual VNF performance indicator subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual VNF Indicator Subscription with invalid resource identifier ... Test title: Get individual subscription to VNF performance indicators ... Test objective: The objective is to test that the retrieval of individual VNF performance indicator subscription fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -36,7 +36,7 @@ DELETE Individual VNF Indicator Subscription ... Test title: Delete individual subscription to VNF performance indicators ... Test objective: The objective is to test the deletion of an individual VNF performance indicator subscription. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: The subscription to VNF performance indicators is deleted @@ -49,7 +49,7 @@ DELETE Individual VNF Indicator Subscription with invalid resource identifier ... Test title: Delete individual subscription to VNF performance indicators ... Test objective: The objective is to test that the deletion of an individual VNF performance indicator subscription fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -62,7 +62,7 @@ PUT Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an individual VNF performance indicator subscription ... Pre-conditions: none - ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -74,7 +74,7 @@ PATCH Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an individual VNF performance indicator subscription ... Pre-conditions: none - ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -86,7 +86,7 @@ POST Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an individual VNF performance indicator subscription ... Pre-conditions: none - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot index 206a72b1c..3a6ce0935 100644 --- a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot @@ -9,7 +9,7 @@ Get Individual Indicator for VNF Instance ... Test title: Get individual performance indicator for a VNF instance ... Test objective: The objective is to test the retrieval of a performance indicator for a given VNF instance and perform a JSON schema validation of the returned indicator data structure ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Individual Indicator for VNF Instance with invalid indicator identifier ... Test title: Get individual performance indicator for a VNF instance with invalid indicator identifier ... Test objective: The objective is to test that the retrieval of a performance indicator for a given VNF instance fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -37,7 +37,7 @@ POST Individual VNF Indicator - Method not implemented ... Test title: POST individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new performance indicator for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -49,7 +49,7 @@ PUT Individual VNF Indicator - Method not implemented ... Test title: PUT individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing performance indicator for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -61,7 +61,7 @@ PATCH Individual VNF Indicator - Method not implemented ... Test title: PATCH individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an existing performance indicator for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -73,7 +73,7 @@ DELETE Individual VNF Indicator - Method not implemented ... Test title: DELETE individual performance indicator indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing performance indicator for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -85,7 +85,7 @@ Get Individual Performance Indicator ... Test title: Get Individual Performance Indicator ... Test objective: The objective is to test the retrieval of a performance indicator and perform a JSON schema validation of the returned indicator data structure ... Pre-conditions: At least one measure of performance indicator is available.. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -99,7 +99,7 @@ Get Individual Performance Indicator with invalid indicator identifier ... Test title: Get Individual Performance Indicator with invalid indicator identifier ... Test objective: The objective is to test that the retrieval of a performance indicator fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: At least one measure of performance indicator is available. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Individual Performance Indicator - Method not implemented ... Test title: POST Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new performance indicator. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -124,7 +124,7 @@ PUT Individual Performance Indicator - Method not implemented ... Test title: PUT Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing performance indicator. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -136,7 +136,7 @@ PATCH Individual Performance Indicator - Method not implemented ... Test title: PATCH Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an existing performance indicator. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -148,7 +148,7 @@ DELETE Individual Performance Indicator - Method not implemented ... Test title: DELETE Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing performance indicator. ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/NoificationConsumer.robot b/SOL002/VNFIndicator-API/NoificationConsumer.robot index cb11aa11e..bf269d4ba 100644 --- a/SOL002/VNFIndicator-API/NoificationConsumer.robot +++ b/SOL002/VNFIndicator-API/NoificationConsumer.robot @@ -12,13 +12,86 @@ VNF Indicator Value Change Notification ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification . ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNF. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNF ... Applicability: none ... Post-Conditions: none Post Value Change Notification Check HTTP Response Status Code Is 204 +Supported Indicators Change Notification + [Documentation] Test ID: 6.3.2.7.2 + ... Test title: Supported Indicators Change Notification + ... Test objective: The objective is to test that the POST request triggers Supported Indicators Change Notification . + ... Pre-conditions: A VNF is instantiated, and a subscription for supported indicators change notifications is available in the VNF. + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VNF + ... Applicability: none + ... Post-Conditions: none + Post Supported Indicators Change Notification + Check HTTP Response Status Code Is 204 + +Test the Notification Endpoint - Successful + [Documentation] Test ID: 6.3.2.7.3 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 8.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 + +Test the Notification Endpoint - NOT FOUND + [Documentation] Test ID: 6.3.2.7.4 + ... Test title: Test the Notification Endpoint - UNREACHABLE + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 8.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: The notification endpoint is unreachable by the API producer. + ... Post-Conditions: none + GET reach an unreachable notification endpoint + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.2.7.5 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 8.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 + +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.2.7.6 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 8.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 + +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.2.7.7 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 8.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 + *** Keywords *** Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT_JSON}"} @@ -42,5 +115,63 @@ Post Value Change Notification ${template} = Get File jsons/ValueChangeNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} indicatorId=${indicatorId} vnfInstanceId=${vnfInstanceId} Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Supported Indicators Change Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/SupportedIndicatorsChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} indicatorId=${indicatorId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET reach an unreachable notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${unreachable_callback_uri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + Should Contain ${response['headers']['Content-Type']} application/json + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK + +PUT notification endpoint + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH notification endpoint + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index ba79c1fdd..481813f72 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -16,7 +16,7 @@ GET VNF Indicators Subscriptions ... Test title: GET VNF Indicators Subscriptions ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -29,7 +29,7 @@ GET VNF Indicators Subscriptions with attribute-based filter ... Test title: GET VNF Indicators Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions using attribute-based filter and perform a JSON schema and content validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -43,7 +43,7 @@ GET VNF Indicators Subscriptions with invalid attribute-based filter ... Test title: GET VNF Indicators Subscriptions with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of all VNF indicators subscriptions fails when using invalid attribute-based filter. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -56,7 +56,7 @@ GET VNF Indicators Subscriptions with invalid resource endpoint ... Test title: GET VNF Indicators Subscriptions with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF indicators subscriptions fails when using invalid resource endpoint. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -69,7 +69,7 @@ Create new VNF indicator subscription ... Test title: Create new VNF indicator subscription ... Test objective: The objective is to test the creation of a new VNF indicator subscription perform a JSON schema and content validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: The VNF indicator subscription is successfully set and it matches the issued subscription @@ -84,7 +84,7 @@ PUT VNF Indicator Subscriptions - Method not implemented ... Test title: PUT VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicator subscriptions ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -96,7 +96,7 @@ PATCH VNF Indicator Subscriptions - Method not implemented ... Test title: PATCH VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicator subscriptions ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -108,7 +108,7 @@ DELETE VNF Indicator Subscriptions - Method not implemented ... Test title: DELETE VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicator subscriptions ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -120,7 +120,7 @@ GET VNF Indicators Subscriptions to get Paged Response ... Test title: GET VNF Indicators Subscriptions to get Paged Response ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions to get Paged Response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -133,7 +133,7 @@ GET VNF Indicators Subscriptions - Bad Request Response too Big ... Test title: GET VNF Indicators Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of all VNF indicators subscriptions fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -146,7 +146,7 @@ POST Create a new Subscription - Unprocessable Entity ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -159,7 +159,7 @@ Create new VNF indicator Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: SUT should support duplication of subscription creation ... Post-Conditions: In response header Location shall not be null @@ -173,7 +173,7 @@ Create new VNF indicator Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: SUT should not support duplication of subscription creation ... Post-Conditions: In response header Location shall not be null @@ -330,7 +330,7 @@ Post Create subscription - DUPLICATION Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Log Creating mock request and response to handle GET operation on notification endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} @@ -350,7 +350,7 @@ Post Create subscription - NO-DUPLICATION Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Log Creating mock request and response to handle GET operation on notification endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} diff --git a/SOL002/VNFIndicator-API/VNFIndicators.robot b/SOL002/VNFIndicator-API/VNFIndicators.robot index a0db14482..36b0d5309 100644 --- a/SOL002/VNFIndicator-API/VNFIndicators.robot +++ b/SOL002/VNFIndicator-API/VNFIndicators.robot @@ -12,7 +12,7 @@ Get all VNF Indicators ... Test title: Get all VNF Indicators ... Test objective: The objective is to test the retrieval of all the available VNF indicators and perform a JSON schema validation of the collected indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -25,7 +25,7 @@ Get VNF Indicators with attribute-based filter ... Test title: Get VNF Indicators with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF indicators using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -39,7 +39,7 @@ Get VNF Indicators with invalid attribute-based filter ... Test title: Get VNF Indicators with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -52,7 +52,7 @@ Get all VNF Indicators with malformed authorization token ... Test title: GET all VNF Indicators with malformed authrization token. ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using malformed authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -65,7 +65,7 @@ Get all VNF Indicators without authorization token ... Test title: GET all VNF Indicators without authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when omitting the authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -78,7 +78,7 @@ GET all VNF Indicators with expired or revoked authorization token ... Test title: GET all VNF Indicators with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using expired or revoked authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -91,7 +91,7 @@ Get all VNF Indicators with invalid resource endpoint ... Test title: GET all VNF Indicators with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -104,7 +104,7 @@ POST all VNF Indicators - Method not implemented ... Test title: POST all VNF Indicators - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF indicators ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -116,7 +116,7 @@ PUT all VNF Indicators - Method not implemented ... Test title: PUT all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicators ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -128,7 +128,7 @@ PATCH all VNF Indicators - Method not implemented ... Test title: PATCH all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicators ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -140,7 +140,7 @@ DELETE all VNF Indicators - Method not implemented ... Test title: DELETE all VNF Indicators - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicators ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -152,7 +152,7 @@ Get VNF Indicators to get Paged Response ... Test title: Get VNF Indicators to get Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF indicators with Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -165,7 +165,7 @@ Get VNF Indicators - Bad Request Response too Big ... Test title: Get VNF Indicators - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF indicators fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index eb01deded..5f98314bf 100644 --- a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -12,7 +12,7 @@ Get Indicators for VNF Instance ... Test title: Get all performance indicators for a VNF instance ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Indicators for VNF Instance with attribute-based filter ... Test title: Get all performance indicators for a VNF instance with attribute-based filter ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance using attribute-based filter and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -40,7 +40,7 @@ Get Indicators for VNF Instance with invalid attribute-based filter ... Test title: Get all performance indicators for a VNF instance with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of all performance indicators for a given VNF instance fails using invalid attribute-based filter. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -53,7 +53,7 @@ Get Indicators for VNF Instance with invalid resource identifier ... Test title: Get all performance indicators for a VNF instance with invalid resource identifier ... Test objective: The objective is to test that the retrieval of all performance indicators for a given VNF instance fails when using invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -66,7 +66,7 @@ POST Indicators for VNF instance - Method not implemented ... Test title: POST performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new performance indicators for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -78,7 +78,7 @@ PUT Indicators for VNF instance - Method not implemented ... Test title: PUT performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing performance indicators for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -90,7 +90,7 @@ PATCH Indicators for VNF instance - Method not implemented ... Test title: PATCH performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing performance indicators for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -102,7 +102,7 @@ DELETE Indicators for VNF instance - Method not implemented ... Test title: DELETE performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete performance indicators for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -114,7 +114,7 @@ Get Indicators for VNF Instance to get Paged Response ... Test title: Get Indicators for VNF Instance to get Paged Response ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance to get paged response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -127,7 +127,7 @@ Get Indicators for VNF Instance - Bad Request Response too Big ... Test title: Get Indicators for VNF Instance - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of all performance indicators for a given VNF instance fails when response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/environment/variables.txt b/SOL002/VNFIndicator-API/environment/variables.txt index b3efe3d90..83f2ed87b 100644 --- a/SOL002/VNFIndicator-API/environment/variables.txt +++ b/SOL002/VNFIndicator-API/environment/variables.txt @@ -24,6 +24,7 @@ ${callback_uri} http://localhost ${callback_port} 9091 ${callback_endpoint} /endpoint ${callback_endpoint_error} /endpoint_404 +${unreachable_callback_uri} http://not-reachable-uri ${response} some_response_object diff --git a/SOL002/VNFIndicator-API/jsons/SupportedIndicatorsChangeNotification.json b/SOL002/VNFIndicator-API/jsons/SupportedIndicatorsChangeNotification.json new file mode 100644 index 000000000..edf459551 --- /dev/null +++ b/SOL002/VNFIndicator-API/jsons/SupportedIndicatorsChangeNotification.json @@ -0,0 +1,17 @@ +{{ + "id":"", + "notificationType":"SupportedIndicatorsChangeNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "vnfInstanceId":"{vnfInstanceId}" + "supportedIndicators": [ + {{ + "vnfIndicatorId":"{indicatorId}", + "name": "" + }} + ], + "_links":{{ + "subscription": "", + "vnfInstance": "" + }} +}} diff --git a/SOL002/VNFIndicator-API/jsons/ValueChangeNotification.json b/SOL002/VNFIndicator-API/jsons/ValueChangeNotification.json index ee1f63ee3..39db2e3bd 100644 --- a/SOL002/VNFIndicator-API/jsons/ValueChangeNotification.json +++ b/SOL002/VNFIndicator-API/jsons/ValueChangeNotification.json @@ -4,6 +4,8 @@ "subscriptionId":"{subscriptionId}", "timeStamp":"", "vnfIndicatorId":"{indicatorId}", + "name": "", + "value": "", "vnfInstanceId":"{vnfInstanceId}" "_links":{{ "subscription":"", diff --git a/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscription.schema.json b/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscription.schema.json index bb3a85aa5..c0065726d 100644 --- a/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscription.schema.json +++ b/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscription.schema.json @@ -1,142 +1,176 @@ { - "description": "This type represents a subscription related to notifications about VNF indicator value changes.\n", - "type": "object", - "required": [ - "callbackUri", - "id", - "_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 indicator value 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. * NOTE 1:\n The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to \n VNF instances that are based on certain VNFDs in a filter. They should not be used both\n in the same filter instance, but one alternative should be chosen.\n * NOTE 2:\n The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to\n particular VNF instances in a filter. They should not be used both in the same filter instance,\n but one alternative should be chosen.\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. See NOTE 1.\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. See NOTE 1.\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": [ - "vnfSoftwareVersions" - ], - "properties": { - "vnfSoftwareVersions": { - "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. See NOTE 2.\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. See NOTE 2\n", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "indicatorIds": { - "description": "Match particular VNF indicator identifiers.\n", - "type": "array", - "items": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - } - } - } - }, - "callbackUri": { - "description": "The URI of the endpoint to send the notification to.\n", - "type": "string", - "format": "URI" - }, - "_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 + "description": "This type represents a subscription related to notifications about VNF indicator value 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 for notifications related to VNF indicators. 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", + "anyOf": [{ + "oneOf": [{ + "required": [ + "vnfdId" + ] + }, + { + "required": [ + "vnfProductsFromProviders" + ] + } + ] + }, + { + "oneOf": [{ + "required": [ + "vnfInstanceIds" + ] + }, + { + "required": [ + "vnfInstanceNames" + ] + } + ] + } + ], + "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: *\tVnfIndicatorValueChangeNotification *\tSupportedIndicatorsChangeNotification 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": [ + "VnfIndicatorValueChangeNotification", + "SupportedIndicatorsChangeNotification" + ] + }, + "indicatorIds": { + "description": "Match particular VNF indicator identifiers.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "The URI of the endpoint to send the notification to.\n", + "type": "string", + "format": "url" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +}s \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json b/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json index 493a2e97c..f495a6279 100644 --- a/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json +++ b/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json @@ -1 +1,180 @@ -{ "type": "array", "items": { "description": "This type represents a subscription related to notifications about VNF indicator value changes.\n", "type": "object", "required": [ "callbackUri", "id", "_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 indicator value 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. * NOTE 1:\n The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to \n VNF instances that are based on certain VNFDs in a filter. They should not be used both\n in the same filter instance, but one alternative should be chosen.\n * NOTE 2:\n The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to\n particular VNF instances in a filter. They should not be used both in the same filter instance,\n but one alternative should be chosen.\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. See NOTE 1.\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. See NOTE 1.\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": [ "vnfSoftwareVersions" ], "properties": { "vnfSoftwareVersions": { "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. See NOTE 2.\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. See NOTE 2\n", "type": "array", "items": { "type": "string" } } } }, "indicatorIds": { "description": "Match particular VNF indicator identifiers.\n", "type": "array", "items": { "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" } } } }, "callbackUri": { "description": "The URI of the endpoint to send the notification to.\n", "type": "string", "format": "URI" }, "_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 indicator value 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 for notifications related to VNF indicators. 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", + "anyOf": [{ + "oneOf": [{ + "required": [ + "vnfdId" + ] + }, + { + "required": [ + "vnfProductsFromProviders" + ] + } + ] + }, + { + "oneOf": [{ + "required": [ + "vnfInstanceIds" + ] + }, + { + "required": [ + "vnfInstanceNames" + ] + } + ] + } + ], + "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: *\tVnfIndicatorValueChangeNotification *\tSupportedIndicatorsChangeNotification 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": [ + "VnfIndicatorValueChangeNotification", + "SupportedIndicatorsChangeNotification" + ] + }, + "indicatorIds": { + "description": "Match particular VNF indicator identifiers.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "The URI of the endpoint to send the notification to.\n", + "type": "string", + "format": "url" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } +} \ No newline at end of file -- GitLab From 06deb28864c9bb86574a44be8f6759025ee4e610 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Tue, 23 Feb 2021 14:54:49 +0500 Subject: [PATCH 304/580] updated VNFIndicatorNotification.robot --- .../VnfIndicatorNotification.robot | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/SOL002/VNFIndicatorNotification-API/VnfIndicatorNotification.robot b/SOL002/VNFIndicatorNotification-API/VnfIndicatorNotification.robot index c58a979a1..127a28638 100644 --- a/SOL002/VNFIndicatorNotification-API/VnfIndicatorNotification.robot +++ b/SOL002/VNFIndicatorNotification-API/VnfIndicatorNotification.robot @@ -16,7 +16,7 @@ VNF Indicator Value Change Notification ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test the dispatch of VNF Indicator Value Change Notification when new indicator values are available in the VNF, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNF. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNF ... Applicability: none ... Post-Conditions: none @@ -24,6 +24,18 @@ VNF Indicator Value Change Notification Check Indicator Value Change Notification Http POST Request Body Json Schema Is VnfIndicatorValueChangeNotification Check Indicator Value Change Notification Http POST Request Body notificationType attribute Is VnfIndicatorValueChangeNotification +Supported Indicators Change Notification + [Documentation] Test ID: 6.3.2.6.2 + ... Test title: Supported Indicators Change Notification + ... Test objective: The objective is to test the dispatch of Supported Indicators Change Notification when new indicator values are available in the VNF, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A VNF is instantiated, and a subscription for supported indicators change notifications is available in the VNF. + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Config ID: Config_prod_VNF + ... Applicability: none + ... Post-Conditions: none + Trigger the availability of new indicator value in the VNF (external action) + Check Indicator Value Change Notification Http POST Request Body Json Schema Is SupportedIndicatorsChangeNotification + Check Indicator Value Change Notification Http POST Request Body notificationType attribute Is SupportedIndicatorsChangeNotification *** Keywords *** Trigger the availability of new indicator value in the VNF (external action) -- GitLab From f3e179e22b19572e2236761ee043a7379662d6d0 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Tue, 2 Mar 2021 14:22:05 +0100 Subject: [PATCH 305/580] updated versions --- SOL003/VNFFaultManagement-API/Alarms.robot | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/Alarms.robot b/SOL003/VNFFaultManagement-API/Alarms.robot index c0dd85276..ffe3ba4ef 100644 --- a/SOL003/VNFFaultManagement-API/Alarms.robot +++ b/SOL003/VNFFaultManagement-API/Alarms.robot @@ -13,7 +13,7 @@ POST Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create Fault management alarms on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get information about multiple alarms ... Test title: Get information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get information about multiple alarms with filter ... Test title: Get information about multiple alarms with filter ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ Get information about multiple alarms Bad Request Invalid attribute-based filter ... Test title: Get information about multiple alarms Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to try to retrieve information about the alarm list with invalid filters and perform a JSON schema and content validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ GET information about multiple alarms with "all_fields" attribute selector ... Test title: GET information about multiple alarms with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ GET information about multiple alarms with exclude_default attribute selector ... Test title: GET information about multiple alarms with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ GET information about multiple alarms with fields attribute selector ... Test title: GET information about multiple alarms with fields attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ GET information about multiple alarms with "exclude_fields" attribute selector ... Test title: GET information about multiple alarms with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Fault management alarms on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Fault management alarms on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -140,7 +140,7 @@ DELETE Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Fault management alarms on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -152,7 +152,7 @@ Get information about multiple alarms as a Paged Response ... Test title: Get information about multiple alarms as a Paged Response ... Test objective: The objective is to retrieve information about the alarm list as a Paged Response ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ Get information about multiple alarms - Bad Request Response too Big ... Test title: Get information about multiple alarms - Bad Request Response too Big ... Test objective: The objective is to try to retrieve information about the alarm list because response is too big and perform a JSON schema and content validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 9ca888103847e40406487efd4a161c6bf63658db Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 3 Mar 2021 08:27:04 +0100 Subject: [PATCH 306/580] updated versions --- .../IndividualAlarm.robot | 14 +++---- .../IndividualSubscription.robot | 8 ++-- .../NotificationConsumer.robot | 4 +- .../Subscriptions.robot | 38 +++++++++---------- .../NotificationEndpoint.robot | 4 +- 5 files changed, 34 insertions(+), 34 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot index a958e5e31..c3aa8587c 100644 --- a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot @@ -14,7 +14,7 @@ POST Alarm - Method not implemented ... Test title: POST Alarm - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create Fault management individual alarm on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ Get information about an fault management individual alarm ... Test title: Get information about an fault management individual alarm ... Test objective: The objective is to retrieve information about an individual alarm and perform a JSON schema and content validation of the returned alarm data structure ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ PUT Alarm - Method not implemented ... Test title: PUT Alarm - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Fault management individual alarm on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PATCH Fault Management Individual Alarm ... Test title: PATCH Fault Management Individual Alarm ... Test objective: The objective is to Modify an individual alarm resource and perform a JSON schema and content validation of the returned alarm data structure ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ Modify an individual alarm resource - Precondition failed ... Test title: Modify an individual alarm resource - Precondition failed ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ DELETE Alarm - Method not implemented ... Test title: DELETE Alarm - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management individual alarm on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ Get information about an fault management individual alarm - Not Found ... Test title: Get information about an fault management individual alarm - Not Found ... Test objective: The objective is to test that retrieval of information about an individual alarm fails when individual alarm is not present ... Pre-conditions: The related alarm does not exists - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFFaultManagement-API/IndividualSubscription.robot b/SOL003/VNFFaultManagement-API/IndividualSubscription.robot index f69237167..4782701a7 100644 --- a/SOL003/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFFaultManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ Post Individual Subscription - Method not implemented ... Test title: Post Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Fault management subscription on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ Get Information about an individual subscription ... Test title: Get Information about an individual subscription ... Test objective: The objective is to read an individual subscription for NFVO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title:PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Fault management individual subscription on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ Get Information about an individual subscription - Not Found ... Test title: Get Information about an individual subscription - Not Found ... Test objective: The objective is to test that the retrieval of an individual subscription for NFVO alarms subscribed by the client fails when subscription is not present ... Pre-conditions: The subscription with the given id does not exists - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFFaultManagement-API/NotificationConsumer.robot b/SOL003/VNFFaultManagement-API/NotificationConsumer.robot index 17ea2227b..86d179d42 100644 --- a/SOL003/VNFFaultManagement-API/NotificationConsumer.robot +++ b/SOL003/VNFFaultManagement-API/NotificationConsumer.robot @@ -13,7 +13,7 @@ VNF Fault Alarm Notification ... Test title: VNF Fault Alarm Notification ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Notification. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Fault Alarm Cleared Notification ... Test title: VNF Fault Alarm Cleared Notification ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Cleared Notification. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFFaultManagement-API/Subscriptions.robot b/SOL003/VNFFaultManagement-API/Subscriptions.robot index f41f45a64..ca2beba9d 100644 --- a/SOL003/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL003/VNFFaultManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ Create a new Fault Management alarm subscription ... Test title: Create a new Fault Management alarm subscription ... Test objective: The objective is to create a new Fault management alarm subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure ... Pre-conditions: No subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription is created @@ -31,7 +31,7 @@ Create a new alarm subscription - DUPLICATION ... Test title: Create a new alarm subscription - DUPLICATION ... Test objective: The objective is to create a new subscription with the VNF 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 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: the NFVO allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists ... Post-Conditions: duplicated subscription is created @@ -46,7 +46,7 @@ Create a new alarm subscription - NO DUPLICATION ... Test title: Create a new alarm subscription - NO DUPLICATION ... Test objective: The objective is to create a new subscription with the VNF 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 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: the NFVO decides to not create a duplicate subscription resource ... Post-Conditions: duplicated subscription is not created @@ -60,7 +60,7 @@ Retrieve a list of alarm subscriptions ... Test title: Retrieve a list of alarm subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: noe @@ -86,7 +86,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters and perform a JSON schema and content validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -125,7 +125,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -138,7 +138,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -151,7 +151,7 @@ PUT subscriptions - Method not implemented ... Test title:PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Fault management subscriptions on VNF ... Pre-conditions: none - ... RReference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... RReference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -163,7 +163,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Fault management subscriptions on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -175,7 +175,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management subscriptions on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription is not deleted @@ -187,7 +187,7 @@ Retrieve a list of alarm subscriptions as Paged Response ... Test title: Retrieve a list of alarm subscriptions as Paged Response ... Test objective: The objective is to retrieve the list of active subscriptions as Paged Response. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: noe @@ -200,7 +200,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to retrieve the list of active subscriptions because response is too big and perform a JSON schema and content validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -213,7 +213,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -227,7 +227,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -241,7 +241,7 @@ Get subscriptions with filter "filter.faultyResourceTypes" ... Test title: GET Subscription with attribute-based filter "filter.faultyResourceTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -255,7 +255,7 @@ Get subscriptions with filter "filter.perceivedSeverities" ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -269,7 +269,7 @@ Get subscriptions with filter "filter.eventTypes" ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -297,7 +297,7 @@ POST Create a new Subscription - Unprocessable Entity ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFFaultManagementNotification-API/NotificationEndpoint.robot b/SOL003/VNFFaultManagementNotification-API/NotificationEndpoint.robot index 78e8209e1..f199cb964 100644 --- a/SOL003/VNFFaultManagementNotification-API/NotificationEndpoint.robot +++ b/SOL003/VNFFaultManagementNotification-API/NotificationEndpoint.robot @@ -15,7 +15,7 @@ VNF Fault Alarm Notification ... Test title: VNF Fault Alarm Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Notification when a virtualised resource within an VNF instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ VNF Fault Alarm Cleared Notification ... Test title: VNF Fault Alarm Cleared Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Cleared Notification when a faulty virtualised resource within an VNF instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 7359bad4242d373910bc9cc3b7f4081128194b26 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 5 Mar 2021 18:20:41 +0500 Subject: [PATCH 307/580] updated refs --- .../VNFFaultManagement-API/ApiVersion.robot | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/ApiVersion.robot b/SOL003/VNFFaultManagement-API/ApiVersion.robot index 6c7d8bddf..124d51e5e 100644 --- a/SOL003/VNFFaultManagement-API/ApiVersion.robot +++ b/SOL003/VNFFaultManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 9081fa22adc7c20e120d93ac65c7988a88ac4ec5 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 3 Mar 2021 09:06:22 +0100 Subject: [PATCH 308/580] updated versions --- .../IndividualSubscription.robot | 14 ++++++------ .../IndividualVNFindicator.robot | 10 ++++----- .../NotificationConsumer.robot | 2 +- SOL003/VNFIndicator-API/Subscriptions.robot | 22 +++++++++---------- SOL003/VNFIndicator-API/VNFIndicators.robot | 20 ++++++++--------- .../VnfIndicatorNotification.robot | 2 +- .../VnfIndicatorsInVnfInstanceId.robot | 16 +++++++------- 7 files changed, 43 insertions(+), 43 deletions(-) diff --git a/SOL003/VNFIndicator-API/IndividualSubscription.robot b/SOL003/VNFIndicator-API/IndividualSubscription.robot index cf162f22b..0df636f7e 100644 --- a/SOL003/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL003/VNFIndicator-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ GET Individual VNF Indicator Subscription ... Test title: GET Individual VNF Indicator Subscription ... Test objective: The objective is to test the retrieval of individual VNF indicator subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Individual VNF Indicator Subscription with invalid resource identifier ... Test title: GET Individual VNF Indicator Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of individual VNF indicator subscription fails when using an invalid resource identifier. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ DELETE Individual VNF Indicator Subscription ... Test title: DELETE Individual VNF Indicator Subscription ... Test objective: The objective is to test the deletion of an individual VNF indicator subscription. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The subscription to VNF indicators is deleted @@ -50,7 +50,7 @@ DELETE Individual VNF Indicator Subscription with invalid resource identifier ... Test title: DELETE Individual VNF Indicator Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF indicator subscription fails when using an invalid resource identifier. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PUT Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT Individual VNF Indicator Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an individual VNF indicator subscription ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The individual VNF indicator subscription is not modified by the operation @@ -74,7 +74,7 @@ PATCH Individual VNF Indicator Subscription - Method not implemented ... Test title: PATCH Individual VNF Indicator Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an individual VNF indicator subscription ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ POST Individual VNF Indicator Subscription - Method not implemented ... Test title: POST Individual VNF Indicator Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF indicator subscription ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/IndividualVNFindicator.robot b/SOL003/VNFIndicator-API/IndividualVNFindicator.robot index 916331fbb..aec7085b0 100644 --- a/SOL003/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL003/VNFIndicator-API/IndividualVNFindicator.robot @@ -10,7 +10,7 @@ Get Individual Indicator for VNF Instance ... Test title: Get Individual Indicator for VNF Instance ... Test objective: The objective is to test the retrieval of an indicator for a given VNF instance and perform a JSON schema validation of the returned indicator data structure ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get Individual Indicator for VNF Instance with invalid indicator identifier ... Test title: Get Individual Indicator for VNF Instance with invalid indicator identifier ... Test objective: The objective is to test that the retrieval of an indicator for a given VNF instance fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual VNF Indicator for VNF Instance - Method not implemented ... Test title: PUT Individual VNF Indicator for VNF Instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing indicator for a VNF instance ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual VNF Indicator for VNF Instance - Method not implemented ... Test title: PATCH Individual VNF Indicator for VNF Instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an existing indicator for a VNF instance ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual VNF Indicator for VNF Instance - Method not implemented ... Test title: DELETE Individual VNF Indicator for VNF Instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing indicator for a VNF instance ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/NotificationConsumer.robot b/SOL003/VNFIndicator-API/NotificationConsumer.robot index cf3822562..2ef3617dd 100644 --- a/SOL003/VNFIndicator-API/NotificationConsumer.robot +++ b/SOL003/VNFIndicator-API/NotificationConsumer.robot @@ -12,7 +12,7 @@ VNF Indicator Value Change Notification ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification. ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNFM. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/Subscriptions.robot b/SOL003/VNFIndicator-API/Subscriptions.robot index f20c0f888..6db2c17af 100644 --- a/SOL003/VNFIndicator-API/Subscriptions.robot +++ b/SOL003/VNFIndicator-API/Subscriptions.robot @@ -16,7 +16,7 @@ GET All VNF Indicator Subscriptions ... Test title: GET All VNF Indicator Subscriptions ... Test objective: The objective is to test the retrieval of all VNF indicator subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ GET VNF Indicator Subscriptions with attribute-based filter ... Test title: GET VNF Indicator Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF indicator subscriptions using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ GET VNF Indicator Subscriptions with invalid attribute-based filter ... Test title: GET VNF Indicator Subscriptions with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF indicator subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET VNF Indicator Subscriptions with invalid resource endpoint ... Test title: GET VNF Indicator Subscriptions with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF indicator subscriptions fails when using invalid resource endpoint. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ Create new VNF indicator subscription ... Test title: Create new VNF indicator subscription ... Test objective: The objective is to test the creation of a new VNF indicator subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF indicator subscription is successfully set and it matches the issued subscription @@ -84,7 +84,7 @@ Create duplicated VNF indicator subscription with VNFM not creating duplicated s ... Test title: Create duplicated VNF indicator subscription with VNFM not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF indicator subscription and check that no new subscription is created by the VNFM and a link to the original subscription is returned ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM does not support the creation of duplicated subscriptions ... Post-Conditions: The existing VNF indicator subscription returned is available in the VNFM @@ -100,7 +100,7 @@ Create duplicated VNF indicator subscription with VNFM creating duplicated subsc ... Test title: Create duplicated VNF indicator subscription with VNFM creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated VNF indicator subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated VNF indicator subscription is successfully set and it matches the issued subscription @@ -127,7 +127,7 @@ PATCH VNF Indicator Subscriptions - Method not implemented ... Test title: PATCH VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicator subscriptions ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ GET All VNF Indicator Subscriptions as Paged Response ... Test title: GET All VNF Indicator Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all VNF indicator subscriptions as Paged Response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ GET VNF Indicator Subscriptions - Bad Request Response too Big ... Test title: GET VNF Indicator Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF indicator subscriptions fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -177,7 +177,7 @@ POST Create a new Subscription - Unprocessable Entity ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/VNFIndicators.robot b/SOL003/VNFIndicator-API/VNFIndicators.robot index 66a032edf..35c0a53b6 100644 --- a/SOL003/VNFIndicator-API/VNFIndicators.robot +++ b/SOL003/VNFIndicator-API/VNFIndicators.robot @@ -11,7 +11,7 @@ Get all VNF Indicators ... Test title: Get all VNF Indicators ... Test objective: The objective is to test the retrieval of all the available VNF indicators and perform a JSON schema validation of the collected indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get VNF Indicators with attribute-based filter ... Test title: Get VNF Indicators with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF indicators using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ Get all VNF Indicators with malformed authorization token ... Test title: Get all VNF Indicators with malformed authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using malformed authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -63,7 +63,7 @@ Get all VNF Indicators without authorization token ... Test title: Get all VNF Indicators without authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when omitting the authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -75,7 +75,7 @@ GET all VNF Indicators with expired or revoked authorization token ... Test title: GET all VNF Indicators with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using expired or revoked authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -99,7 +99,7 @@ POST all VNF Indicators - Method not implemented ... Test title: POST all VNF Indicators - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM - ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ PATCH all VNF Indicators - Method not implemented ... Test title: PATCH all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNF - ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -135,7 +135,7 @@ DELETE all VNF Indicators - Method not implemented ... Test title: DELETE all VNF Indicators - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNF - ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF indicators are not deleted by the unsuccessful operation @@ -148,7 +148,7 @@ Get all VNF Indicators as Paged Response ... Test title: Get all VNF Indicators as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF indicators as Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -161,7 +161,7 @@ Get VNF Indicators - Bad Request Response too Big ... Test title: Get VNF Indicators - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF indicators fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/VnfIndicatorNotification.robot b/SOL003/VNFIndicator-API/VnfIndicatorNotification.robot index 79cd22af0..1e5e19e92 100644 --- a/SOL003/VNFIndicator-API/VnfIndicatorNotification.robot +++ b/SOL003/VNFIndicator-API/VnfIndicatorNotification.robot @@ -16,7 +16,7 @@ VNF Indicator Value Change Notification ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test the dispatch of VNF Indicator Value Change Notification when new indicator values are available in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNFM. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index 0c8b3fffb..893300dfd 100644 --- a/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -11,7 +11,7 @@ Get Indicators for VNF Instance ... Test title: Get Indicators for VNF Instance ... Test objective: The objective is to test the retrieval of all indicators for a given VNF instance and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Indicators for VNF Instance with attribute-based filter ... Test title: GET Indicators for VNF Instance with attribute-based filter ... Test objective: The objective is to test the retrieval of all indicators for a given VNF instance using attribute-based filter and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Get Indicators for VNF Instance with invalid attribute-based filter ... Test title: Get Indicators for VNF Instance with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of all indicators for a given VNF instance fails using invalid attribute-based filter. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ Get Indicators for VNF Instance with invalid resource identifier ... Test title: Get Indicators for VNF Instance with invalid resource identifier ... Test objective: The objective is to test that the retrieval of all indicators for a given VNF instance fails when using invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ POST Indicators for VNF instance - Method not implemented ... Test title: POST Indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ PATCH Indicators for VNF instance - Method not implemented ... Test title: PATCH Indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ Get Indicators for VNF Instance as Paged Response ... Test title: Get Indicators for VNF Instance as Paged Response ... Test objective: The objective is to test the retrieval of all indicators for a given VNF instance as Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ Get Indicators for VNF Instance - Bad Request Response too Big ... Test title: Get Indicators for VNF Instance - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of all indicators for a given VNF instance fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 52bf1bae24f6c398315d3842ee390ed7bce69550 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 3 Mar 2021 13:28:58 +0100 Subject: [PATCH 309/580] added new test for API Consumer Notification --- .../NotificationConsumer.robot | 23 +++++++++++++++++++ ...SupportedIndicatorsChangeNotification.json | 14 +++++++++++ 2 files changed, 37 insertions(+) create mode 100644 SOL003/VNFIndicator-API/jsons/SupportedIndicatorsChangeNotification.json diff --git a/SOL003/VNFIndicator-API/NotificationConsumer.robot b/SOL003/VNFIndicator-API/NotificationConsumer.robot index 2ef3617dd..5ae66945b 100644 --- a/SOL003/VNFIndicator-API/NotificationConsumer.robot +++ b/SOL003/VNFIndicator-API/NotificationConsumer.robot @@ -19,6 +19,18 @@ VNF Indicator Value Change Notification Post VNF Indicator Value Change Notification Check HTTP Response Status Code Is 204 +Supported Indicators Change Notification + [Documentation] Test ID: 7.3.6.7.2 + ... Test title: Supported Indicators Change Notification + ... Test objective: The objective is to test that the POST request triggers Supported Indicators Change Notification. + ... Pre-conditions: A VNF is instantiated, and a individual subscription resource for supported indicators change notifications is available in the VNFM. + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Supported Indicators Change Notification + Check HTTP Response Status Code Is 204 + *** Keywords *** Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT_JSON}"} @@ -44,3 +56,14 @@ Post VNF Indicator Value Change Notification Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +Post Supported Indicators Change Notification + log Trying to perform a POST for notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/SupportedIndicatorsChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFIndicator-API/jsons/SupportedIndicatorsChangeNotification.json b/SOL003/VNFIndicator-API/jsons/SupportedIndicatorsChangeNotification.json new file mode 100644 index 000000000..9e6559202 --- /dev/null +++ b/SOL003/VNFIndicator-API/jsons/SupportedIndicatorsChangeNotification.json @@ -0,0 +1,14 @@ +{{ + "id":"", + "notificationType":"SupportedIndicatorsChangeNotification", + "subscriptionId":"{subscriptionId}", + "timeStamp":"", + "vnfInstanceId":"{vnfInstanceId}", + "supportedIndicators":{{ + "vnfIndicatorId":"{indicatorId}" + }} + "_links":{{ + "vnfInstance":"", + "subscription":"" + }} +}} \ No newline at end of file -- GitLab From 913ed3d1e514f51b0e6153bd580779292236a41c Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Fri, 5 Mar 2021 11:30:15 +0100 Subject: [PATCH 310/580] updated schema --- ...edIndicatorsChangeNotification.schema.json | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 SOL003/VNFIndicator-API/schemas/SupportedIndicatorsChangeNotification.schema.json diff --git a/SOL003/VNFIndicator-API/schemas/SupportedIndicatorsChangeNotification.schema.json b/SOL003/VNFIndicator-API/schemas/SupportedIndicatorsChangeNotification.schema.json new file mode 100644 index 000000000..35cf33eb7 --- /dev/null +++ b/SOL003/VNFIndicator-API/schemas/SupportedIndicatorsChangeNotification.schema.json @@ -0,0 +1,93 @@ +{ + "description": "This type represents a notification to inform the receiver that the set of indicators supported by a VNF instance has changed. It shall comply with the provisions defined in table 8.5.2.6-1. The notification shall be triggered by the VNFM when the set of supported VNF indicators has changed as a side effect of the \"Change current VNF package\" operation. It may be triggered by the VNFM when a VNF has been instantiated.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "vnfInstanceId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"SupportedIndicatorsChangeNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "VnfIndicatorValueChangeNotification" + ] + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "supportedIndicators": { + "description": "Set of VNF indicators supported by the VNF instance.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "vnfIndicatorId" + ], + "properties": { + "vnfIndicatorId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the VNF indicator. Shall be present if defined in the VNFD. ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications.\n", + "type": "string" + } + } + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "subscription" + ], + "properties": { + "vnfInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file -- GitLab From 4f252df4bc7364c185fc0b2afe0e60d391866ca7 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 5 Mar 2021 18:16:35 +0500 Subject: [PATCH 311/580] updated references --- SOL003/VNFIndicator-API/ApiVersion.robot | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/SOL003/VNFIndicator-API/ApiVersion.robot b/SOL003/VNFIndicator-API/ApiVersion.robot index 819592ceb..8445faaeb 100644 --- a/SOL003/VNFIndicator-API/ApiVersion.robot +++ b/SOL003/VNFIndicator-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 71e8187a765ce251b562f733c068a2654c6d68d3 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Thu, 4 Mar 2021 08:15:48 +0100 Subject: [PATCH 312/580] updated versions and minor bug fixes --- .../Grants.robot | 29 +++++++------------ .../IndividualGrant.robot | 16 +++++----- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index f4c920df2..78e943693 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -21,8 +21,8 @@ Requests a grant for a particular VNF lifecycle operation - Synchronous mode [Documentation] Test ID: 7.3.2.1.1 ... Test title: Requests a grant for a particular VNF lifecycle operation - Synchronous mode ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and perform a JSON schema validation on the returned grant data structure - ... Pre-conditions: - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Pre-conditions: none + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO can decide immediately what to respond to a grant request ... Post-Conditions: The grant information is available to the VNFM. @@ -35,8 +35,8 @@ Requests a grant for a particular VNF lifecycle operation - Asynchronous mode [Documentation] Test ID: 7.3.2.1.2 ... Test title: Requests a grant for a particular VNF lifecycle operation - Asynchronous mode ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and perform a JSON schema validation on the returned grant data structure - ... Pre-conditions: - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Pre-conditions: none + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO can not decide immediately what to respond to a grant request ... Post-Conditions: The grant information is available to the VNFM. @@ -51,7 +51,7 @@ Requests a grant for a particular VNF lifecycle operation - Forbidden ... Test title: Requests a grant for a particular VNF lifecycle operation - Forbidden ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and the grant is rejected ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ GET Grants - Method not implemented ... Test title: GET Grants - Method not implemented ... Test objective: The objective is to test that GET method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PUT Grants - Method not implemented ... Test title: PUT Grants - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ PATCH Grants - Method not implemented ... Test title: PATCH Grants - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,13 +100,12 @@ DELETE Grants - Method not implemented ... Test title: DELETE Grants - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: resources are not deleted + ... Post-Conditions: none Delete Grants Check HTTP Response Status Code Is 405 - Get an individual grant - Successful *** Keywords *** Wait for individual grant successful notification @@ -169,14 +168,6 @@ Check HTTP Response Body Json Schema Is ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} -Get an individual grant - Successful - log Trying to read an individual grant - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${response['headers']['Location']} - Log Validate Status code - Integer response status 200 - Get Grants Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index a52f60300..afd2f2278 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -17,7 +17,7 @@ POST Individual Grant - Method not implemented ... Test title: POST Individual Grant - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,8 +28,8 @@ GET an individual grant - Successful [Documentation] Test ID: 7.3.2.2.2 ... Test title: GET an individual grant - Successful ... Test objective: The objective is to retrieve a grant for a particular VNF Lifecycle Operation. - ... Pre-conditions: The grant information is available to the VNFM - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Pre-conditions: The grant information is available to the NFVO + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ GET an individual grant - Process ongoing ... Test title: GET an individual grant - Process ongoing ... Test objective: The objective is to retrieve a grant for a particular VNF lifecycle operation when process is ongoing and no grant is available yet. ... Pre-conditions: The process of creating the grant is ongoing, no grant is available yet. - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -58,7 +58,7 @@ GET an individual grant - grant rejected ... Test title: GET an individual grant - grant rejected ... Test objective: The objective is to retrieve a grant for a particular VNF Lifecycle Operation but error returned because grant has been rejected. ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -71,7 +71,7 @@ PUT an individual grant - Method not implemented ... Test title: PUT an individual grant - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ PATCH an individual grant - Method not implemented ... Test title: PATCH an individual grant - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ DELETE an individual grant - Method not implemented ... Test title: DELETE an individual grant - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 1fd70a0f670df443417b0a9111c86027753d7a09 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Thu, 4 Mar 2021 08:45:40 +0100 Subject: [PATCH 313/580] bug fix: added missing keyword --- SOL003/VNFLifecycleOperationGranting-API/Grants.robot | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 78e943693..d0c2e7b59 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -103,7 +103,7 @@ DELETE Grants - Method not implemented ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: none + ... Post-Conditions: resources are not deleted Delete Grants Check HTTP Response Status Code Is 405 @@ -168,6 +168,14 @@ Check HTTP Response Body Json Schema Is ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} +Get an individual grant - Successful + log Trying to read an individual grant + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${response['headers']['Location']} + Log Validate Status code + Integer response status 200 + Get Grants Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} -- GitLab From ce812e94a113a2238ffe8112887e1eeab661a74a Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 5 Mar 2021 14:05:57 +0500 Subject: [PATCH 314/580] updated jsons, schemas and importing of variables for descriptors --- .../Grants.robot | 10 +- .../IndividualGrant.robot | 13 +- .../jsons/grantRejectedRequest.json | 1 + .../jsons/grantRequest.json | 1 + .../schemas/grant.schema.json | 1358 +++++++++-------- 5 files changed, 748 insertions(+), 635 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index d0c2e7b59..09cc71681 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -6,8 +6,8 @@ Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ Library Collections -Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml -Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml +#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. @@ -215,6 +215,7 @@ 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 + Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml ${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} @@ -229,6 +230,7 @@ Fetch Information from SOL001 descriptor file Set Global Variable ${Flavour_ID} ${flavour_id} Fetch Information from SOL006 descriptor file + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${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']} @@ -238,6 +240,4 @@ Fetch Information from SOL006 descriptor file 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 ${Descriptor_Version} ${descriptor_version} \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index afd2f2278..5f78fe347 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -5,8 +5,8 @@ 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 +#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. @@ -176,6 +176,7 @@ 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 + Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @{VDU_labels}= Create List @{VirtualLink_labels}= Create List @{CP_labels}= Create List @@ -193,6 +194,7 @@ Fetch Information from SOL001 descriptor file Set Global Variable @{CP_IDs} @{CP_labels} Fetch Information from SOL006 descriptor file + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${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']} @@ -206,7 +208,8 @@ Fetch Information from SOL006 descriptor file END Get VDU IDs - [Arguments] ${count} + [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @{VDU_labels}= Create List @{Compute_labels}= Create List FOR ${i} IN RANGE ${count} @@ -218,6 +221,7 @@ Get VDU IDs Get External CP IDs [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @{external_CPs}= Create List FOR ${i} IN RANGE ${count} Append To List ${external_CPs} ${nfv.vnfd[0].ext_cpd[${i}].id} @@ -225,7 +229,8 @@ Get External CP IDs Set Global Variable ${externalCP_IDs} ${external_CPs} Get Virtual Link IDs - [Arguments] ${count} + [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${VirtualLink_labels}= Create List FOR ${i} IN RANGE ${count} Append To List ${VirtualLink_labels} ${nfv.vnfd[0]['int-virtual-link-desc'][${i}]['id']} diff --git a/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRejectedRequest.json b/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRejectedRequest.json index f335ba633..4cb8fb555 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRejectedRequest.json +++ b/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRejectedRequest.json @@ -5,6 +5,7 @@ "flavourId": "{flavourId}", "operation": "INSTANTIATE", "isAutomaticInvocation": true, + "instantiationLevelId": "", "_links": {{ "vnfLcmOpOcc": {{ "href": "string" diff --git a/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRequest.json b/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRequest.json index f335ba633..4cb8fb555 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRequest.json +++ b/SOL003/VNFLifecycleOperationGranting-API/jsons/grantRequest.json @@ -5,6 +5,7 @@ "flavourId": "{flavourId}", "operation": "INSTANTIATE", "isAutomaticInvocation": true, + "instantiationLevelId": "", "_links": {{ "vnfLcmOpOcc": {{ "href": "string" diff --git a/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json b/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json index bd0bf8ea7..ac4a3cd6c 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json +++ b/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json @@ -1,628 +1,734 @@ { - "description": "This type represents a grant.\n", - "type": "object", - "required": [ - "id", - "vnfInstanceId", - "vnfLcmOpOccId", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLcmOpOccId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimConnections": { - "description": "Provides information regarding VIM connections that are approved to be used by the VNFM to allocate resources, and provides parameters of these VIM connections. The VNFM shall update the \" vimConnectionInfo\" attribute of the \"VnfInstance\" structure by adding unknown entries received in this attribute. This attribute is not intended for the modification of VimConnection entries passed earlier; for that, the VnfInfoModificationRequest structure shall be used. This attribute shall only be supported when VNF-related Resource Management in direct mode is applicable. In direct mode, this parameter shall be absent if the VIM information was configured to the VNFM in another way, present otherwise. This interface allows to signal the use of multiple VIMs per VNF. However, due to the partial support of this feature in the present release, it is recommended in the present document that the number of entries in the \"vims\" attribute in the Grant is not greater than 1.\n", - "type": "array", - "items": { - "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n", - "type": "object", - "required": [ - "id", - "vimType" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", - "type": "string" - }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - } - }, - "zones": { - "description": "Identifies resource zones where the resources are approved to be allocated by the VNFM.\n", - "type": "array", - "items": { - "description": "This type provides information regarding a resource zone.\n", - "type": "object", - "required": [ - "id", - "zoneId" - ], - "properties": { - "id": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - }, - "zoneId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "zoneGroups": { - "description": "Information about groups of resource zones that are related and that the NFVO has chosen to fulfil a zoneGroup constraint in the GrantVnfLifecycleOperation request. This information confirms that the NFVO has honoured the zoneGroup constraints that were passed as part of \"placementConstraints\" in the GrantRequest.\n", - "type": "array", - "items": { - "description": "This type provides information regarding a resource zone group. A resource zone group is a group of one or more related resource zones which can be used in resource placement constraints. To fulfil such constraint, the NFVO may decide to place a resource into any zone that belongs to a particular group. NOTE: A resource zone group can be used to support overflow from one resource zone into another, in case a particular deployment supports only non-elastic resource zones.\n", - "type": "object", - "required": [ - "zoneId" - ], - "properties": { - "zoneId": { - "description": "References of identifiers of \"ZoneInfo\" structures, each of which provides information about a resource zone that belongs to this group.\n", - "type": "array", - "items": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - } - } - } - } - }, - "computeReservationId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "networkReservationId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "storageReservationId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "addResources": { - "description": "List of resources that are approved to be added, with one entry per resource.\n", - "type": "array", - "items": { - "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n", - "type": "object", - "required": [ - "resourceDefinitionId" - ], - "properties": { - "resourceDefinitionId": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "zoneId": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - }, - "resourceGroupId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "tempResources": { - "description": "List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with one entry per resource.\n", - "type": "array", - "items": { - "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n", - "type": "object", - "required": [ - "resourceDefinitionId" - ], - "properties": { - "resourceDefinitionId": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "zoneId": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - }, - "resourceGroupId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "removeResources": { - "description": "List of resources that are approved to be removed, with one entry per resource.\n", - "type": "array", - "items": { - "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n", - "type": "object", - "required": [ - "resourceDefinitionId" - ], - "properties": { - "resourceDefinitionId": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "zoneId": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - }, - "resourceGroupId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "updateResources": { - "description": "List of resources that are approved to be modified, with one entry per resource.\n", - "type": "array", - "items": { - "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n", - "type": "object", - "required": [ - "resourceDefinitionId" - ], - "properties": { - "resourceDefinitionId": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "zoneId": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - }, - "resourceGroupId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "vimAssets": { - "description": "Information about assets for the VNF that are managed by the NFVO in the VIM, such as software images and virtualised compute resource flavours. This attribute is not intended for the modification of vimAssets entries passed earlier. Modification of VIM assets during the lifetime of a VNF instance is not necessary, since it is expected that all applicable assets have been on boarded into the VIM before the VNF is instantiated.\n", - "type": "object", - "properties": { - "computeResourceFlavours": { - "description": "Mappings between virtual compute descriptors defined in the VNFD and compute resource flavours managed in the VIM.\n", - "type": "array", - "items": { - "description": "If the VIM requires the use of virtual compute resource flavours during compute resource instantiation, it is assumed that such flavours are selected or created by the NFVO based on the information in the virtual compute descriptor defined in the VNFD. This type defines the mapping between a virtual compute descriptor in the VNFD and the corresponding compute resource flavour managed by the NFVO in the VIM.\n", - "type": "object", - "required": [ - "vnfdVirtualComputeDescId", - "vimFlavourId" - ], - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfdVirtualComputeDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vimFlavourId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "softwareImages": { - "description": "Mappings between software images defined in the VNFD and software images managed in the VIM.\n", - "type": "array", - "items": { - "description": "This type contains a mapping between a software image definition the VNFD and the corresponding software image managed by the NFVO in the VIM which is needed during compute resource instantiation.\n", - "type": "object", - "required": [ - "vnfdSoftwareImageId", - "vimSoftwareImageId" - ], - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfdSoftwareImageId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vimSoftwareImageId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - } - } - }, - "extVirtualLinks": { - "description": "Information about external VLs to connect the VNF to. External and/or externally-managed internal VLs can be passed in VNF lifecycle management operation requests such as InstantiateVnf or ChangeVnfFlavor, and/or in the grant response. The NFVO may choose to override in the grant response external and/or externally-managed VL instances that have been passed previously in the associated VNF lifecycle management request, if the lifecycle management request has originated from the NFVO itself.\n", - "type": "array", - "items": { - "description": "This type represents an external VL.\n", - "type": "object", - "required": [ - "id", - "resourceId", - "extCps" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "extCps": { - "description": "External CPs of the VNF to be connected to this external VL.\n", - "type": "array", - "items": { - "description": "This type represents configuration information for external CPs created from a CPD.\n", - "type": "object", - "required": [ - "cpdId" - ], - "properties": { - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cpConfig": { - "description": "List of instance data that need to be configured on the CP instances created from the respective CPD.\n", - "type": "array", - "items": { - "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", - "type": "object", - "properties": { - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "linkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "cpProtocolData": { - "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": * The \"linkPortId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an existing external CP instance\n addressed by cpInstanceId. \n* At least one of these attributes shall be present for a to-be-created external CP instance or an existing external\n CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", - "type": "array", - "items": { - "description": "This type represents network protocol data.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet.\n", - "type": "object", - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "fixedAddresses": { - "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "numDynamicAddresses": { - "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", - "type": "integer" - }, - "addressRange": { - "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "extLinkPorts": { - "description": "Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the VNFM shall create the link ports on the external VL.\n", - "type": "array", - "items": { - "description": "This type represents an externally provided link port to be used to connect an external connection point to an external VL.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider.\n", - "type": "string" - } - } - } - } - } - } - } - } - }, - "extManagedVirtualLinks": { - "description": "Information about internal VLs that are managed by other entities than the VNFM. The indication of externally-managed internal VLs is needed in case networks have been pre-configured for use with certain VNFs, for instance to ensure that these networks have certain properties such as security or acceleration features, or to address particular network topologies. The present document assumes that externally-managed internal VLs are managed by the NFVO and created towards the VIM. External and/or externally-managed internal VLs can be passed in VNF lifecycle management operation requests such as InstantiateVnf or ChangeVnfFlavor, and/or in the grant response. The NFVO may choose to override in the grant response external and/or externally-managed VL instances that have been passed previously in the associated VNF lifecycle management request, if the lifecycle management request has originated from the NFVO itself.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "virtualLinkDescId", - "resourceId" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "virtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "additionalParams": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": [ - "self", - "vnfLcmOpOcc", - "vnfInstance" - ], - "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" - } - } - }, - "vnfLcmOpOcc": { - "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" - } - } - }, - "vnfInstance": { - "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" - } - } - } - } - } - } + "description": "This type represents a grant.\n", + "type": "object", + "required": [ + "id", + "vnfInstanceId", + "vnfLcmOpOccId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLcmOpOccId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimConnectionInfo": { + "description": "Provides information regarding VIM connections that are approved to be used by the VNFM to allocate resources, and provides parameters of these VIM connections. The VNFM shall update the \" vimConnectionInfo\" attribute of the \"VnfInstance\" structure by adding unknown entries received in this attribute. This attribute is not intended for the modification of vimConnectionInfo entries passed earlier; for that, the VnfInfoModificationRequest structure shall be used. This attribute shall only be supported when VNF-related Resource Management in direct mode is applicable. In direct mode, this parameter shall be absent if the VIM information was configured to the VNFM in another way, present otherwise. This interface allows to signal the use of multiple VIMs per VNF. However, due to the partial support of this feature in the present release, it is recommended in the present document that the number of entries in the \"vims\" attribute in the Grant is not greater than 1.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "zones": { + "description": "Identifies resource zones where the resources are approved to be allocated by the VNFM.\n", + "type": "array", + "items": { + "description": "This type provides information regarding a resource zone.\n", + "type": "object", + "required": [ + "id", + "zoneId" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "zoneGroups": { + "description": "Information about groups of resource zones that are related and that the NFVO has chosen to fulfil a zoneGroup constraint in the GrantVnfLifecycleOperation request. This information confirms that the NFVO has honoured the zoneGroup constraints that were passed as part of \"placementConstraints\" in the GrantRequest.\n", + "type": "array", + "items": { + "description": "This type provides information regarding a resource zone group. A resource zone group is a group of one or more related resource zones which can be used in resource placement constraints. To fulfil such constraint, the NFVO may decide to place a resource into any zone that belongs to a particular group. NOTE: A resource zone group can be used to support overflow from one resource zone into another, in case a particular deployment supports only non-elastic resource zones.\n", + "type": "object", + "required": [ + "zoneId" + ], + "properties": { + "zoneId": { + "description": "References of identifiers of \"ZoneInfo\" structures, each of which provides information about a resource zone that belongs to this group.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + }, + "addResources": { + "description": "List of resources that are approved to be added, with one entry per resource. Shall be set when resources are approved to be added.\n", + "type": "array", + "items": { + "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n", + "type": "object", + "required": [ + "resourceDefinitionId" + ], + "properties": { + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "resourceGroupId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "tempResources": { + "description": "List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with one entry per resource. Shall be set when resources are approved to be temporarily instantiated.\n", + "type": "array", + "items": { + "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n", + "type": "object", + "required": [ + "resourceDefinitionId" + ], + "properties": { + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "resourceGroupId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "removeResources": { + "description": "List of resources that are approved to be removed, with one entry per resource. Shall be set when resources are approved to be removed.\n", + "type": "array", + "items": { + "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n", + "type": "object", + "required": [ + "resourceDefinitionId" + ], + "properties": { + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "resourceGroupId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "updateResources": { + "description": "List of resources that are approved to be modified, with one entry per resource. Shall be set when resources are approved to be updated.\n", + "type": "array", + "items": { + "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n", + "type": "object", + "required": [ + "resourceDefinitionId" + ], + "properties": { + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "resourceGroupId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "vimAssets": { + "description": "Information about assets for the VNF that are managed by the NFVO in the VIM, such as software images and virtualised compute resource flavours. The Grant response allows the NFVO to pass to the VNFM VIM assets related to the VNF package that is identified by the vnfdId attribute in the corresponding Grant request. The NFVO may send in each Grant response the full set of VIM assets related to the VNF package defined by the vnfdId in the related Grant request, but shall send this information if the vnfdId in the related Grant request differs from the vnfdId passed in the previous Grant request, or if the Grant response is related to an InstantiateVnf operation. The set of VIM assets shall not change between subsequent Grant responses if the vnfdId has not changed. During each LCM operation occurrence, the VIM assets that relate to the VNF package identified by the current value of the vnfdId attribute in the “VnfInstance” structure shall be used by the VNFM for newly created resources. If the VNF package identifier of the VNF instance has been updated, VIM assets that relate to the previously-used VNF package(s), and that were communicated in previous Grant responses, apply to existing resources.\n", + "type": "object", + "properties": { + "computeResourceFlavours": { + "description": "Mappings between virtual compute descriptors defined in the VNFD and compute resource flavours managed in the VIM.\n", + "type": "array", + "items": { + "description": "If the VIM requires the use of virtual compute resource flavours during compute resource instantiation, it is assumed that such flavours are selected or created by the NFVO based on the information in the virtual compute descriptor defined in the VNFD. This type defines the mapping between a virtual compute descriptor in the VNFD and the corresponding compute resource flavour managed by the NFVO in the VIM.\n", + "type": "object", + "required": [ + "vnfdVirtualComputeDescId", + "vimFlavourId" + ], + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfdVirtualComputeDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vimFlavourId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "softwareImages": { + "description": "Mappings between software images defined in the VNFD and software images managed in the VIM.\n", + "type": "array", + "items": { + "description": "This type contains a mapping between a software image definition the VNFD and the corresponding software image managed by the NFVO in the VIM which is needed during compute resource instantiation.\n", + "type": "object", + "required": [ + "vnfdSoftwareImageId", + "vimSoftwareImageId" + ], + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfdSoftwareImageId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vimSoftwareImageId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "snapshotResources": { + "description": "Mappings between snapshot resources defined in the VNF snapshot package and resources managed in the VIM.\n", + "type": "array", + "items": { + "description": "This type contains a mapping between a snapshot resource definition related to a VNF snapshot and the corresponding resource managed by the NFVO in the VIM which is needed during the revert to VNF snapshot operation.\n", + "type": "object", + "required": [ + "vnfSnapshotId", + "vnfcSnapshotId", + "vimSnapshotResourceId" + ], + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshotId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcSnapshotId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "storageSnapshotId": { + "description": "Identifier of the virtual storage resource that has been snapshotted as referred in the VNFC snapshot information. Shall only be present if the snapshot resource in the VIM is a storage resource (as indicated by \"type=STORAGE\" in the parent resource definition). $ref: \"../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf\"\n" + }, + "vimSnapshotResourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "extVirtualLinks": { + "description": "Information about external VLs to connect the VNF to. External and/or externally-managed internal VLs can be passed in VNF lifecycle management operation requests such as InstantiateVnf, ChangeVnfFlavor, ChangeExtVnfConnectivity or ChangeCurrentVnfPackage and/or in the grant response. The NFVO may choose to override in the grant response external and/or externally-managed VL instances that have been passed previously in the associated VNF lifecycle management request, if the lifecycle management request has originated from the NFVO itself. In case of granting an InstantiateVnf request that has originated from the NFVO and that did not contain the \"extVirtualLinks\" attribute, this attribute shall be set by the NFVO. Further in case of granting an InstantiateVnf request that has originated from the NFVO and that did not contain the \"extManagedVirtualLinks\" attribute, this attribute shall be set by the NFVO if there is the need to provide information about externally-managed virtual links.\nIf this attribute is present , it need not contain those entries that are unchanged compared to the entries that were passed in the LCM operation which is related to this granting exchange. External and/or externally-managed internal VLs can be passed in VNF lifecycle management operation requests such as InstantiateVnf, ChangeVnfFlavor, ChangeExtVnfConnectivity or ChangeCurrentVnfPackage and/or in the grant response. The NFVO may choose to override in the grant response external and/or externally-managed VL instances that have been passed previously in the associated VNF lifecycle management request, if the lifecycle management request has originated from the NFVO itself. In case of granting an InstantiateVnf request that has originated from the NFVO and that did not contain the \"extVirtualLinks\" attribute, this attribute shall be set by the NFVO. Further in case of granting an InstantiateVnf request that has originated from the NFVO and that did not contain the \"extManagedVirtualLinks\" attribute, this attribute shall be set by the NFVO if there is the need to provide information about externally-managed virtual links.\n", + "type": "array", + "items": { + "description": "This type represents an external VL.\n", + "type": "object", + "required": [ + "id", + "resourceId", + "extCps" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "extCps": { + "description": "External CPs of the VNF to be connected to this external VL.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "extLinkPorts": { + "description": "Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the VNFM shall create the link ports on the external VL.\n", + "type": "array", + "items": { + "description": "This type represents an externally provided link port to be used to connect an external connection point to an external VL.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "extManagedVirtualLinks": { + "description": "Information about internal VLs that are managed by other entities than the VNFM. The indication of externally-managed internal VLs is needed in case networks have been pre-configured for use with certain VNFs, for instance to ensure that these networks have certain properties such as security or acceleration features, or to address particular network topologies. The present document assumes that externally-managed internal VLs are managed by the NFVO and created towards the VIM. External and/or externally-managed internal VLs can be passed in VNF lifecycle management operation requests such as InstantiateVnf, ChangeVnfFlavor, ChangeExtVnfConnectivity or ChangeCurrentVnfPackage and/or in the grant response. The NFVO may choose to override in the grant response external and/or externally-managed VL instances that have been passed previously in the associated VNF lifecycle management request, if the lifecycle management request has originated from the NFVO itself. In case of granting an InstantiateVnf request that has originated from the NFVO and that did not contain the \"extVirtualLinks\" attribute, this attribute shall be set by the NFVO. Further in case of granting an InstantiateVnf request that has originated from the NFVO and that did not contain the \"extManagedVirtualLinks\" attribute, this attribute shall be set by the NFVO if there is the need to provide information about externally-managed virtual links.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "resourceId" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vnfLinkPort": { + "description": "Externally provided link ports to be used to connect VNFC connection points to this externally-managed VL on this network resource. If this attribute is not present, the VNFM shall create the link ports on the externally-managed VL.\n", + "type": "array", + "items": { + "description": "This type represents an externally provided link port to be used to connect a VNFC connection point to an exernally managed VL.\n", + "type": "object", + "required": [ + "vnfLinkPortId", + "resourceHandle" + ], + "properties": { + "vnfLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + } + } + } + }, + "extManagedMultisiteVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "additionalParams": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "vnfLcmOpOcc", + "vnfInstance" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfLcmOpOcc": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } } \ No newline at end of file -- GitLab From ab31b3da3608b0c4217a1a6f592986fba0382e64 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 5 Mar 2021 18:36:01 +0500 Subject: [PATCH 315/580] updated refs --- .../ApiVersion.robot | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot index 37846692b..a15fe5c36 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 0f5a6ab86c647a7eeb0c018a20b5bbcd443abc61 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Fri, 5 Mar 2021 08:48:29 +0100 Subject: [PATCH 316/580] versions updated --- .../IndividualSubscription.robot | 12 ++++---- .../NotificationConsumer.robot | 2 +- .../NotificationEndpoint.robot | 2 +- .../Subscriptions.robot | 30 +++++++++---------- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot index e1de22b87..975d3929b 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot @@ -15,7 +15,7 @@ Create new Virtualised Resources Quota Available Notification individual subscri ... Test title: Create new Virtualised Resources Quota Available Notification individual subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Virtualised Resources Quota Available Notification individual subscription instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Get Information about an individual subscription ... Test title: Get Information about an individual subscription ... Test objective: The objective is to read an individual Virtualised Resources Quota Available Notification subscription subscribed by the client and perform a JSON schema and content validation of the returned individual subscription data structure ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update a existing Virtualised Resources Quota Available Notification individual subscription instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify a existing Virtualised Resources Quota Available Notification individual subscription instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that Delete method is allowed to remove a existing Virtualised Resources Quota Available Notification individual subscription instance on VNF ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ Get Information about an individual subscription - Not Found ... Test title: Get Information about an individual subscription - Not Found ... Test objective: The objective is to test that the retrieval of an individual Virtualised Resources Quota Available Notification subscription subscribed by the client fils when resource is not present ... Pre-conditions: The subscription with the given id does not exists - ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot index e02be2df5..78a0ee82a 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot @@ -13,7 +13,7 @@ Vr Quota Availibility Notification ... Test title: Vr Quota Availibility Notification ... Test objective: The objective is to test that Vr Quota Availibility Notification is delivered with success to the notification consumer ... Pre-conditions: The VNF has subscribed to the Vr Quota Availibility resource - ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot index 9d81b4580..220225ffb 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot @@ -16,7 +16,7 @@ Deliver a notification - Vr Quota Availibility ... Test title: Deliver a notification - Vr Quota Availibility ... Test objective: The objective is to notify related to the availability of the virtualised resources quota. ... Pre-conditions: The VNF has subscribed to the Vr Quota Availibility resource - ... Reference: Clause 11.4.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot index 30d90c4f9..a3dfb81a6 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot @@ -14,8 +14,8 @@ Create new Virtualised Resources Quota Available Notification subscription [Documentation] Test ID: 7.3.7.1.1 ... Test title: Create new Virtualised Resources Quota Available Notification subscription ... Test objective: The objective is to create a new Virtualised Resources Quota Available Notification subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: no subscription with the same filter and callbackUri exists - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Pre-conditions: no subscription with the same filter and callback Uri exists + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,8 +28,8 @@ Create new Virtualised Resources Quota Available Notification subscription - DUP [Documentation] Test ID: 7.3.7.1.2 ... Test title: Create new Virtualised Resources Quota Available Notification subscription - DUPLICATION ... Test objective: The objective is to create a new Virtualised Resources Quota Available Notification subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure - ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Pre-conditions: subscription with the same filter and callback Uri exists + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: the VNFM allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists ... Post-Conditions: none @@ -42,8 +42,8 @@ Create new Virtualised Resources Quota Available Notification subscription - NO- [Documentation] Test ID: 7.3.7.1.3 ... Test title: Create new Virtualised Resources Quota Available Notification subscription - NO-DUPLICATION ... Test objective: The objective is to create a nduplicated Virtualised Resources Quota Available Notification subscription and verify that the VNF does not allow duplication - ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Pre-conditions: subscription with the same filter and callback Uri exists + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: the VNFM decides to not create a duplicate subscription resource ... Post-Conditions: none @@ -56,7 +56,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions ... Test title: GET Virtualised Resources Quota Available Notification Subscriptions ... Test objective: The objective is to retrieve the list of active Virtualised Resources Quota Available Notification subscriptions and perform a JSON schema and content validation of the returned subscriptions data structure ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions with attrib ... Test title: GET Virtualised Resources Quota Available Notification Subscriptions with attribute-based Filter ... Test objective: The objective is to retrieve the list of active Virtualised Resources Quota Available Notification subscriptions and perform a JSON schema and content validation of the returned subscriptions data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ GET Virtualised Resources Quota Available Notification subscriptions - Bad Reque ... Test title: GET Virtualised Resources Quota Available Notification subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active Virtualised Resources Quota Available Notification subscriptions with invalid attribute-based filtering parameters, and verify that problem details are returned ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ PUT Virtualised Resources Quota Available Notification subscriptions - Method no ... Test title: PUT Virtualised Resources Quota Available Notification subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update existing Virtualised Resources Quota Available Notification subscriptions instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -107,7 +107,7 @@ PATCH Virtualised Resources Quota Available Notification subscriptions - Method ... Test title: PATCH Virtualised Resources Quota Available Notification subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify Virtualised Resources Quota Available Notification subscriptions instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -119,7 +119,7 @@ DELETE Virtualised Resources Quota Available Notification subscriptions - Method ... Test title: DELETE Virtualised Resources Quota Available Notification subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to delete Virtualised Resources Quota Available Notification subscriptions instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -131,7 +131,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions as Paged Re ... Test title: GET Virtualised Resources Quota Available Notification Subscriptions as Paged Response ... Test objective: The objective is to retrieve the list of active Virtualised Resources Quota Available Notification subscriptions as a Paged Response. ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -144,7 +144,7 @@ GET Virtualised Resources Quota Available Notification subscriptions - Bad Reque ... Test title: GET Virtualised Resources Quota Available Notification subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of active Virtualised Resources Quota Available Notification subscriptions list fails because response is too big, and verify that problem details are returned ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -157,7 +157,7 @@ Create new Virtualised Resources Quota Available Notification Subscription - Unp ... Test title: Create new Virtualised Resources Quota Available Notification Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From fcc71963dcfbea90282d9822487fc020a88f695f Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 5 Mar 2021 18:09:43 +0500 Subject: [PATCH 317/580] updated reference --- .../ApiVersion.robot | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot index 851231ae0..555873c1c 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot @@ -11,7 +11,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 72913db81ee9d06d3bc2a9683aa87c2ec502a5f8 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 24 Mar 2021 13:44:16 +0500 Subject: [PATCH 318/580] NotificationEndpoint resource updated --- .../NotificationEndpoint.robot | 115 +++++------- .../environment/variables.txt | 3 + .../jsons/VrQuotaAvailNotification.json | 1 - .../VrQuotaAvailNotification.schema.json | 8 + .../VrQuotaAvailSubscription.schema.json | 84 ++++++++- .../VrQuotaAvailSubscriptions.schema.json | 168 +++++++++--------- .../vrQuotaAvailNotification.schema.json | 0 7 files changed, 225 insertions(+), 154 deletions(-) create mode 100644 SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/VrQuotaAvailNotification.schema.json delete mode 100644 SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/vrQuotaAvailNotification.schema.json diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot index 220225ffb..918c54a82 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot @@ -1,83 +1,62 @@ *** Settings *** Resource environment/variables.txt -Resource VRQANOperationKeywords.robot Suite Setup Create Sessions Suite Teardown Terminate All Processes kill=true Library MockServerLibrary Library Process Library OperatingSystem - -*** Variables *** - +Library Collections *** Test Cases *** -Deliver a notification - Vr Quota Availibility - [Documentation] Test ID: 11.4.4.1 - ... Test title: Deliver a notification - Vr Quota Availibility - ... Test objective: The objective is to notify related to the availability of the virtualised resources quota. - ... Pre-conditions: The VNF has subscribed to the Vr Quota Availibility resource - ... Reference: Clause 11.4.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 +Virtual Quota Available Notification + [Documentation] Test ID: 7.3.7.5.1 + ... Test title: Virtual Quota Available Notification + ... Test objective: The objective is to test the dispatch of Virtual Quota Available Notification, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A subscription for Virtual Quota Available Notification is available in the VNFM. + ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM - ... Applicability: - ... Post-Conditions: - log The POST method delivers a notification from the server to the client. - ${json}= Get File schemas/VrQuotaAvailNotification.schema.json - ${BODY}= evaluate json.loads('''${json}''') json - Log Creating mock request and response to handle Vr Quota AvailibilityNotification - &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${BODY} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 - Create Mock Expectation ${req} ${rsp} - Sleep ${sleep_interval} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} - -Test a notification end point - log The GET method allows the server to test the notification endpoint - &{req}= Create Mock Request Matcher GET ${callback_endpoint} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 - Create Mock Expectation ${req} ${rsp} - Sleep ${sleep_interval} - Verify Mock Expectation ${req} - Clear Requests ${callback_endpoint} - -PUT notification - Method not implemented - Log PUT Method not implemented - &{req}= Create Mock Request Matcher PUT ${callback_endpoint} - &{rsp}= Create Mock Response status_code=405 - Create Mock Expectation ${req} ${rsp} - Sleep ${sleep_interval} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} - -PATCH subscriptions - Method not implemented - Log PATCH Method not implemented - &{req}= Create Mock Request Matcher PATCH ${callback_endpoint} - &{rsp}= Create Mock Response status_code=405 - Create Mock Expectation ${req} ${rsp} - Sleep ${sleep_interval} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} + ... Applicability: none + ... Post-Conditions: none + Trigger a dispatch of virtual quota available notification (external action) + Check Virtual Quota Available Notification Http POST Request Body Json Schema Is VrQuotaAvailNotification + Check Virtual Quota Available Notification Http POST Request Body notificationType attribute Is VrQuotaAvailNotification + +*** Keywords *** -DELETE subscriptions - Method not implemented - Log DELETE Method not implemented - &{req}= Create Mock Request Matcher DELETE ${callback_endpoint} - &{rsp}= Create Mock Response status_code=405 - Create Mock Expectation ${req} ${rsp} - Sleep ${sleep_interval} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} +Trigger a dispatch of virtual quota available notification (external action) + #do nothing + Log do nothing + +Check Virtual Quota Available Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + +Check Virtual Quota Available Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Virtual Quota Available Notification Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + +Configure Virtual Quota Available Notification Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Configure Notification Forward + [Arguments] ${schema} ${endpoint} ${endpoint_fwd} + Log Creating mock Http POST forward to handle ${schema} + &{notification_tmp}= Create Mock Request Matcher POST ${endpoint} body_type="JSON_SCHEMA" body=${schema} + &{notification_fwd}= Create Mock Http Forward ${endpoint_fwd} + Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} -*** Keywords *** Create Sessions Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance Wait For Process handle=mockInstance timeout=5s on_timeout=continue - Create Mock Session ${callback_uri}:${callback_port} - + Create Mock Session ${callback_uri}:${callback_port} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt index a705ad751..3a90362a0 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt @@ -15,11 +15,14 @@ ${sub_filter} filter ${sub_filter_invalid} filter_invalid ${callback_endpoint} /notification +${callback_endpoint_fwd} /endpoint/check ${callback_subscribe} /subscribe ${callback_port} 9091 ${callback_uri} http://localhost ${sleep_interval} 20s +${notification_request} [] +${notification_response} [] ${apiRoot} / ${apiName} vrqan diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/VrQuotaAvailNotification.json b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/VrQuotaAvailNotification.json index e24fb8108..7cab6f283 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/VrQuotaAvailNotification.json +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/VrQuotaAvailNotification.json @@ -1,4 +1,3 @@ - {{ "id":"", "notificationType":"VrQuotaAvailNotification", diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/VrQuotaAvailNotification.schema.json b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/VrQuotaAvailNotification.schema.json new file mode 100644 index 000000000..31a1800bb --- /dev/null +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/VrQuotaAvailNotification.schema.json @@ -0,0 +1,8 @@ +{ + "id":"", + "notificationType":"VrQuotaAvailNotification", + "subscriptionId": "", + "timeStamp":"", + "resourceGroupId":"", + "_links": "" +} \ No newline at end of file diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/VrQuotaAvailSubscription.schema.json b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/VrQuotaAvailSubscription.schema.json index aaa9c5405..8f37c51c1 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/VrQuotaAvailSubscription.schema.json +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/VrQuotaAvailSubscription.schema.json @@ -1 +1,83 @@ -{ "description": "This type represents a subscription related to notifications related to the availability of the virtualised resources quotas.\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 the availability of the virtualised resources quotas. 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": { "vimIds": { "description": "Match VIMs that were created the quota for a consumer of the virtualised resources. This attribute shall only be supported when VNF-related Resource Management in direct mode is applicable.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" } }, "resourceProviderIds": { "description": "Match the entities responsible for the management of the virtualised resources that were allocated by the NFVO. This attribute shall only be supported when VNF-related Resource Management in indirect mode is applicable. The identification scheme is outside the scope of the present document.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" } }, "resourceTypes": { "description": "Match particular resource types.\n", "type": "array", "items": { "type": "string", "enum": [ "COMPUTE", "STORAGE", "NETWORK" ] } }, "resourceGroupIds": { "description": "Match the \"infrastructure resource groups\" that are logical groupings of the virtualised resources assigned to a tenant within an infrastructure Domain.\n", "type": "array", "items": { "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" } } } }, "callbackUri": { "description": "String formatted according to IETF RFC 3986.\n", "type": "string" }, "_links": { "description": "Links for 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 +{ + "description": "This type represents a subscription related to notifications related to the availability of the virtualised resources quotas.\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 the availability of the virtualised resources quotas. 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": { + "vimIds": { + "description": "Match VIMs that were created the quota for a consumer of the virtualised resources. This attribute shall only be supported when VNF-related Resource Management in direct mode is applicable.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "resourceProviderIds": { + "description": "Match the entities responsible for the management of the virtualised resources that were allocated by the NFVO. This attribute shall only be supported when VNF-related Resource Management in indirect mode is applicable. The identification scheme is outside the scope of the present document.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "resourceTypes": { + "description": "Match particular resource types.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] + } + }, + "resourceGroupIds": { + "description": "Match the \"infrastructure resource groups\" that are logical groupings of the virtualised resources assigned to a tenant within an infrastructure Domain.\n", + "type": "array", + "items": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/VrQuotaAvailSubscriptions.schema.json b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/VrQuotaAvailSubscriptions.schema.json index 8bab3d157..9ad57bc21 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/VrQuotaAvailSubscriptions.schema.json +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/VrQuotaAvailSubscriptions.schema.json @@ -1,87 +1,87 @@ { "type": "array", - "items": { - "description": "This type represents a subscription related to notifications related to the availability of the virtualised resources quotas.\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 the availability of the virtualised resources quotas. 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": { - "vimIds": { - "description": "Match VIMs that were created the quota for a consumer of the virtualised resources. This attribute shall only be supported when VNF-related Resource Management in direct mode is applicable.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "resourceProviderIds": { - "description": "Match the entities responsible for the management of the virtualised resources that were allocated by the NFVO. This attribute shall only be supported when VNF-related Resource Management in indirect mode is applicable. The identification scheme is outside the scope of the present document.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "resourceTypes": { - "description": "Match particular resource types.\n", - "type": "array", - "items": { - "type": "string", - "enum": [ - "COMPUTE", - "STORAGE", - "NETWORK" - ] - } - }, - "resourceGroupIds": { - "description": "Match the \"infrastructure resource groups\" that are logical groupings of the virtualised resources assigned to a tenant within an infrastructure Domain.\n", - "type": "array", - "items": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "callbackUri": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - }, - "_links": { - "description": "Links for 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" - } - } - } - } - } - } + "items": + { + "description": "This type represents a subscription related to notifications related to the availability of the virtualised resources quotas.\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 the availability of the virtualised resources quotas. 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": { + "vimIds": { + "description": "Match VIMs that were created the quota for a consumer of the virtualised resources. This attribute shall only be supported when VNF-related Resource Management in direct mode is applicable.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "resourceProviderIds": { + "description": "Match the entities responsible for the management of the virtualised resources that were allocated by the NFVO. This attribute shall only be supported when VNF-related Resource Management in indirect mode is applicable. The identification scheme is outside the scope of the present document.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "resourceTypes": { + "description": "Match particular resource types.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] + } + }, + "resourceGroupIds": { + "description": "Match the \"infrastructure resource groups\" that are logical groupings of the virtualised resources assigned to a tenant within an infrastructure Domain.\n", + "type": "array", + "items": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } } -} +} \ No newline at end of file diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/vrQuotaAvailNotification.schema.json b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/vrQuotaAvailNotification.schema.json deleted file mode 100644 index e69de29bb..000000000 -- GitLab From 8f94f9836f1ead694b5c1502d480e22d1cd246b4 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 24 Mar 2021 10:19:40 +0100 Subject: [PATCH 319/580] upd to notification --- .../NotificationEndpoint.robot | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot index 918c54a82..60f9d33b9 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot @@ -8,31 +8,31 @@ Library OperatingSystem Library Collections *** Test Cases *** -Virtual Quota Available Notification +Virtualised Resource Quota Available Notification [Documentation] Test ID: 7.3.7.5.1 - ... Test title: Virtual Quota Available Notification - ... Test objective: The objective is to test the dispatch of Virtual Quota Available Notification, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. - ... Pre-conditions: A subscription for Virtual Quota Available Notification is available in the VNFM. + ... Test title: Virtualised Resource Quota Available Notification + ... Test objective: The objective is to test the dispatch of Virtualised Resource Quota Available Notification, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A subscription for Virtualised Resource Quota Available Notification is available in the VNFM. ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Trigger a dispatch of virtual quota available notification (external action) - Check Virtual Quota Available Notification Http POST Request Body Json Schema Is VrQuotaAvailNotification - Check Virtual Quota Available Notification Http POST Request Body notificationType attribute Is VrQuotaAvailNotification + Trigger a dispatch of virtualised resource quota available notification (external action) + Check Virtualised Resource Quota Available Notification Http POST Request Body Json Schema Is VrQuotaAvailNotification + Check Virtualised Resource Quota Available Notification Http POST Request Body notificationType attribute Is VrQuotaAvailNotification *** Keywords *** -Trigger a dispatch of virtual quota available notification (external action) +Trigger a dispatch of virtualised resource quota available notification (external action) #do nothing Log do nothing -Check Virtual Quota Available Notification Http POST Request Body Json Schema Is +Check Virtualised Resource Quota Available Notification Http POST Request Body Json Schema Is [Arguments] ${element} ${schema}= Get File schemas/${element}.schema.json Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} -Check Virtual Quota Available Notification Http POST Request Body notificationType attribute Is +Check Virtualised Resource Quota Available Notification Http POST Request Body notificationType attribute Is [Arguments] ${type} Configure Virtual Quota Available Notification Handler ${callback_endpoint_fwd} ${type} Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} @@ -45,8 +45,9 @@ Configure Virtual Quota Available Notification Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${req} ${notification_request} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward -- GitLab From fb89f47f0b8188122d3aee0365fd4807602d38f7 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Tue, 9 Mar 2021 19:46:31 +0500 Subject: [PATCH 320/580] new resources added in NFVICapacityInformation-API --- .../ApiVersion.robot | 125 +++++ .../CapacityThresholds.robot | 131 +++++ .../IndividualCapacityThreshold.robot | 105 ++++ ...ndividualVIMsNFVICapacityInformation.robot | 90 ++++ .../NFVICapacityInformation.robot | 194 +++++++ .../NFVICapacityInformationKeywords.robot | 500 ++++++++++++++++++ .../NotificationConsumer.robot | 77 +++ .../environment/variables.txt | 95 ++++ .../jsons/CapacityShortageNotification.json | 21 + .../jsons/CapacityThresholdModifications.json | 3 + .../jsons/CreateCapacityThresholdRequest.json | 15 + .../schemas/CapacityThreshold.schema.json | 144 +++++ .../schemas/CapacityThresholds.schema.json | 148 ++++++ .../schemas/NfviCapacityInfo.schema.json | 143 +++++ .../schemas/NfviCapacityInfos.schema.json | 147 +++++ .../schemas/ProblemDetails.schema.json | 32 ++ 16 files changed, 1970 insertions(+) create mode 100644 SOL005/NFVICapacityInformation-API/ApiVersion.robot create mode 100644 SOL005/NFVICapacityInformation-API/CapacityThresholds.robot create mode 100644 SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot create mode 100644 SOL005/NFVICapacityInformation-API/IndividualVIMsNFVICapacityInformation.robot create mode 100644 SOL005/NFVICapacityInformation-API/NFVICapacityInformation.robot create mode 100644 SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot create mode 100644 SOL005/NFVICapacityInformation-API/NotificationConsumer.robot create mode 100644 SOL005/NFVICapacityInformation-API/environment/variables.txt create mode 100644 SOL005/NFVICapacityInformation-API/jsons/CapacityShortageNotification.json create mode 100644 SOL005/NFVICapacityInformation-API/jsons/CapacityThresholdModifications.json create mode 100644 SOL005/NFVICapacityInformation-API/jsons/CreateCapacityThresholdRequest.json create mode 100644 SOL005/NFVICapacityInformation-API/schemas/CapacityThreshold.schema.json create mode 100644 SOL005/NFVICapacityInformation-API/schemas/CapacityThresholds.schema.json create mode 100644 SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfo.schema.json create mode 100644 SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfos.schema.json create mode 100644 SOL005/NFVICapacityInformation-API/schemas/ProblemDetails.schema.json diff --git a/SOL005/NFVICapacityInformation-API/ApiVersion.robot b/SOL005/NFVICapacityInformation-API/ApiVersion.robot new file mode 100644 index 000000000..7a3b7f8b1 --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/ApiVersion.robot @@ -0,0 +1,125 @@ +*** Settings *** +Resource NFVICapacityInformationKeywords.robot + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 5.3.6.1.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 5.3.6.1.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 5.3.6.1.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 5.3.6.1.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 5.3.6.1.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.6.1.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 5.3.6.1.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.6.1.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.6.1.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.6.1.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/CapacityThresholds.robot b/SOL005/NFVICapacityInformation-API/CapacityThresholds.robot new file mode 100644 index 000000000..41887777e --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/CapacityThresholds.robot @@ -0,0 +1,131 @@ +*** Settings *** +Resource NFVICapacityInformationKeywords.robot + +*** Test Cases *** +POST Create Capacity Threshold + [Documentation] Test ID: 5.3.6.3.1 + ... Test title: POST Create Capacity Threshold + ... Test objective: The objective is to test that POST method creates a Capacity Threshold + ... Pre-conditions: none + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST Create a Capacity Threshold + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is CapacityThreshold + Check HTTP Response Contains Resource URI + +POST Create Capacity Threshold - Unprocessible Entity + [Documentation] Test ID: 5.3.6.3.2 + ... Test title: POST Create Capacity Threshold - Unprocessible Entity + ... Test objective: The objective is to test that POST method creates a Capacity Threshold + ... Pre-conditions: none + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST Create a Capacity Threshold - Unreachable URI + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Capacity Thresholds + [Documentation] Test ID: 5.3.6.3.3 + ... Test title: GET Capacity Thresholds + ... Test objective: The objective is to GET Capacity Thresholds objects + ... Pre-conditions: none + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Capacity Thresholds + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CapacityThresholds + +GET Capacity Thresholds - Filter + [Documentation] Test ID: 5.3.6.3.4 + ... Test title: GET Capacity Thresholds - Filter + ... Test objective: The objective is to GET Capacity Thresholds objects using filter + ... Pre-conditions: none + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Capacity Thresholds using filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CapacityThresholds + +GET Capacity Thresholds Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 5.3.6.3.5 + ... Test title: GET Capacity Thresholds Bad Request Invalid attribute-based filtering parameters + ... Test objective: The objective is to get information about Capacity Thresholds with Invalid attribute-based filtering parameters + ... Pre-conditions: none + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Capacity Thresholds using invalid filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Capacity Thresholds - Bad Request Response too Big + [Documentation] Test ID: 5.3.6.3.6 + ... Test title: GET Capacity Thresholds - Bad Request Response too Big + ... Test objective: The objective is test that the retrieval of existing Capacity Thresholds list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO does not support paged response. + ... Post-Conditions: none + GET Capacity Thresholds without Paging support + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Capacity Thresholds as Paged Response + [Documentation] Test ID: 5.3.6.3.7 + ... Test title: GET Capacity Thresholds as Paged Response + ... Test objective: The objective is to test that GET method retrieves the list of existing Capacity Thresholds as paged response. + ... Pre-conditions: none + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO supports paged response. + ... Post-Conditions: none + GET Capacity Thresholds with Paging support + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +PUT Capacity Thresholds - Method not implemented + [Documentation] Test ID: 5.3.6.3.8 + ... Test title: PUT Capacity Thresholds - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT Capacity Thresholds + Check HTTP Response Status Code Is 405 + +PATCH Capacity Thresholds - Method not implemented + [Documentation] Test ID: 5.3.6.3.9 + ... Test title: PATCH Capacity Thresholds - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH Capacity Thresholds + Check HTTP Response Status Code Is 405 + +DELETE Capacity Thresholds - Method not implemented + [Documentation] Test ID: 5.3.6.3.10 + ... Test title: DELETE Capacity Thresholds - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE Capacity Thresholds + Check HTTP Response Status Code Is 405 diff --git a/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot b/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot new file mode 100644 index 000000000..fc3f2003e --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot @@ -0,0 +1,105 @@ +*** Settings *** +Resource NFVICapacityInformationKeywords.robot + +*** Test Cases *** +POST Individual Capacity Threshold + [Documentation] Test ID: 5.3.6.4.1 + ... Test title: POST Individual Capacity Threshold + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST Individual Capacity Threshold + Check HTTP Response Status Code Is 405 + +GET Individual Capacity Thresholds + [Documentation] Test ID: 5.3.6.4.2 + ... Test title: GET Capacity Thresholds + ... Test objective: The objective is to test that GET method reads information about Individual Capacity Threshold + ... Pre-conditions: none + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual Capacity Threshold + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CapacityThresholds + +GET Individual Capacity Thresholds - NOT FOUND + [Documentation] Test ID: 5.3.6.4.3 + ... Test title: GET Capacity Thresholds - NOT FOUND + ... Test objective: The objective is to test that GET method returns an error when using and invalid URI + ... Pre-conditions: none + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual Capacity Threshold - Invalid URI + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Individual Capacity Threshold - Method not implemented + [Documentation] Test ID: 5.3.6.4.4 + ... Test title: PUT Capacity Thresholds - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT Individual Capacity Threshold + Check HTTP Response Status Code Is 405 + +PATCH Individual Capacity Threshold - Success + [Documentation] Test ID: 5.3.6.4.5 + ... Test title: PATCH Individual Capacity Threshold - Success + ... Test objective: The objective is to test that PATCH method successfully modifies an individual Capacity Threshold resource + ... Pre-conditions: none + ... Reference: Clause 10.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: Capacity Threshold modified + PATCH Individual Capacity Threshold + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CapacityThresholds + +PATCH Individual Capacity Threshold - Precondition Failed + [Documentation] Test ID: 5.3.6.4.6 + ... Test title: PATCH Individual Capacity Threshold - Precondition Failed + ... Test objective: The objective is to that the modification of individual Capacity Threshold fails because precondition given in an HTTP request header is not fulfilled due to an ETag mismatch. + ... Pre-conditions: none + ... Reference: Clause 10.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH Individual Capacity Threshold - ETag Mismatch + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails + +PATCH Individual Capacity Threshold - Unprocessible Entity + [Documentation] Test ID: 5.3.6.4.7 + ... Test title: PATCH Individual Capacity Threshold - Precondition Failed + ... Test objective: The objective is to that the modification of individual Capacity Threshold fails because callbackUri provided in the request body is unreachable. + ... Pre-conditions: none + ... Reference: Clause 10.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH Individual Capacity Threshold - Unreachable CallbackURI + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + +DELETE Individual VNF Snapshot + [Documentation] Test ID: 7.3.1.41.8 + ... Test title: DELETE Individual VNF Snapshot + ... Test objective: The objective is to delete a VNF Snapshot + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF Snapshot deleted + DELETE Individual Capacity Threshold + Check HTTP Response Status Code Is 204 + Check Postcondition resource is deleted \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/IndividualVIMsNFVICapacityInformation.robot b/SOL005/NFVICapacityInformation-API/IndividualVIMsNFVICapacityInformation.robot new file mode 100644 index 000000000..048f031cc --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/IndividualVIMsNFVICapacityInformation.robot @@ -0,0 +1,90 @@ +*** Settings *** +Resource NFVICapacityInformationKeywords.robot + +*** Test Cases *** +POST Individual VIMs NFVI Capacity Information - Method not implemented + [Documentation] Test ID: 5.3.6.3.1 + ... Test title: POST Individual VIMs NFVI Capacity Information - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST Individual VIMs NFVI Capacity Information + Check HTTP Response Status Code Is 405 + +GET Information about an Individual VIMs NFVI Capacity Information + [Documentation] Test ID: 5.3.6.3.2 + ... Test title: GET Information about an Individual VIMs NFVI Capacity Information + ... Test objective: The objective is to retrieve information about Individual VIMs NFVI Capacity Information + ... Pre-conditions: none + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual VIMs NFVI Capacity Information + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NfviCapacityInfo + +GET Information about an Individual VIMs NFVI Capacity Information using filter query parameter + [Documentation] Test ID: 5.3.6.3.2 + ... Test title: GET Information about an Individual VIMs NFVI Capacity Information using filter query parameter + ... Test objective: The objective is to retrieve information about Individual VIMs NFVI Capacity Information using filter query parameter + ... Pre-conditions: none + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual VIMs NFVI Capacity Information using filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NfviCapacityInfo + +GET Information about an Individual VIMs NFVI Capacity Information - NOT FOUND + [Documentation] Test ID: 5.3.6.3.4 + ... Test title: GET Information about an Individual VIMs NFVI Capacity Information - NOT FOUND + ... Test objective: The objective is to test that the retrieval of Individual VIMs NFVI Capacity Information fails when using an invalid resource identifier. + ... Pre-conditions: none + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual VIMs NFVI Capacity Information with Invalid VIM ID + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Individual VIMs NFVI Capacity Information - Method not implemented + [Documentation] Test ID: 5.3.6.3.5 + ... Test title: PUT Individual VIMs NFVI Capacity Information - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package not modified + PUT Individual VIMs NFVI Capacity Information + Check HTTP Response Status Code Is 405 + +PATCH Individual VIMs NFVI Capacity Information - Method Not implemented + [Documentation] Test ID: 5.3.6.3.6 + ... Test title: PATCH Individual VIMs NFVI Capacity Information + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package modified + PATCH Individual VIMs NFVI Capacity Information + Check HTTP Response Status Code Is 405 + +DELETE Individual VIMs NFVI Capacity Information - Method Not implemented + [Documentation] Test ID: 5.3.6.3.7 + ... Test title: DELETE Individual VIMs NFVI Capacity Information - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package deleted + DELETE Individual VIMs NFVI Capacity Information + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/NFVICapacityInformation.robot b/SOL005/NFVICapacityInformation-API/NFVICapacityInformation.robot new file mode 100644 index 000000000..07113ced8 --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/NFVICapacityInformation.robot @@ -0,0 +1,194 @@ +*** Settings *** +Resource NFVICapacityInformationKeywords.robot + +*** Test Cases *** +POST NFVI Capacity Information - Method not implemented + [Documentation] Test ID: 5.3.6.2.1 + ... Test title: POST NFVI Capacity Information - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST NFVI Capacity Information + Check HTTP Response Status Code Is 405 + +GET NFVI Capacity Information + [Documentation] Test ID: 5.3.6.2.2 + ... Test title: GET NFVI Capacity Information + ... Test objective: The objective is to GET NFVI Capacity Information objects + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET NFVI Capacity Information + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NfviCapacityInfos + +GET NFVI Capacity Information - Filter + [Documentation] Test ID: 5.3.6.2.3 + ... Test title: GET NFVI Capacity Information - Filter + ... Test objective: The objective is to GET NFVI Capacity Information objects using filter + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET NFVI Capacity Information with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NfviCapacityInfos + +GET NFVI Capacity Information Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 5.3.6.2.4 + ... Test title: GET NFVI Capacity Information Bad Request Invalid attribute-based filtering parameters + ... Test objective: The objective is to get information about NFVI Capacity Information with Invalid attribute-based filtering parameters + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET NFVI Capacity Information with bad attribute + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET NFVI Capacity Information Bad Request Invalid attribute selector + [Documentation] Test ID: 5.3.6.2.5 + ... Test title: GET NFVI Capacity Information Bad Request Invalid attribute selector + ... Test objective: The objective is to get information about NFVI Capacity Information with Invalid attribute selector + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET NFVI Capacity Information with bad filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET NFVI Capacity Information with "all_fields" attribute selector + [Documentation] Test ID: 5.3.6.2.6 + ... Test title: GET NFVI Capacity Information with "all_fields" attribute selector + ... Test objective: The objective is to query NFVI Capacity Information with "all_fields" attribute selector + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET NFVI Capacity Information with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NfviCapacityInfos + +GET NFVI Capacity Information with "exclude_default" attribute selector + [Documentation] Test ID: 5.3.6.2.7 + ... Test title: GET NFVI Capacity Information with "exclude_default" attribute selector + ... Test objective: The objective is to query NFVI Capacity Information with "exclude_default" attribute selector + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET NFVI Capacity Information with exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NfviCapacityInfos + +GET NFVI Capacity Information with "fields" attribute selector + [Documentation] Test ID: 5.3.6.2.8 + ... Test title: GET NFVI Capacity Information with "fields" attribute selector + ... Test objective: The objective is to query NFVI Capacity Information with "fields" attribute selector + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET NFVI Capacity Information with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NfviCapacityInfos + +GET NFVI Capacity Information with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 5.3.6.2.9 + ... Test title: GET NFVI Capacity Information with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to query NFVI Capacity Information with "exclude_default" and "fields" attribute selector + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET NFVI Capacity Information with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NfviCapacityInfos + +GET NFVI Capacity Information with "exclude_fields" attribute selector + [Documentation] Test ID: 5.3.6.2.10 + ... Test title: GET NFVI Capacity Information with "exclude_fields" attribute selector + ... Test objective: The objective is to query NFVI Capacity Information with "exclude_fields" attribute selector + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET NFVI Capacity Information with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NfviCapacityInfos + +GET NFVI Capacity Information - Bad Request Response too Big + [Documentation] Test ID: 5.3.6.2.11 + ... Test title: GET NFVI Capacity Information - Bad Request Response too Big + ... Test objective: The objective is test that the retrieval of existing NFVI Capacity Information list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO does not support paged response. + ... Post-Conditions: none + GET NFVI Capacity Information without Paging support + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET NFVI Capacity Information as Paged Response + [Documentation] Test ID: 5.3.6.2.12 + ... Test title: GET NFVI Capacity Information as Paged Response + ... Test objective: The objective is to test that GET method retrieves the list of existing NFVI Capacity Information as paged response. + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO supports paged response. + ... Post-Conditions: none + GET NFVI Capacity Information with Paging support + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +PUT NFVI Capacity Information - Method not implemented + [Documentation] Test ID: 5.3.6.2.13 + ... Test title: PUT NFVI Capacity Information - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT NFVI Capacity Information + Check HTTP Response Status Code Is 405 + +PATCH NFVI Capacity Information - Method not implemented + [Documentation] Test ID: 5.3.6.2.14 + ... Test title: PATCH NFVI Capacity Information - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH NFVI Capacity Information + Check HTTP Response Status Code Is 405 + +DELETE NFVI Capacity Information - Method not implemented + [Documentation] Test ID: 5.3.6.2.15 + ... Test title: DELETE NFVI Capacity Information - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE NFVI Capacity Information + Check HTTP Response Status Code Is 405 diff --git a/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot b/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot new file mode 100644 index 000000000..994af7b62 --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot @@ -0,0 +1,500 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library OperatingSystem +Library String + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK + +POST NFVI Capacity Information + Log Trying to perform a POST. This method should not be implemented. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET NFVI Capacity Information + Log The GET method queries information about NFVI Capacity Information. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET NFVI Capacity Information with filter + Log The GET method queries information about NFVI Capacity Information. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?${POS_FILTER} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET NFVI Capacity Information with bad attribute + Log The GET method queries information about NFVI Capacity Information. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?attribute_not_exist=some_value + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET NFVI Capacity Information with bad filter + Log The GET method queries information about NFVI Capacity Information. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?fields=wrong_field + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET NFVI Capacity Information with all_fields attribute selector + Log Query status information about NFVI Capacity Information, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?all_fields + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NFVI Capacity Information with exclude_default attribute selector + Log Query status information about NFVI Capacity Information using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NFVI Capacity Information with fields attribute selector + Log Query status information about NFVI Capacity Information, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NFVI Capacity Information with exclude_default and fields attribute selector + Log Query status information about NFVI Capacity Information, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NFVI Capacity Information with exclude_fields attribute selector + Log Query status information about NFVI Capacity Information, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?exclude_fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NFVI Capacity Information without Paging support + Run Keyword If ${PAGING_SUPPORTED} == 0 GET NFVI Capacity Information + +GET NFVI Capacity Information with Paging support + Run Keyword If ${PAGING_SUPPORTED} == 1 GET NFVI Capacity Information + +Check HTTP Response Header Contains Link + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + +PUT NFVI Capacity Information + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH NFVI Capacity Information + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE NFVI Capacity Information + Log Trying to perform a DELETE. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Individual VIMs NFVI Capacity Information + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/${vimId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual VIMs NFVI Capacity Information + log Trying to get information about an Individual VIMs NFVI Capacity Information + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/${vimId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual VIMs NFVI Capacity Information using filter + log Trying to get information about an Individual VIMs NFVI Capacity Information + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/${vimId}?${POS_FILTER} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual VIMs NFVI Capacity Information with Invalid VIM ID + log Trying to get information about an Individual VIMs NFVI Capacity Information + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${invalidVimId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Individual VIMs NFVI Capacity Information + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/${vimId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Individual VIMs NFVI Capacity Information + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/${vimId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Individual VIMs NFVI Capacity Information + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/${vimId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create a Capacity Threshold + Log Trying to POST create a new capacity threshold. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CreateCapacityThresholdRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create a Capacity Threshold - Unreachable URI + Log Trying to POST create a new capacity threshold using an unreachable callbackUri in the request body + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CreateCapacityThresholdRequest.json + ${body}= Format String ${template} callback_uri=${unreachable_callback_uri} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Contains Resource URI + ${ResourceURI}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${ResourceURI} + +GET Capacity Thresholds + log Trying to get information about multiple Capacity Thresholds + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Capacity Thresholds using filter + log Trying to get information about multiple Capacity Thresholds using filtering parameters + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds?${POS_FILTER} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Capacity Thresholds using invalid filter + log Trying to get information about multiple Capacity Thresholds using invalid filtering parameters + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds?${NEG_FILTER} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Capacity Thresholds without Paging support + Run Keyword If ${PAGING_SUPPORTED} == 0 GET Capacity Thresholds + +GET Capacity Thresholds with Paging support + Run Keyword If ${PAGING_SUPPORTED} == 1 GET Capacity Thresholds + +PUT Capacity Thresholds + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Capacity Thresholds + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Capacity Thresholds + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Individual Capacity Threshold + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds/${capacityThreshold} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual Capacity Threshold + log Trying to get information about an Individual Capacity Threshold + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds/${capacityThreshold} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual Capacity Threshold - Invalid URI + log Trying to get information about an Individual Capacity Threshold + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds/${invalid_capacityThreshold} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Individual Capacity Threshold + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds/${capacityThreshold} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Individual Capacity Threshold + log Trying to perform a PATCH to modify callback URI for an individual Capacity Threshold + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"If-Match": "${original_etag}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/CapacityThresholdModificationRequest.json + ${body}= Format String ${template} callback_uri=${new_callback_uri} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds/${capacityThreshold} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Individual Capacity Threshold - ETag mismatch + log Trying to perform a PATCH to modify individual VNF snapshot + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"If-Match": "${invalid_etag}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/CapacityThresholdModificationRequest.json + ${body}= Format String ${template} callback_uri=${new_callback_uri} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds/${capacityThreshold} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Individual Capacity Threshold - Unreachable CallbackURI + log Trying to perform a PATCH to modify individual VNF snapshot + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"If-Match": "${invalid_etag}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/CapacityThresholdModificationRequest.json + ${body}= Format String ${template} callback_uri=${unreachable_callback_uri} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds/${capacityThreshold} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Individual Capacity Threshold + log Trying to DELETE an Individual Capacity Threshold + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds/${capacityThreshold} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check Postcondition resource is deleted + GET Individual Capacity Threshold + Check HTTP Response Status Code Is 404 + +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds/${capacityThreshold} + Integer response status 200 + Validate Json response body CapacityThreshold.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +POST Capacity Shortage Notification + log Trying to perform a POST to deliver notification. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body} = Get File jsons/CapacityShortageNotification.json + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET reach an unreachable notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${unreachable_callbackuri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT notification endpoint + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH notification endpoint + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NFVICapacityInformation-API/NotificationConsumer.robot b/SOL005/NFVICapacityInformation-API/NotificationConsumer.robot new file mode 100644 index 000000000..456a7e3ab --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/NotificationConsumer.robot @@ -0,0 +1,77 @@ +*** Settings *** +Resource NFVICapacityInformationKeywords.robot +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +Capacity Shortage Notification + [Documentation] Test ID: 5.3.6.5.1 + ... Test title: Capacity Shortage Notification + ... Test objective: The objective is to test that Capacity Shortage Notification is delivered with success to the notification consumer. + ... Pre-conditions: The consumer has already created an Individual Capacity Threshold resource + ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + POST Capacity Shortage Notification + Check HTTP Response Status Code Is 204 + +Test the Notification Endpoint - Successful + [Documentation] Test ID: 5.3.6.5.2 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: The consumer has already created an Individual Capacity Threshold resource + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 + +Test the Notification Endpoint - UNREACHABLE + [Documentation] Test ID: 5.3.6.5.3 + ... Test title: Test the Notification Endpoint - UNREACHABLE + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: The consumer has already created an Individual Capacity Threshold resource + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: The notification endpoint is unreachable by the API producer. + ... Post-Conditions: none + GET reach an unreachable notification endpoint + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 5.3.6.5.4 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 + +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 5.3.6.5.5 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 + +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 5.3.6.5.6 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/environment/variables.txt b/SOL005/NFVICapacityInformation-API/environment/variables.txt new file mode 100644 index 000000000..8bd8df1ce --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/environment/variables.txt @@ -0,0 +1,95 @@ +*** Variables *** +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO +${NFVO_SCHEMA} https +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${ACCEPT_JSON} application/json +${AUTH_USAGE} 1 +${CONTENT_TYPE_JSON} application/json +${NEG_AUTHORIZATION} Bearer negativetoken +${NFVO_FIELDS} 1 + +${CONTENT_TYPE_PATCH} application/merge-patch+json + +${original_etag} 1234 +${invalid_etag} 4321 + +${apiRoot} / +${apiMajorVersion} v1 +${apiName} nfvici + +${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint + +${NFVO_ALLOWS_DUPLICATE_SUBS} 1 + +${PAGING_SUPPORTED} 1 + +${response} httpresponse + +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +${callback_uri} http://localhost +${callback_port} 9091 +${callback_endpoint} /endpoint +${callback_endpoint_fwd} /endpoint/check +${callback_endpoint_error} /endpoint_404 +${sleep_interval} 20s +${total_polling_time} 2 min +${polling_interval} 10 sec +${new_callback_uri} http://newcallbackuri/for/modifications +${unreachable_callback_uri} http://unreachable/endpoint + +${notification_request} [] +${notification_response} [] + +${NFVO_non-MANO_OK} 1 # If 1 means that non-MANO artifacts are supported by the NFVO +${non_mano_artifact_sets} + + +${subscriptionId} f3ae6df7-07e1-47c9-8924-9ebe10343586 +${erroneousSubscriptionId} 442e3ee5-0499-4849-9b31-eb91ce1638f1 # Not existing ID on the subscriptions +${newSubscriptionId} newSubsciptionId + +${origResponse} httpresponse + +${filter_ok} callbackUri=http://172.22.1.7:9091/vnfpkgm/subscriptions +${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based +${SEPERATOR} = + + +${ACCEPT_PLAIN} text/plain +${CONTENT_TYPE_PLAIN} text/plain +${vnfPkgPlainVNFD} c26ad7fb-072b-48c4-a663-7d71646d9e98 # The VNF Pakcage contains a VNFD which is a Single Plain File +${ACCEPT_ZIP} application/zip +${ACCEPT_OCTET} application/octet-stream +${CONTENT_TYPE_ZIP} application/zip +${vnfPkgZipVNFD} f5b220d4-6177-4ebb-a554-a43311e16075 # The VNF Package contains a VNFD composed by multiple files +${erroneousVnfPkgId} erroneousVnfPackageId # Given ID for vnfPkg not present in database +${vndIdZipVnfd} f5b220d4-6177-4ebb-a554-a43311e16075 + + +${artifactPath} artifactPath +${CONTENT_TYPE_OCTET} application/octet-stream +${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO +${range} bytes=0-1023 +${full_size} 2000 # Size of the requested artifact to be downloaded via partial downloads +${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes +${vnfPackageOctetStreamId} octetStreamPkgId +${vnfdOctetStreamId} octetStreamVnfdId +${vndEncryptedArtifactID} encryptedId + + +${length} 1024 + +${POS_FILTER} vimId=41fdd38a-3d4c-465c-83e0-f80e014425f8 ,resourceType=VR_COMPUTE # Positive case, suing compiant fields name for filtering get request +${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field +${fields} softwareImages,additionalArtifacts +${VAR_SEPERATOR} & + +${callbackResp} localhost + +${vimId} +${invalidVimId} +${capacityThreshold} +${invalid_capacityThreshold} \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/jsons/CapacityShortageNotification.json b/SOL005/NFVICapacityInformation-API/jsons/CapacityShortageNotification.json new file mode 100644 index 000000000..2e46728e9 --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/jsons/CapacityShortageNotification.json @@ -0,0 +1,21 @@ +{ + "id": "", + "notificationType": "", + "thresholdId": "", + "timeStamp": "", + "objectInstanceId": "", + "direction": "UP", + "capacityInformation": + { + "resourceType": "VR_COMPUTE", + "capacityMeasurementName": "name", + "totalCapacity": "", + "allocatedCapacity": "", + "availableCapacity": "" + }, + "_links": + { + "objectInstance": "", + "threshold": "" + } +} \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/jsons/CapacityThresholdModifications.json b/SOL005/NFVICapacityInformation-API/jsons/CapacityThresholdModifications.json new file mode 100644 index 000000000..797c012d2 --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/jsons/CapacityThresholdModifications.json @@ -0,0 +1,3 @@ +{ + "callbackUri": "{callback_uri}" +} \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/jsons/CreateCapacityThresholdRequest.json b/SOL005/NFVICapacityInformation-API/jsons/CreateCapacityThresholdRequest.json new file mode 100644 index 000000000..97466ab2f --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/jsons/CreateCapacityThresholdRequest.json @@ -0,0 +1,15 @@ +{ + "objectInstanceId": "objectInstanceId", + "criteria": [ + { + "capacityMetric": + { + "resourceType": "VR_COMPUTE", + "capacityMeasurementName": "string", + "capacityType": "TOTAL" + }, + "thresholdType": "SIMPLE" + } + ], + "callbackUri": "{callback_uri}" +} \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/schemas/CapacityThreshold.schema.json b/SOL005/NFVICapacityInformation-API/schemas/CapacityThreshold.schema.json new file mode 100644 index 000000000..054a4e7fd --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/schemas/CapacityThreshold.schema.json @@ -0,0 +1,144 @@ +{ + "type": "object", + "description": "This type represents a capacity threshold. It shall comply with the provisions defined in table 10.5.2.8-1.\n", + "required": [ + "id", + "objectInstanceId", + "criteria", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance associate with this capacity threshold.\nIf this attribute is absent, measurements are taken for all sub-object instances of the measured object instance.\n", + "type": "array", + "items": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + }, + "criteria": { + "type": "object", + "description": "This type represents criteria that define a capacity threshold.\nIt shall comply with the provisions defined in table 10.5.3.3-1.\n", + "required": [ + "capacityMetric", + "thresholdType" + ], + "properties": { + "capacityMetric": { + "description": "Defines the capacity metric for which the threshold applies.\n", + "type": "object", + "required": [ + "resourceType", + "capacityMeasurementName", + "capacityType" + ], + "properties": { + "resourceType": { + "type": "string", + "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", + "enum": [ + "VR_COMPUTE", + "VR_NETWORK", + "VR_STORAGE", + "HOST_COMPUTE" + ] + }, + "capacityMeasurementName": { + "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\n", + "type": "string" + }, + "capacityType": { + "description": "The type of capacity for the threshold.\nPermitted values:\n-\tTOTAL: for total capacity.\n-\tALLOCATED: for allocated/used capacity.\n-\tRESERVED: for reserved capacity.\n-\tAVAILABLE: for available capacity.\n", + "type": "string", + "enum": [ + "TOTAL", + "ALLOCATED", + "RESERVED", + "AVAILABLE" + ] + } + } + }, + "thresholdType": { + "description": "Type of capacity threshold. This attribute determines which other attributes are present in the data structure.\nPermitted values:\n-\tSIMPLE: Single-valued static threshold.\nIn the present document, simple thresholds are defined. The definition of additional threshold types is left\nfor future specification.\n", + "type": "string", + "enum": [ + "SIMPLE" + ] + }, + "simpleThresholdDetails": { + "description": "Details of a simple threshold. Shall be present if thresholdType=\"SIMPLE\".\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "thresholdValue", + "hysteresis" + ], + "properties": { + "thresholdValue": { + "description": "The threshold value. Shall be represented as a floating point number.\n", + "type": "number" + }, + "hysteresis": { + "description": "The hysteresis of the threshold.\nShall be represented as a non-negative floating point number.\nA notification with crossing direction \"UP\" will be generated if the measured value reaches or\nexceeds \"thresholdValue\" + \"hysteresis\". A notification with crossing direction \"DOWN\" will be\ngenerated if the measured value reaches or undercuts \"thresholdValue\" - \"hysteresis\".\nThe hysteresis is defined to prevent storms of threshold crossing notifications.\nWhen processing a request to create a threshold, implementations should enforce a suitable minimum\nvalue for this attribute (e.g. override the value or reject the request).\n", + "type": "number" + } + } + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "_links": { + "type": "object", + "description": "Links for this resource.\n", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "object": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/schemas/CapacityThresholds.schema.json b/SOL005/NFVICapacityInformation-API/schemas/CapacityThresholds.schema.json new file mode 100644 index 000000000..9d2084db1 --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/schemas/CapacityThresholds.schema.json @@ -0,0 +1,148 @@ +{ + "type": "array", + "items": + { + "type": "object", + "description": "This type represents a capacity threshold. It shall comply with the provisions defined in table 10.5.2.8-1.\n", + "required": [ + "id", + "objectInstanceId", + "criteria", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance associate with this capacity threshold.\nIf this attribute is absent, measurements are taken for all sub-object instances of the measured object instance.\n", + "type": "array", + "items": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + }, + "criteria": { + "type": "object", + "description": "This type represents criteria that define a capacity threshold.\nIt shall comply with the provisions defined in table 10.5.3.3-1.\n", + "required": [ + "capacityMetric", + "thresholdType" + ], + "properties": { + "capacityMetric": { + "description": "Defines the capacity metric for which the threshold applies.\n", + "type": "object", + "required": [ + "resourceType", + "capacityMeasurementName", + "capacityType" + ], + "properties": { + "resourceType": { + "type": "string", + "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", + "enum": [ + "VR_COMPUTE", + "VR_NETWORK", + "VR_STORAGE", + "HOST_COMPUTE" + ] + }, + "capacityMeasurementName": { + "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\n", + "type": "string" + }, + "capacityType": { + "description": "The type of capacity for the threshold.\nPermitted values:\n-\tTOTAL: for total capacity.\n-\tALLOCATED: for allocated/used capacity.\n-\tRESERVED: for reserved capacity.\n-\tAVAILABLE: for available capacity.\n", + "type": "string", + "enum": [ + "TOTAL", + "ALLOCATED", + "RESERVED", + "AVAILABLE" + ] + } + } + }, + "thresholdType": { + "description": "Type of capacity threshold. This attribute determines which other attributes are present in the data structure.\nPermitted values:\n-\tSIMPLE: Single-valued static threshold.\nIn the present document, simple thresholds are defined. The definition of additional threshold types is left\nfor future specification.\n", + "type": "string", + "enum": [ + "SIMPLE" + ] + }, + "simpleThresholdDetails": { + "description": "Details of a simple threshold. Shall be present if thresholdType=\"SIMPLE\".\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "thresholdValue", + "hysteresis" + ], + "properties": { + "thresholdValue": { + "description": "The threshold value. Shall be represented as a floating point number.\n", + "type": "number" + }, + "hysteresis": { + "description": "The hysteresis of the threshold.\nShall be represented as a non-negative floating point number.\nA notification with crossing direction \"UP\" will be generated if the measured value reaches or\nexceeds \"thresholdValue\" + \"hysteresis\". A notification with crossing direction \"DOWN\" will be\ngenerated if the measured value reaches or undercuts \"thresholdValue\" - \"hysteresis\".\nThe hysteresis is defined to prevent storms of threshold crossing notifications.\nWhen processing a request to create a threshold, implementations should enforce a suitable minimum\nvalue for this attribute (e.g. override the value or reject the request).\n", + "type": "number" + } + } + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "_links": { + "type": "object", + "description": "Links for this resource.\n", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "object": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfo.schema.json b/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfo.schema.json new file mode 100644 index 000000000..79d4b1eb6 --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfo.schema.json @@ -0,0 +1,143 @@ +{ + "type": "object", + "description": "This type defines the format of the NFVI capacity information. The type shall comply with the provisions defined\nin Table 10.5.2.4-1.\n", + "required": [ + "id", + "vimId", + "capacityInfoPerZone" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "capacityInfoPerZone": { + "description": "Capacity information on a per resource zone basis under control by the associated VIM.\n", + "type": "array", + "items": { + "type": "object", + "description": "This type defines the format of the NFVI capacity information on a per resource zone basis.\nThe type shall comply with the provisions defined in table 10.5.2.5-1.\n", + "required": [ + "capacityMeasurements" + ], + "properties": { + "resourceZoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "capacityMeasurements": { + "description": "Capacity measurement on a per resource type basis.\n", + "type": "array", + "items": { + "type": "object", + "description": "This type defines the format of the NFVI capacity information on a per resource type basis.\nThe type shall comply with the provisions defined in table 10.5.2.6-1.\n", + "required": [ + "resourceType", + "capacityMeasurementName", + "totalCapacity", + "allocatedCapacity", + "availableCapacity" + ], + "properties": { + "resourceType": { + "type": "string", + "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", + "enum": [ + "VR_COMPUTE", + "VR_NETWORK", + "VR_STORAGE", + "HOST_COMPUTE" + ] + }, + "capacityMeasurementName": { + "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\nThe present document and referred documents do not specify the capacity measurements, thus the capacity\nmeasurement names are not specified in the present document version.\n", + "type": "string" + }, + "totalCapacity": { + "description": "The total capacity.\n", + "type": "object" + }, + "allocatedCapacity": { + "description": "The allocated/used capacity.\n", + "type": "object" + }, + "reservedCapacity": { + "description": "The reserved capacity. Shall be present if the capacity measurement relates to a resource type and\n(and sub-type) that is reservable.\n", + "type": "object" + }, + "availableCapacity": { + "description": "The available capacity.\n", + "type": "object" + } + } + } + } + } + } + }, + "totalCapacityInfo": { + "type": "object", + "description": "This type defines the format of the NFVI capacity information on a per resource type basis.\nThe type shall comply with the provisions defined in table 10.5.2.6-1.\n", + "required": [ + "resourceType", + "capacityMeasurementName", + "totalCapacity", + "allocatedCapacity", + "availableCapacity" + ], + "properties": { + "resourceType": { + "type": "string", + "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", + "enum": [ + "VR_COMPUTE", + "VR_NETWORK", + "VR_STORAGE", + "HOST_COMPUTE" + ] + }, + "capacityMeasurementName": { + "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\nThe present document and referred documents do not specify the capacity measurements, thus the capacity\nmeasurement names are not specified in the present document version.\n", + "type": "string" + }, + "totalCapacity": { + "description": "The total capacity.\n", + "type": "object" + }, + "allocatedCapacity": { + "description": "The allocated/used capacity.\n", + "type": "object" + }, + "reservedCapacity": { + "description": "The reserved capacity. Shall be present if the capacity measurement relates to a resource type and\n(and sub-type) that is reservable.\n", + "type": "object" + }, + "availableCapacity": { + "description": "The available capacity.\n", + "type": "object" + } + } + }, + "timeInterval": { + "type": "object", + "description": "This type defines the format of a time interval. The type shall comply with the provisions defined in table 10.5.2.7-1.\n", + "required": [ + "aTime" + ], + "properties": { + "aTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "bTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + } + } + } + } +} \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfos.schema.json b/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfos.schema.json new file mode 100644 index 000000000..f8329b950 --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfos.schema.json @@ -0,0 +1,147 @@ +{ + "type": "array", + "items": + { + "type": "object", + "description": "This type defines the format of the NFVI capacity information. The type shall comply with the provisions defined\nin Table 10.5.2.4-1.\n", + "required": [ + "id", + "vimId", + "capacityInfoPerZone" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "capacityInfoPerZone": { + "description": "Capacity information on a per resource zone basis under control by the associated VIM.\n", + "type": "array", + "items": { + "type": "object", + "description": "This type defines the format of the NFVI capacity information on a per resource zone basis.\nThe type shall comply with the provisions defined in table 10.5.2.5-1.\n", + "required": [ + "capacityMeasurements" + ], + "properties": { + "resourceZoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "capacityMeasurements": { + "description": "Capacity measurement on a per resource type basis.\n", + "type": "array", + "items": { + "type": "object", + "description": "This type defines the format of the NFVI capacity information on a per resource type basis.\nThe type shall comply with the provisions defined in table 10.5.2.6-1.\n", + "required": [ + "resourceType", + "capacityMeasurementName", + "totalCapacity", + "allocatedCapacity", + "availableCapacity" + ], + "properties": { + "resourceType": { + "type": "string", + "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", + "enum": [ + "VR_COMPUTE", + "VR_NETWORK", + "VR_STORAGE", + "HOST_COMPUTE" + ] + }, + "capacityMeasurementName": { + "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\nThe present document and referred documents do not specify the capacity measurements, thus the capacity\nmeasurement names are not specified in the present document version.\n", + "type": "string" + }, + "totalCapacity": { + "description": "The total capacity.\n", + "type": "object" + }, + "allocatedCapacity": { + "description": "The allocated/used capacity.\n", + "type": "object" + }, + "reservedCapacity": { + "description": "The reserved capacity. Shall be present if the capacity measurement relates to a resource type and\n(and sub-type) that is reservable.\n", + "type": "object" + }, + "availableCapacity": { + "description": "The available capacity.\n", + "type": "object" + } + } + } + } + } + } + }, + "totalCapacityInfo": { + "type": "object", + "description": "This type defines the format of the NFVI capacity information on a per resource type basis.\nThe type shall comply with the provisions defined in table 10.5.2.6-1.\n", + "required": [ + "resourceType", + "capacityMeasurementName", + "totalCapacity", + "allocatedCapacity", + "availableCapacity" + ], + "properties": { + "resourceType": { + "type": "string", + "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", + "enum": [ + "VR_COMPUTE", + "VR_NETWORK", + "VR_STORAGE", + "HOST_COMPUTE" + ] + }, + "capacityMeasurementName": { + "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\nThe present document and referred documents do not specify the capacity measurements, thus the capacity\nmeasurement names are not specified in the present document version.\n", + "type": "string" + }, + "totalCapacity": { + "description": "The total capacity.\n", + "type": "object" + }, + "allocatedCapacity": { + "description": "The allocated/used capacity.\n", + "type": "object" + }, + "reservedCapacity": { + "description": "The reserved capacity. Shall be present if the capacity measurement relates to a resource type and\n(and sub-type) that is reservable.\n", + "type": "object" + }, + "availableCapacity": { + "description": "The available capacity.\n", + "type": "object" + } + } + }, + "timeInterval": { + "type": "object", + "description": "This type defines the format of a time interval. The type shall comply with the provisions defined in table 10.5.2.7-1.\n", + "required": [ + "aTime" + ], + "properties": { + "aTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "bTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/schemas/ProblemDetails.schema.json b/SOL005/NFVICapacityInformation-API/schemas/ProblemDetails.schema.json new file mode 100644 index 000000000..c6156efbe --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/schemas/ProblemDetails.schema.json @@ -0,0 +1,32 @@ +{ + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } +} \ No newline at end of file -- GitLab From 76a9f756e6f9128ec915ccc4b7e402562fe07c10 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 17:37:02 +0500 Subject: [PATCH 321/580] minor fix for filter and fields query parameters in GET keywords --- .../NFVICapacityInformationKeywords.robot | 14 +++++++------- .../environment/variables.txt | 6 ++++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot b/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot index 994af7b62..1efc69be4 100644 --- a/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot +++ b/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot @@ -113,7 +113,7 @@ GET NFVI Capacity Information with filter Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?${POS_FILTER} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?${POS_FILTER_info} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -131,7 +131,7 @@ GET NFVI Capacity Information with bad filter Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?fields=wrong_field + GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?${NEG_FILTER} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -155,7 +155,7 @@ GET NFVI Capacity Information with fields attribute selector Log Query status information about NFVI Capacity Information, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?fields=${fields_capacityInfo} ${output}= Output response Set Suite Variable ${response} ${output} @@ -163,7 +163,7 @@ GET NFVI Capacity Information with exclude_default and fields attribute selector Log Query status information about NFVI Capacity Information, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?fields=${fields_capacityInfo}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -171,7 +171,7 @@ GET NFVI Capacity Information with exclude_fields attribute selector Log Query status information about NFVI Capacity Information, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos?exclude_fields=${fields_capacityInfo} ${output}= Output response Set Suite Variable ${response} ${output} @@ -232,7 +232,7 @@ GET Individual VIMs NFVI Capacity Information using filter Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/${vimId}?${POS_FILTER} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/${vimId}?${POS_FILTER_info} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -311,7 +311,7 @@ GET Capacity Thresholds using filter Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds?${POS_FILTER} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/capacity_thresholds?${POS_FILTER_threshold} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NFVICapacityInformation-API/environment/variables.txt b/SOL005/NFVICapacityInformation-API/environment/variables.txt index 8bd8df1ce..c27cc8636 100644 --- a/SOL005/NFVICapacityInformation-API/environment/variables.txt +++ b/SOL005/NFVICapacityInformation-API/environment/variables.txt @@ -82,9 +82,11 @@ ${vndEncryptedArtifactID} encryptedId ${length} 1024 -${POS_FILTER} vimId=41fdd38a-3d4c-465c-83e0-f80e014425f8 ,resourceType=VR_COMPUTE # Positive case, suing compiant fields name for filtering get request +${POS_FILTER_info} vimId=41fdd38a-3d4c-465c-83e0-f80e014425f8 ,resourceType=VR_COMPUTE # Positive case, suing compiant fields name for filtering get request +${POS_FILTER_threshold} id=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Positive case, suing compiant fields name for filtering get request ${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field -${fields} softwareImages,additionalArtifacts +${fields_capacityInfo} timeInterval +${fields_capacityThreshold} subObjectInstanceIds ${VAR_SEPERATOR} & ${callbackResp} localhost -- GitLab From 103f42497f4fcc04c2c0df4873c293ac2058e248 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 10 Mar 2021 14:30:50 +0100 Subject: [PATCH 322/580] new test added for Individual NSD Archive Artifact --- .../IndividualNSDArchiveArtifact.robot | 172 ++++++++++++++++++ .../NSDManagementKeywords.robot | 107 +++++++++++ .../environment/variables.txt | 9 +- 3 files changed, 285 insertions(+), 3 deletions(-) create mode 100644 SOL005/NSDManagement-API/IndividualNSDArchiveArtifact.robot diff --git a/SOL005/NSDManagement-API/IndividualNSDArchiveArtifact.robot b/SOL005/NSDManagement-API/IndividualNSDArchiveArtifact.robot new file mode 100644 index 000000000..3541588a9 --- /dev/null +++ b/SOL005/NSDManagement-API/IndividualNSDArchiveArtifact.robot @@ -0,0 +1,172 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Resource NSDManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem + +*** Test Cases *** +GET Individual NSD Archive Artifact + [Documentation] Test ID: 5.3.1.16.1 + ... Test title: GET Individual NSD Archive Artifact + ... Test objective: The objective is to test the retrieval of an individual NSD Archive artifact + ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual NSD Archive Artifact + Check HTTP Response Status Code Is 200 + +GET Individual NSD Archive Artifact with include_signatures parameter + [Documentation] Test ID: 5.3.1.16.2 + ... Test title: GET Individual NSD Archive Artifact with include_signatures parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual NSD Archive Artifact with include_signatures parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +GET Individual NSD Archive Artifact in octet stream format + [Documentation] Test ID: 5.3.1.16.3 + ... Test title: GET Individual NSD Archive Artifact in octet stream format + ... Test objective: The objective is to test the retrieval of an individual NSD Archive artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format. + ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO cannot determine the content type of the artifact + ... Post-Conditions: none + GET Individual NSD Archive Artifact in octet stream format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/octet-stream + +GET Individual NSD Archive Artifact with Range Request and NFVO supporting Range Requests + [Documentation] Test ID: 5.3.1.16.4 + ... Test title: GET Individual NSD Archive Artifact with Range Request and NFVO supporting Range Requests + ... Test objective: The objective is to test the retrieval of an individual NSD Archive artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range + ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the NSD Archive artifact + ... Post-Conditions: none + GET Individual NSD Archive Artifact with Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Response Header Content-Range Is Present and Matches the requested range + Check HTTP Response Header Content-Length Is Present and Matches the requested range length + +GET Individual NSD Archive Artifact with Range Request and NFVO not supporting Range Requests + [Documentation] Test ID: 5.3.1.16.5 + ... Test title: GET Individual NSD Archive Artifact with Range Request and NFVO not supporting Range Requests + ... Test objective: The objective is to test that the retrieval of an individual NSD archive artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full NSD Archive artifact. + ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO does not support range requests to return single range of bytes from the NSD Archive artifact + ... Post-Conditions: none + GET Individual NSD Archive Artifact with Range Request + Check HTTP Response Status Code Is 200 + +GET Individual NSD Archive Artifact with invalid resource identifier + [Documentation] Test ID: 5.3.1.16.6 + ... Test title: GET Individual NSD Archive Artifact with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of an individual NSD Archive Artifact fails when using an invalid resource identifier + ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual NSD Archive Artifact with invalid resource identifier + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Individual NSD Archive Artifact - Not Acceptable + [Documentation] Test ID: 5.3.1.16.7 + ... Test title: GET Individual NSD Archive Artifact - Not Acceptable + ... Test objective: The objective is to test that the retrieval of an individual NSD Archive artifact fails when related request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided + ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual NSD Archive Artifact with incompatable header + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Individual NSD Archive Artifact with conflict due to onboarding state + [Documentation] Test ID: 5.3.1.16.8 + ... GET Individual NSD Archive Artifact with conflict due to onboarding state + ... Test objective: The objective is to test that the retrieval of an individual NSD Archive Artifact fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the NSD archive for which the content is requested is different from ONBOARDED. + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual NSD Archive Artifact in onboarding state different from ONBOARDED + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Individual NSD Archive Artifact with invalid Range Request + [Documentation] Test ID: 5.3.1.16.9 + ... Test title: GET Individual NSD Archive Artifact with invalid Range Request + ... Test objective: The objective is to test that the retrieval of an Individual NSD Archive fails when using a range request that does not match any available byte range in the file. + ... Pre-conditions: One or more NSD Archives are on-boarded to the NFVO. + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the NSD Archive artifact + ... Post-Conditions: none + GET Individual NSD Archive Artifact with invalid Range Request + Check HTTP Response Status Code Is 416 + +POST Individual NSD Archive Artifact - Method not implemented + [Documentation] Test ID: 5.3.1.16.10 + ... Test title: POST Individual NSD Archive Artifact - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create an individual artifact contained in an NSD archive. + ... Pre-conditions: none + ... Reference: Clause 5.4.4c.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for NSD archive Artifact + Check HTTP Response Status Code Is 405 + +PUT Individual NSD Archive Artifact - Method not implemented + [Documentation] Test ID: 5.3.1.16.11 + ... Test title: PUT Individual NSD Archive Artifact - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify an Individual NSD Archive artifact + ... Pre-conditions: none + ... Reference: Clause 5.4.4c.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for Individual NSD Archive Artifact + Check HTTP Response Status Code Is 405 + +PATCH Individual NSD Archive Artifact - Method not implemented + [Documentation] Test ID: 5.3.1.16.12 + ... Test title: PATCH Individual NSD Archive Artifact - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update an Individual NSD Archive artifact + ... Pre-conditions: none + ... Reference: Clause 5.4.4c.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for Individual NSD Archive Artifact + Check HTTP Response Status Code Is 405 + +DELETE Individual NSD Archive Artifact - Method not implemented + [Documentation] Test ID: 5.3.1.16.13 + ... Test title: DELETE Individual NSD Archive Artifact - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete an Individual NSD Archive artifact + ... Pre-conditions: none + ... Reference: Clause 5.4.4c.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for Individual NSD Archive Artifact + Check HTTP Response Status Code Is 405 + \ No newline at end of file diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index c5fd69b64..1ca51d284 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -1329,6 +1329,113 @@ Send DELETE Request for PNFD Archive Manifest REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} + +Send POST Request for NSD archive Artifact + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual NSD Archive Artifact + Log Trying to get a NSD Archive Artifact + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual NSD Archive Artifact with include_signatures parameter + Log Trying to get NSD Archive Artifact with security certificates + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath}/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual NSD Archive Artifact in octet stream format + Log Trying to get a NSD Archive Artifact + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual NSD Archive Artifact with Range Request + Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check HTTP Response Header Content-Range Is Present and Matches the requested range + Log Check Content-Range HTTP Header + Should Contain ${response['headers']} Content-Range + Should Be Equal As Strings ${response['headers']['Content-Range']} ${range}/${full_lenght} + Log Header Content-Range is present + +Check HTTP Response Header Content-Length Is Present and Matches the requested range length + Log Check Content-Length HTTP Header + Should Contain ${response['headers']} Content-Length + Should Be Equal As Integers ${response['headers']['Content-Length']} ${full_lenght} + Log Header Content-Length is present + +GET Individual NSD Archive Artifact with invalid resource identifier + Log Trying to perform a negative get, using an erroneous NSD ID + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId}/artifacts/${artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual NSD Archive Artifact with incompatable header + Log Trying to get a NSD Archive Artifact + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath}/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual NSD Archive Artifact in onboarding state different from ONBOARDED + Log Trying to get a NSD Archive artifact present in the NFVO Catalogue, but not in ONBOARDED nsdOnboardingState + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${onboardingStateNsdInfoId}/artifacts/${artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual NSD Archive Artifact with invalid Range Request + Log Trying to get a range of bytes of the limit of the NSD Archive + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Range": "${erroneousRange}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PUT Request for Individual NSD Archive Artifact + Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. + Log Trying to perform a PUT. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PATCH Request for Individual NSD Archive Artifact + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send DELETE Request for Individual NSD Archive Artifact + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} Check HTTP Response Body NsInstance content against NS Descriptor #${check_descriptors} flag, 1 to check descriptors diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index 71dfea8be..526118384 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -61,9 +61,6 @@ ${ACCEPT_ZIP} application/zip ${ACCEPT_PLAIN} text/plain ${CONTENT_TYPE_ZIP} application/zip ${CONTENT_TYPE_PLAIN} text/plain -${NFVO_RANGE_OK} 1 -${range} bytes=0-1023 -${erroneousRange} bytes=100000-1000000 # Requesting a out of range number of bytes ${onboardingStateNsdInfoId} b992a851-08b1-45a8-9282-a5f7a7df04a6 ${contentZipNsd} files/nsd.zip ${contentFileNsd} files/nsd.yml @@ -77,6 +74,12 @@ ${createdNsdInfoId} f27200b1-1d8b-48c2-9d98-a993b8ab117f ${NSD_NAME} nsdName=onBoardedNSD ${PNFD_NAME} pnfdName=onBoardedPNFD ${SEPERATOR} = +${artifactPath} artifactPath +${CONTENT_TYPE_OCTET} application/octet-stream +${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO +${range} bytes=0-1023 +${erroneousRange} bytes=100000-1000000 # Requesting a out of range number of bytes +${full_lenght} 2000 ${pnfdInfoId} 40853bda-8a8f-4f63-9130-cef439f65348 -- GitLab From 72f20b1d9f7ab2e141cbe9dbc2a753b300efb1e2 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 10 Mar 2021 14:40:11 +0100 Subject: [PATCH 323/580] bug fix: minor bug removing same keywords --- SOL005/NSDManagement-API/NSDManagementKeywords.robot | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 1ca51d284..ea4995a09 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -315,18 +315,6 @@ Check HTTP Response Header Content-Type Is Any of [Arguments] ${header1} ${header2} Should Contain Any ${response['headers']['Content-Type']} ${header1} ${header2} -Check HTTP Response Header Content-Range Is Present and Matches the requested range - Log Check Content-Range HTTP Header - Should Contain ${response['headers']} Content-Range - Should Be Equal As Strings ${response['headers']['Content-Range']} ${range} - Log Header Content-Range is present - -Check HTTP Response Header Content-Length Is Present and Matches the requested range length - Log Check Content-Length HTTP Header - Should Contain ${response['headers']} Content-Length - Should Be Equal As Integers ${response['headers']['Content-Length']} ${length} - Log Header Content-Length is present - Get NSD Content in Zip Format Log Trying to get a NSD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} -- GitLab From 197891b1c2d398de24699ba8c95a89384b5fb158 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Thu, 11 Mar 2021 09:18:17 +0100 Subject: [PATCH 324/580] Added Tests for Individual PNFD archive artifact --- .../IndividualPNFDArchiveArtifact.robot | 173 ++++++++++++++++++ .../NSDManagementKeywords.robot | 99 +++++++++- .../environment/variables.txt | 1 + 3 files changed, 271 insertions(+), 2 deletions(-) create mode 100644 SOL005/NSDManagement-API/IndividualPNFDArchiveArtifact.robot diff --git a/SOL005/NSDManagement-API/IndividualPNFDArchiveArtifact.robot b/SOL005/NSDManagement-API/IndividualPNFDArchiveArtifact.robot new file mode 100644 index 000000000..a5d0f192d --- /dev/null +++ b/SOL005/NSDManagement-API/IndividualPNFDArchiveArtifact.robot @@ -0,0 +1,173 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Resource NSDManagementKeywords.robot +Library JSONLibrary +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem + +*** Test Cases *** +GET Individual PNFD Archive Artifact + [Documentation] Test ID: 5.3.1.17.1 + ... Test title: GET Individual PNFD Archive Artifact + ... Test objective: The objective is to test the retrieval of an individual PNFD Archive artifact + ... Pre-conditions: One or more PNFD archives are on-boarded in the NFVO. + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual PNFD Archive Artifact + Check HTTP Response Status Code Is 200 + +GET Individual PNFD Archive Artifact with include_signatures parameter + [Documentation] Test ID: 5.3.1.17.2 + ... Test title: GET Individual PNFD Archive Artifact with include_signatures parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format + ... Pre-conditions: One or more PNFD archives are on-boarded to the NFVO. + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual PNFD Archive Artifact with include_signatures parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +GET Individual PNFD Archive Artifact in octet stream format + [Documentation] Test ID: 5.3.1.17.3 + ... Test title: GET Individual PNFD Archive Artifact in octet stream format + ... Test objective: The objective is to test the retrieval of an individual PNFD Archive artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format. + ... Pre-conditions: One or more PNFD archives are on-boarded to the NFVO. + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO cannot determine the content type of the artifact + ... Post-Conditions: none + GET Individual PNFD Archive Artifact in octet stream format + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/octet-stream + +GET Individual PNFD Archive Artifact with Range Request and NFVO supporting Range Requests + [Documentation] Test ID: 5.3.1.17.4 + ... Test title: GET Individual PNFD Archive Artifact with Range Request and NFVO supporting Range Requests + ... Test objective: The objective is to test the retrieval of an individual PNFD Archive artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range + ... Pre-conditions: One or more PNFD archives are on-boarded in the NFVO. + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the PNFD Archive artifact + ... Post-Conditions: none + GET Individual PNFD Archive Artifact with Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Response Header Content-Range Is Present and Matches the requested range + Check HTTP Response Header Content-Length Is Present and Matches the requested range length + +GET Individual PNFD Archive Artifact with Range Request and NFVO not supporting Range Requests + [Documentation] Test ID: 5.3.1.17.5 + ... Test title: GET Individual PNFD Archive Artifact with Range Request and NFVO not supporting Range Requests + ... Test objective: The objective is to test that the retrieval of an individual PNFD archive artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full PNFD Archive artifact. + ... Pre-conditions: One or more PNFD archives are on-boarded in the NFVO. + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO does not support range requests to return single range of bytes from the PNFD Archive artifact + ... Post-Conditions: none + GET Individual PNFD Archive Artifact with Range Request + Check HTTP Response Status Code Is 200 + +GET Individual PNFD Archive Artifact with invalid resource identifier + [Documentation] Test ID: 5.3.1.17.6 + ... Test title: GET Individual PNFD Archive Artifact with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of an individual PNFD Archive Artifact fails when using an invalid resource identifier + ... Pre-conditions: One or more PNFD archives are on-boarded in the NFVO. + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual PNFD Archive Artifact with invalid resource identifier + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Individual PNFD Archive Artifact - Not Acceptable + [Documentation] Test ID: 5.3.1.17.7 + ... Test title: GET Individual PNFD Archive Artifact - Not Acceptable + ... Test objective: The objective is to test that the retrieval of an individual PNFD Archive artifact fails when related request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided + ... Pre-conditions: One or more PNFD archives are on-boarded to the NFVO. + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual PNFD Archive Artifact with incompatable header + Check HTTP Response Status Code Is 406 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Individual PNFD Archive Artifact with conflict due to onboarding state + [Documentation] Test ID: 5.3.1.17.8 + ... GET Individual PNFD Archive Artifact with conflict due to onboarding state + ... Test objective: The objective is to test that the retrieval of an individual PNFD Archive Artifact fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: The onboarding state of the PNFD archive for which the content is requested is different from ONBOARDED. + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual PNFD Archive Artifact in onboarding state different from ONBOARDED + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Individual PNFD Archive Artifact with invalid Range Request + [Documentation] Test ID: 5.3.1.17.9 + ... Test title: GET Individual PNFD Archive Artifact with invalid Range Request + ... Test objective: The objective is to test that the retrieval of an Individual PNFD Archive fails when using a range request that does not match any available byte range in the file. + ... Pre-conditions: One or more PNFD Archives are on-boarded to the NFVO. + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO supports range requests to return single range of bytes from the PNFD Archive artifact + ... Post-Conditions: none + GET Individual PNFD Archive Artifact with invalid Range Request + Check HTTP Response Status Code Is 416 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Individual PNFD Archive Artifact - Method not implemented + [Documentation] Test ID: 5.3.1.17.10 + ... Test title: POST Individual PNFD Archive Artifact - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create an individual artifact contained in an PNFD archive. + ... Pre-conditions: none + ... Reference: Clause 5.4.7c.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST Request for PNFD archive Artifact + Check HTTP Response Status Code Is 405 + +PUT Individual PNFD Archive Artifact - Method not implemented + [Documentation] Test ID: 5.3.1.17.11 + ... Test title: PUT Individual PNFD Archive Artifact - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify an Individual PNFD Archive artifact + ... Pre-conditions: none + ... Reference: Clause 5.4.7c.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for Individual PNFD Archive Artifact + Check HTTP Response Status Code Is 405 + +PATCH Individual PNFD Archive Artifact - Method not implemented + [Documentation] Test ID: 5.3.1.17.12 + ... Test title: PATCH Individual PNFD Archive Artifact - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update an Individual PNFD Archive artifact + ... Pre-conditions: none + ... Reference: Clause 5.4.7c.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for Individual PNFD Archive Artifact + Check HTTP Response Status Code Is 405 + +DELETE Individual PNFD Archive Artifact - Method not implemented + [Documentation] Test ID: 5.3.1.17.13 + ... Test title: DELETE Individual PNFD Archive Artifact - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete an Individual PNFD Archive artifact + ... Pre-conditions: none + ... Reference: Clause 5.4.7c.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for Individual PNFD Archive Artifact + Check HTTP Response Status Code Is 405 + \ No newline at end of file diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index ea4995a09..10b4f0116 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -1318,6 +1318,101 @@ Send DELETE Request for PNFD Archive Manifest ${output}= Output response Set Suite Variable ${response} ${output} +Send POST Request for PNFD archive Artifact + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/artifacts/${pnfd_artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PUT Request for Individual PNFD Archive Artifact + Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. + Log Trying to perform a PUT. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/artifacts/${pnfd_artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PATCH Request for Individual PNFD Archive Artifact + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/artifacts/${pnfd_artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send DELETE Request for Individual PNFD Archive Artifact + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/artifacts/${pnfd_artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual PNFD Archive Artifact + Log Trying to get a PNFD Archive Artifact + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/artifacts/${pnfd_artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual PNFD Archive Artifact with include_signatures parameter + Log Trying to get PNFD Archive Artifact with security certificates + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/artifacts/${pnfd_artifactPath}/include_signatures + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual PNFD Archive Artifact in octet stream format + Log Trying to get a PNFD Archive Artifact + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/artifacts/${pnfd_artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual PNFD Archive Artifact with Range Request + Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/artifacts/${pnfd_artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual PNFD Archive Artifact with invalid resource identifier + Log Trying to perform a negative get, using an erroneous PNFD ID + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${erroneous_pnfdInfoId}/artifacts/${pnfd_artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual PNFD Archive Artifact with incompatable header + Log Trying to get a PNFD Archive Artifact + Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/artifacts/${pnfd_artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual PNFD Archive Artifact in onboarding state different from ONBOARDED + Log Trying to get a PNFD Archive artifact present in the NFVO Catalogue, but not in ONBOARDED pnfdOnboardingState + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${onboardingStatePnfdId}/artifacts/${pnfd_artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Individual PNFD Archive Artifact with invalid Range Request + Log Trying to get a range of bytes of the limit of the PNFD Archive + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Range": "${erroneousRange}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/artifacts/${pnfd_artifactPath} + ${output}= Output response + Set Suite Variable ${response} ${output} + Send POST Request for NSD archive Artifact 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 @@ -1372,7 +1467,7 @@ Check HTTP Response Header Content-Length Is Present and Matches the requested r GET Individual NSD Archive Artifact with invalid resource identifier Log Trying to perform a negative get, using an erroneous NSD ID Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId}/artifacts/${artifactPath} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1380,7 +1475,7 @@ GET Individual NSD Archive Artifact with incompatable header Log Trying to get a NSD Archive Artifact Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath}/include_signatures + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index 526118384..410a1b4f4 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -92,6 +92,7 @@ ${contentZipPnfd} files/pnfd.zip ${contentFilePnfd} files/pnfd.yml ${creatingPnfdId} 2e4ce0ef-3ea8-49f9-92dd-8771866015bb ${userDefinedDataSet} some +${pnfd_artifactPath} artifactPath ${notifCallbackUri} http://172.22.1.7:9091/nsd/subscriptions ${filter_ok} callbackUri=${notifCallbackUri} -- GitLab From 3a5eb54bc1e3a1c0c6bc2e9ce2228d2a094b51d5 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Thu, 11 Mar 2021 14:30:57 +0500 Subject: [PATCH 325/580] updated importing of variables for NSD --- SOL005/NSDManagement-API/NSDManagementKeywords.robot | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 10b4f0116..fa450c157 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -10,8 +10,8 @@ Library JSONSchemaLibrary schemas/ Library RequestsLibrary Library Process Library String -Variables descriptors/SOL006/NSD/nsd_SOL006.yaml -Variables descriptors/SOL001/NSD/nsd_SOL001.yaml +#Variables descriptors/SOL006/NSD/nsd_SOL006.yaml +#Variables descriptors/SOL001/NSD/nsd_SOL001.yaml *** Keywords *** GET all Network Service Descriptors Information @@ -1532,6 +1532,7 @@ PARSE the NS Descriptor File Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 NS descriptor file ELSE Fetch Information from SOL006 NS descriptor file Fetch Information from SOL001 NS descriptor file + Import Variables ${CURDIR}/descriptors/SOL001/NSD/nsd_SOL001.yaml ${ns_descriptor_id}= Get Variable Value ${topology_template.node_templates.properties.descriptorId} ${designer}= Get Variable Value ${topology_template.node_templates.properties.designer} ${version}= Get Variable Value ${topology_template.node_templates.properties.version} @@ -1545,6 +1546,7 @@ Fetch Information from SOL001 NS descriptor file Set Global Variable ${NS_InvariantID} ${invariantId} Fetch Information from SOL006 NS descriptor file + Import Variables ${CURDIR}/descriptors/SOL006/NSD/nsd_SOL006.yaml ${nsd_id}= Get Variable Value ${nfv.nsd[0].id} Set Global Variable ${NS_DescriptorID} ${nsd_id} -- GitLab From 6c214847dbcb90ae803377b7cecf439a7820f82a Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Thu, 11 Mar 2021 10:48:55 +0100 Subject: [PATCH 326/580] Updated versions --- SOL005/NSDManagement-API/ApiVersion.robot | 20 +++++------ .../IndividualNSDescriptor.robot | 22 ++++++------ .../IndividualPnfDescriptor.robot | 14 ++++---- .../IndividualSubscription.robot | 14 ++++---- SOL005/NSDManagement-API/NSD.robot | 24 ++++++------- .../NSDManagement-API/NSDArchiveContent.robot | 24 ++++++------- .../NSDArchiveManifest.robot | 14 ++++---- .../NSDManagementNotification.robot | 14 ++++---- SOL005/NSDManagement-API/NSDescriptors.robot | 34 +++++++++---------- .../NotificationConsumer.robot | 14 ++++---- SOL005/NSDManagement-API/PNFD.robot | 24 ++++++------- .../PNFDArchiveContent.robot | 22 ++++++------ .../PNFDArchiveManifest.robot | 14 ++++---- SOL005/NSDManagement-API/PNFDescriptors.robot | 28 +++++++-------- SOL005/NSDManagement-API/Subscriptions.robot | 26 +++++++------- 15 files changed, 154 insertions(+), 154 deletions(-) diff --git a/SOL005/NSDManagement-API/ApiVersion.robot b/SOL005/NSDManagement-API/ApiVersion.robot index 483496f5b..59efc49a7 100644 --- a/SOL005/NSDManagement-API/ApiVersion.robot +++ b/SOL005/NSDManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot index 4583ca024..66aef1f3d 100644 --- a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot @@ -14,7 +14,7 @@ GET Individual Network Service Descriptor Information ... Test title: GET Individual Network Service Descriptor Information ... Test objective: The objective is to test the retrieval of an individual Network Service Descriptor information and perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET Individual Network Service Descriptor Information with invalid resource iden ... Test title: GET Individual Network Service Descriptor Information with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual Network Service Descriptor Information fails when using an invalid resource identifier ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ Disable Individual Network Service Descriptor ... Test title: Disable Individual Network Service Descriptor ... Test objective: The objective is to test the disabling of an individual Network Service Descriptor and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in enabled operational state. - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is in operational state DISABLED and usage state is not modified @@ -59,7 +59,7 @@ Enable Individual Network Service Descriptor ... Test title: Enable Individual Network Service Descriptor ... Test objective: The objective is to test the enabling of an individual Network Service Descriptor and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.1.2.3). - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is in operational state ENABLED and usage state is not modified @@ -74,7 +74,7 @@ Enable Individual Network Service Descriptor with conflict due to operational st ... Test title: Enable Individual Network Service Descriptor with conflict due to operational state ENABLED ... Test objective: The objective is to test that enabling an individual Network Service Descriptor that is already in ENABLED operational state failsand perform a JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.4). - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ Enable Individual Network Service Descriptor with conflict due to onboarding sta ... Test title: Enable Individual Network Service Descriptor with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an Network Service Descriptor fails due to a conflict when the Network Service Descriptor is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in ENABLED operational state. The onboarding state of the Network Service Descriptor for which the enabling is requested is different from ONBOARDED. - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ Enable Individual Network Service Descriptor with HTTP Etag precondition failure ... Test title: Enable Individual Network Service Descriptor with HTTP Etag precondition failure ... Test objective: The objective is to test that the retrieval of an Network Service Descriptor fails due to a precondition failure when using an uncorrect Http Etag identified. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.4). - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ DELETE Individual Network Service Descriptor ... Test title: DELETE Individual Network Service Descriptor ... Test objective: The objective is to test the deletion of an individual Network Service Descriptor. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in DISABLED operational state and NOT_IN_USE usage state. - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is not available anymore in the NFVO @@ -125,7 +125,7 @@ DELETE Individual Network Service Descriptor in operational state ENABLED ... Test title: DELETE Individual Network Service Descriptor in operational state ENABLED ... Test objective: The objective is to test that the deletion of an individual Network Service Descriptor in operational state ENABLED fails. The test also performs a JSON schema validation of the failed operation HTTP response. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.4). - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is not deleted by the failed operation. @@ -139,7 +139,7 @@ POST Individual Network Service Descriptor - Method not implemented ... Test title: POST Individual Network Service Descriptor - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ PUT Individual Network Service Descriptor - Method not implemented ... Test title: PUT Individual Network Service Descriptor - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a new Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot b/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot index 8b88fc1fe..1d09528e0 100644 --- a/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot @@ -13,7 +13,7 @@ GET Individual PNF Descriptor Information ... Test title: GET Individual PNF Descriptor Information ... Test objective: The objective is to test the retrieval of an individual PNF Descriptor information and perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET Individual PNF Descriptor Information with invalid resource identifier ... Test title: GET Individual PNF Descriptor Information with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual PNF Descriptor Information fails when using an invalid resource identifier ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ Update Individual PNF Descriptor ... Test title: Update Individual PNF Descriptor ... Test objective: The objective is to test the update of an individual PNF Descriptor and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNF Descriptor is modified according to the update request @@ -55,7 +55,7 @@ Update Individual PNF Descriptor with HTTP Etag precondition failure ... Test title: Update Individual PNF Descriptor with HTTP Etag precondition failure ... Test objective: The objective is to test that the update of a PNF Descriptor fails due to a precondition failure when using an uncorrect Http Etag identified. ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ POST Individual PNF Descriptor - Method not implemented ... Test title: POST Individual PNF Descriptor - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new PNF Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ PUT Individual PNF Descriptor - Method not implemented ... Test title: PUT Individual PNF Descriptor - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a new PNF Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ DELETE Individual PNF Descriptor ... Test title: DELETE Individual PNF Descriptor ... Test objective: The objective is to test the deletion of an individual PNF Descriptor. ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNF Descriptor is not available anymore in the NFVO diff --git a/SOL005/NSDManagement-API/IndividualSubscription.robot b/SOL005/NSDManagement-API/IndividualSubscription.robot index 932e761c2..4f51129e1 100644 --- a/SOL005/NSDManagement-API/IndividualSubscription.robot +++ b/SOL005/NSDManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual NSD Management Subscription ... Test title: GET Individual NSD Management Subscription ... Test objective: The objective is to test the retrieval of individual NSD Management subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual NSD Management Subscription with invalid resource identifier ... Test title: GET Individual NSD Management Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual NSD Management subscription fails when using an invalid resource identifier ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ DELETE Individual NSD Management Subscription with invalid resource identifier ... Test title: DELETE Individual NSD Management Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual NSD Management subscription fails when using an invalid resource identifier ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ POST Individual NSD Management Subscription - Method not implemented ... Test title: POST Individual NSD Management Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NSD Management Subscription ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Individual NSD Management Subscription - Method not implemented ... Test title: PUT Individual NSD Management Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NSD Management subscription ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Individual NSD Management Subscription - Method not implemented ... Test title: PATCH Individual NSD Management Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NSD Management subscription ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Individual NSD Management Subscription ... Test title: DELETE Individual NSD Management Subscription ... Test objective: The objective is to test the deletion of an individual NSD Management subscription ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NSD Management Subscription is not available anymore in the NFVO diff --git a/SOL005/NSDManagement-API/NSD.robot b/SOL005/NSDManagement-API/NSD.robot index 6bdb58d6c..b8b86427a 100644 --- a/SOL005/NSDManagement-API/NSD.robot +++ b/SOL005/NSDManagement-API/NSD.robot @@ -12,7 +12,7 @@ Get single file NSD in Plain Format ... Test title: Get single file NSD in Plain Format ... Test objective: The objective is to test the retrieval of the NSD in plain format within a NSD archive and perform a validation that returned content is in plain format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD is implemented as a single file ... Post-Conditions: none @@ -25,7 +25,7 @@ Get NSD in Zip Format ... Test title: Get NSD in Zip Format ... Test objective: The objective is to test the retrieval of the NSD in zip format within a NSD archive and perform a validation that returned content is in zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get single file NSD in Plain or Zip Format ... Test title: Get single file NSDin Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file NSD within a NSD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that response is in Plain or Zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD is implemented as a single file ... Post-Conditions: none @@ -51,7 +51,7 @@ Get multi file NSD in Plain or Zip Format ... Test title: Get multi file NSD in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file NSD within a NSD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD is implemented as a multi file ... Post-Conditions: none @@ -64,7 +64,7 @@ Get multi file NSD in Plain Format ... Test title: Get multi file NSD in Plain Format ... Test objective: The objective is to test that the retrieval of the multi file NSD within a NSD archive fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD is implemented as a multi file ... Post-Conditions: none @@ -77,7 +77,7 @@ Get NSD Content with invalid resource identifier ... Test title: Get NSD Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the NSD within a NSD archive fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ Get NSD with conflict due to onboarding state ... Test title: Get NSD with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the NSD within a NSD archive fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD is different from ONBOARDED. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ Get NSD with security information ... Test title: Get NSD with security information ... Test objective: The objective is to test the retrieval of the NSD within a NSD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ POST NSD - Method not implemented ... Test title: POST NSD - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ PUT NSD - Method not implemented ... Test title: PUT NSD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -140,7 +140,7 @@ PATCH NSD - Method not implemented ... Test title: PATCH NSD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -152,7 +152,7 @@ DELETE NSD - Method not implemented ... Test title: DELETE NSD - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/NSDArchiveContent.robot b/SOL005/NSDManagement-API/NSDArchiveContent.robot index dd887b574..62114d846 100644 --- a/SOL005/NSDManagement-API/NSDArchiveContent.robot +++ b/SOL005/NSDManagement-API/NSDArchiveContent.robot @@ -13,7 +13,7 @@ Get NSD Content in Zip Format ... Test title: Get NSD Content in Zip Format ... Test objective: The objective is to test the retrieval of the NSD Content in zip format and perform a validation that returned content is in zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ Get NSD Content with invalid resource identifier ... Test title: Get NSD Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the NSD Content fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Get NSD Content with conflict due to onboarding state ... Test title: Get NSD Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the NSD Content fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD for which the NSD Content is requested is different from ONBOARDED. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET NSD Content with Range Request and NFVO supporting Range Requests ... Test title: GET NSD Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of NSD Content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the NSD file ... Post-Conditions: none @@ -67,7 +67,7 @@ GET NSD Content with Range Request and NFVO not supporting Range Requests ... Test title: GET NSD Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of NSD Content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full NSD file. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the NSD file ... Post-Conditions: none @@ -80,7 +80,7 @@ GET NSD Content with invalid Range Request ... Test title: GET NSD Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of NSD Content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the NSD file ... Post-Conditions: none @@ -93,7 +93,7 @@ Upload NSD Content as Zip file in asynchronous mode ... Test title: Upload NSD Content as Zip file in asynchronous mode ... Test objective: The objective is to test the upload of an NSD Content in Zip format when the NFVO supports the asynchronous upload mode. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the upload of NSD contents in asynchronous mode ... Post-Conditions: NSD Uploaded @@ -106,7 +106,7 @@ Upload NSD Content as Zip file in synchronous mode ... Test title: Upload NSD Content as Zip file in synchronous mode ... Test objective: The objective is to test the upload of an NSD Content in Zip format when the NFVO supports the synchronous upload mode. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the upload of NSD contents in synchronous mode ... Post-Conditions: The NSD content is successfully uploaded and available in the NFVO @@ -119,7 +119,7 @@ Upload NSD Content with conflict due to onboarding state ... Test title: Upload NSD Content with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the NSD Content fails due to a conflict when the NSD is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD for which the NSD Content is requested is different from ONBOARDED. - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -132,7 +132,7 @@ POST NSD Content - Method not implemented ... Test title: POST NSD Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -144,7 +144,7 @@ PATCH NSD Content - Method not implemented ... Test title: PATCH NSD Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -156,7 +156,7 @@ DELETE NSD Content - Method not implemented ... Test title: DELETE NSD Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/NSDArchiveManifest.robot b/SOL005/NSDManagement-API/NSDArchiveManifest.robot index 7a09f534f..d50fc484d 100644 --- a/SOL005/NSDManagement-API/NSDArchiveManifest.robot +++ b/SOL005/NSDManagement-API/NSDArchiveManifest.robot @@ -12,7 +12,7 @@ Get NSD Archive Manifest ... Test title: Get NSD Archive Manifest ... Test objective: The objective is to test that GET method reads the content of the manifest file within an NSD archive ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get NSD Archive Manifest with security information ... Test title: Get NSD Archive Manifest with security information ... Test objective: The objective is to test the retrieval of content of the manifest file within an NSD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get NSD Archive Manifest with conflict due to onboarding state ... Test title: Get NSD Archive Manifest with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of content of the manifest file within an NSD archive fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD is different from ONBOARDED. - ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ POST NSD Archive Manifest - Method not implemented ... Test title: POST NSD Archive Manifest - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT NSD Archive Manifest - Method not implemented ... Test title: PUT NSD Archive Manifest - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH NSD Archive Manifest - Method not implemented ... Test title: PATCH NSD Archive Manifest - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE NSD Archive Manifest - Method not implemented ... Test title: DELETE NSD Archive Manifest - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/NSDManagementNotification.robot b/SOL005/NSDManagement-API/NSDManagementNotification.robot index 0648fb198..c3cd03770 100644 --- a/SOL005/NSDManagement-API/NSDManagementNotification.robot +++ b/SOL005/NSDManagement-API/NSDManagementNotification.robot @@ -15,7 +15,7 @@ NSD Onboarding Notification ... Test title: NSD Onboarding Notification ... Test objective: The objective is to test the dispatch of NSD Onboarding notification when the NSD onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NSD management subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ NSD Onboarding Failure Notification ... Test title: NSD Onboarding Failure Notification ... Test objective: The objective is to test the dispatch of NSD Onboarding failure notification when the NSD onboarding operation fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NSD management subscription for onboarding failure notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ NSD Operational State Change Notification ... Test title: NSD Operational State Change Notification ... Test objective: The objective is to test the dispatch of NSD Operational State Change notification when the NSD operational status change in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NSD management subscription for operational state change notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ NSD Deletion Notification ... Test title: NSD Deletion Notification ... Test objective: The objective is to test the dispatch of NSD Deletion notification when the NSD is deleted from the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NSD management subscription for deletion notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ PNFD Onboarding Notification ... Test title: PNFD Onboarding Notification ... Test objective: The objective is to test the dispatch of PNFD Onboarding notification when the PNFD onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A PNFD management subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ PNFD Onboarding Failure Notification ... Test title: PNFD Onboarding Failure Notification ... Test objective: The objective is to test the dispatch of PNFD Onboarding failure notification when the PNFD onboarding operation fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A PNFD management subscription for onboarding failure notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ PNFD Deletion Notification ... Test title: PNFD Deletion Notification ... Test objective: The objective is to test the dispatch of PNFD Deletion notification when the PNFD is deleted from the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A PNFD management subscription for deletion notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/NSDescriptors.robot b/SOL005/NSDManagement-API/NSDescriptors.robot index c03af8250..1521c90a5 100644 --- a/SOL005/NSDManagement-API/NSDescriptors.robot +++ b/SOL005/NSDManagement-API/NSDescriptors.robot @@ -13,7 +13,7 @@ GET all Network Service Descriptors Information ... Test title: GET all Network Service Descriptors Information ... Test objective: The objective is to test the retrieval of all the Network Service Descriptors information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Network Service Descriptors Information with attribute-based filter ... Test title: GET Network Service Descriptors Information with attribute-based filter ... Test objective: The objective is to test the retrieval of Network Service Descriptors information using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Network Service Descriptors Information with invalid attribute-based filter ... Test title: GET Network Service Descriptors Information with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of Network Service Descriptors information fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ Get all Network Service Descriptors Information with malformed authorization tok ... Test title: Get all Network Service Descriptors Information with malformed authorization token ... Test objective: The objective is to test that the retrieval of Network Service Descriptors Information fails when using malformed authorization token ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -65,7 +65,7 @@ Get all Network Service Descriptors Information without authorization token ... Test title: Get all Network Service Descriptors Information without authorization token ... Test objective: The objective is to test that the retrieval of Network Service Descriptors Information fails when omitting the authorization token ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -77,7 +77,7 @@ GET all Network Service Descriptors Information with expired or revoked authoriz ... Test title: GET all Network Service Descriptors Information with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of Network Service Descriptors Information fails when using expired or revoked authorization token ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -89,7 +89,7 @@ GET all Network Service Descriptors Information with "all_fields" attribute sele ... Test title: GET all Network Service Descriptors Information with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of all Network Service Descriptors Information with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ GET all Network Service Descriptors Information with "exclude_default" attribute ... Test title: GET all Network Service Descriptors Information with "exclude_default" attribute selector ... Test objective: The objective is to test the retrieval of all Network Service Descriptors Information with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ GET all Network Service Descriptors Information with "fields" attribute selector ... Test title: GET all Network Service Descriptors Information with "fields" attribute selector ... Test objective: The objective is to test the retrieval of all Network Service Descriptors Information with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "fields" attribute selector ... Post-Conditions: none @@ -131,7 +131,7 @@ GET all Network Service Descriptors Information with "exclude_fields" attribute ... Test title: GET all Network Service Descriptors Information with "exclude_fields" attribute selector ... Test objective: The objective is to test the retrieval of all Network Service Descriptors Information with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "exclude_fields" attribute selector ... Post-Conditions: none @@ -145,7 +145,7 @@ Create new Network Service Descriptor Resource ... Test title: Create new Network Service Descriptor Resource ... Test objective: The objective is to test the creation of a new Create new Network Service Descriptor resource and perform the JSON schema validation of the returned structure ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor resource is successfully created on the NFVO @@ -161,7 +161,7 @@ PUT all Network Service Descriptors - Method not implemented ... Test title: PUT all Network Service Descriptors Information - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify Network Service Descriptors Information ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -173,7 +173,7 @@ PATCH all Network Service Descriptors - Method not implemented ... Test title: PATCH all Network Service Descriptors Information - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptors Information ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -185,7 +185,7 @@ DELETE all Network Service Descriptors - Method not implemented ... Test title: DELETE all Network Service Descriptors Information - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptors Information ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptors are not deleted by the failed operation @@ -198,7 +198,7 @@ GET all Network Service Descriptors Information as Paged Response ... Test title: GET all Network Service Descriptors Information as Paged Response ... Test objective: The objective is to test the retrieval of all the Network Service Descriptors information as a Paged Response. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -211,7 +211,7 @@ Get all Network Service Descriptors Information - Bad Request Response too Big ... Test title: Get all Network Service Descriptors Information - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of Network Service Descriptors Information fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -224,7 +224,7 @@ GET all Network Service Descriptors Information with "exclude_default" and "fiel ... Test title: GET all Network Service Descriptors Information with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to test the retrieval of all Network Service Descriptors Information with "exclude_default" and "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" and "fields" selector ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "exclude_default" and "fields" attribute selector ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/NotificationConsumer.robot b/SOL005/NSDManagement-API/NotificationConsumer.robot index d769f58f1..e46855c0d 100644 --- a/SOL005/NSDManagement-API/NotificationConsumer.robot +++ b/SOL005/NSDManagement-API/NotificationConsumer.robot @@ -14,7 +14,7 @@ NSD Onboarding Notification ... Test title: NSD Onboarding Notification ... Test objective: The objective is to test that NSD Onboarding Notification is delivered with success to the notification consumer. ... Pre-conditions: A NSD management subscription for onboarding notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ NSD Onboarding Failure Notification ... Test title: NSD Onboarding Failure Notification ... Test objective: The objective is to test that NSD Onboarding Failure Notification is delivered with success to the notification consumer. ... Pre-conditions: A NSD management subscription for onboarding failure notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ NSD Change Notification ... Test title: NSD Change Notification ... Test objective: The objective is to test that NSD Change Notification is delivered with success to the notification consumer. ... Pre-conditions: A NSD management subscription for change notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ NSD Deletion Notification ... Test title: NSD Deletion Notification ... Test objective: The objective is to test that NSD Deletion Notification is delivered with success to the notification consumer. ... Pre-conditions: A NSD management subscription for deletion notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ Pnfd Onboarding Notification ... Test title: Pnfd Onboarding Notification ... Test objective: The objective is to test that Pnfd Onboarding Notification is delivered with success to the notification consumer. ... Pre-conditions: A Pnfd management subscription for onboarding notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ Pnfd Onboarding Failure Notification ... Test title: Pnfd Onboarding Failure Notification ... Test objective: The objective is to test that Pnfd Onboarding Failure Notification is delivered with success to the notification consumer. ... Pre-conditions: A Pnfd management subscription for onboarding failure notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ Pnfd Deletion Notification ... Test title: pnfd Deletion Notification ... Test objective: The objective is to test that Pnfd Deletion Notification is delivered with success to the notification consumer. ... Pre-conditions: A Pnfd management subscription for deletion notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/PNFD.robot b/SOL005/NSDManagement-API/PNFD.robot index 04a83b634..0fc34982b 100644 --- a/SOL005/NSDManagement-API/PNFD.robot +++ b/SOL005/NSDManagement-API/PNFD.robot @@ -13,7 +13,7 @@ Get single file PNFD in Plain Format ... Test title: Get single file PNFD in Plain Format ... Test objective: The objective is to test the retrieval of the PNFD in plain format within a PNFD archive and perform a validation that returned content is in plain format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The PNFD is implemented as a single file ... Post-Conditions: none @@ -26,7 +26,7 @@ Get PNFD in Zip Format ... Test title: Get PNFD in Zip Format ... Test objective: The objective is to test the retrieval of the PNFD in zip format within a PNFD archive and perform a validation that returned content is in zip format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Get single file PNFD in Plain or Zip Format ... Test title: Get single file PNFDin Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that response is in Plain or Zip format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The PNFD is implemented as a single file ... Post-Conditions: none @@ -52,7 +52,7 @@ Get multi file PNFD in Plain or Zip Format ... Test title: Get multi file PNFD in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The PNFD is implemented as a multi file ... Post-Conditions: none @@ -65,7 +65,7 @@ Get multi file PNFD in Plain Format ... Test title: Get multi file PNFD in Plain Format ... Test objective: The objective is to test that the retrieval of the multi file PNFD within a PNFD archive fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The PNFD is implemented as a multi file ... Post-Conditions: none @@ -78,7 +78,7 @@ Get PNFD Content with invalid resource identifier ... Test title: Get PNFD Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ Get PNFD with conflict due to onboarding state ... Test title: Get PNFD with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD is different from ONBOARDED. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ Get PNFD with security information ... Test title: Get PNFD with security information ... Test objective: The objective is to test the retrieval of the PNFD within a PNFD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ POST PNFD - Method not implemented ... Test title: POST PNFD - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new PNFD ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7a.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PUT PNFD - Method not implemented ... Test title: PUT PNFD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7a.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ PATCH PNFD - Method not implemented ... Test title: PATCH PNFD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7a.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ DELETE PNFD - Method not implemented ... Test title: DELETE PNFD - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete PNFD ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7a.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/PNFDArchiveContent.robot b/SOL005/NSDManagement-API/PNFDArchiveContent.robot index 79392484a..dfa2f5cea 100644 --- a/SOL005/NSDManagement-API/PNFDArchiveContent.robot +++ b/SOL005/NSDManagement-API/PNFDArchiveContent.robot @@ -13,7 +13,7 @@ Get PNFD Content ... Test title: Get PNFD Content ... Test objective: The objective is to test the retrieval of the PNFD Content in zip format and perform a validation that returned content is in plain format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ Get PNFD Content with invalid resource identifier ... Test title: Get PNFD Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the PNFD Content fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Get PNFD Content with conflict due to onboarding state ... Test title: Get PNFD Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the PNFD Content fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD for which the PNFD Content is requested is different from ONBOARDED. - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ Upload PNFD Content as zip file ... Test title: Upload PNFD Content as zip file ... Test objective: The objective is to test the upload of a PNFD Content in plain text format. ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The uploaded PNFD content is available in the NFVO @@ -65,7 +65,7 @@ Upload PNFD Content with conflict due to onboarding state ... Test title: Upload PNFD Content with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the PNFD Content fails due to a conflict when the PNFD is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD for which the PNFD Content is requested is different from CREATED. - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ POST PNFD Content - Method not implemented ... Test title: POST PNFD Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new PNF Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ PATCH PNFD Content - Method not implemented ... Test title: PATCH PNFD Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update PNF Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ DELETE PNFD Content - Method not implemented ... Test title: DELETE PNFD Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete PNF Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -114,7 +114,7 @@ Get PNFD Content with Range Request and NFVO supporting Range Requests ... Test title: Get PNFD Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of the PNFD Content in plain format when using a range request to return single range of bytes from the file, with the NFVO supporting it ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ Get PNFD Content with invalid Range Request ... Test title: Get PNFD Content with invalid Range Request ... Test objective: The objective is to test the retrieval of the PNFD Content in plain format and perform a validation that returned content is in plain format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ Upload PNFD Archive Content ... Test title: Upload PNFD Archive Content ... Test objective: The objective is to test the PNFD archive has been accepted for uploading, but the processing has not been completed. ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/PNFDArchiveManifest.robot b/SOL005/NSDManagement-API/PNFDArchiveManifest.robot index 8ab2a1874..9882b41a6 100644 --- a/SOL005/NSDManagement-API/PNFDArchiveManifest.robot +++ b/SOL005/NSDManagement-API/PNFDArchiveManifest.robot @@ -12,7 +12,7 @@ Get PNFD Archive Manifest ... Test title: Get PNFD Archive Manifest ... Test objective: The objective is to test that GET method reads the content of the manifest file within an PNFD archive ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get PNFD Archive Manifest with security information ... Test title: Get PNFD Archive Manifest with security information ... Test objective: The objective is to test the retrieval of content of the manifest file within an PNFD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get PNFD Archive Manifest with conflict due to onboarding state ... Test title: Get PNFD Archive Manifest with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of content of the manifest file within an PNFD archive fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD is different from ONBOARDED. - ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ POST PNFD Archive Manifest - Method not implemented ... Test title: POST PNFD Archive Manifest - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.7b.3.1 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7b.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT PNFD Archive Manifest - Method not implemented ... Test title: PUT PNFD Archive Manifest - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.7b.3.3 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7b.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH PNFD Archive Manifest - Method not implemented ... Test title: PATCH PNFD Archive Manifest - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.7b.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7b.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE PNFD Archive Manifest - Method not implemented ... Test title: DELETE PNFD Archive Manifest - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.7b.3.5 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clause 5.4.7b.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/PNFDescriptors.robot b/SOL005/NSDManagement-API/PNFDescriptors.robot index 935f789be..7cae667af 100644 --- a/SOL005/NSDManagement-API/PNFDescriptors.robot +++ b/SOL005/NSDManagement-API/PNFDescriptors.robot @@ -13,7 +13,7 @@ GET all PNF Descriptors Information ... Test title: GET all PNF Descriptors Information ... Test objective: The objective is to test the retrieval of all the PNF Descriptors information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET PNF Descriptors Information with attribute-based filter ... Test title: GET PNF Descriptors Information with attribute-based filter ... Test objective: The objective is to test the retrieval of PNF Descriptors information using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET PNF Descriptors Information with invalid attribute-based filter ... Test title: GET PNF Descriptors Information with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of PNF Descriptors information fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET all PNF Descriptors Information with "all_fields" attribute selector ... Test title: GET all PNF Descriptors Information with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET all PNF Descriptors Information with "exclude_default" attribute selector ... Test title: GET all PNF Descriptors Information with "exclude_default" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ GET all PNF Descriptors Information with "fields" attribute selector ... Test title: GET all PNF Descriptors Information with "fields" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "fields" attribute selector ... Post-Conditions: none @@ -95,7 +95,7 @@ GET all PNF Descriptors Information with "exclude_fields" attribute selector ... Test title: GET all PNF Descriptors Information with "exclude_fields" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "exclude_fields" attribute selector ... Post-Conditions: none @@ -109,7 +109,7 @@ Create new PNF Descriptor Resource ... Test title: Create new PNF Descriptor Resource ... Test objective: The objective is to test the creation of a new Create new PNF Descriptor resource and perform the JSON schema validation of the returned structure ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNF Descriptor resource is successfully created on the NFVO @@ -124,7 +124,7 @@ PUT all PNF Descriptors - Method not implemented ... Test title: PUT all PNF Descriptors Information - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify PNF Descriptors Information ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -136,7 +136,7 @@ PATCH all PNF Descriptors - Method not implemented ... Test title: PATCH all PNF Descriptors Information - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NF Descriptors Information ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ DELETE all PNF Descriptors - Method not implemented ... Test title: DELETE all PNF Descriptors Information - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete PNF Descriptors Information ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ GET all PNF Descriptors Information as Paged Response ... Test title: GET all PNF Descriptors Information as Paged Response ... Test objective: The objective is to test the retrieval of all the PNF Descriptors information as a Paged Response. ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -173,7 +173,7 @@ GET PNF Descriptors Information - Bad Request Response too Big ... Test title: GET PNF Descriptors Information - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of PNF Descriptors information fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -186,7 +186,7 @@ GET all PNF Descriptors Information with "exclude_default" and "fields" attribut ... Test title: GET all PNF Descriptors Information with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "exclude_default" and "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" and "fields" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "exclude_default" and "fields" attribute selector ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/Subscriptions.robot b/SOL005/NSDManagement-API/Subscriptions.robot index bcff75e5a..170efabc2 100644 --- a/SOL005/NSDManagement-API/Subscriptions.robot +++ b/SOL005/NSDManagement-API/Subscriptions.robot @@ -15,7 +15,7 @@ Get All NSD Management Subscriptions ... Test title: Get All NSD Management Subscriptions ... Test objective: The objective is to test the retrieval of all NSD Management subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ Get NSD Management Subscriptions with attribute-based filter ... Test title: Get NSD Management Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of NSD Management subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ Get NSD Management Subscriptions with invalid attribute-based filter ... Test title: Get NSD Management Subscriptions with attribute-based filters ... Test objective: The objective is to test that the retrieval of NSD Management subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET NSD Management Subscription with invalid resource endpoint ... Test title: GET NSD Management Subscription with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all NSD Management subscriptions fails when using invalid resource endpoint. ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ Create new NSD Management subscription ... Test title: Create new NSD Management subscription ... Test objective: The objective is to test the creation of a new NSD Management subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NSD Management subscription is successfully set and it matches the issued subscription @@ -84,7 +84,7 @@ Create duplicated NSD Management subscription with NFVO not creating duplicated ... Test title: Create duplicated NSD Management subscription with NFVO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated NSD Management subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing NSD Management subscription returned is available in the NFVO @@ -100,7 +100,7 @@ Create duplicated NSD Management subscription with NFVO creating duplicated subs ... Test title: Create duplicated NSD Management subscription with NFVO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated NSD Management subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated NSD Management subscription is successfully set and it matches the issued subscription @@ -115,7 +115,7 @@ PUT NSD Management Subscriptions - Method not implemented ... Test title: PUT NSD Management Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NSD Management subscriptions ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ PATCH NSD Management Subscriptions - Method not implemented ... Test title: PATCH NSD Management Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NSD Management subscriptions ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -139,7 +139,7 @@ DELETE NSD Management Subscriptions - Method not implemented ... Test title: DELETE NSD Management Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete NSD Management subscriptions ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NSD Management subscriptions are not deleted by the failed operation @@ -152,7 +152,7 @@ Get All NSD Management Subscriptions as Paged Response ... Test title: Get All NSD Management Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all NSD Management subscriptions as a Paged Response. ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ Get NSD Management Subscriptions - Bad Request Response too Big ... Test title: Get NSD Management Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NSD Management subscriptions fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -178,7 +178,7 @@ Create new NSD Management subscription - Unprocessable Entity ... Test title: Create new NSD Management subscription - Unprocessable Entity ... Test objective: The objective is to test the creation of a new NSD Management subscription fials when content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 3e456c48c005fb6e772c193f090d1668199ca49a Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Thu, 11 Mar 2021 10:52:07 +0100 Subject: [PATCH 327/580] Updated API version --- SOL005/NSDManagement-API/environment/variables.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index 410a1b4f4..6331cfcdd 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -9,7 +9,7 @@ ${ACCEPT_JSON} application/json ${apiRoot} / ${AUTH_USAGE} 1 ${NEG_AUTHORIZATION_TOKEN} Bearer negativetoken -${apiMajorVersion} v1 +${apiMajorVersion} v2 ${apiName} nsd ${FIELD_USAGE} 1 ${NFVO_AUTHENTICATION} Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 -- GitLab From 5d8587d70537f1c5d502c365f3ecc50235345375 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Mon, 8 Mar 2021 14:07:31 +0100 Subject: [PATCH 328/580] Updated versions --- SOL005/NSFaultManagement-API/Alarms.robot | 42 ++++++++--------- SOL005/NSFaultManagement-API/ApiVersion.robot | 20 ++++---- .../IndividualAlarm.robot | 16 +++---- .../IndividualSubscription.robot | 10 ++-- .../NotificationConsumer.robot | 6 +-- .../NotificationEndpoint.robot | 6 +-- .../NSFaultManagement-API/Subscriptions.robot | 46 +++++++++---------- 7 files changed, 73 insertions(+), 73 deletions(-) diff --git a/SOL005/NSFaultManagement-API/Alarms.robot b/SOL005/NSFaultManagement-API/Alarms.robot index 4650a5b89..2ebcec5f3 100644 --- a/SOL005/NSFaultManagement-API/Alarms.robot +++ b/SOL005/NSFaultManagement-API/Alarms.robot @@ -12,7 +12,7 @@ POST Alarms - Method not implemented ... Test title:POST Alarms - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create Fault management alarms on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET information about multiple alarms ... Test title: GET information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ GET information about multiple alarms with filters ... Test title: GET information about multiple alarms with filters ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ GET information about multiple alarms Bad Request Invalid attribute-based filter ... Test title: GET information about multiple alarms Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to try to retrieve information about the alarm list with invalid filters and perform a JSON schema and content validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ GET information about multiple alarms with "all_fields" attribute selector ... Test title: GET information about multiple alarms with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ GET information about multiple alarms with exclude_default attribute selector ... Test title: GET information about multiple alarms with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ GET information about multiple alarms with fields attribute selector ... Test title: GET information about multiple alarms with fields attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ GET information about multiple alarms with "exclude_fields" attribute selector ... Test title: GET information about multiple alarms with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Fault management alarms on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Fault management alarms on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -140,7 +140,7 @@ DELETE Alarms - Method not implemented ... Test title: DELETE Alarms - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Fault management alarms on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -152,7 +152,7 @@ GET information about multiple alarms as Paged Response ... Test title: GET information about multiple alarms as Paged Response ... Test objective: The objective is to retrieve information about the alarm list as paged response. ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ GET information about multiple alarms - Bad Request Response too Big ... Test title: GET information about multiple alarms - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of information about the alarm list fails because response is too big, and perform a JSON schema and content validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -178,7 +178,7 @@ GET information about multiple alarms with filter "id" ... Test title: GET information about multiple alarms with filter "id" ... Test objective: The objective is to retrieve information about the alarm list with filter "id" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -192,7 +192,7 @@ GET information about multiple alarms with filter "rootCauseFaultyComponent.faul ... Test title: GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyNestedNsInstanceId" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyComponent.faultyNestedNsInstanceId" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -206,7 +206,7 @@ GET information about multiple alarms with filter "rootCauseFaultyComponent.faul ... Test title: GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -220,7 +220,7 @@ GET information about multiple alarms with filter "rootCauseFaultyComponent.faul ... Test title: GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyVnfInstanceId" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyComponent.faultyVnfInstanceId" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -234,7 +234,7 @@ GET information about multiple alarms with filter "rootCauseFaultyResource.fault ... Test title: GET information about multiple alarms with filter "rootCauseFaultyResource.faultyResourceType" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyResource.faultyResourceType" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -248,7 +248,7 @@ GET information about multiple alarms with filter "eventType" ... Test title: GET information about multiple alarms with filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with filter "eventType" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -262,7 +262,7 @@ GET information about multiple alarms with filter "perceivedSeverity" ... Test title: GET information about multiple alarms with filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with filter "perceivedSeverity" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -276,7 +276,7 @@ GET information about multiple alarms with filter "probableCause" ... Test title: GET information about multiple alarms with filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with filter "probableCause" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSFaultManagement-API/ApiVersion.robot b/SOL005/NSFaultManagement-API/ApiVersion.robot index 663f8b96d..2d67fab77 100644 --- a/SOL005/NSFaultManagement-API/ApiVersion.robot +++ b/SOL005/NSFaultManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSFaultManagement-API/IndividualAlarm.robot b/SOL005/NSFaultManagement-API/IndividualAlarm.robot index d0b5dafe4..957752f38 100644 --- a/SOL005/NSFaultManagement-API/IndividualAlarm.robot +++ b/SOL005/NSFaultManagement-API/IndividualAlarm.robot @@ -14,7 +14,7 @@ POST Individual Alarm - Method not implemented ... Test title:POST Individual Alarm - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Fault management individual alarm on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET information about Individual Alarm ... Test title: GET information about Individual Alarm ... Test objective: The objective is to retrieve information about individual alarm and perform a JSON schema and content validation of the returned alarm data structure ... Pre-conditions: The related alarm exists - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET information about Invalid Individual Alarm ... Test title: GET information about Invalid Individual Alarm ... Test objective: The objective is to try to read an Invalid individual alarm and get 404 not found response code ... Pre-conditions: The related alarm does not exists - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Individual Alarm - Method not implemented ... Test title:PUT Individual Alarm - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Fault management individual alarm on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Alarm ... Test title: Modify an individual alarm resource ... Test objective: The objective is to Modify an individual alarm resource and perform a JSON schema and content validation of the returned alarm modifications data structure ... Pre-conditions: The related alarm exists - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Alarm - Conflict ... Test title: Modify an individual alarm resource - Conflict ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set ... Pre-conditions: The related alarm exists - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ PATCH Alarm - Precondition failed ... Test title: Modify an individual alarm resource - Precondition failed ... Test objective: The objective is to test that an individual alarm resource cannot be modifed if the resource was modified by another entity ... Pre-conditions: The related alarm exists - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: @@ -103,7 +103,7 @@ DELETE Individual Alarm - Method not implemented ... Test title:DELETE Individual Alarm - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Fault management individual alarm on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSFaultManagement-API/IndividualSubscription.robot b/SOL005/NSFaultManagement-API/IndividualSubscription.robot index b89a65012..91a2d2e70 100644 --- a/SOL005/NSFaultManagement-API/IndividualSubscription.robot +++ b/SOL005/NSFaultManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ Post Individual Subscription - Method not implemented ... Test title:Post Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Fault management subscription on NFV ... Pre-conditions:none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ Get Information about an individual subscription ... Test title: Get Information about an individual subscription ... Test objective: The objective is to read an individual subscription for NFVO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT an individual subscription - Method not implemented ... Test title:PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Fault management subscription on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title:PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Fault management subscription on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE an individual subscription ... Test title:DELETE an individual subscription ... Test objective: The objective is to DELETE an individual subscription ... Pre-conditions: The Subsbcription already exists - ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: subscription is not deleted diff --git a/SOL005/NSFaultManagement-API/NotificationConsumer.robot b/SOL005/NSFaultManagement-API/NotificationConsumer.robot index 5964b816e..e64f7cd78 100644 --- a/SOL005/NSFaultManagement-API/NotificationConsumer.robot +++ b/SOL005/NSFaultManagement-API/NotificationConsumer.robot @@ -13,7 +13,7 @@ NS Fault Alarm Notification ... Test title: NS Fault Alarm Notification ... Test objective: The objective is to test that NS Fault Alarm Notification is delivered with success to the notification consumer ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ NS Fault Alarm Cleared Notification ... Test title: NS Fault Alarm Cleared Notification ... Test objective: The objective is to test that NS Fault Alarm Cleared Notification is delivered with success to the notification consumer ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm cleared notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ NS Fault Alarm List Rebuilt Notification ... Test title: NS Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test that NS Fault Alarm List Rebuilt Notification is delivered with success to the notification consumer ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSFaultManagement-API/NotificationEndpoint.robot b/SOL005/NSFaultManagement-API/NotificationEndpoint.robot index 97421160e..3e811a2a3 100644 --- a/SOL005/NSFaultManagement-API/NotificationEndpoint.robot +++ b/SOL005/NSFaultManagement-API/NotificationEndpoint.robot @@ -16,7 +16,7 @@ NS Fault Alarm Notification ... Test title: NS Fault Alarm Notification ... Test objective: The objective is to test the dispatch of NS Fault Alarm Notification when a virtualised resource within an NS instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ NS Fault Alarm Cleared Notification ... Test title: NS Fault Alarm Cleared Notification ... Test objective: The objective is to test the dispatch of NS Fault Alarm Cleared Notification when a faulty virtualised resource within an NS instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ NS Fault Alarm List Rebuilt Notification ... Test title: NS Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test the dispatch of NS Fault Alarm List Rebuilt Notification when the NFVO decides to rebuild the list of its NS alarms, e.g. due to a corruption in the alarm storage, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance is instantiated, one or more virtualised resource are in faulty state, and a subscription for fault alarm list rebuilt notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSFaultManagement-API/Subscriptions.robot b/SOL005/NSFaultManagement-API/Subscriptions.robot index 4850c4b07..5c5480266 100644 --- a/SOL005/NSFaultManagement-API/Subscriptions.robot +++ b/SOL005/NSFaultManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ Create a new alarm subscription ... Test title: Create a new alarm subscription ... Test objective: The objective is to create a new Fault management alarm subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure ... Pre-conditions: no subscription with the same filter and callbackUri exists - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ Create a new alarm subscription # ... 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 + # ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.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 @@ -44,7 +44,7 @@ Create a new alarm subscription # ... 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 + # ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 # ... Config ID: Config_prod_NFVO # ... Applicability: the NFVO decides to not create a duplicate subscription resource # ... Post-Conditions: none @@ -57,7 +57,7 @@ Create a duplicated Subscription ... 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 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: none @@ -71,7 +71,7 @@ Retrieve a list of alarm subscriptions ... Test title: Retrieve a list of alarm subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ Retrieve a list of alarm subscriptions - Filter ... Test title: Retrieve a list of alarm subscriptions - Filter ... Test objective: The objective is to retrieve the list of active subscriptions with filter and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective:The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters and perform a JSON schema and content validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ GET subscriptions with "all_fields" attribute selector ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -123,7 +123,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -136,7 +136,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -149,7 +149,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -162,7 +162,7 @@ PUT subscriptions - Method not implemented ... Test title:PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Fault management subscriptions on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ PATCH subscriptions - Method not implemented ... Test title:PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Fault management subscriptions on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -186,7 +186,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management subscriptions on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -198,7 +198,7 @@ Retrieve a list of alarm subscriptions as Paged Response ... Test title: Retrieve a list of alarm subscriptions as Paged Response ... Test objective: The objective is to retrieve the list of active subscriptions as paged response. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -211,7 +211,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective:The objective is test that the retrieval of active subscriptions list fails because response is too big, and perform a JSON schema and content validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -224,7 +224,7 @@ Retrieve a list of alarm subscriptions with filter "id" ... Test title: Retrieve a list of alarm subscriptions with filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -238,7 +238,7 @@ Retrieve a list of alarm subscriptions with filter "filter.notificationTypes" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -252,7 +252,7 @@ Retrieve a list of alarm subscriptions with filter "filter.faultyResourceTypes" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.faultyResourceTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -266,7 +266,7 @@ Retrieve a list of alarm subscriptions with filter "filter.perceivedSeverities" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -280,7 +280,7 @@ Retrieve a list of alarm subscriptions with filter "filter.eventTypes" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -294,7 +294,7 @@ Retrieve a list of alarm subscriptions with filter "filter.probableCauses" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -308,7 +308,7 @@ Create a new alarm subscription - Unprocessable Entity ... Test title: Create a new alarm subscription- Unprocessable Entity ... Test objective: The objective is to test that creation of a new Fault management alarm subscriptions fials when content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 7e7893aaaee9be54f969f268370728a632244e91 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 16:36:00 +0500 Subject: [PATCH 329/580] api major version update --- SOL005/NSLifecycleManagement-API/environment/variables.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index dd923a049..ff6348270 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -14,7 +14,7 @@ ${ACCEPT_JSON} application/json ${ACCEPT} application/json ${apiRoot} / ${apiName} nslcm -${apiMajorVersion} v1 +${apiMajorVersion} v2 ${AUTH_USAGE} 1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX ${nsInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -- GitLab From a2ce9a6b7651629014971d76d4500c1b5b2e2853 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 18:37:53 +0500 Subject: [PATCH 330/580] new resources added in NS LCM-API --- .../IndividualVNFSnapshot.robot | 92 ++ .../NSLCMOperationKeywords.robot | 191 +++ .../VNFSnapshots.robot | 194 +++ .../environment/variables.txt | 10 + .../schemas/VnfSnapshotInfo.schema.json | 1392 ++++++++++++++++ .../schemas/VnfSnapshotsInfo.schema.json | 1396 +++++++++++++++++ 6 files changed, 3275 insertions(+) create mode 100644 SOL005/NSLifecycleManagement-API/IndividualVNFSnapshot.robot create mode 100644 SOL005/NSLifecycleManagement-API/VNFSnapshots.robot create mode 100644 SOL005/NSLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json create mode 100644 SOL005/NSLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json diff --git a/SOL005/NSLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL005/NSLifecycleManagement-API/IndividualVNFSnapshot.robot new file mode 100644 index 000000000..cc3648bb8 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -0,0 +1,92 @@ +*** Settings *** +Resource NSLCMOperationKeywords.robot + +*** Test Cases *** +POST Individual VNF Snapshot - Method not implemented + [Documentation] Test ID: 5.3.2.27.1 + ... Test title: POST Individual VNF Snapshot - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 6.4.20.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST individual VNF Snapshot + Check HTTP Response Status Code Is 405 + +GET Information about an individual VNF Snapshot - SUCCESSFUL + [Documentation] Test ID: 5.3.2.27.2 + ... Test title: GET Information about an individual VNF Snapshot - SUCCESSFUL + ... Test objective: The objective is to GET information about an individual VNF Snapshot + ... Pre-conditions: none + ... Reference: Clause 6.4.20.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET individual VNF Snapshot + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotInfo + +GET Information about an individual VNF Snapshot - NOT FOUND + [Documentation] Test ID: 5.3.2.27.3 + ... Test title: GET Information about an individual VNF Snapshot - NOT FOUND + ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot fails when using an invalid resource identifier. + ... Pre-conditions: none + ... Reference: Clause 6.4.20.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Snapshot with Invalid URI + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Individual VNF Snapshot - Method not implemented + [Documentation] Test ID: 5.3.2.27.4 + ... Test title: PUT Individual VNF Snapshot - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 6.4.20.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT individual VNF Snapshot + Check HTTP Response Status Code Is 405 + +PATCH Individual VNF Snapshot - Method not implemented + [Documentation] Test ID: 5.3.2.27.5 + ... Test title: PATCH Individual VNF Snapshot - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 6.4.20.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: VNF Snapshot not modified + PATCH individual VNF Snapshot + Check HTTP Response Status Code Is 405 + +DELETE Individual VNF Snapshot + [Documentation] Test ID: 5.3.2.27.6 + ... Test title: DELETE Individual VNF Snapshot + ... Test objective: The objective is to delete a VNF Snapshot + ... Pre-conditions: none + ... Reference: Clause 6.4.20.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: VNF Snapshot resource is deleted. + DELETE individual VNF Snapshot + Check HTTP Response Status Code Is 204 + Check Postcondition VNF Snapshot Resource Is Deleted + +DELETE Individual VNF Snapshot - Conflict + [Documentation] Test ID: 5.3.2.27.7 + ... Test title: DELETE Individual VNF Snapshot Conflict + ... Test objective: The objective is to verify that The operation cannot be executed currently, due to a conflict with the state of the VNF Snapshot resource. + ... Pre-conditions: none + ... Reference: Clause 6.4.20.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: VNF snapshot is in use by some operation such as reverting a VNF instance to a VNF snapshot or creating a VNF snapshot package. + ... Post-Conditions: VNF Snapshot resource is not deleted. + DELETE individual VNF Snapshot - CONFLICT + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + Check Postcondition VNF Snapshot Resource Existence \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 37405543c..1407821ed 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -1392,3 +1392,194 @@ Check NsLcmOpOcc content against NS Descriptor Match the NsLcmOpOcc Response Attributes with NS Descriptors Should Be Equal As Strings ${response['body']['affectedNss'][0]['nsdId']} ${NSDescriptor_ID} Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${SAP_IDs} ${response['body']['affectedSaps'][0]['sapdId']} + +POST VNF Snapshots + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots + Log Query VNF The GET method queries information about multiple VNF snapshots. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots with bad attribute + Log Query VNF The GET method queries information about multiple VNF snapshots. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?attribute_not_exist=some_value + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots with bad filter + Log Query VNF The GET method queries information about multiple VNF snapshots. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?${NEG_FILTER_snapshot} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots using filter + Log Query VNF The GET method queries information about multiple VNF snapshots using filter. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?${POS_FILTER_snapshot} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots with all_fields attribute selector + Log Query status information about multiple VNF snapshots, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?all_fields + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshots with exclude_default attribute selector + Log Query status information about multiple VNF snapshots using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshots with fields attribute selector + Log Query status information about multiple VNF snapshots, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=${fields_snapshot} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshots with exclude_default and fields attribute selector + Log Query status information about multiple VNF snapshots, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=${fields_snapshot}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshots with exclude_fields attribute selector + Log Query status information about multiple VNF snapshots, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?exclude_fields=${fields_snapshot} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET VNF Snapshots without Paging support + Run Keyword If ${PAGING_SUPPORTED} == 0 GET multiple VNF Snapshots + +GET VNF Snapshots with Paging support + Run Keyword If ${PAGING_SUPPORTED} == 1 GET multiple VNF Snapshots + +Check HTTP Response Header Contains Link + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + +PUT VNF Snapshots + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH VNF Snapshots + Log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE VNF Snapshots + Log Trying to perform a DELETE. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST individual VNF Snapshot + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot + log Trying to get information about an individual VNF snapshot + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot with invalid URI + log Trying to get information about an individual VNF snapshot + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${invalidVnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT individual VNF Snapshot + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH individual VNF Snapshot + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE individual VNF Snapshot + log Trying to DELETE an individual VNF Snapshot + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE individual VNF Snapshot - CONFLICT + log Trying to DELETE an individual VNF Snapshot that is already in use by another operation + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId_InUse} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check Postcondition VNF Snapshot Resource Is Deleted + Get individual VNF Snapshot + Integer response status 404 + Log VNF Snapshot Resource deleted + +Check Postcondition VNF Snapshot Resource Existence + Get individual VNF Snapshot + Integer response status 200 + Log VNF Snapshot Resource is not deleted \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/VNFSnapshots.robot b/SOL005/NSLifecycleManagement-API/VNFSnapshots.robot new file mode 100644 index 000000000..dfa5b2e32 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/VNFSnapshots.robot @@ -0,0 +1,194 @@ +*** Settings *** +Resource NSLCMOperationKeywords.robot + +*** Test Cases *** +POST VNF Snapshots - Method Not Implemented + [Documentation] Test ID: 5.3.2.27.1 + ... Test title: POST VNF Snapshots - Method Not Implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST VNF Snapshots + Check HTTP Response Status Code Is 405 + +GET information about multiple VNF Snapshots + [Documentation] Test ID: 5.3.2.27.2 + ... Test title: GET information about multiple VNF Snapshots + ... Test objective: The objective is to get information about multiples VNF snapshots + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 5.3.2.27.3 + ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters + ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with bad attribute + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF Snapshots Bad Request Invalid attribute selector + [Documentation] Test ID: 5.3.2.27.4 + ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute selector + ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with bad filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF Snapshots with "all_fields" attribute selector + [Documentation] Test ID: 5.3.2.27.5 + ... Test title: GET information about multiple VNF Snapshots with "all_fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots with "exclude_default" attribute selector + [Documentation] Test ID: 5.3.2.27.6 + ... Test title: GET information about multiple VNF Snapshots with "exclude_default" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots with "fields" attribute selector + [Documentation] Test ID: 5.3.2.27.7 + ... Test title: GET information about multiple VNF Snapshots with "fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 5.3.2.27.8 + ... Test title: GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots with "exclude_fields" attribute selector + [Documentation] Test ID: 5.3.2.27.9 + ... Test title: GET information about multiple VNF Snapshots with "exclude_fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET VNF Snapshots - Bad Request Response too Big + [Documentation] Test ID: 5.3.2.27.10 + ... Test title: GET VNF Snapshots - Bad Request Response too Big + ... Test objective: The objective is test that the retrieval of existing VNF Snapshots list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO does not support paged response. + ... Post-Conditions: none + GET VNF Snapshots without Paging support + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET VNF Snapshots as Paged Response + [Documentation] Test ID: 5.3.2.27.11 + ... Test title: GET VNF Snapshots as Paged Response + ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshots as paged response. + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO supports paged response. + ... Post-Conditions: none + GET VNF Snapshots with Paging support + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +PUT VNF Snapshots - Method not implemented + [Documentation] Test ID: 5.3.2.27.12 + ... Test title: PUT VNF Snapshots - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT VNF Snapshots + Check HTTP Response Status Code Is 405 + +PATCH VNF Snapshots - Method not implemented + [Documentation] Test ID: 5.3.2.27.13 + ... Test title: PATCH VNF Snapshots - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH VNF Snapshots + Check HTTP Response Status Code Is 405 + +DELETE VNF Snapshots - Method not implemented + [Documentation] Test ID: 5.3.2.27.14 + ... Test title: DELETE VNF Snapshots - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE VNF Snapshots + Check HTTP Response Status Code Is 405 + +GET information about multiple VNF Snapshots using Filter + [Documentation] Test ID: 5.3.2.27.15 + ... Test title: GET information about multiple VNF Snapshots using Filter + ... Test objective: The objective is to get information about multiples VNF snapshots using filter + ... Pre-conditions: none + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots using filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index ff6348270..0ba768410 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -77,6 +77,16 @@ ${NEG_FILTER} attribute_not_exist=some_value ${NEG_SELECTOR} fields=wrong_field ${json} {"notificationStatus": ""} +${POS_FILTER_snapshot} id=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Positive case, suing compiant fields name for filtering get request +${NEG_FILTER_snapshot} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field +${fields_snapshot} vnfSnapshot + +${vnfSnapshotInfoId} +${vnfSnapshotInfoId_InUse} snapshotId-of-a-resource-AlreadyInUse-bySomeOther-operation +${invalidVnfSnapshotInfoId} invalid-or-nonexistent-vnfSnapshotInforId + +${PAGING_SUPPORTED} 1 + ${callbackResp} 127.0.0.1 ${check_descriptors} 1 diff --git a/SOL005/NSLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json b/SOL005/NSLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json new file mode 100644 index 000000000..ad7945ce5 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json @@ -0,0 +1,1392 @@ +{ + "description": "This type represents an \"Individual VNF snapshot\" resource. The \"id\" attributed is used by the NFVO to index and\nidentify the VNF snapshots information resources that are accessible via the NFVO. The identifier is still\ngenerated by the VNFM and copied into the present \"VnfSnapshotInfo\" representing the \"Individual VNF snapshot\"\nresource hold by the NFVO.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshotPkgId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshot": { + "description": "This type represents a VNF Snapshot. It shall comply with the provisions defined in table 6.5.2.18-1.\n", + "type": "object", + "required": [ + "id", + "vnfInstanceId", + "triggeredAt", + "createdAt", + "vnfdId", + "vnfInstance", + "vnfcSnapshots" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstance": { + "description": "This type represents a VNF instance. Clause B.3.2 of ETSI GS NFV-SOL 003 [4] provides examples illustrating the relationship among the different run-time information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "vnfPkgId", + "instantiationState" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "Name of the VNF instance. Modifications to this attribute can be requested using the \"ModifyVnfInfoData\" structure.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. Modifications to this attribute can be requested using the \"ModifyVnfInfoData\" structure.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + }, + "vnfPkgId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState", + "extCpInfo" + ], + "properties": { + "flavourId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfState": { + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in Table 6.5.3.70-1.\n", + "type": "object", + "required": [ + "id", + "cpdId" + ], + "oneOf": [{ + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "cpConfigId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n", + "type": "object", + "required": [ + "layerProtocol", + "ipOverEthernet" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + }, + "type": { + "description": "The type of the IP addresses\n", + "type": "string", + "enum": [ + "PV4", + "PV6" + ] + }, + "addresses": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. \n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure. Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId’ attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "type": "object", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": * At least one of the \"linkPortId\" and \"cpProtocolData\" attributes\n shall be present for a to-be-created external CP instance or an\n existing external CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "ipAddresses" + ] + }, + { + "required": [ + "macAddress" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "extManagedVirtualLinkInfo": { + "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 6.5.3.59).\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "networkResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "extManagedMultisiteVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "monitoringParameters": { + "description": "Performance metrics tracked by the VNFM (e.g. for auto-scaling purposes) as identified by the VNF provider in the VNFD.\n", + "type": "array", + "items": { + "description": "This type represents a monitoring parameter that is tracked by the VNFM, for example, for auto-scaling purposes. It shall comply with the provisions defined in Table 6.5.3.69-1.\n", + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "computeResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n", + "type": "object", + "required": [ + "layerProtocol", + "ipOverEthernet" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + }, + "type": { + "description": "The type of the IP addresses\n", + "type": "string", + "enum": [ + "PV4", + "PV6" + ] + }, + "addresses": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + }, + "virtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "networkResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "vnfcSnapshots": { + "description": "Information about VNFC Snapshots constituting this VNF Snapshot.\n", + "type": "array", + "items": { + "description": "This type represents a VNFC Snapshot. It shall comply with the provisions defined in table 6.5.3.77-1.\n", + "type": "object", + "required": [ + "id", + "vnfcInstanceId", + "triggeredAt", + "createdAt", + "vnfcInfoId" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "computeSnapshotResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "storageSnapshotResources": { + "description": "Reference to the \"VirtualStorageResourceInfo\" structure in the \"VnfInstance\" structure that represents the virtual storage resource.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "storageResourceId" + ], + "properties": { + "storageResourceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "storageSnapshotResources": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "_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 a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json b/SOL005/NSLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json new file mode 100644 index 000000000..ccace64c8 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json @@ -0,0 +1,1396 @@ +{ + "type": "array", + "items": + { + "description": "This type represents an \"Individual VNF snapshot\" resource. The \"id\" attributed is used by the NFVO to index and\nidentify the VNF snapshots information resources that are accessible via the NFVO. The identifier is still\ngenerated by the VNFM and copied into the present \"VnfSnapshotInfo\" representing the \"Individual VNF snapshot\"\nresource hold by the NFVO.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshotPkgId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshot": { + "description": "This type represents a VNF Snapshot. It shall comply with the provisions defined in table 6.5.2.18-1.\n", + "type": "object", + "required": [ + "id", + "vnfInstanceId", + "triggeredAt", + "createdAt", + "vnfdId", + "vnfInstance", + "vnfcSnapshots" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstance": { + "description": "This type represents a VNF instance. Clause B.3.2 of ETSI GS NFV-SOL 003 [4] provides examples illustrating the relationship among the different run-time information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "vnfPkgId", + "instantiationState" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "Name of the VNF instance. Modifications to this attribute can be requested using the \"ModifyVnfInfoData\" structure.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. Modifications to this attribute can be requested using the \"ModifyVnfInfoData\" structure.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + }, + "vnfPkgId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState", + "extCpInfo" + ], + "properties": { + "flavourId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfState": { + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in Table 6.5.3.70-1.\n", + "type": "object", + "required": [ + "id", + "cpdId" + ], + "oneOf": [{ + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "cpConfigId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n", + "type": "object", + "required": [ + "layerProtocol", + "ipOverEthernet" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + }, + "type": { + "description": "The type of the IP addresses\n", + "type": "string", + "enum": [ + "PV4", + "PV6" + ] + }, + "addresses": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. \n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure. Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId’ attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "type": "object", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": * At least one of the \"linkPortId\" and \"cpProtocolData\" attributes\n shall be present for a to-be-created external CP instance or an\n existing external CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "ipAddresses" + ] + }, + { + "required": [ + "macAddress" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "extManagedVirtualLinkInfo": { + "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 6.5.3.59).\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "networkResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "extManagedMultisiteVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "monitoringParameters": { + "description": "Performance metrics tracked by the VNFM (e.g. for auto-scaling purposes) as identified by the VNF provider in the VNFD.\n", + "type": "array", + "items": { + "description": "This type represents a monitoring parameter that is tracked by the VNFM, for example, for auto-scaling purposes. It shall comply with the provisions defined in Table 6.5.3.69-1.\n", + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "computeResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n", + "type": "object", + "required": [ + "layerProtocol", + "ipOverEthernet" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + }, + "type": { + "description": "The type of the IP addresses\n", + "type": "string", + "enum": [ + "PV4", + "PV6" + ] + }, + "addresses": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + }, + "virtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "networkResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "vnfcSnapshots": { + "description": "Information about VNFC Snapshots constituting this VNF Snapshot.\n", + "type": "array", + "items": { + "description": "This type represents a VNFC Snapshot. It shall comply with the provisions defined in table 6.5.3.77-1.\n", + "type": "object", + "required": [ + "id", + "vnfcInstanceId", + "triggeredAt", + "createdAt", + "vnfcInfoId" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "computeSnapshotResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "storageSnapshotResources": { + "description": "Reference to the \"VirtualStorageResourceInfo\" structure in the \"VnfInstance\" structure that represents the virtual storage resource.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "storageResourceId" + ], + "properties": { + "storageResourceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "storageSnapshotResources": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "_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 a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + } + } + } +} \ No newline at end of file -- GitLab From 9153458cfe4fa5903fd72aea1037489b17f95c70 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 18:56:30 +0500 Subject: [PATCH 331/580] updated references --- .../ApiVersion.robot | 20 +++++------ .../CancelOperationTask.robot | 14 ++++---- .../ContinueOperationTask.robot | 14 ++++---- .../CreateNSInstanceWorkflow.robot | 2 +- .../DeleteNSInstanceWorkflow.robot | 2 +- .../FailOperationTask.robot | 14 ++++---- .../HealNSTask.robot | 12 +++---- .../HealNSTaskWorkflow.robot | 2 +- .../IndividualNSInstance.robot | 12 +++---- .../IndividualNSLCMOccurences.robot | 10 +++--- .../IndividualSubscription.robot | 10 +++--- .../InstantiateNSTask.robot | 12 +++---- ....robot => InstantiateNSTaskWorkflow.robot} | 2 +- .../NSInstances.robot | 34 +++++++++---------- .../NSLCMOccurences.robot | 28 +++++++-------- .../NotificationConsumer.robot | 6 ++-- .../NotificationEndpoint.robot | 8 ++--- .../RetryOperationTask.robot | 14 ++++---- .../RollbackOperationTask.robot | 14 ++++---- .../ScaleNSTask.robot | 12 +++---- .../ScaleNSTaskWorkflow.robot | 2 +- .../Subscriptions.robot | 32 ++++++++--------- .../TerminateNSTask.robot | 14 ++++---- .../TerminateNSTaskWorkflow.robot | 2 +- .../UpdateNSTask.robot | 12 +++---- .../UpdateNSTaskWorkflow.robot | 2 +- 26 files changed, 153 insertions(+), 153 deletions(-) rename SOL005/NSLifecycleManagement-API/{InstanciateNSTaskWorkflow.robot => InstantiateNSTaskWorkflow.robot} (94%) diff --git a/SOL005/NSLifecycleManagement-API/ApiVersion.robot b/SOL005/NSLifecycleManagement-API/ApiVersion.robot index d21b76e5e..a8c59a7e0 100644 --- a/SOL005/NSLifecycleManagement-API/ApiVersion.robot +++ b/SOL005/NSLifecycleManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot b/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot index e50e2fcf6..a20b0d5d1 100644 --- a/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot @@ -13,7 +13,7 @@ POST Cancel operation task ... Test title: POST Cancel operation task ... Test objective: The objective is to test that POST method cancel the NS LCM operation ... Pre-conditions: NS instance status equal to STARTING, PROCESSING or ROLLING_BACK - ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status equal to FAILED_TEMP @@ -26,7 +26,7 @@ POST Cancel operation task Not Found ... Test title: POST Cancel operation task Not Found ... Test objective: The objective is to test that POST method fail completing the Cancel NS LCM operation if the resource is not found ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Cancel operation task Conflict ... Test title: POST Cancel operation task Conflict ... Test objective: The objective is to test that POST method fail if a status conflict exist on the NS LCM operation. (i.e. NS instance status not equal to STARTING, PROCESSING or ROLLING_BACK) ... Pre-conditions: NS instance status not equal to STARTING, PROCESSING or ROLLING_BACK - ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Cancel operation task - Method not implemented ... Test title: GET Cancel operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.15.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Cancel operation task - Method not implemented ... Test title: PUT Cancel operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.15.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Cancel operation task - Method not implemented ... Test title: PATCH Cancel operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.15.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Cancel operation task - Method not implemented ... Test title: DELETE Cancel operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.15.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot b/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot index ff24ffbe0..7a0fc2c99 100644 --- a/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot @@ -13,7 +13,7 @@ POST Continue operation task ... Test title: POST Continue operation task ... Test objective: The objective is to test that POST method trigger a continue on the LCM operation ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status not equal to FAILED_TEMP @@ -26,7 +26,7 @@ POST Continue operation task Not Found ... Test title: POST Continue operation task Not Found ... Test objective: The objective is to test that POST method cannot perform a continue operation task because the resource is not found ... Pre-conditions: none - ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Continue operation task Conflict ... Test title: POST Continue operation task Conflict ... Test objective: The objective is to test that POST method fail in case of operation status conflict (i.e. NS instance status not equal to FAILED_TEMP ) ... Pre-conditions: NS instance status not equal to FAILED_TEMP - ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Continue operation task - Method not implemented ... Test title: GET Continue operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.13.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.13.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Continue operation task - Method not implemented ... Test title: PUT Continue operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.13.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.13.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Continue operation task - Method not implemented ... Test title: PATCH Continue operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.14.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Continue operation task - Method not implemented ... Test title: DELETE Continue operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.14.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot index a1dda903c..8169b723f 100644 --- a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot @@ -12,7 +12,7 @@ NS Instance Creation ... Test title: NS Instance Creation ... Test objective: The objective is to test the workflow for Creating a NS instance ... Pre-conditions: none - ... Reference: Clause 6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS lifecycle management operation occurrence is in NOT_ISTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot index 697c949f2..889975a91 100644 --- a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot @@ -12,7 +12,7 @@ NS Instance Deletion ... Test title: NS Instance Deletion ... Test objective: The objective is to test the workflow for Deleting a NS instance ... Pre-conditions: the resource is in NOT_INSTANTIATED state - ... Reference: Clause 6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS Instance resource is deleted diff --git a/SOL005/NSLifecycleManagement-API/FailOperationTask.robot b/SOL005/NSLifecycleManagement-API/FailOperationTask.robot index b87ddc4d8..162c7ebcf 100644 --- a/SOL005/NSLifecycleManagement-API/FailOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/FailOperationTask.robot @@ -13,7 +13,7 @@ POST Fail operation task ... Test title: POST Fail operation task ... Test objective: The objective is to test that POST method trigger a state change to "finally failed" on the NS LCM operation ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Fail operation task Not Found ... Test title: POST Fail operation task Not Found ... Test objective: The objective is to test that POST method fail if the NS LCM resource is not found ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Fail operation task Conflict ... Test title: POST Fail operation task Conflict ... Test objective: The objective is to test that POST method fail in case of status conflict on the NS LCM operation (i.e NS instance status not equal to FAILED_TEMP) ... Pre-conditions: NS instance status not equal to FAILED_TEMP - ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Fail operation task - Method not implemented ... Test title: GET Fail operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.14.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Fail operation task - Method not implemented ... Test title: PUT Fail operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.14.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Fail operation task - Method not implemented ... Test title: PATCH Fail operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.14.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Fail operation task - Method not implemented ... Test title: DELETE Fail operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.14.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/HealNSTask.robot b/SOL005/NSLifecycleManagement-API/HealNSTask.robot index 7d95b0e16..1bb24b7eb 100644 --- a/SOL005/NSLifecycleManagement-API/HealNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/HealNSTask.robot @@ -13,7 +13,7 @@ POST Heal a NSInstance ... Test title: POST Heal a NSInstance ... Test objective: The objective is to test that POST method trigger a Heal NS instance ... Pre-conditions: NS Instance is in INSTANTIATED state. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance is still in INSTANTIATED state. @@ -26,7 +26,7 @@ POST Heal a NSInstance - Conflict (Not Instantited) ... Test title: POST Heal a NSInstance - Conflict (Not Instantited) ... Test objective: The objective is to test that POST method fail if NS instance is in NOT_INSTANTIATE state ... Pre-conditions: NS Instance is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS Instance is still in NOT_INSTANTIATED state @@ -39,7 +39,7 @@ GET Heal NSInstance- Method not implemented ... Test title: GET Heal NSInstance- Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Heal NSInstance - Method not implemented ... Test title: PUT Heal NSInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Heal NSInstance - Method not implemented ... Test title: PATCH Heal NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Heal NSInstance - Method not implemented ... Test title: DELETE Heal NSInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/HealNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/HealNSTaskWorkflow.robot index 7ee91bf85..4020ab558 100644 --- a/SOL005/NSLifecycleManagement-API/HealNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/HealNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Heal Flow of NS lifecycle management operations ... Test title: Heal Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Healing a NS instance ... Pre-conditions: the resource is in INSTANTIATED state - ... Reference: Clause 6.4.7 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.7 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS Instance still in INSTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot index 7fdf881d8..5d7acba23 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot @@ -13,7 +13,7 @@ POST Individual NSInstance - Method not implemented ... Test title: POST Individual NSInstance - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Information about an individual NS Instance ... Test title: GET Information about an individual NS Instance ... Test objective: The objective is to test that GET method returns an individual NS instance ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ PUT Individual NSInstance - Method not implemented ... Test title: PUT Individual NSInstance - Method not implemented ... Test objective: TThe objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PATCH Individual NSInstance - Method not implemented ... Test title: PATCH Individual NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ DELETE Individual NSInstance ... Test title: DELETE Individual NSInstance ... Test objective: The objective is to test that DELETE method delete a not INSTANTIATED NS instance ... Pre-conditions: NS instance is not INSTANTIATED . - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Check Postcondition NS Instance is deleted @@ -77,7 +77,7 @@ DELETE Individual NSInstance Conflict ... Test title: DELETE Individual NSInstance Conflict ... Test objective: The objective is to test that DELETE method cannot delete an INSTANTIATED NS instance ... Pre-conditions: one instance of a NS in INSTANTIATED state - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Check Postcondition NS Instance is not deleted diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot index f08fced43..537618b05 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot @@ -12,7 +12,7 @@ Post Individual NS LCM occurrences - Method not implemented ... Test title: Post Individual NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get status information about Individual NS LCM occurrences ... Test title: Get status information about Individual NS LCM occurrences ... Test objective: The objective is to test that GET method returns the LCM occurrence of the NS ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT status information about Individual NS LCM occurrences - Method not implemen ... Test title: PUT status information about Individual NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH status information about Individual NS LCM occurrences - Method not implem ... Test title: PATCH status information about Individual NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE status information about Individual NS LCM occurrences - Method not imple ... Test title: DELETE status information about Individual NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot b/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot index 44191a80e..9855f532f 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot @@ -14,7 +14,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.17.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Information about an individual subscription ... Test title: GET Information about an individual subscription ... Test objective: The objective is to test the retrieval of NS lifecycle management subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.17.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: TThe objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.17.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.17.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: At least one lifecycle management subscription is available in the NFVO - ... Reference: Clause 6.4.17.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.17.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS lifecycle management subscription is not available anymore on NFVO diff --git a/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot b/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot index 7b55d6235..d35652351 100644 --- a/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot @@ -13,7 +13,7 @@ POST Instantiate a nsInstance ... Test title: POST Instantiate a nsInstance ... Test objective: The objective is to test that POST method instantiate a new NS instance ... Pre-conditions: An NS instance created and it is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is instantiated on the NFVO @@ -27,7 +27,7 @@ POST Instantiate a nsInstance Conflict ... Test title: POST Instantiate a nsInstance Conflict ... Test objective: The objective is to test that the operation cannot be performed due to a conflict with the state of resource (i.e. the resource is in INSTANTIATED state) ... Pre-conditions: resource is in INSTANTIATED state - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not instantiated on the NFVO @@ -41,7 +41,7 @@ GET Instantiate NSInstance - Method not implemented ... Test title: GET Instantiate NSInstance - Method not implemented ... Test objective: The objective is to test that the operation cannot be performed due because method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none. @@ -53,7 +53,7 @@ PUT Instantiate NSInstance - Method not implemented ... Test title: PUT Instantiate NSInstance - Method not implemented ... Test objective: The objective is to test that the operation cannot be performed due because method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none. @@ -65,7 +65,7 @@ PATCH Instantiate NSInstance - Method not implemented ... Test title: PATCH Instantiate NSInstance - Method not implemented ... Test objective: The objective is to test that the operation cannot be performed due because method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none. @@ -77,7 +77,7 @@ DELETE Instantiate NSInstance - Method not implemented ... Test title: DELETE Instantiate NSInstance - Method not implemented ... Test objective: The objective is to test that the operation cannot be performed due because method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none. diff --git a/SOL005/NSLifecycleManagement-API/InstanciateNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/InstantiateNSTaskWorkflow.robot similarity index 94% rename from SOL005/NSLifecycleManagement-API/InstanciateNSTaskWorkflow.robot rename to SOL005/NSLifecycleManagement-API/InstantiateNSTaskWorkflow.robot index a6a087ca6..3c848e378 100644 --- a/SOL005/NSLifecycleManagement-API/InstanciateNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/InstantiateNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Instantiate Flow of NS lifecycle management operations ... Test title: Instantiate Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Instantiate a NS instance ... Pre-conditions: the resource is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in INSTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/NSInstances.robot b/SOL005/NSLifecycleManagement-API/NSInstances.robot index 40dcf4efd..63232598b 100644 --- a/SOL005/NSLifecycleManagement-API/NSInstances.robot +++ b/SOL005/NSLifecycleManagement-API/NSInstances.robot @@ -12,7 +12,7 @@ POST Create a new NsInstance ... Test title: POST Create a new NsInstance ... Test objective: The objective is to test the creation of a new Ns Instances and perform a JSON schema validation of the collected instance data structure ... Pre-conditions: none. - ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none. ... Post-Conditions: A Ns instance is instantiated. @@ -27,7 +27,7 @@ GET information about multiple NS instances ... Test title: GET information about multiple NS instances ... Test objective: The objective is to test the retrieval of all the available NS Instances and perform a JSON schema and content validation of the collected instance data structure ... Pre-conditions: An existing Ns instance. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none. ... Post-Conditions: none. @@ -39,8 +39,8 @@ GET information about multiple NS instances Bad Request Invalid attribute-based [Documentation] Test ID: 5.3.2.1.3 ... Test title: GET information about multiple NS instances Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test the retrieval of all the available NS Instances using attribute-based filter and perform a JSON schema and content validation of the collected instance data structure - ... Pre-conditions: A Ns instance is instantiated, a bad filter parameter (filter parameters are listed in Table 6.4.2.3.2-1 - ETSI GS NFV-SOL 005 [3] v2.7.1). - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Pre-conditions: A Ns instance is instantiated, a bad filter parameter (filter parameters are listed in Table 6.4.2.3.2-1 - ETSI GS NFV-SOL 005 [3] v3.3.1). + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none. ... Post-Conditions: none. @@ -52,8 +52,8 @@ GET information about multiple NS instances Bad Request Invalid attribute select [Documentation] Test ID: 5.3.2.1.4 ... Test title: GET information about multiple NS instances Bad Request Invalid attribute selector ... Test objective: The objective is to test the retrieval of all the available NS Instances using attribute-based filter and perform a JSON schema and content validation of the collected instance data structure - ... Pre-conditions: A Ns instance is instantiated, a bad attribute selector (attribute selectors are listed in Table 6.4.2.3.2-1 - ETSI GS NFV-SOL 005 [3] v2.7.1). - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Pre-conditions: A Ns instance is instantiated, a bad attribute selector (attribute selectors are listed in Table 6.4.2.3.2-1 - ETSI GS NFV-SOL 005 [3] v3.3.1). + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none. ... Post-Conditions: none. @@ -66,7 +66,7 @@ GET NSInstances with "all_fields" attribute selector ... Test title: GET NSInstances with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ GET NSInstances with "exclude_default" attribute selector ... Test title: GET NSInstances with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ GET NSInstances with "fields" attribute selector ... Test title: GET NSInstances with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ GET NSInstances with "exclude_fields" attribute selector ... Test title: GET NSInstances with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ PUT NSInstances - Method not implemented ... Test title: PUT Individual NS instance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ PATCH NSInstances - Method not implemented ... Test title: PATCH NSInstances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ DELETE NSInstances - Method not implemented ... Test title: DELETE NSInstances - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -154,7 +154,7 @@ GET information about multiple NS instances as Paged Response ... Test title: GET information about multiple NS instances as Paged Response ... Test objective: The objective is to test the retrieval of all the available NS Instances as a Paged Response. ... Pre-conditions: An existing Ns instance. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none. ... Post-Conditions: none. @@ -166,8 +166,8 @@ GET information about multiple NS instances - Bad Request Response too Big [Documentation] Test ID: 5.3.2.1.13 ... Test title: GET information about multiple NS instances - Bad Request Response too Big ... Test objective: The objective is to test the retrieval of all the available NS Instances fails because reponse is too big, and perform a JSON schema and content validation of the collected instance data structure - ... Pre-conditions: A Ns instance is instantiated, a bad attribute selector (attribute selectors are listed in Table 6.4.2.3.2-1 - ETSI GS NFV-SOL 005 [3] v2.7.1). - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Pre-conditions: A Ns instance is instantiated, a bad attribute selector (attribute selectors are listed in Table 6.4.2.3.2-1 - ETSI GS NFV-SOL 005 [3] v3.3.1). + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none. ... Post-Conditions: none. @@ -180,7 +180,7 @@ GET NSInstances with "fields" and "exclude_default" attribute selector ... Test title: GET NSInstances with "fields" and "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active NSInstances with attribute selector list and exclude_default ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot index 2ba76b8f0..c336a343f 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot @@ -12,7 +12,7 @@ POST NS LCM occurrences - Method not implemented ... Test title: POST NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET status information about multiple NS LCM occurrences ... Test title: GET status information about multiple NS LCM occurrences ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ GET status information about multiple NS LCM occurrences Bad Request Invalid att ... Test title: GET status information about multiple NS LCM occurrences Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test that GET method fail because of wrong query parameter ... Pre-conditions: At least one LCM occurrences available in the NFVO, Invalid filter parameter - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ GET status information about multiple NS LCM occurrences Bad Request Invalid att ... Test title: GET status information about multiple NS LCM occurrences Bad Request Invalid attribute selector ... Test objective: The objective is to test that GET method fail because of wrong attributes selector ... Pre-conditions: At least one LCM occurrences available in the NFVO, Invalid attribute selector - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ GET status information about multiple NS LCM occurrences with "all_fields" ... Test title: GET status information about multiple NS LCM occurrences with "all_fields" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ GET status information about multiple NS LCM occurrences with "exclude_default" ... Test title: GET status information about multiple NS LCM occurrences with "exclude_default" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ GET status information about multiple NS LCM occurrences with "fields" ... Test title: GET status information about multiple NS LCM occurrences with "fields" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ GET status information about multiple NS LCM occurrences with "exclude_fields" ... Test title: GET status information about multiple NS LCM occurrences with "exclude_fields" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ PUT status information about multiple NS LCM occurrences - Method not implemente ... Test title: PUT status information about multiple NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ PATCH status information about multiple NS LCM occurrences - Method not implemen ... Test title: PATCH status information about multiple NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -139,7 +139,7 @@ DELETE status information about multiple NS LCM occurrences - Method not impleme ... Test title: DELETE status information about multiple NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ GET status information about multiple NS LCM occurrences as Paged Response ... Test title: GET status information about multiple NS LCM occurrences as Paged Reponse ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS as paged response. ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ GET status information about multiple NS LCM occurrences - Bad Request Response ... Test title: GET status information about multiple NS LCM occurrences - Bad Request Response too Big ... Test objective: The objective is to test that GET method fail because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one LCM occurrences available in the NFVO, Invalid filter parameter - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -177,7 +177,7 @@ GET status information about multiple NS LCM occurrences with "fields" and "excl ... Test title: GET status information about multiple NS LCM occurrences with "fields" and "exclude_default" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot index 09fc94e3e..a3f8b66e4 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot @@ -15,7 +15,7 @@ Ns Lcm Operation Occurrence Notification ... Test title: Ns Lcm Operation Occurrence Notification ... Test objective: The objective is to test that Ns Lcm Operation Occurrence Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for NS LCM Operation Occurrence notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Ns Identifier Creation Notification ... Test title: Ns Identifier Creation Notification ... Test objective: The objective is to test that Ns Identifier Creation Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for Ns Identifier Creation notification is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Ns Identifier Deletion Notification ... Test title: Ns Identifier Deletion Notification ... Test objective: The objective is to test that Ns Identifier Deletion Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for Ns Identifier Deletion notification is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot b/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot index fcabe5b10..f4b0ee615 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ NS LCM Operation Occurrence Start Notification ... Test title: NS LCM Operation Occurrence Start Notification ... Test objective: The objective is to test the dispatch of NS LCM Operation Occurrence Start Notification when a new NS LCM operation is started in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for NS LCM Operation Occurrence notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ NS LCM Operation Occurrence Result Notification ... Test title: NS LCM Operation Occurrence Result Notification ... Test objective: The objective is to test the dispatch of NS LCM Operation Occurrence Result Notification when a NS LCM operation is completed in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: An NS LCM operation is in progress, and a subscription for NS LCM Operation Occurrence notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ NS Identifier Creation Notification ... Test title: NS Identifier Creation Notification ... Test objective: The objective is to test the dispatch of NS Identifier Creation Notification when a new NS instance resource is created in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for NS identifier creation notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ NS Identifier Deletion Notification ... Test title: NS Identifier Deletion Notification ... Test objective: The objective is to test the dispatch of NS Identifier Deletion Notification when a NS instance resource is deleted in the NFVO, and perform a JSON schema and content validation of the delivered notification.The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance resource is created, and a subscription for NS identifier creation notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot b/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot index df82b33f3..32859c776 100644 --- a/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot @@ -13,7 +13,7 @@ Post Retry operation task ... Test title: Post Retry operation task ... Test objective: The objective is to test that POST method trigger a retry of NS lifecycle operation in case of temporary failure ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status not equal to FAILED_TEMP @@ -27,7 +27,7 @@ Post Retry operation task Not Found ... Test title: Post Retry operation task Not Found ... Test objective: The objective is to test that POST method fail in case of NS lifecycle operation not found ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ Post Retry operation task Conflict ... Test title: Post Retry operation task Conflict ... Test objective: The objective is to test that POST method fail in case of NS lifecycle operation status conflict (i.e. NS instance status not equal to FAILED_TEMP) ... Pre-conditions: NS instance status not equal to FAILED_TEMP - ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Retry operation task - Method not implemented ... Test title: GET Retry operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.11.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Retry operation task - Method not implemented ... Test title: PUT Retry operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.11.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Retry operation task - Method not implemented ... Test title: PATCH Retry operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.11.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Retry operation task - Method not implemented ... Test title: DELETE Retry operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.11.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot b/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot index 9fbbcfeb2..74651f25a 100644 --- a/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot @@ -13,7 +13,7 @@ POST Rollback operation task ... Test title: POST Rollback operation task ... Test objective: The objective is to test that POST method triggers a rollback on the NS LCM operation ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status not equal to FAILED_TEMP @@ -26,7 +26,7 @@ POST Rollback operation task Not Found ... Test title: POST Rollback operation task Not Found ... Test objective: The objective is to test that POST method fails if NS LCM operation is not found ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Rollback operation task Conflict ... Test title: POST Rollback operation task Conflict ... Test objective: The objective is to test that POST method fail in case of NS LCM operation status conflict (i.e. NS instance status not equal to FAILED_TEMP) ... Pre-conditions: NS instance status not equal to FAILED_TEMP - ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Rollback operation task - Method not implemented ... Test title: GET Rollback operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.12.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Rollback operation task - Method not implemented ... Test title: PUT Rollback operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.12.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Rollback operation task - Method not implemented ... Test title: PATCH Rollback operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.12.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Rollback operation task - Method not implemented ... Test title: DELETE Rollback operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.12.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot b/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot index 03d2459e4..4bbb56506 100644 --- a/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot @@ -13,7 +13,7 @@ POST Scale a nsInstance ... Test title: POST Scale a nsInstance ... Test objective: The objective is to test that POST method scales NS instance ... Pre-conditions: NS instance is INSTANTIATED state - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance is INSTANTIATED state and NS has been scaled @@ -27,7 +27,7 @@ POST Scale a nsInstance - Conflict (Not Instantited) ... Test title: POST Scale a nsInstance - Conflict (Not Instantited) ... Test objective: The objective is to test that POST method cannot scale NS instance because of conflict in resource status (i.e. because the resource is in NOT_INSTANTIATED state) ... Pre-conditions: NS instance is in NOT_INSTANTIATED state. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Scale NS operation is not triggered on the NFVO @@ -40,7 +40,7 @@ GET Scale NSInstance- Method not implemented ... Test title: GET Scale NSInstance- Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Scale NSInstance - Method not implemented ... Test title: PUT Scale NSInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Scale NSInstance - Method not implemented ... Test title: PATCH Scale NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Scale NSInstance - Method not implemented ... Test title: DELETE Scale NSInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/ScaleNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/ScaleNSTaskWorkflow.robot index dd49111b0..9f4de02b1 100644 --- a/SOL005/NSLifecycleManagement-API/ScaleNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/ScaleNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Scale Flow of NS lifecycle management operations ... Test title: Instantiate Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Instantiate a NS instance ... Pre-conditions: the resource is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in INSTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/Subscriptions.robot b/SOL005/NSLifecycleManagement-API/Subscriptions.robot index bce367fd3..f8cec0532 100644 --- a/SOL005/NSLifecycleManagement-API/Subscriptions.robot +++ b/SOL005/NSLifecycleManagement-API/Subscriptions.robot @@ -15,7 +15,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The objective is to test that POST method create a subscription ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: subscription is created in the NFVO @@ -29,7 +29,7 @@ POST Create a new Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The objective is to test that POST method create a duplicate subscription ... Pre-conditions: a subscription shall already exist - ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: duplication supported by NFVO ... Post-Conditions: duplicate subscription is created in the NFVO @@ -43,7 +43,7 @@ POST Create a new Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The objective is to test that POST method cannot create a duplicate subscription ... Pre-conditions: a subscription shall already exist - ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: duplication NOT supported by NFVO ... Post-Conditions: duplicate subscription is not created in the NFVO @@ -56,7 +56,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ GET Subscription - Filter ... Test title: GET Subscription - Filter ... Test objective: The objective is Get the list of active subscriptions using a filter ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is Get the list of active subscriptions using an invalid filter ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ GET subscriptions with "all_fields" attribute selector ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -108,7 +108,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -121,7 +121,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -134,7 +134,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -147,7 +147,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a NS lifecycle management subscription ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -159,7 +159,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a NS lifecycle management subscription ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -171,7 +171,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method cannot modify a NS lifecycle management subscription ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -183,7 +183,7 @@ GET Subscriptions as Paged Response ... Test title: GET Subscriptions as Paged Response ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions as paged response. ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -196,7 +196,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of active subscriptions list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -209,7 +209,7 @@ POST Create a new subscription - Unprocessable Entity ... Test title: POST Create a new subscription - Unprocessable Entity ... Test objective: The objective is to test the creation of a new lifecycle management subscription fials when content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot index 5f5ad8950..d65c80821 100644 --- a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot @@ -12,7 +12,7 @@ POST Terminate a NSInstance ... Test title: POST Terminate a NSInstance ... Test objective: The objective is to test that POST method terminate the NS ... Pre-conditions: NS instance in INSTANTIATED state - ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance has NOT_INSTANTIATED state @@ -26,7 +26,7 @@ POST Terminate a NSInstance - Conflict (Not Instantited) ... Test title: POST Terminate a NSInstance - Conflict (Not Instantited) ... Test objective: The objective is to test that POST method cannot terminate the NS because of conflict in resource status (i.e. the resource is not in INSTANTIATED state) ... Pre-conditions: NS instance is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance is in NOT_INSTANTIATED state @@ -40,7 +40,7 @@ GET Terminate NSInstance- Method not implemented ... Test title: GET Terminate NSInstance- Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Terminate NSInstance - Method not implemented ... Test title: PUT Terminate NSInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Terminate NSInstance - Method not implemented ... Test title: PATCH Terminate NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -72,11 +72,11 @@ PATCH Terminate NSInstance - Method not implemented Check HTTP Response Status Code Is 405 DELETE Terminate NSInstance - Method not implemented - [Documentation] Test ID: 5.3.2.7.5 + [Documentation] Test ID: 5.3.2.7.6 ... Test title: DELETE Terminate NSInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot index 802a35ac0..0bae43586 100644 --- a/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Terminate Flow of NS lifecycle management operations ... Test title: Terminate Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Terminate a NS instance ... Pre-conditions: the resource is in INSTANTIATED state - ... Reference: Clause 6.4.8 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.8 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in NOT_INSTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot b/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot index eafae6ae1..967cd9d05 100644 --- a/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot @@ -13,7 +13,7 @@ POST Update a NSInstance ... Test title: POST Update a NSInstance ... Test objective: The objective is to test that POST method update a NS instance ... Pre-conditions: An NS instance is in INSTANTIATED state - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is still INSTANTIATED and updated on the NFVO @@ -26,7 +26,7 @@ POST Update a NSInstance - Conflict (Not Instantited) ... Test title: POST Update a NSInstance - Conflict (Not Instantited) ... Test objective: The objective is to test that POST method fail if a NS Instance is not existing or is in NOT_INSTANTIATED state ... Pre-conditions: An NS instance is in INSTANTIATED state - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not updated on the NFVO @@ -39,7 +39,7 @@ GET Update NSInstance- Method not implemented ... Test title: GET Update NSInstance- Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Update NSInstance - Method not implemented ... Test title: PUT Update NSInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Update NSInstance - Method not implemented ... Test title: PATCH Update NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Update NSInstance - Method not implemented ... Test title: DELETE Update NSInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot index f64a83120..12c19c996 100644 --- a/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Update Flow of NS lifecycle management operations ... Test title: Update Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Update a NS instance ... Pre-conditions: the resource is in INSTANTIATED state - ... Reference: Clause 6.4.6 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.6 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in INSTANTIATED state -- GitLab From 21c1eab3d413f2302e3741d32efb6f5152e4c2b9 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Thu, 11 Mar 2021 14:02:32 +0500 Subject: [PATCH 332/580] updated jsons, schemas and added minor fixes in query paramters for GET methods --- .../NSInstances.robot | 15 +- .../NSLCMOccurences.robot | 13 + .../NSLCMOperationKeywords.robot | 38 +- .../Subscriptions.robot | 18 +- .../environment/variables.txt | 16 +- .../jsons/InstantiateNsRequest.json | 4 +- .../NsLcmOperationOccurrenceNotification.json | 18 +- .../jsons/UpdateNsRequest.json | 30 +- .../schemas/NsInstance.schema.json | 1232 +++++- .../schemas/NsInstances.schema.json | 3849 ++++++++++------- ...perationOccurrenceNotification.schema.json | 934 +++- .../schemas/subscription.schema.json | 45 +- .../schemas/subscriptions.schema.json | 402 +- 13 files changed, 4626 insertions(+), 1988 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSInstances.robot b/SOL005/NSLifecycleManagement-API/NSInstances.robot index 63232598b..0c33d1a05 100644 --- a/SOL005/NSLifecycleManagement-API/NSInstances.robot +++ b/SOL005/NSLifecycleManagement-API/NSInstances.robot @@ -186,4 +186,17 @@ GET NSInstances with "fields" and "exclude_default" attribute selector ... Post-Conditions: none Get NSInstances with fields and exclude_default attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is NsInstances \ No newline at end of file + Check HTTP Response Body Json Schema Is NsInstances + +GET information about multiple NS instances - Filter + [Documentation] Test ID: 5.3.2.1.15 + ... Test title: GET information about multiple NS instances - Filter + ... Test objective: The objective is to test the retrieval of NS Instances using filter and perform a JSON schema and content validation of the collected instance data structure + ... Pre-conditions: An existing Ns instance. + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none. + ... Post-Conditions: none. + GET NsInstances using filtering parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NsInstances \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot index c336a343f..dc0a0c674 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot @@ -183,4 +183,17 @@ GET status information about multiple NS LCM occurrences with "fields" and "excl ... Post-Conditions: none Get NS LCM OP Occurrences with fields and exclude_default attribute selector Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NsLcmOpOccs + +GET status information about multiple NS LCM occurrences - Filter + [Documentation] Test ID: 5.3.2.8.15 + ... Test title: GET status information about multiple NS LCM occurrences - Filter + ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS using filtering-based query parameters + ... Pre-conditions: At least one LCM occurrences available in the NFVO + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET NS LCM OP Occurrences using filtering parameters + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsLcmOpOccs \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 1407821ed..c902a31fb 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -385,13 +385,21 @@ GET NsInstances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +GET NsInstances using filtering parameter + Log Query NS The GET method queries information about multiple NS instances. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?${POS_filter_nsInstances} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET NsInstance Invalid Attribute-Based filtering parameter Log Query NS The GET method queries information about multiple NS instances. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?attribute_not_exist=some_value + Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?${NEG_filter_nsInstances} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -408,7 +416,7 @@ Get NSInstances with all_fields attribute selector Log Get the list of NSInstances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?all_fields ${output}= Output response Set Suite Variable ${response} ${output} Get NSInstances with exclude_default attribute selector @@ -422,21 +430,21 @@ Get NSInstances with fields attribute selector Log Get the list of NSInstances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?fields=${fields_nsInstances} ${output}= Output response Set Suite Variable ${response} ${output} Get NSInstances with fields and exclude_default attribute selector Log Get the list of NSInstances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?fields=${fields_nsInstances}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get NSInstances with exclude_fields attribute selector Log Get the list of NSInstances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances?exclude_fields=${fields_nsInstances} ${output}= Output response Set Suite Variable ${response} ${output} @@ -655,7 +663,7 @@ POST Update NSInstance Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/UpdateNsRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} vnfFlavourId=${Flavour_ID} newFlavourId=${Flavour_ID} vnfVirtualLinkDescId=${VirtualLink_IDs[0]} instantiationLevelId=${InstantiationLevel_IDs[1]} vnfInstantiationLevelId=${InstantiationLevel_IDs[0]} newNsdId=${NS_DescriptorID} sapdId=${SAP_IDs[0]} + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfFlavourId=${Flavour_ID} newFlavourId=${Flavour_ID} vnfVirtualLinkDescId=${VirtualLink_IDs[0]} instantiationLevelId=${InstantiationLevel_IDs[1]} vnfInstantiationLevelId=${InstantiationLevel_IDs[0]} newNsdId=${NS_DescriptorID} sapdId=${SAP_IDs[0]} vnfInstanceId=${vnfInstanceId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -794,7 +802,15 @@ GET NS LCM OP Occurrences Invalid attribute-based filtering parameters Log Query status information about multiple NS lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?${NEG_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?${NEG_filter_nsLcmOpOcc} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET NS LCM OP Occurrences using filtering parameters + Log Query status information about multiple NS lifecycle management operation occurrences. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?${POS_filter_nsLcmOpOcc} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -809,7 +825,7 @@ Get NS LCM OP Occurrences with all_fields attribute selector Log Query status information about multiple NS lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?all_fields ${output}= Output response Set Suite Variable ${response} ${output} Get NS LCM OP Occurrences with exclude_default attribute selector @@ -823,21 +839,21 @@ Get NS LCM OP Occurrences with fields attribute selector Log Query status information about multiple NS lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?fields=${fields_nsLcmOpOcc} ${output}= Output response Set Suite Variable ${response} ${output} Get NS LCM OP Occurrences with fields and exclude_default attribute selector Log Query status information about multiple NS lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?fields=${fields_nsLcmOpOcc}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get NS LCM OP Occurrences with exclude_fields attribute selector Log Query status information about multiple NS lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_lcm_op_occs?exclude_fields=${fields_nsLcmOpOcc} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL005/NSLifecycleManagement-API/Subscriptions.robot b/SOL005/NSLifecycleManagement-API/Subscriptions.robot index f8cec0532..2c7293a89 100644 --- a/SOL005/NSLifecycleManagement-API/Subscriptions.robot +++ b/SOL005/NSLifecycleManagement-API/Subscriptions.robot @@ -62,7 +62,7 @@ GET Subscriptions ... Post-Conditions: none GET Subscriptions Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is subscriptions + Check HTTP Response Body Json Schema Is subscriptions GET Subscription - Filter [Documentation] Test ID: 5.3.2.15.5 @@ -75,7 +75,7 @@ GET Subscription - Filter ... Post-Conditions: none GET Subscriptions with filter Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is subscriptions + Check HTTP Response Body Json Schema Is subscriptions GET subscriptions - Bad Request Invalid attribute-based filtering parameters [Documentation] Test ID: 5.3.2.15.6 @@ -101,7 +101,7 @@ GET subscriptions with "all_fields" attribute selector ... Post-Conditions: Get subscriptions with all_fields attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is FmSubscriptions + Check HTTP Response Body Json Schema Is subscriptions GET subscriptions with "exclude_default" attribute selector [Documentation] Test ID: 5.3.2.15.8 @@ -114,7 +114,7 @@ GET subscriptions with "exclude_default" attribute selector ... Post-Conditions: Get subscriptions with exclude_default attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is FmSubscriptions + Check HTTP Response Body Json Schema Is subscriptions GET subscriptions with "fields" attribute selector [Documentation] Test ID: 5.3.2.15.9 @@ -127,7 +127,7 @@ GET subscriptions with "fields" attribute selector ... Post-Conditions: Get subscriptions with fields attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is FmSubscriptions + Check HTTP Response Body Json Schema Is subscriptions GET subscriptions with "exclude_fields" attribute selector [Documentation] Test ID: 5.3.2.15.10 @@ -140,7 +140,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Post-Conditions: Get subscriptions with exclude_fields attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is FmSubscriptions + Check HTTP Response Body Json Schema Is subscriptions PUT subscriptions - Method not implemented [Documentation] Test ID: 5.3.2.15.11 @@ -185,7 +185,7 @@ GET Subscriptions as Paged Response ... Pre-conditions: none ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO - ... Applicability: none + ... Applicability: NFVO supports paged response ... Post-Conditions: none GET Subscriptions Check HTTP Response Status Code Is 200 @@ -197,8 +197,8 @@ GET subscriptions - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of active subscriptions list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO does not support paged response ... Post-Conditions: none GET Subscriptions Check HTTP Response Status Code Is 400 diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index 0ba768410..71d850099 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -38,14 +38,22 @@ ${WRONG_ACCEPT} application/json ${nsLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d ${CancelMode} GRACEFUL ${NFVO_DUPLICATION} 0 -${sub_filter} filter -${sub_filter_invalid} filter_invalid -${fields} criteria,objectInstanceIds +${sub_filter} id=41fdd38a-3d4c-465c-83e0-f80e014425f8 +${sub_filter_invalid} nfvid=41fdd38a-3d4c-465c-83e0-f80e014425f8 +${fields_nsInstances} monitoringParameter,wanConnectionInfo +${POS_filter_nsInstances} id=41fdd38a-3d4c-465c-83e0-f80e014425f8 +${NEG_filter_nsInstances} nfvid=41fdd38a-3d4c-465c-83e0-f80e014425f8 + +${fields_nsLcmOpOcc} cancelMode,error +${POS_filter_nsLcmOpOcc} id=41fdd38a-3d4c-465c-83e0-f80e014425f8 +${NEG_filter_nsLcmOpOcc} nfvid=41fdd38a-3d4c-465c-83e0-f80e014425f8 + ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${VnfLcmOperationOccurrenceNotification} {} ${VnfIdentifierCreationNotification} {} ${VnfIdentifierDeletionNotification} {} ${vnfUpdateType} ADD_VNF +${vnfInstanceId} id-of-new-vnf-instance-for-UPDATE-NS-Task ${instantiationLevelId} myNextLevel ${scaleType} SCALE_VNF @@ -55,7 +63,7 @@ ${scaleGroupDescriptor} myScalingGroup ${scaleMemberVnfIndex} 1 ${callback_port} 9091 -${callback_uri} http://localhost:${callback_port} +${callback_uri} http://localhost ${callback_endpoint} /endpoint ${callback_endpoint_fwd} /endpoint/check ${callback_endpoint_error} /endpoint_404 diff --git a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json index b89a44d19..47f5763d9 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json @@ -9,5 +9,7 @@ "locationConstraints":[], "additionalParamsForNs":{}, "additionalParamForNestedNs":[], - "additionalParamsForVnf":[] + "additionalParamsForVnf":[], + "startTime": "", + "nsInstantiationLevelId": "" } \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json index 706957a30..ee02dd9c7 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json +++ b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json @@ -9,11 +9,19 @@ "notificationStatus":"START", "operationState":"PROCESSING", "isAutomaticInvocation":"True", - "affectedVnf": {{ + "affectedVnf": [ + {{ "vnfdId": "{vnfdId}" - }}, - "affectedNs": {{ + }} + ], + "affectedNs": [ + {{ "nsdId": "{nsdId}" - }}, - "_links":"" + }} + ], + "_links": + {{ + "nsInstance": "", + "subscription": "" + }} }} diff --git a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json index 4d3449103..21f4f195a 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json @@ -1,22 +1,28 @@ -{ +{{ "updateType": "{vnfUpdateType}", - "instantiateVnfData": { + "addVnfInstance": [ + {{ + "vnfInstanceId": "{vnfInstanceId}" + }} + ] + "removeVnfInstance": "", + "instantiateVnfData": {{ "vnfdId": "{vnfdId}", "vnfFlavourId": "{vnfFlavourId}", "vnfInstantiationLevelId": "{vnfInstantiationLevelId}", - "extManagedVirtualLinks": { + "extManagedVirtualLinks": {{ "vnfVirtualLinkDescId": "{vnfVirtualLinkDescId}" - }, - "changeVnfFlavourData": { + }}, + "changeVnfFlavourData": {{ "vnfInstanceId": {}, "newFlavourId": "{newFlavourId}", "instantiationLevelId": "{instantiationLevelId}" - }, - "assocNewNsdVersionData": { + }}, + "assocNewNsdVersionData": {{ "newNsdId": "{newNsdId}" - }, - "addSap": { + }}, + "addSap": {{ "sapdId": "{sapdId}" - } - } -} + }} + }} +}} diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json index 9b7441874..8e7d9e028 100644 --- a/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json +++ b/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json @@ -7,7 +7,8 @@ "nsInstanceDescription", "nsdId", "nsdInfoId", - "nsState" + "nsState", + "_links" ], "properties": { "id": { @@ -38,7 +39,7 @@ "description": "Information on constituent VNF(s) of the NS instance.\n", "type": "array", "items": { - "description": "This type represents a VNF instance.\n", + "description": "This type represents a VNF instance. Clause B.3.2 of ETSI GS NFV-SOL 003 [4] provides examples illustrating the relationship among the different run-time information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n", "type": "object", "required": [ "id", @@ -56,11 +57,11 @@ "type": "string" }, "vnfInstanceName": { - "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "description": "Name of the VNF instance. Modifications to this attribute can be requested using the \"ModifyVnfInfoData\" structure.\n", "type": "string" }, "vnfInstanceDescription": { - "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "description": "Human-readable description of the VNF instance. Modifications to this attribute can be requested using the \"ModifyVnfInfoData\" structure.\n", "type": "string" }, "vnfdId": { @@ -108,7 +109,8 @@ "type": "object", "required": [ "flavourId", - "vnfState" + "vnfState", + "extCpInfo" ], "properties": { "flavourId": { @@ -136,6 +138,35 @@ "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", "type": "string" }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "scaleLevel": { "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", "type": "integer" @@ -144,7 +175,7 @@ } }, "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance.\n", + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", "type": "array", "minItems": 1, "items": { @@ -154,6 +185,18 @@ "id", "cpdId" ], + "oneOf": [ + { + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -163,6 +206,14 @@ "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", "type": "string" }, + "cpConfigId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "cpProtocolInfo": { "description": "Network protocol information for this CP.\n", "type": "array", @@ -185,12 +236,17 @@ "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", "type": "object", - "required": [ - "macAddress", - "ipAddresses", - "subnetId", - "addresses", - "addressRange" + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } ], "properties": { "macAddress": { @@ -198,6 +254,10 @@ "type": "string", "format": "MAC" }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, "ipAddresses": { "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", "type": "array", @@ -206,6 +266,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -312,158 +384,19 @@ } }, "extLinkPortId": { - "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n", - "type": "object", - "required": [ - "layerProtocol", - "ipOverEthernet" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", - "type": "object", - "required": [ - "macAddress", - "ipAddresses", - "subnetId", - "addresses", - "addressRange" - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - } - } - } - }, - "type": { - "description": "The type of the IP addresses\n", - "type": "string", - "enum": [ - "PV4", - "PV6" - ] - }, - "addresses": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "subnetId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - } - } - } - } + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", "type": "object" }, "associatedVnfcCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "associatedVnfVirtualLinkId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "description": "An identifier with the intention of being globally unique.\n", "type": "string" } } @@ -503,7 +436,7 @@ "type": "string" }, "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", "type": "string" } } @@ -543,7 +476,7 @@ "type": "string" }, "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", "type": "string" } } @@ -554,12 +487,176 @@ } } } + }, + "currentVnfExtCpData": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure. Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId’ attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": * At least one of the \"linkPortId\" and \"cpProtocolData\" attributes\n shall be present for a to-be-created external CP instance or an\n existing external CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "ipAddresses" + ] + }, + { + "required": [ + "macAddress" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } } } } }, "extManagedVirtualLinkInfo": { - "description": "External virtual links the VNF instance is connected to.\n", + "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 6.5.3.59).\n", "type": "array", "items": { "type": "object", @@ -572,6 +669,10 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "vnfVirtualLinkDescId": { "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", "type": "string" @@ -596,7 +697,7 @@ "type": "string" }, "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", "type": "string" } } @@ -635,7 +736,7 @@ "type": "string" }, "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", "type": "string" } } @@ -654,6 +755,10 @@ } } } + }, + "extManagedMultisiteVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -673,6 +778,10 @@ "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", "type": "string" }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "name": { "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", "type": "string" @@ -704,6 +813,10 @@ "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "vduId": { "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", "type": "string" @@ -728,7 +841,7 @@ "type": "string" }, "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", "type": "string" } } @@ -746,7 +859,7 @@ "type": "string" }, "vnfcCpInfo": { - "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n", + "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n", "type": "array", "items": { "type": "object", @@ -768,7 +881,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n", @@ -788,12 +901,17 @@ "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", "type": "object", - "required": [ - "macAddress", - "ipAddresses", - "subnetId", - "addresses", - "addressRange" + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } ], "properties": { "macAddress": { @@ -801,6 +919,10 @@ "type": "string", "format": "MAC" }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, "ipAddresses": { "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", "type": "array", @@ -809,6 +931,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -948,6 +1082,10 @@ "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "vnfVirtualLinkDescId": { "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", "type": "string" @@ -972,7 +1110,7 @@ "type": "string" }, "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", "type": "string" } } @@ -1015,7 +1153,7 @@ "type": "string" }, "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", "type": "string" } } @@ -1062,6 +1200,10 @@ "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", "type": "string" }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "storageResource": { "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", "type": "object", @@ -1082,7 +1224,7 @@ "type": "string" }, "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", "type": "string" } } @@ -1180,12 +1322,28 @@ "ipOverEthernet": { "description": "This type represents network address data for IP over Ethernet.\n", "type": "object", + "anyOf": [ + { + "required": [ + "ipAddresses" + ] + }, + { + "required": [ + "macAddress" + ] + } + ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", "type": "string", "format": "MAC" }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, "ipAddresses": { "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", "type": "array", @@ -1194,13 +1352,30 @@ "required": [ "type" ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" ] }, "fixedAddresses": { @@ -1278,7 +1453,7 @@ "type": "string" }, "resourceHandle": { - "description": "Identifier(s) of the virtualised network resource(s) realizing the VL instance. See note.\n", + "description": "Identifier(s) of the virtualised network resource(s) and/or multi-site connectivity service(s) realizing the VL instance. As an NS can include NFs deployed in NFVI PoPs under the control of several different VIMs, therefore deploying an NS VL can involve several VIMs, each allocating different virtualised network resources, as well as WIMs handling the connectivity in between the NFVI-PoPs in the form of multi-site connectivity services. When this NsVirtualLink is provided as an ExtVirtualLink as input of a VNF LCM operation, the id of the ExtVirtualLink shall be the same as the corresponding NsVirtualLink.\n", "type": "array", "items": { "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", @@ -1300,7 +1475,7 @@ "type": "string" }, "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", "type": "string" } } @@ -1341,7 +1516,7 @@ "type": "string" }, "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", "type": "string" } } @@ -1352,6 +1527,26 @@ "items": { "description": "This type represents an identifier of the CP or SAP instance. It shall comply with the provisions defined in Table 6.5.3.56-1.\n", "type": "object", + "oneOf": [ + { + "required": [ + "vnfInstanceId", + "vnfExtCpInstanceId" + ] + }, + { + "required": [ + "pnfInfoId", + "pnfExtCpInstanceId" + ] + }, + { + "required": [ + "nsInstanceId", + "nsSapInstanceId" + ] + } + ], "properties": { "vnfInstanceId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1437,6 +1632,26 @@ "items": { "description": "This type represents an identifier of the CP or SAP instance. It shall comply with the provisions defined in Table 6.5.3.56-1.\n", "type": "object", + "oneOf": [ + { + "required": [ + "vnfInstanceId", + "vnfExtCpInstanceId" + ] + }, + { + "required": [ + "pnfInfoId", + "pnfExtCpInstanceId" + ] + }, + { + "required": [ + "nsInstanceId", + "nsSapInstanceId" + ] + } + ], "properties": { "vnfInstanceId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1518,12 +1733,17 @@ "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", "type": "object", - "required": [ - "macAddress", - "ipAddresses", - "subnetId", - "addresses", - "addressRange" + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } ], "properties": { "macAddress": { @@ -1531,6 +1751,10 @@ "type": "string", "format": "MAC" }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, "ipAddresses": { "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", "type": "array", @@ -1539,6 +1763,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1655,6 +1891,14 @@ "type": "string" } }, + "vnfSnapshotInfoIds": { + "description": "Identifier of information on VNF snapshots of VNF instances that are part of this NS instance.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, "nsState": { "description": "The state of the NS instance. Permitted values: NOT_INSTANTIATED: The NS instance is terminated or not instantiated. INSTANTIATED: The NS instance is instantiated.\n", "type": "string", @@ -1767,6 +2011,600 @@ } } }, + "wanConnectionInfo": { + "description": "Information about WAN related connectivity enabling multi-site VLs.\n", + "type": "array", + "items": { + "description": "This type provides information about the connectivity to the WAN of network resources realizing a VL, e.g.,\nwhen the VL is deployed on several sites across a WAN. It shall comply with the provisions defined in table 6.5.3.90-1.\n", + "type": "object", + "required": [ + "wanConnectionInfoId" + ], + "oneOf": [ + { + "required": [ + "nsVirtualLinkInfoId" + ] + }, + { + "required": [ + "vnfVirtualLinkResourceInfoId" + ] + } + ], + "properties": { + "wanConnectionInfoId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "nsVirtualLinkInfoId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "vnfVirtualLinkResourceInfoId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "protocolInfo": { + "description": "This type provides protocol specific information about the connectivity to the WAN of network resources realizing\na VL, e.g., when the VL is deployed on several sites and across a WAN, and the related multi-site connectivity\nservice (MSCS) enabling the connectivity through the WAN. This type supports providing information about both\npre-provisioned WAN connectivity realized by external entities to NFV-MANO but parts of such connectivity is known\nto the NFVO, as well as information about MSCS created under NFV-MANO responsibility (i.e., connectivity is realized\nwhen NFVO communicates with the WIM). It shall comply with the provisions defined in table 6.5.3.91-1.\n", + "type": "object", + "properties": { + "mscsInfo": { + "description": "This type provides information about an already provisioned multi-site connectivity service (MSCS) deployed across a WAN. It shall comply with the provisions defined in Table 6.5.3.82-1.\n", + "type": "object", + "required": [ + "mscsId", + "mscsType" + ], + "properties": { + "mscsId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "mscsName": { + "description": "Human readable name of the MSCS.\n", + "type": "string" + }, + "mscsDescription": { + "description": "Human readable description of the MSCS.\n", + "type": "string" + }, + "mscsType": { + "description": "The type of connectivity that is provided to the virtualized networks in the NFVI-PoP and characterizes the connectivity service across the WAN. Permitted values: -\tL2 -\tL3\n", + "type": "string", + "enum": [ + "L2VPN", + "L3VPN" + ] + }, + "mscsLayerProtocol": { + "description": "Type of underlying connectivity service and protocol associated to the MSCS. Permitted values are as listed below and restricted by the type of MSCS: -\tEVPN_BGP_MPLS: as specified in IETF RFC 7432. Only applicable for mscsType=\"L2\". - EVPN_VPWS: as specified in IETF RFC 8214. Only applicable for mscsType=\"L2\". -\tVPLS_BGP: as specified in IETF RFC 4761 and IETF RFC 6624. Only applicable for mscsType=\"L2\". -\tVPLS_LDP_L2TP: as specified in IETF RFC 4762. Only applicable for mscsType=\"L2\". -\tVPWS_LDP_L2TP: as specified in IETF RFC 6074. Only applicable for mscsType=\"L2\". -\tBGP_IP_VPN: BGP/MPLS based IP VPN as specified in IETF RFC 4364. Only applicable for mscsType=\"L3\".\n", + "type": "string", + "enum": [ + "EVPN_BGP_MPLS", + "EVPN_VPWS", + "VPLS_BGP", + "VPLS_LDP", + "VPWS", + "BGP_IP_VPN" + ] + }, + "siteAccessProtectionSchemes": { + "description": "Information to determine the proper MSCS endpoints configuration to fulfil certain resiliency/protection requirements, e.g., by considering certain availability and redundancy of connectivity service endpoints in between NFVI-PoP and WAN.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "locationConstraints": { + "description": "This type represents location constraints for a VNF to be instantiated. The location constraints can be represented as follows: •\tas a country code •\tas a civic address combined with a country code •\tas an area, conditionally combined with a country code The LocationConstraints data type shall comply with the provisions defined in Table 6.5.3.21-1.\n", + "type": "object", + "properties": { + "countryCode": { + "description": "The two-letter ISO 3166 [29] country code in capital letters. Shall be present in case the \"area\" attribute is absent. May be absent if the \"area\" attribute is present. If both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two attributes. In case of conflicts, the API producer (i.e. the NFVO) shall disregard parts of the geographic area signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.\n", + "type": "string" + }, + "civicAddressElement": { + "description": "Zero or more elements comprising the civic address. Shall be absent if the \"area\" attribute is present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "caType", + "caValue" + ], + "properties": { + "caType": { + "description": "Describe the content type of caValue. The value of caType shall comply with Section 3.4 of IETF RFC 4776 [13].\n", + "type": "integer" + }, + "caValue": { + "description": "Content of civic address element corresponding to the caType. The format caValue shall comply with Section 3.4 of IETF RFC 4776 [13].\n", + "type": "string" + } + } + } + }, + "area": { + "description": "Geographic area. Shall be absent if the \"civicAddressElement\" attribute is present. The content of this attribute shall follow the provisions for the \"Polygon\" geometry object as defined in IETF RFC 7946, for which the \"type\" member shall be set to the value \"Polygon\". If both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two attributes. In case of conflicts, the API producer (i.e. the NFVO) shall disregard parts of the geographic area signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.\n", + "type": "object" + } + } + }, + "protectionScheme": { + "description": "Defines the protection scheme. Permitted values: -\tUNPROTECTED: to indicate no protection. -\tONE_TO_ONE: to indicate an active-passive access protection. -\tONE_PLUS_ONE: to indicate an active-active access protection. -\tONE_TO_N: to indicate an N active to 1 passive access protection.\n", + "type": "string", + "enum": [ + "UNPROTECTED", + "ONE_TO_ONE", + "ONE_PLUS_ONE", + "ONE_TO_N" + ] + } + } + } + }, + "mtuMscs": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded over the MSCS (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "mscsEndpoints": { + "description": "Information about the MSCS endpoints of the MSCS.\n", + "type": "array", + "items": { + "description": "This type provides encapsulates information about an MSCS endpoint of the MSCS. It shall comply with the provisions defined in table 6.5.3.83-1.\n", + "type": "object", + "required": [ + "mscsEndpointId", + "directionality", + "connectivityServiceEndpoinId" + ], + "properties": { + "mscsEndpointId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "directionality": { + "description": "Directionality of the data traffic in the context of the terminating MSCS endpoint from WAN’s perspective. Permitted values: -\tINBOUND: to indicate into the WAN. -\tOUTBOUND: to indicate from the WAN. -\tBOTH: to indicate bidirectional data traffic to/from the WAN.\n", + "type": "string", + "enum": [ + "INBOUND", + "OUTBOUND", + "BOTH" + ] + }, + "connectivityServiceEndpoinId": { + "description": "References the connectivity service endpoint configuration information applicable to support the MSCS endpoint. More than one connectivity service endpoint can be referred when endpoints are in LAG mode.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + } + } + } + }, + "connectivityServiceEndpoints": { + "description": "Configuration information about the network resources in the NFVI-PoP and their connectivity to the WAN.\n", + "type": "array", + "items": { + "description": "This type provides configuration data for the NFVI-PoP network gateway providing connectivity service endpoints. The connectivity service endpoints are used as endpoints by an MSCS. It shall comply with the provisions defined in Table 6.5.3.84-1.\n", + "type": "object", + "required": [ + "connectivityServiceEndpointId", + "vimId" + ], + "properties": { + "connectivityServiceEndpointId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "siteToWanLayer2ProtocolData": { + "description": "This type provides information about Layer 2 protocol specific information for the configuration of the NFVI-PoP network gateway to enable the stitching of the intra-site VN to the MSCS over the WAN. It shall comply with the provisions defined in Table 6.5.3.85-1.\n", + "type": "object", + "required": [ + "layer2ConnectionInfo" + ], + "properties": { + "layer2ConnectionInfo": { + "description": "Layer 2 protocol parameters of the connectivity service endpoint (CSE).\n", + "type": "object", + "required": [ + "connectionType", + "interfaceType", + "interfaceTagging", + "encapsulationType" + ], + "properties": { + "connectionType": { + "description": "The type of connection to be established on the connectivity service point. Permitted values: -\tCSE: defined by the characteristics of the existing referred connectivity service point. -\tAGGREGATE_CSE: create an aggregation of the connectivity service endpoints.\n", + "type": "string", + "enum": [ + "CSE", + "AGGREGATE_CSE" + ] + }, + "interfaceType": { + "description": "To indicate whether to create logical interfaces on the referred connectivity service endpoint or new aggregated connectivity service endpoint. Permitted values: -\tPARENT: use the mapped interface to the connectivity service endpoint as is, i.e., do not create logical interfaces. -\tLOGICAL: create logical interfaces.\n", + "type": "string", + "enum": [ + "PARENT", + "LOGICAL" + ] + }, + "interfaceTagging": { + "description": "The type of frames to forward on the connectivity service point. Permitted values: -\tUNTAGGED: an interface where frames are not tagged. -\tTAGGED: an interface configured to forward tagged frames (i.e., enabled for VLAN tagging).\n", + "type": "string", + "enum": [ + "UNTAGGED", + "TAGGED" + ] + }, + "encapsulationType": { + "description": "The type of encapsulation. If the interfaceTagging=\"TAGGED\", either \"VLAN\" or \"VXLAN\" shall be set. Permitted values: -\tETH: generic Ethernet encapsulation. -\tVLAN: encapsulation based on VLAN. -\tVXLAN: encapsulation based on VXLAN.\n", + "type": "string", + "enum": [ + "ETH", + "VLAN", + "VXLAN" + ] + }, + "vlanTaggingType": { + "description": "Type of encapsulation method for VLAN tagging. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VLAN\". Permitted values: -\tDOT1Q: used when packets on the CSE are encapsulated with one or a set of customer VLAN identifiers. -\tQINQ: used when packets on the CSE are encapsulated with multiple customer VLAN identifiers and a single\n service VLAN identifier.\n- QINANY: used when packets on the CSE have no specific customer VLAN and a service VLAN identifier is used.\n", + "type": "string", + "enum": [ + "DOT1Q", + "QINQ", + "QINANY" + ] + }, + "wanSegmentIds": { + "description": "Segment identifiers to pass on the tagged interface. Shall be present if encapsulationType=\"VLAN\" or “VXLAN\".\n", + "type": "object", + "required": [ + "wanSegmentIdValue" + ], + "properties": { + "wanSegmentIdValue": { + "description": "Identifier of the network segment (e.g., VLAN id or VNI).\n", + "type": "string" + }, + "wanSegmentIdUpperRange": { + "description": "Identifier of the upper range network segment, in case the \"wanSegmentIds\" is used to define a range.\n", + "type": "string" + } + } + }, + "vxlanConfig": { + "description": "Additional configuration needed when using VXLAN encapsulation. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VXLAN\".\n", + "type": "object", + "required": [ + "peerMode" + ], + "properties": { + "peerMode": { + "description": "Type of VXLAN access mode. Default value is \"STATIC\".\nPermitted values: -\tSTATIC -\tBGP_EVPN\n", + "type": "string", + "enum": [ + "STATIC", + "BGP_EVPN" + ] + }, + "peers": { + "description": "List of IP addresses of VTEP peers when using static mode.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + }, + "lagInterfaceData": { + "description": "Information for setting up a LAG interface aggregating multiple connectivity service endpoints.\n", + "type": "object", + "required": [ + "aggregatedEndpoints", + "lacpActivation", + "lacpConfig" + ], + "properties": { + "aggregatedEndpoints": { + "description": "List of the connectivity service endpoints that are to be aggregated. Shall be present if connectionType=\"AGGREGATE_CSE\". In case of aggregating connectivity service endpoints, only one SiteToWanLayer2ProtocolData shall be provided for the whole set of aggregated endpoints.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "lacpActivation": { + "description": "Indicates whether to activate LACP on the interface. If \"TRUE\", the LACP is to be activated, or \"FALSE\" otherwise. Default value is \"FALSE\".\n", + "type": "boolean" + }, + "lacpConfig": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "layer2ControlProtocol": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "mtuL2": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 2 (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "virtualRoutingAndForwarding": { + "description": "Configuration related to the L2 virtual routing and forwarding (MAC-VRF).\n", + "type": "object", + "required": [ + "macVrfName" + ], + "properties": { + "macVrfName": { + "description": "Name (or identifier) of the MAC-VRF instance.\n", + "type": "string" + } + } + }, + "forwardingConfig": { + "description": "Information related to the forwarding of the VN in the NFVI-PoP to the connectivity service endpoint, if information about the VN to \"stitch\" is already known. . by the OSS/BSS. Shall not be provided otherwise, in which case the NFVO will infer the forwarding configuration based on the NS VL, or external VL, or externally-managed VL provisioning.\n", + "type": "object", + "oneOf": [ + { + "required": [ + "networkResources" + ] + }, + { + "required": [ + "vnSegmentIds" + ] + } + ], + "properties": { + "networkResources": { + "description": "Reference to the VN resource to be forwarded into/from the MSCS. Either \"networkResources\" or \"vnSegmentsIds\" shall be provided, but not both.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + } + }, + "vnSegmentIds": { + "description": "Identifiers of the network segments of the VN resources to be forwarded into/from the MSCS.\n", + "type": "object", + "required": [ + "vnSegmentIdValue" + ], + "properties": { + "vnSegmentIdValue": { + "description": "Identifier of the network segment.\n", + "type": "string" + }, + "vnSegmentIdUpperRange": { + "description": "Identifier of the upper range network segment, in case the \"vnSegmentIds\" is used to define a range.\n", + "type": "string" + } + } + } + } + } + } + }, + "siteToWanLayer3ProtocolData": { + "description": "This type provides information about Layer 3 protocol specific information for the stitching of the intra-site VN to the multi-site connectivity service over the WAN. It shall comply with the provisions defined in Table 6.5.3.86-1.\n", + "type": "object", + "required": [ + "routingInfo" + ], + "properties": { + "logicalInterfaceIpAddress": { + "description": "IP addressing information associated to a logical interface. Shall be present if the \"interfaceType\" of the SiteToWanLayer2ProtocolData is equal to \"LOGICAL\".\n", + "type": "object", + "required": [ + "ipAddress", + "associatedSegmentId" + ], + "properties": { + "ipAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "associatedSegmentId": { + "description": "The associated segment identifier that has triggered the creation of the logical interface. The value shall be one of the values listed in the \"wanSegmentIds\" of the \"siteToWanLayer2ProtocolData\".\n", + "type": "string" + } + } + }, + "routingInfo": { + "description": "The routing information that is activated on the connectivity service endpoint. More than one \"routingInfo\" is allowed to enable stacking different routing protocols (e.g., one routing protocol for IPv4 and another one for IPv6).\n", + "type": "object", + "required": [ + "routingProtocol", + "routingAddressFamily" + ], + "properties": { + "routingProtocol": { + "description": "The routing protocol that is activated on the connectivity service endpoint. Permitted values: -\tBGP: used for dynamic routing BGPv4. -\tRIP: used for dynamic routing RIPv2. -\tOSPF: used for dynamic routing (OSPF version 2 for IPv4; and OSPF version 3 for IPv6). -\tSTATIC: used for static routing. -\tDIRECT: used when the NFVI-PoP network is directly connected to the WAN provider network. -\tVRRP: used when the NFVI-PoP network is directly connected to the WAN provider network with virtual\n router redundancy protocol support (VRRP).\n", + "type": "string", + "enum": [ + "BGP", + "RIP", + "OSPF", + "STATIC", + "DIRECT", + "VRRP" + ] + }, + "staticRouting": { + "description": "Defines a static route. It shall only be present if the routingProtocol=\"STATIC\".\n", + "type": "object", + "required": [ + "ipVersion", + "ipPrefix", + "prefixSize", + "nextHop" + ], + "properties": { + "ipVersion": { + "description": "The IP version applicable to the routing entry. Permitted values: -\tIPV4 -\tIPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "ipPrefix": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "prefixSize": { + "description": "The IP prefix size.\n", + "type": "number" + }, + "nextHop": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "routingAddressFamily": { + "description": "The IP version applicable to the dynamic routing protocol. Shall be present for dynamic routing protocols. Permitted values: -\tIPV4 -\tIPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPv6" + ] + }, + "ospfRouting": { + "description": "Defines parameters for OSPF routing. It shall only be present if the routingProtocol=\"OSPF\".\n", + "type": "object", + "required": [ + "areaId" + ], + "properties": { + "areaId": { + "description": "The routing area identifier, e.g., a number or an IP address.\n", + "type": "string" + } + } + }, + "bgpRouting": { + "description": "Defines parameters for BGP routing. It shall only be present if the routingProtocol=\"BGP\".\n", + "type": "object", + "required": [ + "bgpAs" + ], + "properties": { + "bgpAs": { + "description": "The Autonomous System (AS) identification applicable to the BGP routing info entry.\n", + "type": "object" + }, + "bgpNeighbour": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "bgpAdditionalParam": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "routeMapsDistribution": { + "description": "Maps of routes that are permitted or denied for redistribution.\n", + "type": "object", + "required": [ + "policy", + "sequence", + "matchAndSetRule" + ], + "properties": { + "policy": { + "description": "The policy to apply to the route distribution.\nPermitted values: -\tPERMIT -\tDENY\n", + "type": "string", + "enum": [ + "PERMIT", + "DENY" + ] + }, + "sequence": { + "description": "Sequence or index number assigned to the route-map.\n", + "type": "number" + }, + "matchAndSetRule": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + }, + "mtuL3": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 3 (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "virtualRoutingAndForwarding": { + "description": "Configuration related to the virtual routing and forwarding (VRF).\n", + "type": "object", + "required": [ + "vrfName" + ], + "properties": { + "vrfName": { + "description": "Name (or identifier) of the VRF instance.\n", + "type": "string" + } + } + }, + "bfdConfig": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + } + } + } + } + } + } + }, "_links": { "type": "object", "description": "Links to resources related to this resource.", @@ -1806,6 +2644,24 @@ } } }, + "vnfSnapshotInfos": { + "description": "Links to the VNF snapshots associated to VNF instances which are part of this NS instance.\n", + "type": "array", + "items": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + }, "instantiate": { "description": "This type represents a link to a resource.\n", "type": "object", diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json index 62e342387..48430de8d 100644 --- a/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json +++ b/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json @@ -1,319 +1,227 @@ { "type": "array", - "items": { - "description": "This type represents a response for Query NS operation. It shall comply with the provisions defined in Table 6.5.2.10-1.\n", - "type": "object", - "required": [ - "id", - "nsInstanceName", - "nsInstanceDescription", - "nsdId", - "nsdInfoId", - "nsState" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "nsInstanceName": { - "description": "Human readable name of the NS instance.\n", - "type": "string" - }, - "nsInstanceDescription": { - "description": "Human readable description of the NS instance.\n", - "type": "string" - }, - "nsdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "nsdInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "flavourId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "vnfInstance": { - "description": "Information on constituent VNF(s) of the NS instance.\n", - "type": "array", - "items": { - "description": "This type represents a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vnfdId", - "vnfProvider", - "vnfProductName", - "vnfSoftwareVersion", - "vnfdVersion", - "vnfPkgId", - "instantiationState" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstanceName": { - "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfProductName": { - "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A Version. Representation: string of variable length.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A Version. Representation: string of variable length.\n", - "type": "string" - }, - "vnfPkgId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "instantiationState": { - "description": "The instantiation state of the VNF.\n", - "type": "string", - "enum": [ - "NOT_INSTANTIATED", - "INSTANTIATED" - ] - }, - "instantiatedVnfInfo": { - "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", - "type": "object", - "required": [ - "flavourId", - "vnfState" - ], - "properties": { - "flavourId": { - "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", - "type": "string" - }, - "vnfState": { - "type": "string", - "enum": [ - "STARTED", - "STOPPED" - ] - }, - "scaleStatus": { - "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n", - "type": "array", - "items": { - "required": [ - "aspectId", - "scaleLevel" - ], - "type": "object", - "properties": { - "aspectId": { - "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", - "type": "string" - }, - "scaleLevel": { - "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", - "type": "integer" - } + "items": + { + "description": "This type represents a response for Query NS operation. It shall comply with the provisions defined in Table 6.5.2.10-1.\n", + "type": "object", + "required": [ + "id", + "nsInstanceName", + "nsInstanceDescription", + "nsdId", + "nsdInfoId", + "nsState", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "nsInstanceName": { + "description": "Human readable name of the NS instance.\n", + "type": "string" + }, + "nsInstanceDescription": { + "description": "Human readable description of the NS instance.\n", + "type": "string" + }, + "nsdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "nsdInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "flavourId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "vnfInstance": { + "description": "Information on constituent VNF(s) of the NS instance.\n", + "type": "array", + "items": { + "description": "This type represents a VNF instance. Clause B.3.2 of ETSI GS NFV-SOL 003 [4] provides examples illustrating the relationship among the different run-time information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "vnfPkgId", + "instantiationState" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "Name of the VNF instance. Modifications to this attribute can be requested using the \"ModifyVnfInfoData\" structure.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. Modifications to this attribute can be requested using the \"ModifyVnfInfoData\" structure.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + }, + "vnfPkgId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState", + "extCpInfo" + ], + "properties": { + "flavourId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfState": { + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } - }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance.\n", - "type": "array", - "minItems": 1, - "items": { - "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in Table 6.5.3.70-1.\n", - "type": "object", - "required": [ - "id", - "cpdId" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "minItems": 1, - "items": { - "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n", - "type": "object", - "required": [ - "layerProtocol", - "ipOverEthernet" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", - "type": "object", - "required": [ - "macAddress", - "ipAddresses", - "subnetId", - "addresses", - "addressRange" - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - } - } - } - }, - "type": { - "description": "The type of the IP addresses\n", - "type": "string", - "enum": [ - "PV4", - "PV6" - ] - }, - "addresses": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "subnetId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - } - } - } - } - } - }, - "extLinkPortId": { + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in Table 6.5.3.70-1.\n", + "type": "object", + "required": [ + "id", + "cpdId" + ], + "oneOf": [ + { + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "cpConfigId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "minItems": 1, + "items": { "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n", "type": "object", "required": [ @@ -331,12 +239,17 @@ "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", "type": "object", - "required": [ - "macAddress", - "ipAddresses", - "subnetId", - "addresses", - "addressRange" + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } ], "properties": { "macAddress": { @@ -344,6 +257,10 @@ "type": "string", "format": "MAC" }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, "ipAddresses": { "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", "type": "array", @@ -352,6 +269,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -455,798 +384,1499 @@ } } } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "associatedVnfcCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "associatedVnfVirtualLinkId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } - }, - "extVirtualLinkInfo": { - "description": "Information about the external VLs the VNF instance is connected to.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. \n", "type": "object", "required": [ - "resourceId" + "id", + "resourceHandle" ], "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { + "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" } } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. \n", + } + }, + "currentVnfExtCpData": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure. Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId’ attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk.\n", "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", - "type": "object", - "required": [ - "resourceId" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "string" - } + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": * At least one of the \"linkPortId\" and \"cpProtocolData\" attributes\n shall be present for a to-be-created external CP instance or an\n existing external CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "ipAddresses" + ] + }, + { + "required": [ + "macAddress" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + } + } + } + } } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" } } } } } } - }, - "extManagedVirtualLinkInfo": { - "description": "External virtual links the VNF instance is connected to.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", - "type": "string" - }, - "networkResource": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + } + }, + "extManagedVirtualLinkInfo": { + "description": "External virtual links the VNF instance is connected to. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 6.5.3.59).\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "networkResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { "type": "object", "required": [ - "resourceId" + "id", + "resourceHandle" ], "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "string" - } - } - }, - "vnfLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", - "type": "object", - "required": [ - "resourceId" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - } + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] } } } + }, + "extManagedMultisiteVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } - }, - "monitoringParameters": { - "description": "Performance metrics tracked by the VNFM (e.g. for auto-scaling purposes) as identified by the VNF provider in the VNFD.\n", - "type": "array", - "items": { - "description": "This type represents a monitoring parameter that is tracked by the VNFM, for example, for auto-scaling purposes. It shall comply with the provisions defined in Table 6.5.3.69-1.\n", - "type": "object", - "required": [ - "id", - "performanceMetric" - ], - "properties": { - "id": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", - "type": "string" - }, - "performanceMetric": { - "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", - "type": "string" - } + } + }, + "monitoringParameters": { + "description": "Performance metrics tracked by the VNFM (e.g. for auto-scaling purposes) as identified by the VNF provider in the VNFD.\n", + "type": "array", + "items": { + "description": "This type represents a monitoring parameter that is tracked by the VNFM, for example, for auto-scaling purposes. It shall comply with the provisions defined in Table 6.5.3.69-1.\n", + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" } } - }, - "localizationLanguage": { - "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", - "type": "string" - }, - "vnfcResourceInfo": { - "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "computeResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "computeResource": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n", + "type": "array", + "items": { "type": "object", "required": [ - "resourceId" + "id", + "cpdId" ], "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", "type": "string" }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "cpdId" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", - "type": "string" - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n", - "type": "object", - "required": [ - "layerProtocol", - "ipOverEthernet" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", - "type": "object", - "required": [ - "macAddress", - "ipAddresses", - "subnetId", - "addresses", - "addressRange" - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n", + "type": "object", + "required": [ + "layerProtocol", + "ipOverEthernet" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n", - "type": "array", - "items": { + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" } - } - } - }, - "type": { - "description": "The type of the IP addresses\n", - "type": "string", - "enum": [ - "PV4", - "PV6" - ] - }, - "addresses": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" } } - }, - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "subnetId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" } + }, + "type": { + "description": "The type of the IP addresses\n", + "type": "string", + "enum": [ + "PV4", + "PV6" + ] + }, + "addresses": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" } } } } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" } } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" } } - }, - "virtualLinkResourceInfo": { - "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", - "type": "string" - }, - "networkResource": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + } + }, + "virtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "networkResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { "type": "object", "required": [ - "resourceId" + "id", + "resourceHandle" ], "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "string" + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] } } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "type": "object", + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + }, + "pnfInfo": { + "description": "Information on the PNF(s) that are part of the NS instance.\n", + "type": "array", + "items": { + "description": "This type represents the information about a PNF that is part of an NS instance. It shall comply with the provisions defined in Table 6.5.3.13-1.\n", + "type": "object", + "required": [ + "pnfId", + "pnfdId", + "pnfdInfoId", + "pnfProfileId" + ], + "properties": { + "pnfId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "pnfName": { + "description": "Name of the PNF.\n", + "type": "string" + }, + "pnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "pnfdInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "pnfProfileId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "cpInfo": { + "description": "This type represents the information about the external CP of the PNF. It shall comply with the provisions defined in Table 6.5.3.17-1.\n", + "type": "object", + "required": [ + "cpInstanceId", + "cpdId" + ], + "properties": { + "cpInstanceId": { + "description": "An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the CP.\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [ + { "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", - "type": "object", - "required": [ - "resourceId" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "string" + "ipAddresses" + ] + }, + { + "required": [ + "macAddress" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] } } } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" } } } + } + } + } + } + } + } + }, + "virtualLinkInfo": { + "description": "Information on the VL(s) of the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED and if the NS instance has specified connectivity.\n", + "type": "array", + "items": { + "description": "This type specifies the information about an NS VL instance. It shall comply with the provisions defined in Table 6.5.3.53-1\n", + "type": "object", + "required": [ + "id", + "nsVirtualLinkDescId", + "nsVirtualLinkProfileId" + ], + "properties": { + "id": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "nsVirtualLinkDescId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "nsVirtualLinkProfileId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "resourceHandle": { + "description": "Identifier(s) of the virtualised network resource(s) and/or multi-site connectivity service(s) realizing the VL instance. As an NS can include NFs deployed in NFVI PoPs under the control of several different VIMs, therefore deploying an NS VL can involve several VIMs, each allocating different virtualised network resources, as well as WIMs handling the connectivity in between the NFVI-PoPs in the form of multi-site connectivity services. When this NsVirtualLink is provided as an ExtVirtualLink as input of a VNF LCM operation, the id of the ExtVirtualLink shall be the same as the corresponding NsVirtualLink.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + } + }, + "linkPort": { + "description": "Link ports of the VL instance. Cardinality of zero indicates that no port has yet been created for the VL instance.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of a VL instance. It shall comply with the provisions defined in Table 6.5.3.55-1.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } }, - "virtualStorageResourceInfo": { - "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "nsCpHandle": { + "description": "Identifier of the CP/SAP instance to be connected to this link port. The value refers to a vnfExtCpInfo item in the VnfInstance, or a pnfExtCpInfo item in the PnfInfo, or a sapInfo item in the NS instance. There shall be at most one link port associated with any connection point instance.\n", "type": "array", "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "description": "This type represents an identifier of the CP or SAP instance. It shall comply with the provisions defined in Table 6.5.3.56-1.\n", "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" + "oneOf": [ + { + "required": [ + "vnfInstanceId", + "vnfExtCpInstanceId" + ] + }, + { + "required": [ + "pnfInfoId", + "pnfExtCpInstanceId" + ] + }, + { + "required": [ + "nsInstanceId", + "nsSapInstanceId" + ] + } ], "properties": { - "id": { + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfExtCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "virtualStorageDescId": { - "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "pnfInfoId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "storageResource": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", - "type": "object", - "required": [ - "resourceId" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "string" - } - } + "pnfExtCpInstanceId": { + "description": "An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n", + "type": "string" }, - "reservationId": { + "nsInstanceId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" + "nsSapInstanceId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" } } } } } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" } } } - }, - "pnfInfo": { - "description": "Information on the PNF(s) that are part of the NS instance.\n", - "type": "array", - "items": { - "description": "This type represents the information about a PNF that is part of an NS instance. It shall comply with the provisions defined in Table 6.5.3.13-1.\n", - "type": "object", - "required": [ - "pnfId", - "pnfdId", - "pnfdInfoId", - "pnfProfileId" - ], - "properties": { - "pnfId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "pnfName": { - "description": "Name of the PNF.\n", - "type": "string" - }, - "pnfdId": { + } + }, + "vnffgInfo": { + "description": "Information on the VNFFG(s) of the NS instance.\n", + "type": "array", + "items": { + "description": "Information on the VNFFG(s) of the NS instance.\n", + "type": "object", + "required": [ + "id", + "vnffgdId", + "vnfInstanceId", + "pnfInfoId" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnffgdId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "vnfInstanceId": { + "description": "Identifier(s) of the constituent VNF instance(s) of this VNFFG instance.\n", + "type": "array", + "items": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "pnfdInfoId": { + } + }, + "pnfdInfoId": { + "description": "Identifier(s) of the constituent PNF instance(s) of this VNFFG instance.\n", + "type": "array", + "items": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "pnfProfileId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + } + }, + "nsVirtualLinkInfoId": { + "description": "Identifier(s) of the constituent VL instance(s) of this VNFFG instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", "type": "string" - }, - "cpInfo": { - "description": "This type represents the information about the external CP of the PNF. It shall comply with the provisions defined in Table 6.5.3.17-1.\n", + } + }, + "nsCpHandle": { + "description": "Identifiers of the CP instances attached to the constituent VNFs and PNFs or the SAP instances of the VNFFG. See note.\n", + "type": "array", + "items": { + "description": "This type represents an identifier of the CP or SAP instance. It shall comply with the provisions defined in Table 6.5.3.56-1.\n", "type": "object", - "required": [ - "cpInstanceId", - "cpdId" + "oneOf": [ + { + "required": [ + "vnfInstanceId", + "vnfExtCpInstanceId" + ] + }, + { + "required": [ + "pnfInfoId", + "pnfExtCpInstanceId" + ] + }, + { + "required": [ + "nsInstanceId", + "nsSapInstanceId" + ] + } ], "properties": { - "cpInstanceId": { + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfExtCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "pnfInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "pnfExtCpInstanceId": { "description": "An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n", "type": "string" }, - "cpdId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "nsInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "cpProtocolData": { - "description": "Parameters for configuring the network protocols on the CP.\n", - "type": "array", - "items": { - "description": "This type represents network protocol data.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet.\n", + "nsSapInstanceId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + } + } + }, + "sapInfo": { + "description": "Information on the SAP(s) of the NS instance.\n", + "type": "array", + "items": { + "description": "This type represents an SAP instance. It shall comply with the provisions defined in Table 6.5.3.67-1.\n", + "type": "object", + "required": [ + "id", + "sapdId", + "sapName", + "sapProtocolInfo" + ], + "properties": { + "id": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "sapdId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "sapName": { + "description": "Human readable name for the SAP instance.\n", + "type": "string" + }, + "description": { + "description": "Human readable description for the SAP instance.\n", + "type": "string" + }, + "sapProtocolInfo": { + "description": "Network protocol information for this SAP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n", + "type": "object", + "required": [ + "layerProtocol", + "ipOverEthernet" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", + "type": "array", + "items": { "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "format": "MAC" + "enum": [ + "IPV4", + "IPV6" + ] }, - "ipAddresses": { - "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n", "type": "array", "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "fixedAddresses": { - "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "numDynamicAddresses": { - "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", - "type": "integer" - }, - "addressRange": { - "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - } + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" } } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" } } } + }, + "type": { + "description": "The type of the IP addresses\n", + "type": "string", + "enum": [ + "PV4", + "PV6" + ] + }, + "addresses": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" } } } @@ -1254,392 +1884,720 @@ } } } - }, - "virtualLinkInfo": { - "description": "Information on the VL(s) of the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED and if the NS instance has specified connectivity.\n", - "type": "array", - "items": { - "description": "This type specifies the information about an NS VL instance. It shall comply with the provisions defined in Table 6.5.3.53-1\n", - "type": "object", - "required": [ - "id", - "nsVirtualLinkDescId", - "nsVirtualLinkProfileId" - ], - "properties": { - "id": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + } + }, + "nestedNsInstanceId": { + "description": "Identifier of the nested NS(s) of the NS instance.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "vnfSnapshotInfoIds": { + "description": "Identifier of information on VNF snapshots of VNF instances that are part of this NS instance.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "nsState": { + "description": "The state of the NS instance. Permitted values: NOT_INSTANTIATED: The NS instance is terminated or not instantiated. INSTANTIATED: The NS instance is instantiated.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "monitoringParameter": { + "description": "Performance metrics tracked by the NFVO (e.g. for auto-scaling purposes) as identified by the NS designer in the NSD.\n", + "type": "array", + "items": { + "description": "This type represents a monitoring parameter that is tracked by the NFVO, for example, for auto-scaling purposes. It shall comply with the provisions defined in Table 6.5.3.68-1.\n", + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the NSD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "nsScaleStatus": { + "description": "Status of each NS scaling aspect declared in the applicable DF, how \"big\" the NS instance has been scaled w.r.t. that aspect. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n", + "type": "array", + "items": { + "description": "This type represents the target NS Scale level for each NS scaling aspect of the current deployment flavor.\n", + "type": "object", + "required": [ + "nsScalingAspectId", + "nsScaleLevelId" + ], + "properties": { + "nsScalingAspectId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "nsScaleLevelId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + } + } + } + }, + "additionalAffinityOrAntiAffinityRule": { + "description": "Information on the additional affinity or anti-affinity rule from NS instantiation operation. Shall not conflict with rules already specified in the NSD.\n", + "type": "array", + "items": { + "description": "This type describes the additional affinity or anti-affinity rule applicable between the VNF instances to be instantiated in the NS instantiation operation request or between the VNF instances to be instantiated in the NS instantiation operation request and the existing VNF instances..\n", + "type": "object", + "required": [ + "affinityOrAntiAffiinty", + "scope" + ], + "properties": { + "vnfdId": { + "description": "Reference to a VNFD. When the VNFD which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VNFD presents is not necessary as a part of the NS to be instantiated.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "nsVirtualLinkDescId": { + } + }, + "vnfProfileId": { + "description": "Reference to a vnfProfile defined in the NSD. At least one VnfProfile which is used to instantiate VNF for the NS to be instantiated as the subject of the affinity or anti-affinity rule shall be present. When the VnfProfile which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VnfProfile presents is not necessary as a part of the NS to be instantiated.\n", + "type": "array", + "items": { "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", "type": "string" - }, - "nsVirtualLinkProfileId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + } + }, + "vnfInstanceId": { + "description": "Reference to the existing VNF instance as the subject of the affinity or anti-affinity rule. The existing VNF instance is not necessary as a part of the NS to be instantiated.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "resourceHandle": { - "description": "Identifier(s) of the virtualised network resource(s) realizing the VL instance. See note.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + } + }, + "affinityOrAntiAffiinty": { + "description": "The type of the constraint. Permitted values: AFFINITY ANTI_AFFINITY.\n", + "type": "string", + "enum": [ + "AFFINITY", + "ANTI_AFFINITY" + ] + }, + "scope": { + "description": "Specifies the scope of the rule where the placement constraint applies. Permitted values: NFVI_POP ZONE ZONE_GROUP NFVI_NODE.\n", + "type": "string", + "enum": [ + "NFVI_POP", + "ZONE", + "ZONE_GROUP", + "NFVI_NODE" + ] + } + } + } + }, + "wanConnectionInfo": { + "description": "Information about WAN related connectivity enabling multi-site VLs.\n", + "type": "array", + "items": { + "description": "This type provides information about the connectivity to the WAN of network resources realizing a VL, e.g.,\nwhen the VL is deployed on several sites across a WAN. It shall comply with the provisions defined in table 6.5.3.90-1.\n", + "type": "object", + "required": [ + "wanConnectionInfoId" + ], + "oneOf": [ + { + "required": [ + "nsVirtualLinkInfoId" + ] + }, + { + "required": [ + "vnfVirtualLinkResourceInfoId" + ] + } + ], + "properties": { + "wanConnectionInfoId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "nsVirtualLinkInfoId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "vnfVirtualLinkResourceInfoId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "protocolInfo": { + "description": "This type provides protocol specific information about the connectivity to the WAN of network resources realizing\na VL, e.g., when the VL is deployed on several sites and across a WAN, and the related multi-site connectivity\nservice (MSCS) enabling the connectivity through the WAN. This type supports providing information about both\npre-provisioned WAN connectivity realized by external entities to NFV-MANO but parts of such connectivity is known\nto the NFVO, as well as information about MSCS created under NFV-MANO responsibility (i.e., connectivity is realized\nwhen NFVO communicates with the WIM). It shall comply with the provisions defined in table 6.5.3.91-1.\n", + "type": "object", + "properties": { + "mscsInfo": { + "description": "This type provides information about an already provisioned multi-site connectivity service (MSCS) deployed across a WAN. It shall comply with the provisions defined in Table 6.5.3.82-1.\n", "type": "object", "required": [ - "resourceId" + "mscsId", + "mscsType" ], "properties": { - "vimId": { + "mscsId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", + "mscsName": { + "description": "Human readable name of the MSCS.\n", "type": "string" }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "mscsDescription": { + "description": "Human readable description of the MSCS.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "string" - } - } - } - }, - "linkPort": { - "description": "Link ports of the VL instance. Cardinality of zero indicates that no port has yet been created for the VL instance.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of a VL instance. It shall comply with the provisions defined in Table 6.5.3.55-1.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "mscsType": { + "description": "The type of connectivity that is provided to the virtualized networks in the NFVI-PoP and characterizes the connectivity service across the WAN. Permitted values: -\tL2 -\tL3\n", + "type": "string", + "enum": [ + "L2VPN", + "L3VPN" + ] }, - "resourceHandle": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", - "type": "object", - "required": [ - "resourceId" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "string" + "mscsLayerProtocol": { + "description": "Type of underlying connectivity service and protocol associated to the MSCS. Permitted values are as listed below and restricted by the type of MSCS: -\tEVPN_BGP_MPLS: as specified in IETF RFC 7432. Only applicable for mscsType=\"L2\". - EVPN_VPWS: as specified in IETF RFC 8214. Only applicable for mscsType=\"L2\". -\tVPLS_BGP: as specified in IETF RFC 4761 and IETF RFC 6624. Only applicable for mscsType=\"L2\". -\tVPLS_LDP_L2TP: as specified in IETF RFC 4762. Only applicable for mscsType=\"L2\". -\tVPWS_LDP_L2TP: as specified in IETF RFC 6074. Only applicable for mscsType=\"L2\". -\tBGP_IP_VPN: BGP/MPLS based IP VPN as specified in IETF RFC 4364. Only applicable for mscsType=\"L3\".\n", + "type": "string", + "enum": [ + "EVPN_BGP_MPLS", + "EVPN_VPWS", + "VPLS_BGP", + "VPLS_LDP", + "VPWS", + "BGP_IP_VPN" + ] + }, + "siteAccessProtectionSchemes": { + "description": "Information to determine the proper MSCS endpoints configuration to fulfil certain resiliency/protection requirements, e.g., by considering certain availability and redundancy of connectivity service endpoints in between NFVI-PoP and WAN.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "locationConstraints": { + "description": "This type represents location constraints for a VNF to be instantiated. The location constraints can be represented as follows: •\tas a country code •\tas a civic address combined with a country code •\tas an area, conditionally combined with a country code The LocationConstraints data type shall comply with the provisions defined in Table 6.5.3.21-1.\n", + "type": "object", + "properties": { + "countryCode": { + "description": "The two-letter ISO 3166 [29] country code in capital letters. Shall be present in case the \"area\" attribute is absent. May be absent if the \"area\" attribute is present. If both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two attributes. In case of conflicts, the API producer (i.e. the NFVO) shall disregard parts of the geographic area signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.\n", + "type": "string" + }, + "civicAddressElement": { + "description": "Zero or more elements comprising the civic address. Shall be absent if the \"area\" attribute is present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "caType", + "caValue" + ], + "properties": { + "caType": { + "description": "Describe the content type of caValue. The value of caType shall comply with Section 3.4 of IETF RFC 4776 [13].\n", + "type": "integer" + }, + "caValue": { + "description": "Content of civic address element corresponding to the caType. The format caValue shall comply with Section 3.4 of IETF RFC 4776 [13].\n", + "type": "string" + } + } + } + }, + "area": { + "description": "Geographic area. Shall be absent if the \"civicAddressElement\" attribute is present. The content of this attribute shall follow the provisions for the \"Polygon\" geometry object as defined in IETF RFC 7946, for which the \"type\" member shall be set to the value \"Polygon\". If both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two attributes. In case of conflicts, the API producer (i.e. the NFVO) shall disregard parts of the geographic area signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.\n", + "type": "object" + } + } + }, + "protectionScheme": { + "description": "Defines the protection scheme. Permitted values: -\tUNPROTECTED: to indicate no protection. -\tONE_TO_ONE: to indicate an active-passive access protection. -\tONE_PLUS_ONE: to indicate an active-active access protection. -\tONE_TO_N: to indicate an N active to 1 passive access protection.\n", + "type": "string", + "enum": [ + "UNPROTECTED", + "ONE_TO_ONE", + "ONE_PLUS_ONE", + "ONE_TO_N" + ] + } } } }, - "nsCpHandle": { - "description": "Identifier of the CP/SAP instance to be connected to this link port. The value refers to a vnfExtCpInfo item in the VnfInstance, or a pnfExtCpInfo item in the PnfInfo, or a sapInfo item in the NS instance. There shall be at most one link port associated with any connection point instance.\n", + "mtuMscs": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded over the MSCS (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "mscsEndpoints": { + "description": "Information about the MSCS endpoints of the MSCS.\n", "type": "array", "items": { - "description": "This type represents an identifier of the CP or SAP instance. It shall comply with the provisions defined in Table 6.5.3.56-1.\n", + "description": "This type provides encapsulates information about an MSCS endpoint of the MSCS. It shall comply with the provisions defined in table 6.5.3.83-1.\n", "type": "object", + "required": [ + "mscsEndpointId", + "directionality", + "connectivityServiceEndpoinId" + ], "properties": { - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfExtCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "pnfInfoId": { + "mscsEndpointId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "pnfExtCpInstanceId": { - "description": "An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n", - "type": "string" - }, - "nsInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "directionality": { + "description": "Directionality of the data traffic in the context of the terminating MSCS endpoint from WAN’s perspective. Permitted values: -\tINBOUND: to indicate into the WAN. -\tOUTBOUND: to indicate from the WAN. -\tBOTH: to indicate bidirectional data traffic to/from the WAN.\n", + "type": "string", + "enum": [ + "INBOUND", + "OUTBOUND", + "BOTH" + ] }, - "nsSapInstanceId": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", - "type": "string" + "connectivityServiceEndpoinId": { + "description": "References the connectivity service endpoint configuration information applicable to support the MSCS endpoint. More than one connectivity service endpoint can be referred when endpoints are in LAG mode.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } } } } } } - } - } - } - } - }, - "vnffgInfo": { - "description": "Information on the VNFFG(s) of the NS instance.\n", - "type": "array", - "items": { - "description": "Information on the VNFFG(s) of the NS instance.\n", - "type": "object", - "required": [ - "id", - "vnffgdId", - "vnfInstanceId", - "pnfInfoId" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnffgdId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "vnfInstanceId": { - "description": "Identifier(s) of the constituent VNF instance(s) of this VNFFG instance.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "pnfdInfoId": { - "description": "Identifier(s) of the constituent PNF instance(s) of this VNFFG instance.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "nsVirtualLinkInfoId": { - "description": "Identifier(s) of the constituent VL instance(s) of this VNFFG instance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", - "type": "string" - } - }, - "nsCpHandle": { - "description": "Identifiers of the CP instances attached to the constituent VNFs and PNFs or the SAP instances of the VNFFG. See note.\n", - "type": "array", - "items": { - "description": "This type represents an identifier of the CP or SAP instance. It shall comply with the provisions defined in Table 6.5.3.56-1.\n", - "type": "object", - "properties": { - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfExtCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "pnfInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "pnfExtCpInstanceId": { - "description": "An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n", - "type": "string" - }, - "nsInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "nsSapInstanceId": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", - "type": "string" - } - } - } - } - } - } - }, - "sapInfo": { - "description": "Information on the SAP(s) of the NS instance.\n", - "type": "array", - "items": { - "description": "This type represents an SAP instance. It shall comply with the provisions defined in Table 6.5.3.67-1.\n", - "type": "object", - "required": [ - "id", - "sapdId", - "sapName", - "sapProtocolInfo" - ], - "properties": { - "id": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", - "type": "string" - }, - "sapdId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "sapName": { - "description": "Human readable name for the SAP instance.\n", - "type": "string" - }, - "description": { - "description": "Human readable description for the SAP instance.\n", - "type": "string" - }, - "sapProtocolInfo": { - "description": "Network protocol information for this SAP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n", - "type": "object", - "required": [ - "layerProtocol", - "ipOverEthernet" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n", - "type": "object", - "required": [ - "macAddress", - "ipAddresses", - "subnetId", - "addresses", - "addressRange" - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", - "type": "array", - "items": { + }, + "connectivityServiceEndpoints": { + "description": "Configuration information about the network resources in the NFVI-PoP and their connectivity to the WAN.\n", + "type": "array", + "items": { + "description": "This type provides configuration data for the NFVI-PoP network gateway providing connectivity service endpoints. The connectivity service endpoints are used as endpoints by an MSCS. It shall comply with the provisions defined in Table 6.5.3.84-1.\n", + "type": "object", + "required": [ + "connectivityServiceEndpointId", + "vimId" + ], + "properties": { + "connectivityServiceEndpointId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "siteToWanLayer2ProtocolData": { + "description": "This type provides information about Layer 2 protocol specific information for the configuration of the NFVI-PoP network gateway to enable the stitching of the intra-site VN to the MSCS over the WAN. It shall comply with the provisions defined in Table 6.5.3.85-1.\n", + "type": "object", + "required": [ + "layer2ConnectionInfo" + ], + "properties": { + "layer2ConnectionInfo": { + "description": "Layer 2 protocol parameters of the connectivity service endpoint (CSE).\n", + "type": "object", + "required": [ + "connectionType", + "interfaceType", + "interfaceTagging", + "encapsulationType" + ], + "properties": { + "connectionType": { + "description": "The type of connection to be established on the connectivity service point. Permitted values: -\tCSE: defined by the characteristics of the existing referred connectivity service point. -\tAGGREGATE_CSE: create an aggregation of the connectivity service endpoints.\n", + "type": "string", + "enum": [ + "CSE", + "AGGREGATE_CSE" + ] + }, + "interfaceType": { + "description": "To indicate whether to create logical interfaces on the referred connectivity service endpoint or new aggregated connectivity service endpoint. Permitted values: -\tPARENT: use the mapped interface to the connectivity service endpoint as is, i.e., do not create logical interfaces. -\tLOGICAL: create logical interfaces.\n", + "type": "string", + "enum": [ + "PARENT", + "LOGICAL" + ] + }, + "interfaceTagging": { + "description": "The type of frames to forward on the connectivity service point. Permitted values: -\tUNTAGGED: an interface where frames are not tagged. -\tTAGGED: an interface configured to forward tagged frames (i.e., enabled for VLAN tagging).\n", + "type": "string", + "enum": [ + "UNTAGGED", + "TAGGED" + ] + }, + "encapsulationType": { + "description": "The type of encapsulation. If the interfaceTagging=\"TAGGED\", either \"VLAN\" or \"VXLAN\" shall be set. Permitted values: -\tETH: generic Ethernet encapsulation. -\tVLAN: encapsulation based on VLAN. -\tVXLAN: encapsulation based on VXLAN.\n", + "type": "string", + "enum": [ + "ETH", + "VLAN", + "VXLAN" + ] + }, + "vlanTaggingType": { + "description": "Type of encapsulation method for VLAN tagging. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VLAN\". Permitted values: -\tDOT1Q: used when packets on the CSE are encapsulated with one or a set of customer VLAN identifiers. -\tQINQ: used when packets on the CSE are encapsulated with multiple customer VLAN identifiers and a single\n service VLAN identifier.\n- QINANY: used when packets on the CSE have no specific customer VLAN and a service VLAN identifier is used.\n", + "type": "string", + "enum": [ + "DOT1Q", + "QINQ", + "QINANY" + ] + }, + "wanSegmentIds": { + "description": "Segment identifiers to pass on the tagged interface. Shall be present if encapsulationType=\"VLAN\" or “VXLAN\".\n", + "type": "object", + "required": [ + "wanSegmentIdValue" + ], + "properties": { + "wanSegmentIdValue": { + "description": "Identifier of the network segment (e.g., VLAN id or VNI).\n", + "type": "string" + }, + "wanSegmentIdUpperRange": { + "description": "Identifier of the upper range network segment, in case the \"wanSegmentIds\" is used to define a range.\n", + "type": "string" + } + } + }, + "vxlanConfig": { + "description": "Additional configuration needed when using VXLAN encapsulation. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VXLAN\".\n", + "type": "object", + "required": [ + "peerMode" + ], + "properties": { + "peerMode": { + "description": "Type of VXLAN access mode. Default value is \"STATIC\".\nPermitted values: -\tSTATIC -\tBGP_EVPN\n", + "type": "string", + "enum": [ + "STATIC", + "BGP_EVPN" + ] + }, + "peers": { + "description": "List of IP addresses of VTEP peers when using static mode.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + }, + "lagInterfaceData": { + "description": "Information for setting up a LAG interface aggregating multiple connectivity service endpoints.\n", + "type": "object", + "required": [ + "aggregatedEndpoints", + "lacpActivation", + "lacpConfig" + ], + "properties": { + "aggregatedEndpoints": { + "description": "List of the connectivity service endpoints that are to be aggregated. Shall be present if connectionType=\"AGGREGATE_CSE\". In case of aggregating connectivity service endpoints, only one SiteToWanLayer2ProtocolData shall be provided for the whole set of aggregated endpoints.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "lacpActivation": { + "description": "Indicates whether to activate LACP on the interface. If \"TRUE\", the LACP is to be activated, or \"FALSE\" otherwise. Default value is \"FALSE\".\n", + "type": "boolean" + }, + "lacpConfig": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "layer2ControlProtocol": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "mtuL2": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 2 (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "virtualRoutingAndForwarding": { + "description": "Configuration related to the L2 virtual routing and forwarding (MAC-VRF).\n", + "type": "object", + "required": [ + "macVrfName" + ], + "properties": { + "macVrfName": { + "description": "Name (or identifier) of the MAC-VRF instance.\n", + "type": "string" + } + } + }, + "forwardingConfig": { + "description": "Information related to the forwarding of the VN in the NFVI-PoP to the connectivity service endpoint, if information about the VN to \"stitch\" is already known. . by the OSS/BSS. Shall not be provided otherwise, in which case the NFVO will infer the forwarding configuration based on the NS VL, or external VL, or externally-managed VL provisioning.\n", "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" + "oneOf": [ + { + "required": [ + "networkResources" ] }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n", + { + "required": [ + "vnSegmentIds" + ] + } + ], + "properties": { + "networkResources": { + "description": "Reference to the VN resource to be forwarded into/from the MSCS. Either \"networkResources\" or \"vnSegmentsIds\" shall be provided, but not both.\n", "type": "array", "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + } + }, + "vnSegmentIds": { + "description": "Identifiers of the network segments of the VN resources to be forwarded into/from the MSCS.\n", + "type": "object", + "required": [ + "vnSegmentIdValue" + ], + "properties": { + "vnSegmentIdValue": { + "description": "Identifier of the network segment.\n", + "type": "string" + }, + "vnSegmentIdUpperRange": { + "description": "Identifier of the upper range network segment, in case the \"vnSegmentIds\" is used to define a range.\n", + "type": "string" + } } + } + } + } + } + }, + "siteToWanLayer3ProtocolData": { + "description": "This type provides information about Layer 3 protocol specific information for the stitching of the intra-site VN to the multi-site connectivity service over the WAN. It shall comply with the provisions defined in Table 6.5.3.86-1.\n", + "type": "object", + "required": [ + "routingInfo" + ], + "properties": { + "logicalInterfaceIpAddress": { + "description": "IP addressing information associated to a logical interface. Shall be present if the \"interfaceType\" of the SiteToWanLayer2ProtocolData is equal to \"LOGICAL\".\n", + "type": "object", + "required": [ + "ipAddress", + "associatedSegmentId" + ], + "properties": { + "ipAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" + "associatedSegmentId": { + "description": "The associated segment identifier that has triggered the creation of the logical interface. The value shall be one of the values listed in the \"wanSegmentIds\" of the \"siteToWanLayer2ProtocolData\".\n", + "type": "string" + } + } + }, + "routingInfo": { + "description": "The routing information that is activated on the connectivity service endpoint. More than one \"routingInfo\" is allowed to enable stacking different routing protocols (e.g., one routing protocol for IPv4 and another one for IPv6).\n", + "type": "object", + "required": [ + "routingProtocol", + "routingAddressFamily" + ], + "properties": { + "routingProtocol": { + "description": "The routing protocol that is activated on the connectivity service endpoint. Permitted values: -\tBGP: used for dynamic routing BGPv4. -\tRIP: used for dynamic routing RIPv2. -\tOSPF: used for dynamic routing (OSPF version 2 for IPv4; and OSPF version 3 for IPv6). -\tSTATIC: used for static routing. -\tDIRECT: used when the NFVI-PoP network is directly connected to the WAN provider network. -\tVRRP: used when the NFVI-PoP network is directly connected to the WAN provider network with virtual\n router redundancy protocol support (VRRP).\n", + "type": "string", + "enum": [ + "BGP", + "RIP", + "OSPF", + "STATIC", + "DIRECT", + "VRRP" + ] }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "staticRouting": { + "description": "Defines a static route. It shall only be present if the routingProtocol=\"STATIC\".\n", "type": "object", "required": [ - "minAddress", - "maxAddress" + "ipVersion", + "ipPrefix", + "prefixSize", + "nextHop" ], "properties": { - "minAddress": { + "ipVersion": { + "description": "The IP version applicable to the routing entry. Permitted values: -\tIPV4 -\tIPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "ipPrefix": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "prefixSize": { + "description": "The IP prefix size.\n", + "type": "number" + }, + "nextHop": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" + } + } + }, + "routingAddressFamily": { + "description": "The IP version applicable to the dynamic routing protocol. Shall be present for dynamic routing protocols. Permitted values: -\tIPV4 -\tIPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPv6" + ] + }, + "ospfRouting": { + "description": "Defines parameters for OSPF routing. It shall only be present if the routingProtocol=\"OSPF\".\n", + "type": "object", + "required": [ + "areaId" + ], + "properties": { + "areaId": { + "description": "The routing area identifier, e.g., a number or an IP address.\n", + "type": "string" + } + } + }, + "bgpRouting": { + "description": "Defines parameters for BGP routing. It shall only be present if the routingProtocol=\"BGP\".\n", + "type": "object", + "required": [ + "bgpAs" + ], + "properties": { + "bgpAs": { + "description": "The Autonomous System (AS) identification applicable to the BGP routing info entry.\n", + "type": "object" }, - "maxAddress": { + "bgpNeighbour": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" + }, + "bgpAdditionalParam": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" } } }, - "subnetId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" + "routeMapsDistribution": { + "description": "Maps of routes that are permitted or denied for redistribution.\n", + "type": "object", + "required": [ + "policy", + "sequence", + "matchAndSetRule" + ], + "properties": { + "policy": { + "description": "The policy to apply to the route distribution.\nPermitted values: -\tPERMIT -\tDENY\n", + "type": "string", + "enum": [ + "PERMIT", + "DENY" + ] + }, + "sequence": { + "description": "Sequence or index number assigned to the route-map.\n", + "type": "number" + }, + "matchAndSetRule": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } } } - } - }, - "type": { - "description": "The type of the IP addresses\n", - "type": "string", - "enum": [ - "PV4", - "PV6" - ] - }, - "addresses": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + }, + "mtuL3": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 3 (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "virtualRoutingAndForwarding": { + "description": "Configuration related to the virtual routing and forwarding (VRF).\n", + "type": "object", + "required": [ + "vrfName" + ], + "properties": { + "vrfName": { + "description": "Name (or identifier) of the VRF instance.\n", + "type": "string" + } } + }, + "bfdConfig": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" } - }, - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "subnetId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" } } } @@ -1648,135 +2606,33 @@ } } } - }, - "nestedNsInstanceId": { - "description": "Identifier of the nested NS(s) of the NS instance.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "nsState": { - "description": "The state of the NS instance. Permitted values: NOT_INSTANTIATED: The NS instance is terminated or not instantiated. INSTANTIATED: The NS instance is instantiated.\n", - "type": "string", - "enum": [ - "NOT_INSTANTIATED", - "INSTANTIATED" - ] - }, - "monitoringParameter": { - "description": "Performance metrics tracked by the NFVO (e.g. for auto-scaling purposes) as identified by the NS designer in the NSD.\n", - "type": "array", - "items": { - "description": "This type represents a monitoring parameter that is tracked by the NFVO, for example, for auto-scaling purposes. It shall comply with the provisions defined in Table 6.5.3.68-1.\n", - "type": "object", - "required": [ - "id", - "performanceMetric" - ], - "properties": { - "id": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the monitoring parameter, as defined in the NSD.\n", - "type": "string" - }, - "performanceMetric": { - "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", - "type": "string" - } - } - } - }, - "nsScaleStatus": { - "description": "Status of each NS scaling aspect declared in the applicable DF, how \"big\" the NS instance has been scaled w.r.t. that aspect. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n", - "type": "array", - "items": { - "description": "This type represents the target NS Scale level for each NS scaling aspect of the current deployment flavor.\n", - "type": "object", - "required": [ - "nsScalingAspectId", - "nsScaleLevelId" - ], - "properties": { - "nsScalingAspectId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "nsScaleLevelId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - } - } - } - }, - "additionalAffinityOrAntiAffinityRule": { - "description": "Information on the additional affinity or anti-affinity rule from NS instantiation operation. Shall not conflict with rules already specified in the NSD.\n", - "type": "array", - "items": { - "description": "This type describes the additional affinity or anti-affinity rule applicable between the VNF instances to be instantiated in the NS instantiation operation request or between the VNF instances to be instantiated in the NS instantiation operation request and the existing VNF instances..\n", + } + }, + "_links": { + "type": "object", + "description": "Links to resources related to this resource.", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", "type": "object", "required": [ - "affinityOrAntiAffiinty", - "scope" + "href" ], "properties": { - "vnfdId": { - "description": "Reference to a VNFD. When the VNFD which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VNFD presents is not necessary as a part of the NS to be instantiated.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "vnfProfileId": { - "description": "Reference to a vnfProfile defined in the NSD. At least one VnfProfile which is used to instantiate VNF for the NS to be instantiated as the subject of the affinity or anti-affinity rule shall be present. When the VnfProfile which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VnfProfile presents is not necessary as a part of the NS to be instantiated.\n", - "type": "array", - "items": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - } - }, - "vnfInstanceId": { - "description": "Reference to the existing VNF instance as the subject of the affinity or anti-affinity rule. The existing VNF instance is not necessary as a part of the NS to be instantiated.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "affinityOrAntiAffiinty": { - "description": "The type of the constraint. Permitted values: AFFINITY ANTI_AFFINITY.\n", + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", "type": "string", - "enum": [ - "AFFINITY", - "ANTI_AFFINITY" - ] - }, - "scope": { - "description": "Specifies the scope of the rule where the placement constraint applies. Permitted values: NFVI_POP ZONE ZONE_GROUP NFVI_NODE.\n", - "type": "string", - "enum": [ - "NFVI_POP", - "ZONE", - "ZONE_GROUP", - "NFVI_NODE" - ] + "format": "url" } } - } - }, - "_links": { - "type": "object", - "description": "Links to resources related to this resource.", - "required": [ - "self" - ], - "properties": { - "self": { + }, + "nestedNsInstances": { + "description": "Links to resources related to this notification.\n", + "type": "array", + "items": { "description": "This type represents a link to a resource.\n", "type": "object", "required": [ @@ -1789,26 +2645,12 @@ "format": "url" } } - }, - "nestedNsInstances": { - "description": "Links to resources related to this notification.\n", - "type": "array", - "items": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - } - }, - "instantiate": { + } + }, + "vnfSnapshotInfos": { + "description": "Links to the VNF snapshots associated to VNF instances which are part of this NS instance.\n", + "type": "array", + "items": { "description": "This type represents a link to a resource.\n", "type": "object", "required": [ @@ -1821,65 +2663,80 @@ "format": "url" } } - }, - "terminate": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } + } + }, + "instantiate": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" } - }, - "update": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } + } + }, + "terminate": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" } - }, - "scale": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } + } + }, + "update": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" } - }, - "heal": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } + } + }, + "scale": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "heal": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" } } } } } } + } } \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOperationOccurrenceNotification.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOperationOccurrenceNotification.schema.json index d76636eee..ab1f0d9de 100644 --- a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOperationOccurrenceNotification.schema.json +++ b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOperationOccurrenceNotification.schema.json @@ -4,6 +4,8 @@ "id", "nsInstanceId", "nsLcmOpOccId", + "operation", + "notificationType", "subscriptionId", "timestamp", "notificationStatus", @@ -71,8 +73,16 @@ "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", "type": "boolean" }, + "verbosity": { + "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. It shall comply with the provisions defined in table 6.5.4.11-1. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", + "type": "string", + "enum": [ + "FULL", + "SHORT" + ] + }, "affectedVnf": { - "description": "Information about the VNF instances that were affected during the lifecycle operation.\n", + "description": "Information about the VNF instances that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the NS LCM operation occurrence and by any of the error handling procedures for that operation occurrence.\n", "type": "array", "items": { "description": "This type provides information about added, deleted and modified VNFs. It shall comply with the provisions in Table 6.5.3.2-1.\n", @@ -80,7 +90,31 @@ "required": [ "vnfInstanceId", "vnfdId", - "vnfProfileId" + "vnfProfileId", + "vnfName", + "changeType", + "changeResult" + ], + "anyOf": [ + { + "required": [ + "changedExtConnectivity" + ] + }, + { + "oneOf": [ + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ] + } ], "properties": { "vnfInstanceId": { @@ -100,7 +134,7 @@ "type": "string" }, "changeType": { - "description": "Signals the type of change Permitted values: - ADD - REMOVE - INSTANTIATE - TERMINATE - SCALE - CHANGE_FLAVOUR - HEAL - OPERATE - MODIFY_INFORMATION - CHANGE_EXTERNAL_VNF_CONNECTIVITY\n", + "description": "Signals the type of change Permitted values: - ADD - REMOVE - INSTANTIATE - TERMINATE - SCALE - CHANGE_FLAVOUR - HEAL - OPERATE - MODIFY_INFORMATION - CHANGE_EXTERNAL_VNF_CONNECTIVITY -\tCHANGE_VNFPKG\n", "type": "string", "enum": [ "ADD", @@ -112,7 +146,8 @@ "HEAL", "OPERATE", "MODIFY_INFORMATION", - "CHANGE_EXTERNAL_VNF_CONNECTIVITY" + "CHANGE_EXTERNAL_VNF_CONNECTIVITY", + "CHANGE_VNFPKG" ] }, "changeResult": { @@ -127,8 +162,34 @@ "changedInfo": { "description": "Information about the changed VNF instance information, including VNF configurable properties,if applicable. When the \"changedInfo\" attribute is present, either the \"changedVnfInfo\" attribute or the \"changedExtConnectivity\" attribute or both shall be present.\n", "type": "object", - "required": [ - "self" + "anyOf": [ + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ], + "oneOf": [ + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } ], "properties": { "changedVnfInfo": { @@ -169,89 +230,295 @@ } }, "changedExtConnectivity": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", - "type": "object", - "required": [ - "resourceId" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. \n", + "description": "Information about changed external connectivity, if applicable.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", "type": "object", "required": [ - "id", - "resourceHandle" + "resourceId" ], "properties": { - "id": { + "vimId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceHandle": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", - "type": "object", - "required": [ - "resourceId" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "string" + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. \n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + } + } + }, + "currentVnfExtCpData": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure. Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId’ attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": * At least one of the \"linkPortId\" and \"cpProtocolData\" attributes\n shall be present for a to-be-created external CP instance or an\n existing external CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "ipAddresses" + ] + }, + { + "required": [ + "macAddress" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the \"segmentationId\" may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local \"segmentationId\" to whatever \"segmentationId\" is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } } } } } } + }, + "modificationsTriggeredByVnfPkgChange": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation. The \"ModificationsTriggeredByVnfPkgChange\" data type shall comply with the provisions defined in table 6.5.3.79-1.\n", + "type": "object", + "properties": { + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of the value of the related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfProductName": { + "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of the value of the related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + } + } } } } @@ -259,7 +526,7 @@ } }, "affectedPnf": { - "description": "Information about the PNF instances that were affected during the lifecycle operation.\n", + "description": "Information about the PNF instances that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the NS LCM operation occurrence and by any of the error handling procedures for that operation occurrence.\n", "type": "array", "items": { "description": "This type provides information about added, deleted and modified PNFs. It shall comply with the provisions in Table 6.5.3.3-1.\n", @@ -317,7 +584,7 @@ } }, "affectedVl": { - "description": "Information about the VL instances that were affected during the lifecycle operation.\n", + "description": "Information about the VL instances that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the NS LCM operation occurrence and by any of the error handling procedures for that operation occurrence.\n", "type": "array", "items": { "description": "This type provides information about added, deleted, modified and temporary VLs.\n", @@ -349,6 +616,14 @@ "LINK_PORT_REMOVED" ] }, + "linkPortIds": { + "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references an \"NsLinkPortInfo\" structure. Shall be set when changeType is equal to \"ADD_LINK_PORT\" or \"REMOVE_LINK_PORT\", and the related \"NsLinkPortInfo\" structures are present (case \"add\") or have been present (case \"remove\") in the NsVirtualLinkInfo structure that is represented by the \"virtualLink¬Info\" attribute in the \"NsInstance\" structure. The resource handles of the affected NS link ports can be found by dereferencing the identifiers in the \"linkPortIds\" attribute.\n", + "type": "array", + "items": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + } + }, "networkResource": { "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", "type": "object", @@ -369,7 +644,7 @@ "type": "string" }, "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", "type": "string" } } @@ -382,7 +657,7 @@ } }, "affectedVnffg": { - "description": "Information about the VNFFG instances that were affected during the lifecycle operation.\n", + "description": "Information about the VNFFG instances that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the NS LCM operation occurrence and by any of the error handling procedures for that operation occurrence.\n", "type": "array", "items": { "description": "This type provides information about added, deleted and modified VNFFG instances. It shall comply with the provisions in Table 6.5.3.5-1.\n", @@ -422,7 +697,7 @@ } }, "affectedNs": { - "description": "Information about the SAP instances that were affected during the lifecycle operation. See note.\n", + "description": "Information about the SAP instances that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the NS LCM operation occurrence and by any of the error handling procedures for that operation occurrence.\n", "type": "array", "items": { "description": "This type provides information about added, deleted and modified nested NSs. It shall comply with the provisions in Table 6.5.3.6-1.\n", @@ -464,12 +739,510 @@ "FAILED", "PARTIALLY_COMPLETED" ] + }, + "changedInfo": { + "description": "Information about the changed NS instance information, if applicable.\n", + "type": "object", + "properties": { + "wanConnectionInfoModifications": { + "description": "Information about the modified WAN related connectivity information, if applicable.\n", + "type": "array", + "items": { + "description": "This type represents attribute modifications that were performed on WAN connection information. The attributes that can be included consist of those requested to be modified explicitly with the \"UpdateNsRequest\" data structure. It shall comply with the provisions defined in table 6.5.3.93-1.\n", + "type": "object", + "required": [ + "wanConnectionInfoId" + ], + "properties": { + "wanConnectionInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "mscsName": { + "description": "If present, this attribute signals modifications of the \"mscsName\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", + "type": "string" + }, + "mscsDescription": { + "description": "If present, this attribute signals modifications of the \"mscsDescription\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", + "type": "string" + }, + "mscsEndpoints": { + "description": "If present, this attribute signals modifications of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", + "type": "array", + "items": { + "description": "This type provides encapsulates information about an MSCS endpoint of the MSCS. It shall comply with the provisions defined in table 6.5.3.83-1.\n", + "type": "object", + "required": [ + "mscsEndpointId", + "directionality", + "connectivityServiceEndpoinId" + ], + "properties": { + "mscsEndpointId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "directionality": { + "description": "Directionality of the data traffic in the context of the terminating MSCS endpoint from WAN’s perspective. Permitted values: -\tINBOUND: to indicate into the WAN. -\tOUTBOUND: to indicate from the WAN. -\tBOTH: to indicate bidirectional data traffic to/from the WAN.\n", + "type": "string", + "enum": [ + "INBOUND", + "OUTBOUND", + "BOTH" + ] + }, + "connectivityServiceEndpoinId": { + "description": "References the connectivity service endpoint configuration information applicable to support the MSCS endpoint. More than one connectivity service endpoint can be referred when endpoints are in LAG mode.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + } + }, + "removeMscsEndpointIds": { + "description": "If present, this attribute signals the deletion of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "connectivityServiceEndpoints": { + "description": "If present, this attribute signals modifications of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", + "type": "array", + "items": { + "description": "This type provides configuration data for the NFVI-PoP network gateway providing connectivity service endpoints. The connectivity service endpoints are used as endpoints by an MSCS. It shall comply with the provisions defined in Table 6.5.3.84-1.\n", + "type": "object", + "required": [ + "connectivityServiceEndpointId", + "vimId" + ], + "properties": { + "connectivityServiceEndpointId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "siteToWanLayer2ProtocolData": { + "description": "This type provides information about Layer 2 protocol specific information for the configuration of the NFVI-PoP network gateway to enable the stitching of the intra-site VN to the MSCS over the WAN. It shall comply with the provisions defined in Table 6.5.3.85-1.\n", + "type": "object", + "required": [ + "layer2ConnectionInfo" + ], + "properties": { + "layer2ConnectionInfo": { + "description": "Layer 2 protocol parameters of the connectivity service endpoint (CSE).\n", + "type": "object", + "required": [ + "connectionType", + "interfaceType", + "interfaceTagging", + "encapsulationType" + ], + "properties": { + "connectionType": { + "description": "The type of connection to be established on the connectivity service point. Permitted values: -\tCSE: defined by the characteristics of the existing referred connectivity service point. -\tAGGREGATE_CSE: create an aggregation of the connectivity service endpoints.\n", + "type": "string", + "enum": [ + "CSE", + "AGGREGATE_CSE" + ] + }, + "interfaceType": { + "description": "To indicate whether to create logical interfaces on the referred connectivity service endpoint or new aggregated connectivity service endpoint. Permitted values: -\tPARENT: use the mapped interface to the connectivity service endpoint as is, i.e., do not create logical interfaces. -\tLOGICAL: create logical interfaces.\n", + "type": "string", + "enum": [ + "PARENT", + "LOGICAL" + ] + }, + "interfaceTagging": { + "description": "The type of frames to forward on the connectivity service point. Permitted values: -\tUNTAGGED: an interface where frames are not tagged. -\tTAGGED: an interface configured to forward tagged frames (i.e., enabled for VLAN tagging).\n", + "type": "string", + "enum": [ + "UNTAGGED", + "TAGGED" + ] + }, + "encapsulationType": { + "description": "The type of encapsulation. If the interfaceTagging=\"TAGGED\", either \"VLAN\" or \"VXLAN\" shall be set. Permitted values: -\tETH: generic Ethernet encapsulation. -\tVLAN: encapsulation based on VLAN. -\tVXLAN: encapsulation based on VXLAN.\n", + "type": "string", + "enum": [ + "ETH", + "VLAN", + "VXLAN" + ] + }, + "vlanTaggingType": { + "description": "Type of encapsulation method for VLAN tagging. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VLAN\". Permitted values: -\tDOT1Q: used when packets on the CSE are encapsulated with one or a set of customer VLAN identifiers. -\tQINQ: used when packets on the CSE are encapsulated with multiple customer VLAN identifiers and a single\n service VLAN identifier.\n- QINANY: used when packets on the CSE have no specific customer VLAN and a service VLAN identifier is used.\n", + "type": "string", + "enum": [ + "DOT1Q", + "QINQ", + "QINANY" + ] + }, + "wanSegmentIds": { + "description": "Segment identifiers to pass on the tagged interface. Shall be present if encapsulationType=\"VLAN\" or “VXLAN\".\n", + "type": "object", + "required": [ + "wanSegmentIdValue" + ], + "properties": { + "wanSegmentIdValue": { + "description": "Identifier of the network segment (e.g., VLAN id or VNI).\n", + "type": "string" + }, + "wanSegmentIdUpperRange": { + "description": "Identifier of the upper range network segment, in case the \"wanSegmentIds\" is used to define a range.\n", + "type": "string" + } + } + }, + "vxlanConfig": { + "description": "Additional configuration needed when using VXLAN encapsulation. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VXLAN\".\n", + "type": "object", + "required": [ + "peerMode" + ], + "properties": { + "peerMode": { + "description": "Type of VXLAN access mode. Default value is \"STATIC\".\nPermitted values: -\tSTATIC -\tBGP_EVPN\n", + "type": "string", + "enum": [ + "STATIC", + "BGP_EVPN" + ] + }, + "peers": { + "description": "List of IP addresses of VTEP peers when using static mode.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + }, + "lagInterfaceData": { + "description": "Information for setting up a LAG interface aggregating multiple connectivity service endpoints.\n", + "type": "object", + "required": [ + "aggregatedEndpoints", + "lacpActivation", + "lacpConfig" + ], + "properties": { + "aggregatedEndpoints": { + "description": "List of the connectivity service endpoints that are to be aggregated. Shall be present if connectionType=\"AGGREGATE_CSE\". In case of aggregating connectivity service endpoints, only one SiteToWanLayer2ProtocolData shall be provided for the whole set of aggregated endpoints.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "lacpActivation": { + "description": "Indicates whether to activate LACP on the interface. If \"TRUE\", the LACP is to be activated, or \"FALSE\" otherwise. Default value is \"FALSE\".\n", + "type": "boolean" + }, + "lacpConfig": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "layer2ControlProtocol": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "mtuL2": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 2 (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "virtualRoutingAndForwarding": { + "description": "Configuration related to the L2 virtual routing and forwarding (MAC-VRF).\n", + "type": "object", + "required": [ + "macVrfName" + ], + "properties": { + "macVrfName": { + "description": "Name (or identifier) of the MAC-VRF instance.\n", + "type": "string" + } + } + }, + "forwardingConfig": { + "description": "Information related to the forwarding of the VN in the NFVI-PoP to the connectivity service endpoint, if information about the VN to \"stitch\" is already known. . by the OSS/BSS. Shall not be provided otherwise, in which case the NFVO will infer the forwarding configuration based on the NS VL, or external VL, or externally-managed VL provisioning.\n", + "type": "object", + "oneOf": [ + { + "required": [ + "networkResources" + ] + }, + { + "required": [ + "vnSegmentIds" + ] + } + ], + "properties": { + "networkResources": { + "description": "Reference to the VN resource to be forwarded into/from the MSCS. Either \"networkResources\" or \"vnSegmentsIds\" shall be provided, but not both.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + "type": "string" + } + } + } + }, + "vnSegmentIds": { + "description": "Identifiers of the network segments of the VN resources to be forwarded into/from the MSCS.\n", + "type": "object", + "required": [ + "vnSegmentIdValue" + ], + "properties": { + "vnSegmentIdValue": { + "description": "Identifier of the network segment.\n", + "type": "string" + }, + "vnSegmentIdUpperRange": { + "description": "Identifier of the upper range network segment, in case the \"vnSegmentIds\" is used to define a range.\n", + "type": "string" + } + } + } + } + } + } + }, + "siteToWanLayer3ProtocolData": { + "description": "This type provides information about Layer 3 protocol specific information for the stitching of the intra-site VN to the multi-site connectivity service over the WAN. It shall comply with the provisions defined in Table 6.5.3.86-1.\n", + "type": "object", + "required": [ + "routingInfo" + ], + "properties": { + "logicalInterfaceIpAddress": { + "description": "IP addressing information associated to a logical interface. Shall be present if the \"interfaceType\" of the SiteToWanLayer2ProtocolData is equal to \"LOGICAL\".\n", + "type": "object", + "required": [ + "ipAddress", + "associatedSegmentId" + ], + "properties": { + "ipAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "associatedSegmentId": { + "description": "The associated segment identifier that has triggered the creation of the logical interface. The value shall be one of the values listed in the \"wanSegmentIds\" of the \"siteToWanLayer2ProtocolData\".\n", + "type": "string" + } + } + }, + "routingInfo": { + "description": "The routing information that is activated on the connectivity service endpoint. More than one \"routingInfo\" is allowed to enable stacking different routing protocols (e.g., one routing protocol for IPv4 and another one for IPv6).\n", + "type": "object", + "required": [ + "routingProtocol", + "routingAddressFamily" + ], + "properties": { + "routingProtocol": { + "description": "The routing protocol that is activated on the connectivity service endpoint. Permitted values: -\tBGP: used for dynamic routing BGPv4. -\tRIP: used for dynamic routing RIPv2. -\tOSPF: used for dynamic routing (OSPF version 2 for IPv4; and OSPF version 3 for IPv6). -\tSTATIC: used for static routing. -\tDIRECT: used when the NFVI-PoP network is directly connected to the WAN provider network. -\tVRRP: used when the NFVI-PoP network is directly connected to the WAN provider network with virtual\n router redundancy protocol support (VRRP).\n", + "type": "string", + "enum": [ + "BGP", + "RIP", + "OSPF", + "STATIC", + "DIRECT", + "VRRP" + ] + }, + "staticRouting": { + "description": "Defines a static route. It shall only be present if the routingProtocol=\"STATIC\".\n", + "type": "object", + "required": [ + "ipVersion", + "ipPrefix", + "prefixSize", + "nextHop" + ], + "properties": { + "ipVersion": { + "description": "The IP version applicable to the routing entry. Permitted values: -\tIPV4 -\tIPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "ipPrefix": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "prefixSize": { + "description": "The IP prefix size.\n", + "type": "number" + }, + "nextHop": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "routingAddressFamily": { + "description": "The IP version applicable to the dynamic routing protocol. Shall be present for dynamic routing protocols. Permitted values: -\tIPV4 -\tIPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPv6" + ] + }, + "ospfRouting": { + "description": "Defines parameters for OSPF routing. It shall only be present if the routingProtocol=\"OSPF\".\n", + "type": "object", + "required": [ + "areaId" + ], + "properties": { + "areaId": { + "description": "The routing area identifier, e.g., a number or an IP address.\n", + "type": "string" + } + } + }, + "bgpRouting": { + "description": "Defines parameters for BGP routing. It shall only be present if the routingProtocol=\"BGP\".\n", + "type": "object", + "required": [ + "bgpAs" + ], + "properties": { + "bgpAs": { + "description": "The Autonomous System (AS) identification applicable to the BGP routing info entry.\n", + "type": "object" + }, + "bgpNeighbour": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "bgpAdditionalParam": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "routeMapsDistribution": { + "description": "Maps of routes that are permitted or denied for redistribution.\n", + "type": "object", + "required": [ + "policy", + "sequence", + "matchAndSetRule" + ], + "properties": { + "policy": { + "description": "The policy to apply to the route distribution.\nPermitted values: -\tPERMIT -\tDENY\n", + "type": "string", + "enum": [ + "PERMIT", + "DENY" + ] + }, + "sequence": { + "description": "Sequence or index number assigned to the route-map.\n", + "type": "number" + }, + "matchAndSetRule": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + }, + "mtuL3": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 3 (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "virtualRoutingAndForwarding": { + "description": "Configuration related to the virtual routing and forwarding (VRF).\n", + "type": "object", + "required": [ + "vrfName" + ], + "properties": { + "vrfName": { + "description": "Name (or identifier) of the VRF instance.\n", + "type": "string" + } + } + }, + "bfdConfig": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + } + }, + "removeConnectivityServiceEndpoints": { + "description": "If present, this attribute signals the deletion of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + } + } + } } } } }, "affectedSap": { - "description": "Information about the SAP instances that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the operation has performed any resource modification. Shall be absent otherwise.\n", + "description": "Information about the SAP instances that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the NS LCM operation occurrence and by any of the error handling procedures for that operation occurrence.\n", "type": "array", "items": { "description": "This type provides information about added, deleted and modified SAP of a NS. It shall comply with the provisions in Table 6.5.3.7-1.\n", @@ -545,7 +1318,6 @@ } }, "_links": { - "description": "This type represents the links to resources that a notification can contain.\n", "type": "object", "required": [ "nsInstance" diff --git a/SOL005/NSLifecycleManagement-API/schemas/subscription.schema.json b/SOL005/NSLifecycleManagement-API/schemas/subscription.schema.json index 8eb87f63d..49077f4ec 100644 --- a/SOL005/NSLifecycleManagement-API/schemas/subscription.schema.json +++ b/SOL005/NSLifecycleManagement-API/schemas/subscription.schema.json @@ -18,6 +18,41 @@ "nsInstanceSubscriptionFilter": { "description": "This type represents subscription filter criteria to match NS instances.\nNOTE 1: The attributes \"nsdIds\", \"vnfdIds\" and \"pnfdIds\" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\nNOTE 2: The attributes \"nsInstanceIds\" and \"nsInstanceNames\" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", "type": "object", + "anyOf": [ + { + "oneOf": [ + { + "required": [ + "nsdIds" + ] + }, + { + "required": [ + "vnfdIds" + ] + }, + { + "required": [ + "pnfdIds" + ] + } + ] + }, + { + "oneOf": [ + { + "required": [ + "nsInstanceIds" + ] + }, + { + "required": [ + "nsInstanceNames" + ] + } + ] + } + ], "properties": { "nsdIds": { "description": "If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute.\n", @@ -147,7 +182,7 @@ "description": "Match particular LCM operation status values as reported in notifications of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChangeNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpOccStatusForChangeNotificationType represents the status of the lifecycle management operation occurrence that impacts the NS component and triggers an NS change notification. It shall comply with the provisions defined in Table 6.5.4.7-1. Value | Description ------|------------ START | The impact on the NS component is identified. COMPLETED | The impact on the NS component stops and related lifecycle operation completes successfully. PARTIALLY_COMPLETED | The impact on the NS component stops and related lifecycle operation partially completes. Inconsistency state may exist on the NS component. FAILED | The impact on the NS component stops and related lifecycle operation fails. Inconsistency state may exist for the NS component. ROLLED_BACK | The impact on the NS component stops and related lifecycle operation is rolled back.\n", + "description": "The enumeration LcmOpOccStatusForChangeNotificationType represents the status of the lifecycle management operation occurrence that impacts the NS component and triggers an NS change notification. It shall comply with the provisions defined in Table 6.5.4.7-1. Value | Description ------|------------ START | The impact on the NS component is identified. COMPLETED | The impact on the NS component stops and related lifecycle operation completes successfully. PARTIALLY_COMPLETED | The impact on the NS component stops and related lifecycle operation partially completes. Inconsistency state may exist on the NS component. FAILED | The impact on the NS component stops and related lifecycle operation fails. Inconsistency state may exist for the NS component. ROLLED_BACK | The impact on the NS component stops and related lifecycle operation is rolled back.\n", "type": "string", "enum": [ "START", @@ -165,6 +200,14 @@ "type": "string", "format": "uri" }, + "verbosity": { + "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. It shall comply with the provisions defined in table 6.5.4.11-1. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", + "type": "string", + "enum": [ + "FULL", + "SHORT" + ] + }, "_links": { "description": "Links to resources related to this resource.\n", "type": "object", diff --git a/SOL005/NSLifecycleManagement-API/schemas/subscriptions.schema.json b/SOL005/NSLifecycleManagement-API/schemas/subscriptions.schema.json index 72a40a43f..2e309654e 100644 --- a/SOL005/NSLifecycleManagement-API/schemas/subscriptions.schema.json +++ b/SOL005/NSLifecycleManagement-API/schemas/subscriptions.schema.json @@ -1,195 +1,239 @@ { "type": "array", - "items": { - "description": "This type represents a subscription related to notifications about NS lifecycle changes. It shall comply with the provisions defined in Table 6.5.2.4-1.\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 NS lifecycle changes. It shall comply with the provisions defined in Table 6.5.3.8-1. 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": { - "nsInstanceSubscriptionFilter": { - "description": "This type represents subscription filter criteria to match NS instances.\nNOTE 1: The attributes \"nsdIds\", \"vnfdIds\" and \"pnfdIds\" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\nNOTE 2: The attributes \"nsInstanceIds\" and \"nsInstanceNames\" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", - "type": "object", - "properties": { - "nsdIds": { - "description": "If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "items": + { + "description": "This type represents a subscription related to notifications about NS lifecycle changes. It shall comply with the provisions defined in Table 6.5.2.4-1.\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 NS lifecycle changes. It shall comply with the provisions defined in Table 6.5.3.8-1. 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": { + "nsInstanceSubscriptionFilter": { + "description": "This type represents subscription filter criteria to match NS instances.\nNOTE 1: The attributes \"nsdIds\", \"vnfdIds\" and \"pnfdIds\" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\nNOTE 2: The attributes \"nsInstanceIds\" and \"nsInstanceNames\" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", + "type": "object", + "anyOf": [ + { + "oneOf": [ + { + "required": [ + "nsdIds" + ] + }, + { + "required": [ + "vnfdIds" + ] + }, + { + "required": [ + "pnfdIds" + ] } - }, - "vnfdIds": { - "description": "If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "pnfdIds": { - "description": "If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "nsInstanceIds": { - "description": "If present, match NS instances with an instance identifier listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "nsInstanceNames": { - "description": "If present, match NS instances with a NS Instance Name listed in this attribute.\n", - "type": "array", - "items": { - "description": "A string as defined in IETF RFC 8259.\n", - "type": "string" - } - } - } - }, - "notificationTypes": { - "description": "Match particular notification types. Permitted values: - NsLcmOperationOccurenceNotification - NsIdentifierCreationNotification - NsIdentifierDeletionNotification - NsChangeNotification\n", - "type": "array", - "items": { - "type": "string", - "enum": [ - "NsLcmOperationOccurenceNotification", - "NsIdentifierCreationNotification", - "NsIdentifierDeletionNotification", - "NsChangeNotification" - ] - } - }, - "operationTypes": { - "description": "Match particular NS lifecycle operation types for the notification of type NsLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", - "type": "array", - "items": { - "description": "The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n", - "type": "string", - "enum": [ - "INSTANTIATE", - "SCALE", - "UPDATE", - "TERMINATE", - "HEAL" ] - } - }, - "operationStates": { - "description": "Match particular LCM operation state values as reported in notifications of type NsLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", - "type": "array", - "items": { - "description": "Value | Description ------|------------ PROCESSING | The LCM operation is currently in execution. COMPLETED | The LCM operation has been completed successfully. PARTIALLY_COMPLETED | The LCM operation has been partially completed with accepTable errors. 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 will not succeed. OLLING_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 NS prior to the original operation invocation has been restored as closely as possible.\n", - "type": "string", - "enum": [ - "PROCESSING", - "COMPLETED", - "PARTIALLY_COMPLETED", - "FAILED_TEMP", - "FAILED", - "ROLLING_BACK", - "ROLLED_BACK" - ] - } - }, - "nsComponentTypes": { - "description": "Match particular NS component types for the notification of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChang.\n", - "type": "array", - "items": { - "description": "The enumeration NsComponentType represents the NS component type. It shall comply with the provisions defined in Table 6.5.4.5-1. Value | Description ------|------------ VNF | Represents the impacted NS component is a VNF. PNF | Represents the impacted NS component is a PNF. NS | Represents the impacted NS component is a nested NS.\n", - "type": "string", - "enum": [ - "VNF", - "PNF", - "NS" - ] - } - }, - "lcmOpNameImpactingNsComponent": { - "description": "Match particular LCM operation names for the notification of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChangeNotification\", and shall be absent otherwise.\n", - "type": "array", - "items": { - "description": "The enumeration LcmOpNameForChangeNotificationType represents the name of the lifecycle operation that impacts the NS component and trigger an NS change notification. It shall comply with the provisions defined in Table 6.5.4.6-1. Value | Description ------|------------ VNF_INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. VNF_SCALE | Represents the \"Scale VNF\" LCM operation. VNF_SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. VNF_CHANGE_FLAVOUR | Represents the \"Change VNF Flavor\" LCM operation. VNF_TERMINATE | Represents the \"Terminate VNF\" LCM operation. VNF_HEAL | Represents the \"Heal VNF\" LCM operation. VNF_OPERATE | Represents the \"Operate VNF\" LCM operation. VNF_CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. VNF_MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. NS_INSTANTIATE | Represents the \"Instantiate NS\" LCM operation NS_SCALE | Represents the \"Scale NS\" LCM operation. NS_UPDATE | Represents the \"Update NS\" LCM operation. NS_TERMINATE | Represents the \"Terminate NS\" LCM operation. NS_HEAL | Represents the \"Heal NS\" LCM operation.\n", - "type": "string", - "enum": [ - "VNF_INSTANTIATE", - "VNF_SCALE", - "VNF_SCALE_TO_LEVEL", - "VNF_CHANGE_FLAVOUR", - "VNF_TERMINATE", - "VNF_HEAL", - "VNF_OPERATE", - "VNF_CHANGE_EXT_CONN", - "VNF_MODIFY_INFO", - "NS_INSTANTIATE", - "NS_SCALE", - "NS_UPDATE", - "NS_TERMINATE", - "NS_HEAL" + }, + { + "oneOf": [ + { + "required": [ + "nsInstanceIds" + ] + }, + { + "required": [ + "nsInstanceNames" + ] + } ] } - }, - "lcmOpOccStatusImpactingNsComponent": { - "description": "Match particular LCM operation status values as reported in notifications of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChangeNotification\", and shall be absent otherwise.\n", - "type": "array", - "items": { - "description": "The enumeration LcmOpOccStatusForChangeNotificationType represents the status of the lifecycle management operation occurrence that impacts the NS component and triggers an NS change notification. It shall comply with the provisions defined in Table 6.5.4.7-1. Value | Description ------|------------ START | The impact on the NS component is identified. COMPLETED | The impact on the NS component stops and related lifecycle operation completes successfully. PARTIALLY_COMPLETED | The impact on the NS component stops and related lifecycle operation partially completes. Inconsistency state may exist on the NS component. FAILED | The impact on the NS component stops and related lifecycle operation fails. Inconsistency state may exist for the NS component. ROLLED_BACK | The impact on the NS component stops and related lifecycle operation is rolled back.\n", - "type": "string", - "enum": [ - "START", - "COMPLETED", - "PARTIALLY_COMPLETED", - "FAILED", - "ROLLED_BACK" - ] + ], + "properties": { + "nsdIds": { + "description": "If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "vnfdIds": { + "description": "If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "pnfdIds": { + "description": "If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "nsInstanceIds": { + "description": "If present, match NS instances with an instance identifier listed in this attribute.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "nsInstanceNames": { + "description": "If present, match NS instances with a NS Instance Name listed in this attribute.\n", + "type": "array", + "items": { + "description": "A string as defined in IETF RFC 8259.\n", + "type": "string" + } } } + }, + "notificationTypes": { + "description": "Match particular notification types. Permitted values: - NsLcmOperationOccurenceNotification - NsIdentifierCreationNotification - NsIdentifierDeletionNotification - NsChangeNotification\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "NsLcmOperationOccurenceNotification", + "NsIdentifierCreationNotification", + "NsIdentifierDeletionNotification", + "NsChangeNotification" + ] + } + }, + "operationTypes": { + "description": "Match particular NS lifecycle operation types for the notification of type NsLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", + "type": "array", + "items": { + "description": "The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "UPDATE", + "TERMINATE", + "HEAL" + ] + } + }, + "operationStates": { + "description": "Match particular LCM operation state values as reported in notifications of type NsLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", + "type": "array", + "items": { + "description": "Value | Description ------|------------ PROCESSING | The LCM operation is currently in execution. COMPLETED | The LCM operation has been completed successfully. PARTIALLY_COMPLETED | The LCM operation has been partially completed with accepTable errors. 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 will not succeed. OLLING_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 NS prior to the original operation invocation has been restored as closely as possible.\n", + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED_TEMP", + "FAILED", + "ROLLING_BACK", + "ROLLED_BACK" + ] + } + }, + "nsComponentTypes": { + "description": "Match particular NS component types for the notification of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChang.\n", + "type": "array", + "items": { + "description": "The enumeration NsComponentType represents the NS component type. It shall comply with the provisions defined in Table 6.5.4.5-1. Value | Description ------|------------ VNF | Represents the impacted NS component is a VNF. PNF | Represents the impacted NS component is a PNF. NS | Represents the impacted NS component is a nested NS.\n", + "type": "string", + "enum": [ + "VNF", + "PNF", + "NS" + ] + } + }, + "lcmOpNameImpactingNsComponent": { + "description": "Match particular LCM operation names for the notification of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChangeNotification\", and shall be absent otherwise.\n", + "type": "array", + "items": { + "description": "The enumeration LcmOpNameForChangeNotificationType represents the name of the lifecycle operation that impacts the NS component and trigger an NS change notification. It shall comply with the provisions defined in Table 6.5.4.6-1. Value | Description ------|------------ VNF_INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. VNF_SCALE | Represents the \"Scale VNF\" LCM operation. VNF_SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. VNF_CHANGE_FLAVOUR | Represents the \"Change VNF Flavor\" LCM operation. VNF_TERMINATE | Represents the \"Terminate VNF\" LCM operation. VNF_HEAL | Represents the \"Heal VNF\" LCM operation. VNF_OPERATE | Represents the \"Operate VNF\" LCM operation. VNF_CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. VNF_MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. NS_INSTANTIATE | Represents the \"Instantiate NS\" LCM operation NS_SCALE | Represents the \"Scale NS\" LCM operation. NS_UPDATE | Represents the \"Update NS\" LCM operation. NS_TERMINATE | Represents the \"Terminate NS\" LCM operation. NS_HEAL | Represents the \"Heal NS\" LCM operation.\n", + "type": "string", + "enum": [ + "VNF_INSTANTIATE", + "VNF_SCALE", + "VNF_SCALE_TO_LEVEL", + "VNF_CHANGE_FLAVOUR", + "VNF_TERMINATE", + "VNF_HEAL", + "VNF_OPERATE", + "VNF_CHANGE_EXT_CONN", + "VNF_MODIFY_INFO", + "NS_INSTANTIATE", + "NS_SCALE", + "NS_UPDATE", + "NS_TERMINATE", + "NS_HEAL" + ] + } + }, + "lcmOpOccStatusImpactingNsComponent": { + "description": "Match particular LCM operation status values as reported in notifications of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChangeNotification\", and shall be absent otherwise.\n", + "type": "array", + "items": { + "description": "The enumeration LcmOpOccStatusForChangeNotificationType represents the status of the lifecycle management operation occurrence that impacts the NS component and triggers an NS change notification. It shall comply with the provisions defined in Table 6.5.4.7-1. Value | Description ------|------------ START | The impact on the NS component is identified. COMPLETED | The impact on the NS component stops and related lifecycle operation completes successfully. PARTIALLY_COMPLETED | The impact on the NS component stops and related lifecycle operation partially completes. Inconsistency state may exist on the NS component. FAILED | The impact on the NS component stops and related lifecycle operation fails. Inconsistency state may exist for the NS component. ROLLED_BACK | The impact on the NS component stops and related lifecycle operation is rolled back.\n", + "type": "string", + "enum": [ + "START", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "ROLLED_BACK" + ] + } } - }, - "callbackUri": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string", - "format": "uri" - }, - "_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 a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "verbosity": { + "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. It shall comply with the provisions defined in table 6.5.4.11-1. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", + "type": "string", + "enum": [ + "FULL", + "SHORT" + ] + }, + "_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 a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" } } } } } } + } } \ No newline at end of file -- GitLab From 12937f7fd69e82b193e7046913064562086b632a Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Thu, 11 Mar 2021 14:20:20 +0500 Subject: [PATCH 333/580] updated importing of variables for VNF and NS descriptors --- .../NSLCMOperationKeywords.robot | 25 ++++++++++++++----- .../environment/variables.txt | 1 + 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index c902a31fb..cf5f5977d 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -8,10 +8,10 @@ Library OperatingSystem Library MockServerLibrary Library Collections Library String -Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml -Variables descriptors/SOL006/NSD/nsd_SOL006.yaml -Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml -Variables descriptors/SOL001/NSD/nsd_SOL001.yaml +#Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml +#Variables descriptors/SOL006/NSD/nsd_SOL006.yaml +#Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +#Variables descriptors/SOL001/NSD/nsd_SOL001.yaml *** Keywords *** Initialize System @@ -238,6 +238,7 @@ 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 + Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @{VDU_labels}= Create List @{VNF_labels}= Create List @{VirtualLink_labels}= Create List @@ -265,6 +266,7 @@ Fetch Information from SOL001 descriptor file Get VNF Attributes from SOL001 [Arguments] ${VNF_label} + Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml ${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} @@ -280,6 +282,7 @@ Get VNF Attributes from SOL001 Set Global Variable ${Flavour_ID} ${flavour_id} Fetch Information from SOL006 descriptor file + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${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']} @@ -307,6 +310,7 @@ Fetch Information from SOL006 descriptor file Get VDU IDs [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @{VDU_labels}= Create List ${Storage_labels}= Create List FOR ${i} IN RANGE ${count} @@ -319,6 +323,7 @@ Get VDU IDs Get Internal CPs for each VDU [Arguments] ${vdu} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${count}= Get Length ${nfv.vnfd[0].vdu[${vdu}]['int-cpd']} ${internal_CPs}= Create List FOR ${i} IN RANGE ${count} @@ -328,6 +333,7 @@ Get Internal CPs for each VDU Get External CP IDs [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @{external_CPs}= Create List FOR ${i} IN RANGE ${count} Append To List ${external_CPs} ${nfv.vnfd[0]['ext-cpd'][${i}]['id']} @@ -336,6 +342,7 @@ Get External CP IDs Get Virtual Link IDs [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @{VirtualLink_labels}= Create List FOR ${i} IN RANGE ${count} Append To List ${VirtualLink_labels} ${nfv.vnfd[0]['int-virtual-link-desc'][${i}]['id']} @@ -344,6 +351,7 @@ Get Virtual Link IDs Get Instantiation Levels [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @{Instantiation_Levels}= Create List FOR ${i} IN RANGE ${count} Append To List ${Instantiation_Levels} ${nfv.vnfd[0].df['instantiation-level'][${i}]['id']} @@ -1189,14 +1197,14 @@ Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields_sub} ${output}= Output response Set Suite Variable ${response} ${output} Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields_sub} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1329,6 +1337,7 @@ PARSE the NS Descriptor File Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 NS descriptor file ELSE Fetch Information from SOL006 NS descriptor file Fetch Information from SOL001 NS descriptor file + Import Variables ${CURDIR}/descriptors/SOL001/NSD/nsd_SOL001.yaml @{NsVirtualLink_labels}= Create List @{NsCP_labels}= Create List FOR ${key} IN @{topology_template.node_templates.keys()} @@ -1345,6 +1354,7 @@ Fetch Information from SOL001 NS descriptor file Get NS Attributes from SOL001 [Arguments] ${NS_label} + Import Variables ${CURDIR}/descriptors/SOL001/NSD/nsd_SOL001.yaml ${ns_descriptor_id}= Get Variable Value ${topology_template.node_templates.${NS_label}.properties.descriptorId} ${designer}= Get Variable Value ${topology_template.node_templates.${NS_label}.properties.designer} ${version}= Get Variable Value ${topology_template.node_templates.${NS_label}.properties.version} @@ -1358,6 +1368,7 @@ Get NS Attributes from SOL001 Set Global Variable ${NS_InvariantID} ${invariantId} Fetch Information from SOL006 NS descriptor file + Import Variables ${CURDIR}/descriptors/SOL006/NSD/nsd_SOL006.yaml ${nsd_id}= Get Variable Value ${nfv.nsd[0].id} ${VNFcount}= Get Length ${nfv.vnfd} ${SAPcount}= Get Length ${nfv.nsd[0].sapd} @@ -1374,6 +1385,7 @@ Fetch Information from SOL006 NS descriptor file Get SAP IDs [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/NSD/nsd_SOL006.yaml @{SAPlabels}= Create List FOR ${i} IN RANGE ${count} Append To List ${SAPlabels} ${nfv.nsd[0].sapd[${i}]['id']} @@ -1382,6 +1394,7 @@ Get SAP IDs Get NS Virtual Link IDs [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/NSD/nsd_SOL006.yaml @{NsVirtualLink_labels}= Create List FOR ${i} IN RANGE ${count} Append To List ${NsVirtualLink_labels} ${nfv.nsd[0]['virtual-link-desc'][${i}]['id']} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index 71d850099..5576d1622 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -40,6 +40,7 @@ ${CancelMode} GRACEFUL ${NFVO_DUPLICATION} 0 ${sub_filter} id=41fdd38a-3d4c-465c-83e0-f80e014425f8 ${sub_filter_invalid} nfvid=41fdd38a-3d4c-465c-83e0-f80e014425f8 +${fields_sub} filter ${fields_nsInstances} monitoringParameter,wanConnectionInfo ${POS_filter_nsInstances} id=41fdd38a-3d4c-465c-83e0-f80e014425f8 ${NEG_filter_nsInstances} nfvid=41fdd38a-3d4c-465c-83e0-f80e014425f8 -- GitLab From f834ebff243dde7818d84ef796897dd592b28b68 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Mon, 8 Mar 2021 12:11:17 +0100 Subject: [PATCH 334/580] Added tests for PM Jobs --- .../IndividualPmJob.robot | 33 +++++++++----- .../NSPerformanceManagementKeywords.robot | 21 +++++++++ .../NSPerformanceManagement-API/PMJobs.robot | 45 ++++++++++++------- .../environment/variables.txt | 1 + .../jsons/CreatePmJobRequest.json | 3 +- 5 files changed, 76 insertions(+), 27 deletions(-) diff --git a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot index 18afc44ca..e9214c7d8 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot @@ -11,7 +11,7 @@ GET individual NS Performance Job ... Test title: Get individual NS Performance Job ... Test objective: The objective is to test the retrieval of an individual NS Performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET individual NS Performance Job with invalid resource identifier ... Test title: Get individual NS Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual NS Performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ DELETE Individual NS Performance Job with invalid resource identifier ... Test title: Delete individual NS Performance Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual NS Performance monitoring job fails when using an invalid resource identifier ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ POST Individual NS Performance Job - Method not implemented ... Test title: POST Individual NS Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NS Performance Monitoring Job ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PUT Individual NS Performance Job - Method not implemented ... Test title: PUT Individual NS Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NS Performance Monitoring Job ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ PATCH Individual NS Performance Job ... Test title: PATCH Individual NS Performance Job ... Test objective: The objective is to test that PATCH method modify an existing new NS Performance Monitoring Job ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Resource modified @@ -87,7 +87,7 @@ DELETE Individual NS Performance Job ... Test title: Delete Individual NS Performance Job ... Test objective: The objective is to test the deletion of an individual NS Performance monitoring job ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS Performance Job is no more available in the NFVO @@ -99,11 +99,24 @@ PATCH Individual NS Performance Job - Precondition failed [Documentation] Test ID: 5.3.4.2.8 ... Test title: PATCH Individual NS Performance Job - Precondition failed ... Test objective: The objective is to attempt to Modify an individual NS Performance job fails, where the precondition was not met - ... Pre-conditions: The related job already exsisit - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Pre-conditions: The related job already exist + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The resource is not modified Send Patch request for individual NS Performance Job Check HTTP Response Status Code Is 412 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +PATCH Individual NS Performance Job - Unprocessable Entity + [Documentation] Test ID: 5.3.4.2.9 + ... Test title: PATCH Individual NS Performance Job - Unprocessable Entity + ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual PM job resource when a request contains syntactically correct data but the data cannot be processed. + ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send Patch request for individual NS Performance Job with unprocessable entity + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index d1cef9426..33f9f3def 100644 --- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot +++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot @@ -96,6 +96,17 @@ Send Post Request Create new NS Performance Monitoring Job POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} ${output}= Output response Set Suite Variable ${response} ${output} + +Send POST request for NS Performance Monitoring Job with unprocessable entity + Log trying to create a new NS PM Job + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CreatePmJobRequest.json + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${unreachable_callback_uri}:${callback_port} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} Send PUT Request for all NS Performance Monitoring Jobs Log Trying to perform a PUT. This method should not be implemented @@ -244,6 +255,16 @@ Send Patch request for individual NS Performance Job ${output}= Output response Set Suite Variable ${response} ${output} +Send Patch request for individual NS Performance Job with unprocessable entity + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/PmJobModifications.json + ${body}= Format String ${template} callback_uri=${unreachable_callback_uri}:${callback_port} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check Postcondition NS Performance Job is not Created Log Trying to get a new Pm Job Set Headers {"Accept": "${ACCEPT_JSON}"} diff --git a/SOL005/NSPerformanceManagement-API/PMJobs.robot b/SOL005/NSPerformanceManagement-API/PMJobs.robot index 2d21210a7..d36888cb4 100644 --- a/SOL005/NSPerformanceManagement-API/PMJobs.robot +++ b/SOL005/NSPerformanceManagement-API/PMJobs.robot @@ -13,7 +13,7 @@ GET all NS Performance Monitoring Jobs ... Test title: GET all NS Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available NS performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET NS Performance Monitoring Jobs with attribute-based filter ... Test title: GET all NS Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of NS performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET all NS Performance Monitoring Jobs with "all_fields" attribute selector ... Test title: GET all NS Performance Monitoring Jobs with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "all_fields" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET all NS Performance Monitoring Jobs with "exclude_default" attribute selector ... Test title: GET all NS Performance Monitoring Jobs with "exclude_default" attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "exclude_default" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ GET all NS Performance Monitoring Jobs with "fields" attribute selector ... Test title: GET all NS Performance Monitoring Jobs with "fields" attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "fields" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "include" selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "include" attribute selector ... Post-Conditions: none @@ -83,7 +83,7 @@ GET all NS Performance Monitoring Jobs with "exclude" attribute selector ... Test title: GET all NS Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "exclude" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "exclude" selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "exclude" attribute selector ... Post-Conditions: none @@ -97,7 +97,7 @@ GET NS Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET NS Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NS performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ GET NS Performance Monitoring Jobs with invalid resource endpoint ... Test title: GET NS Performance Monitoring Jobs with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of NS performance monitoring jobs fails when using invalid resource endpoint ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ Create new NS Performance Monitoring Job ... Test title: Create a new NS Performance Monitoring Job ... Test objective: The objective is to test the creation of a new NS performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS Performance Job is successfully created on the NFVO @@ -137,7 +137,7 @@ PUT all NS Performance Monitoring Jobs - Method not implemented ... Test title: PUT all NS Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NS Performance Monitoring Jobs ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -149,7 +149,7 @@ PATCH all NS Performance Monitoring Jobs - Method not implemented ... Test title: PATCH all NS Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NS Performance Monitoring Jobs ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -161,7 +161,7 @@ DELETE all NS Performance Monitoring Jobs - Method not implemented ... Test title: DELETE all NS Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete NS Performance Monitoring Jobs ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -173,7 +173,7 @@ GET all NS Performance Monitoring Jobs as Paged Response ... Test title: GET all NS Performance Monitoring Jobs as Paged Response ... Test objective: The objective is to test the retrieval of all the available NS performance monitoring jobs as paged response. ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -186,7 +186,7 @@ GET NS Performance Monitoring Jobs - Bad Request Response too Big ... Test title: GET NS Performance Monitoring Jobs - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NS performance monitoring jobs fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -199,11 +199,24 @@ GET all NS Performance Monitoring Jobs with "fields" and "exclude_default" attri ... Test title: GET all NS Performance Monitoring Jobs with "fields" and "exclude_default" attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "fields" and "exclude_default" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "include" attribute selector ... Post-Conditions: none GET NS Performance Monitoring Jobs with fields and exclude_default attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PmJobs - Check HTTP Response Body PmJobs Matches the requested selector \ No newline at end of file + Check HTTP Response Body PmJobs Matches the requested selector + +POST new NS Performance Monitoring Job - Unprocessable Entity + [Documentation] Test ID: 5.3.4.1.16 + ... Test title: POST new NS Performance Monitoring Job - Unprocessable Entity + ... Test objective: The objective is to test the creation of a new NS performance monitoring job fails when a request contains syntactically correct data but the data cannot be processed. + ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. + ... Reference: clause 7.4.2.3.1 - ETSI GS NFV-SOL 005 [3] V3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST request for NS Performance Monitoring Job with unprocessable entity + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/environment/variables.txt b/SOL005/NSPerformanceManagement-API/environment/variables.txt index 46ef3afbb..273e805f7 100644 --- a/SOL005/NSPerformanceManagement-API/environment/variables.txt +++ b/SOL005/NSPerformanceManagement-API/environment/variables.txt @@ -19,6 +19,7 @@ ${testOptionalMethods} 0 ${callback_port} 9091 ${callback_uri} http://172.22.1.7 +${unreachable_callback_uri} http://not-reachable-uri ${callback_endpoint} /nspm/subscriptions ${callback_endpoint_error} /subs_404 ${sleep_interval} 20s diff --git a/SOL005/NSPerformanceManagement-API/jsons/CreatePmJobRequest.json b/SOL005/NSPerformanceManagement-API/jsons/CreatePmJobRequest.json index 506e25475..f9f668265 100644 --- a/SOL005/NSPerformanceManagement-API/jsons/CreatePmJobRequest.json +++ b/SOL005/NSPerformanceManagement-API/jsons/CreatePmJobRequest.json @@ -5,5 +5,6 @@ "performanceMetricGroup": [], "collectionPeriod": {collectionPeriod}, "reportingPeriod": {reportingPeriod} - }} + }}, + "callbackUri": "{callback_uri}" }} \ No newline at end of file -- GitLab From 30ca23923ac68ba8ef30231227d5fa01045edf14 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Mon, 8 Mar 2021 12:54:52 +0100 Subject: [PATCH 335/580] Added tests for thresholds & updated versions --- .../IndividualReport.robot | 12 +++---- .../IndividualThreshold.robot | 30 +++++++++++----- .../NSPerformanceManagementKeywords.robot | 23 +++++++++++- .../NotificationConsumer.robot | 4 +-- .../Notifications.robot | 4 +-- .../Thresholds.robot | 36 +++++++++++++------ .../jsons/CreateThresholdRequest.json | 3 +- 7 files changed, 81 insertions(+), 31 deletions(-) diff --git a/SOL005/NSPerformanceManagement-API/IndividualReport.robot b/SOL005/NSPerformanceManagement-API/IndividualReport.robot index c27242894..0f2c4b5ab 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualReport.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualReport.robot @@ -11,7 +11,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual NS performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual NS performance report associated to a monitoring job fails when using an invalid resource endpoint ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ POST Individual Performance Report - Method not implemented ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NS performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PUT Individual Performance Report - Method not implemented ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NS performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ PATCH Individual Performance Report - Method not implemented ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NS performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ DELETE Individual Performance Report - Method not implemented ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing NS performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot b/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot index 9c19fbf18..2b92f548d 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot @@ -13,7 +13,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual NS performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual NS performance threshold fails when using an invalid resource identifier ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual NS performance threshold ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ POST Individual Threshold - Method not implemented ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NS performance Threshold ... Pre-conditions: A NS instance is instantiated - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Individual Threshold - Method not implemented ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NS performance threshold ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Individual Threshold ... Test title: PATCH Individual Threshold ... Test objective: The objective is to test that PATCH method modify an existing NS performance threshold ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is modified by the operation @@ -90,7 +90,7 @@ DELETE Individual Threshold ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual NS performance threshold ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is not available anymore in the NFVO @@ -103,11 +103,25 @@ PATCH Individual Threshold - Precondition failed ... Test title: PATCH Individual Threshold - Precondition failed ... Test objective: The objective is to attempt to Modify an individual NS Performance threshold fails, where the precondition was not met ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is not modified by the operation Send Patch request for individual NS performance Threshold Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails + Check Postcondition NS performance Threshold is Unmodified (Implicit) + +PATCH Individual Threshold - Unprocessable Entity + [Documentation] Test ID: 5.3.4.2.9 + ... Test title: PATCH Individual NS Performance Job - Unprocessable Entity + ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual PM job resource when a request contains syntactically correct data but the data cannot be processed. + ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. + ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: The NS performance Threshold is not modified by the operation + Send Patch request for Individual Threshold with unprocessable entity + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails Check Postcondition NS performance Threshold is Unmodified (Implicit) \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index 33f9f3def..919ec2fbf 100644 --- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot +++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot @@ -376,7 +376,7 @@ GET NS performance Thresholds with invalid resource endpoint Set Suite Variable ${response} ${output} Send Post Request Create new Performance Threshold - Log Creating a new THreshold + Log Creating a new Threshold Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} @@ -385,6 +385,17 @@ Send Post Request Create new Performance Threshold POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${body} ${output}= Output response Set Suite Variable ${response} ${output} + +Send POST request for Performance threshold with unprocessable entity + Log Creating a new Threshold + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + ${template}= Get File jsons/CreateThresholdRequest.json + ${body}= Format String ${template} callback_uri=${unreachable_callback_uri}:${callback_port} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} Send PUT Request for all Performance Thresholds Log PUT THresholds @@ -484,6 +495,16 @@ Send Patch request for individual NS performance Threshold PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} + +Send Patch request for Individual Threshold with unprocessable entity + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/ThresholdModifications.json + ${body}= Format String ${template} callback_uri=${unreachable_callback_uri}:${callback_port} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} Check Postcondition NS performance Threshold is Unmodified (Implicit) Log Check postconidtion threshold not modified diff --git a/SOL005/NSPerformanceManagement-API/NotificationConsumer.robot b/SOL005/NSPerformanceManagement-API/NotificationConsumer.robot index 3f7aca724..5787d497a 100644 --- a/SOL005/NSPerformanceManagement-API/NotificationConsumer.robot +++ b/SOL005/NSPerformanceManagement-API/NotificationConsumer.robot @@ -13,7 +13,7 @@ NS Performance Information Availability Notification ... Test title: NS Performance Information Availability Notification ... Test objective: The objective is to test that NS Performance Information Availability Notification is delivered with success to the notification consumer ... Pre-conditions: A NS performance job is created, and information availability notifications is available in the NFVO. - ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ NS Threshold Crossed Notification ... Test title: NS Threshold Crossed Notification ... Test objective: The objective is to test that NS Threshold Crossed Notification is delivered with success to the notification consumer ... Pre-conditions: A NS performance job is created, and threshold crossed notifications is available in the NFVO. - ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSPerformanceManagement-API/Notifications.robot b/SOL005/NSPerformanceManagement-API/Notifications.robot index 18ab8e3f9..3caa778fe 100644 --- a/SOL005/NSPerformanceManagement-API/Notifications.robot +++ b/SOL005/NSPerformanceManagement-API/Notifications.robot @@ -16,7 +16,7 @@ NS Performance Information Availability Notification ... Test title: NS Performance Information Availability Notification ... Test objective: The objective is to test the dispatch of NS Performance Information Availability Notification when new NS performance information is available in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS performance job is created, and a subscription for information availability notifications is available in the NFVO. - ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ NS Threshold Crossed Notification ... Test title: NS Threshold Crossed Notification ... Test objective: The objective is to test the dispatch of NS Threshold Crossed Notification when a previously set NS performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS performance job is created, and a threshold subscription is available in the NFVO. - ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSPerformanceManagement-API/Thresholds.robot b/SOL005/NSPerformanceManagement-API/Thresholds.robot index cc1bc0fc4..4ef77d53b 100644 --- a/SOL005/NSPerformanceManagement-API/Thresholds.robot +++ b/SOL005/NSPerformanceManagement-API/Thresholds.robot @@ -13,7 +13,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available NS performance thresholds and perform a JSON schema validation of the collected thresholds data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available NS performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Performance Thresholds with invalid attribute-based filter ... Test title: GET Performance Thresholds with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NS performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Performance Thresholds with invalid resource endpoint ... Test title: GET Performance Thresholds with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of NS performance thresholds fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ Create new Performance Threshold ... Test title: Create new Performance Threshold ... Test objective: The objective is to test the creation of a new NS performance threshold and perform the JSON schema validation of the returned threshold data structure ... Pre-conditions: A NS instance is instantiated. - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is successfully created on the NFVO @@ -81,7 +81,7 @@ PUT Performance Thresholds - Method not implemented ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NS performance Thresholds ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ PATCH Performance Thresholds - Method not implemented ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify NS performance Thresholds ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ DELETE Performance Thresholds - Method not implemented ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NS performance Thresholds ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ GET All Performance Thresholds as Paged Response ... Test title: GET All Performance Thresholds as Paged Response ... Test objective: The objective is to test the retrieval of all the available NS performance thresholds as paged response. ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -130,10 +130,24 @@ GET Performance Thresholds - Bad Request Response too Big ... Test title: GET Performance Thresholds - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NS performance thresholds fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET all Performance Thresholds Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +POST new Performance Threshold - Unprocessable Entity + [Documentation] Test ID: 5.3.4.4.11 + ... Test title: POST new Performance Threshold - Unprocessable Entity + ... Test objective: The objective is to test the creation of a new NS performance threshold fails when a request contains syntactically correct data but the data cannot be processed. + ... Pre-conditions: A NS instance is instantiated. + ... Reference: clause 7.4.5.3.1 - ETSI GS NFV-SOL 005 [3] V3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send POST request for Performance threshold with unprocessable entity + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/jsons/CreateThresholdRequest.json b/SOL005/NSPerformanceManagement-API/jsons/CreateThresholdRequest.json index e5b0b975c..44a0b5981 100644 --- a/SOL005/NSPerformanceManagement-API/jsons/CreateThresholdRequest.json +++ b/SOL005/NSPerformanceManagement-API/jsons/CreateThresholdRequest.json @@ -7,5 +7,6 @@ "thresholdValue": {thresholdValue}, "hysteresis": {hysteresis} }} - }} + }}, + "callbackUri": "{callback_uri}" }} \ No newline at end of file -- GitLab From fad08b9ed8b024aa0be848adc6e64b1f3c00c308 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Mon, 8 Mar 2021 13:35:27 +0100 Subject: [PATCH 336/580] updated schema --- ...formationAvailableNotification.schema.json | 30 +++++++------------ 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/SOL005/NSPerformanceManagement-API/schemas/PerformanceInformationAvailableNotification.schema.json b/SOL005/NSPerformanceManagement-API/schemas/PerformanceInformationAvailableNotification.schema.json index ea16ab938..0c22f94e2 100644 --- a/SOL005/NSPerformanceManagement-API/schemas/PerformanceInformationAvailableNotification.schema.json +++ b/SOL005/NSPerformanceManagement-API/schemas/PerformanceInformationAvailableNotification.schema.json @@ -4,8 +4,9 @@ "required": [ "id", "notificationType", - "subscriptionId", "timeStamp", + "pmJobId", + "objectType", "objectInstanceId", "_links" ], @@ -18,15 +19,19 @@ "description": "Discriminator for the different notification types. Shall be set to \"PerformanceInformationAvailableNotification\" for this notification type.\n", "type": "string" }, - "subscriptionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, "timeStamp": { "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", "format": "date-time" }, + "pmJobId": { + "description": "Identifier of the PM job for which performance information is available.\n", + "type": "string" + }, + "objectType": { + "description": "Type of the measured object.\n", + "type": "string" + }, "objectInstanceId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" @@ -35,25 +40,10 @@ "description": "Links to resources related to this notification.\n", "type": "object", "required": [ - "subscription", "pmJob", "performanceReport" ], "properties": { - "subscription": { - "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" - } - } - }, "objectInstance": { "description": "This type represents a link to a resource.\n", "type": "object", -- GitLab From 49d8438d64b932bf605b90bd9a6933d5922fc348 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Tue, 9 Mar 2021 07:41:40 +0100 Subject: [PATCH 337/580] Added test for new query parameter --- .../VNFPackageArtifacts.robot | 45 ++++++++++++------- .../VNFPackageManagementKeywords.robot | 10 ++++- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot index 4d4b7d5bc..13a2c2f7f 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -12,7 +12,7 @@ Get VNF Package Artifact ... Test title: Get VNF Package Artifact ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test title: Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ Get VNF Package Artifact with "include_signatures" parameter ... Test title: Get VNF Package Artifact with "include_signatures" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test title: Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the GET request read the whole content of the archive containing the artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -91,7 +91,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ Get VNF Package Artifact with invalid URI parameters undifend select_non_mano_ar ... Test title: Get VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ Get VNF Package Artifact with conflict due to onboarding state ... Test title: Get VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -143,7 +143,7 @@ GET VNF Package Artifact with invalid Range Request ... Test title: GET VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -156,7 +156,7 @@ POST VNF Package Artifact - Method not implemented ... Test title: POST VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 9.4.5a.3.1 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -168,7 +168,7 @@ PUT VNF Package Artifact - Method not implemented ... Test title: PUT VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.3 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -180,7 +180,7 @@ PATCH VNF Package Artifact - Method not implemented ... Test title: PATCH VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.4 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.5a.3.4 - ETSI GS NFV-SOL 005 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -192,9 +192,22 @@ DELETE VNF Package Artifact - Method not implemented ... Test title: DELETE VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [1] v2.7.1 + ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none Send DELETE Request for VNF Package Artifact - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +Get VNF Package Artifact with "include_external_artifacts" parameter + [Documentation] Test ID: 5.3.5.12.16 + ... Test title: Get VNF Package Artifact with "include_external_artifacts" parameter + ... Test objective: The objective is to test that GET request reads the whole content of the archive containing the external artifacts successfully when requested with "include_external_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with include_external_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 2c13b7c5b..d368354fd 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1089,7 +1089,7 @@ Get Artifact in VNF Package with exclude_all_mano_artifacts parameter Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts ${output}= Output response - Set Suite Variable ${response} ${output} + Set Suite Variable ${response} ${output} Get Artifact in VNF Package with exclude_all_non_mano_artifacts parameter Log Trying to get Artifact in VNF Package with security certificates @@ -1099,6 +1099,14 @@ Get Artifact in VNF Package with exclude_all_non_mano_artifacts parameter ${output}= Output response Set Suite Variable ${response} ${output} +Get Artifact in VNF Package with include_external_artifacts parameter + Log Trying to get Artifact in VNF Package with include_external_artifacts + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/include_external_artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + Get Artifact in VNF Package with select_non_mano_artifact_sets parameter Log Trying to get Artifact in VNF Package with security certificates Pass Execution If ${NFVO_non-MANO_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. -- GitLab From 3ce884d5790e560c974fe8bc83c58feaba37d2a8 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Tue, 9 Mar 2021 07:51:17 +0100 Subject: [PATCH 338/580] updated versions --- ...essConfigurationForExternalArtifacts.robot | 16 +++++----- .../VNFPackageManagement-API/ApiVersion.robot | 20 ++++++------ .../IndividualSubscription.robot | 14 ++++---- .../IndividualVNFPackage.robot | 22 ++++++------- .../IndividualVNFPackageArtifacts.robot | 22 ++++++------- .../ManifestInIndividualVNFPackage.robot | 16 +++++----- .../NotificationConsumer.robot | 4 +-- .../Notifications.robot | 6 ++-- .../Subscriptions.robot | 22 ++++++------- .../VNFDInIndividualVNFPackage.robot | 16 +++++----- .../VNFPackageContent.robot | 22 ++++++------- .../VNFPackageContentViaURI.robot | 12 +++---- .../VNFPackages.robot | 32 +++++++++---------- 13 files changed, 112 insertions(+), 112 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot b/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot index c8da3d025..c091c6d08 100644 --- a/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot @@ -11,7 +11,7 @@ Get Access configuration for external artifacts ... Test title: Get Access configuration for external artifacts ... Test objective: The objective is to test the GET method reads the access configuration information that is used by the NFVO to get the content of external VNF package artifacts and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Access configuration for external artifacts - Not Found ... Test title: Get Access configuration for external artifacts - Not Found ... Test objective: The objective is to test that the retrieval of access configuration information that is used by the NFVO to get the content of external VNF package artifacts fails because resource is not present. ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT Access configuration for external artifacts ... Test title: Access configuration for external artifacts ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Access configuration for external artifacts - Downloading ... Test title: Access configuration for external artifacts - Downloading ... Test objective: The objective is to test that VNF package has been uploaded successfully previously, to indicate that the access configuration information has been stored successfully by the NFVO and the NFVO now starts downloading external artifacts. ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Access configuration for external artifacts - Conflict ... Test title: Access configuration for external artifacts ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute is neither "CREATED" nor "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ POST Access configuration for external artifacts - Method not implemented ... Test title: POST Access configuration for external artifacts - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create access configuration for external artifacts ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ PATCH Access configuration for external artifacts - Method not implemented ... Test title: PATCH Access configuration for external artifacts - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update access configuration for external artifacts ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ DELETE Access configuration for external artifacts - Method not implemented ... Test title: DELETE Access configuration for external artifacts - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete access configuration for external artifacts ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/ApiVersion.robot b/SOL005/VNFPackageManagement-API/ApiVersion.robot index c3b82eec1..2d491a223 100644 --- a/SOL005/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL005/VNFPackageManagement-API/ApiVersion.robot @@ -12,7 +12,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot index 7fc5498cf..c93d809e6 100644 --- a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Subscription ... Test title: GET Individual VNF Package Subscription ... Test objective: The objective is to test the retrieval of individual VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual VNF Package Subscription with invalid resource identifier ... Test title: GET Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ DELETE Individual VNF Package Subscription with invalid resource identifier ... Test title: DELETE Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ POST Individual VNF Package Subscription - Method not implemented ... Test title: POST Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Package Subscription ... Pre-conditions: none - ... Reference: Clause 9.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Individual VNF Package Subscription - Method not implemented ... Test title: PUT Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Individual VNF Package Subscription - Method not implemented ... Test title: PATCH Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Individual VNF Package Subscription ... Test title: DELETE Individual VNF Package Subscription ... Test objective: The objective is to test the deletion of an individual VNF package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Subscription is not available anymore in the NFVO diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot index 6e6a4d5d3..f82518bbf 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -11,7 +11,7 @@ GET Individual VNF Package ... Test title: GET Individual VNF Package ... Test objective: The objective is to test the retrieval of an individual VNF package information perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual VNF Package with invalid resource identifier ... Test title: GET Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Individual VNF Package - Method not implemented ... Test title: POST Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Individual VNF Package - Method not implemented ... Test title: PUT Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ Disable Individual VNF Package ... Test title: Disable Individual VNF Package ... Test objective: The objective is to test the disabling of an individual VNF Package and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state. - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is in operational state DISABLED @@ -77,7 +77,7 @@ Disable Individual VNF Package with conflict due to operational state DISABLED ... Test title: Disable Individual VNF Package with conflict due to operational state DISABLED ... Test objective: The objective is to test that disabling an individual VNF Package that is already in DISABLED operational state fails and perform a JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.5.2.5). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ Enable Individual VNF Package ... Test title: Enable Individual VNF Package ... Test objective: The objective is to test the enabling of an individual VNF Package and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.5.2.5). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is in operational state ENABLED @@ -104,7 +104,7 @@ Enable Individual VNF Package with conflict due to operational state ENABLED ... Test title: Enable Individual VNF Package with conflict due to operational state ENABLED ... Test objective: The objective is to test that enabling an individual VNF Package that is already in ENABLED operational state fails and perform a JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.5.2.7). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ DELETE Individual VNF Package ... Test title: DELETE Individual VNF Package ... Test objective: The objective is to test the deletion of an individual VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO in DISABLED operational state - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not available anymore in the NFVO @@ -130,7 +130,7 @@ DELETE Individual VNF Package in operational state ENABLED ... Test title: DELETE Individual VNF Package in operational state ENABLED ... Test objective: The objective is to test that the deletion of an individual VNF Package in operational state ENABLED fails. The test also performs a JSON schema validation of the failed operation HTTP response. ... Pre-conditions: One or more VNF Package are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.7). - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not deleted by the failed operation. @@ -144,7 +144,7 @@ DELETE Individual VNF Package used for instantiated VNF instances ... Test title: DELETE Individual VNF Package used for instantiated VNF instances ... Test objective: The objective is to test that the deletion of an individual VNF Package that is used in instantiated VNF instances fails. The test also performs a JSON schema validation of the failed operation HTTP response. ... Pre-conditions: One or more VNF instances are instantiated based on the concerned VNF package. - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not deleted by the failed operation. diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot index d1e7fecd3..9dc4ddf0b 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot @@ -11,7 +11,7 @@ GET Individual VNF Package Artifact ... Test title: GET Individual VNF Package Artifact ... Test objective: The objective is to test the retrieval of an individual VNF package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual VNF Package Artifact in octet stream format ... Test title: GET Individual VNF Package Artifact in octet stream format ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -36,7 +36,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -50,7 +50,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO not supporting R ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -62,7 +62,7 @@ GET Individual VNF Package Artifact with invalid Range Request ... Test title: GET Individual VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -74,7 +74,7 @@ GET Individual VNF Package Artifact with invalid resource identifier ... Test title: GET Individual VNF Package Artifact with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ GET Individual VNF Package Artifact with conflict due to onboarding state ... Test title: GET Individual VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Individual VNF Package Artifact - Method not implemented ... Test title: POST Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 9.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ PUT Individual VNF Package Artifact - Method not implemented ... Test title: PUT Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ PATCH Individual VNF Package Artifact - Method not implemented ... Test title: PATCH Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -136,7 +136,7 @@ DELETE Individual VNF Package Artifact - Method not implemented ... Test title: DELETE Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot index 75dbfc62c..c1e6b1c69 100644 --- a/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot @@ -11,7 +11,7 @@ Get Manifest in Individual VNF Package ... Test title: Get Manifest in Individual VNF Package ... Test objective: The objective is to test that content of manifest within a NVF Package is read successfully. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Manifest in Individual VNF Package with security information ... Test title: Get Manifest in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of the Manifest in individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get Manifest in Individual VNF Package - Not Acceptable ... Test title: Get Manifest in Individual VNF Package - Not Acceptable ... Test objective: The objective is to test that the "Accept" header is not compatible with Content type "application/zip" but "incude_signature" is provided.\ ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ Get Manifest in Individual VNF Package - Conflict ... Test title: Get Manifest in Individual VNF Package - Conflict ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the resource. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ POST Manifest in Individual VNF Package - Method not implemented ... Test title: POST Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new Manifest ... Pre-conditions: none - ... Reference: Clause 9.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PUT Manifest in Individual VNF Package - Method not implemented ... Test title: PUT Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a Manifest ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ PATCH Manifest in Individual VNF Package - Method not implemented ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a Manifest ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ DELETE Manifest in Individual VNF Package - Method not implemented ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a Manifest ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot index 751754359..edb94953e 100644 --- a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot +++ b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot @@ -14,7 +14,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test that VNF Package Onboarding Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ VNF Package Change Notification ... Test title: VNF Package Change Notification ... Test objective: The objective is to test that VNF Package Change Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/Notifications.robot b/SOL005/VNFPackageManagement-API/Notifications.robot index 472dcda79..25e1d9790 100644 --- a/SOL005/VNFPackageManagement-API/Notifications.robot +++ b/SOL005/VNFPackageManagement-API/Notifications.robot @@ -16,7 +16,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test the dispatch of VNF Package Onboarding notification when the VNF package onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ VNF Package Operational State Change Notification ... Test title: VNF Package Operational State Change Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package operational state is modified, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ VNF Package Deletion Notification ... Test title: VNF Package Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package is deleted on the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/Subscriptions.robot b/SOL005/VNFPackageManagement-API/Subscriptions.robot index b1ea7ce9b..af0c75125 100644 --- a/SOL005/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL005/VNFPackageManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ Get All VNF Package Subscriptions ... Test title: GET all VNF Package Subscriptions ... Test objective: The objective is to test the retrieval of all VNF package subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Get VNF Package Subscriptions with attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF package subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ Get VNF Package Subscriptions with invalid attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filters ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET VNF Package Subscription with invalid resource endpoint ... Test title: GET VNF Package Subscription with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF package subscriptions fails when using invalid resource endpoint. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ Create new VNF Package subscription ... Test title: Create new VNF Package subscription ... Test objective: The objective is to test the creation of a new VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF package subscription is successfully set and it matches the issued subscription @@ -85,7 +85,7 @@ Create duplicated VNF Package subscription with NFVO not creating duplicated sub ... Test title: Create duplicated VNF Package subscription with NFVO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF package subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing VNF package subscription returned is available in the NFVO @@ -101,7 +101,7 @@ Create duplicated VNF Package subscription with NFVO creating duplicated subscri ... Test title: Create duplicated VNF Package subscription with NFVO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated VNF package subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated VNF package subscription is successfully set and it matches the issued subscription @@ -116,7 +116,7 @@ PUT VNF Package Subscriptions - Method not implemented ... Test title: PUT VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ PATCH VNF Package Subscriptions - Method not implemented ... Test title: PATCH VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ Get All VNF Package Subscriptions as Paged Response ... Test title: GET all VNF Package Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all VNF package subscriptions as paged response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ Get VNF Package Subscriptions - Bad Request Response too Big ... Test title: Get VNF Package Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index 90829b3f6..66699af75 100644 --- a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -11,7 +11,7 @@ Get VNFD in Individual VNF Package in Zip Format ... Test title: Get VNFD in Individual VNF Package in Zip Format ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get VNFD in Individual VNF Package with invalid resource identifier ... Test title: Get VNFD in Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF Package fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get VNFD in Individual VNF Package with conflict due to onboarding state ... Test title: Get VNFD in Individual VNF Package with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF Package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ POST VNFD in Individual VNF Package - Method not implemented ... Test title: POST VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNFD ... Pre-conditions: none - ... Reference: Clause 9.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PUT VNFD in Individual VNF Package - Method not implemented ... Test title: PUT VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ PATCH VNFD in Individual VNF Package - Method not implemented ... Test title: PATCH VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ DELETE VNFD in Individual VNF Package - Method not implemented ... Test title: DELETE VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ Get VNFD in Individual VNF Package with security information ... Test title: Get VNFD in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot index 57401ae3c..7a3675df3 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Content ... Test title: GET Individual VNF Package Content ... Test objective: The objective is to test the retrieval of an individual VNF package content and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual VNF Package Content with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Individual VNF Package Content with Range Request and NFVO not supporting Ra ... Test title: GET Individual VNF Package Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Individual VNF Package Content with invalid Range Request ... Test title: GET Individual VNF Package Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -65,7 +65,7 @@ GET Individual VNF Package Content with invalid resource identifier ... Test title: GET Individual VNF Package Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ GET Individual VNF Package Content with conflict due to onboarding state ... Test title: GET Individual VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ POST Individual VNF Package Content - Method not implemented ... Test title: POST Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package content ... Pre-conditions: none - ... Reference: Clause 9.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ Upload VNF Package Content ... Test title: Upload VNF Package Content ... Test objective: The objective is to test the upload of a VNF Package Content in Zip format. ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package content is successfully uploaded and available in the NFVO @@ -116,7 +116,7 @@ Upload VNF Package Content with conflict due to onboarding state ... Test title: Upload VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the VNF Package Content fails due to a conflict when the VNF Package is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF Package for which the content is requested is different from CREATED. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH Individual VNF Package Content - Method not implemented ... Test title: PATCH Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE Individual VNF Package Content - Method not implemented ... Test title: DELETE Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot index 0d61fb103..17f4ce6f9 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot @@ -12,7 +12,7 @@ Upload VNF Package Content from URI ... Test title: Upload VNF Package Content from URI ... Test objective: The objective is to test the upload of a VNF Package Content from URI. ... Pre-conditions: One or more VNF Packages are in onboarding state CREATED in the NFVO. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Upload VNF Package Content from URI with conflict due to onboarding state ... Test title: Upload VNF Package Content from URI with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the VNF Package Content from URI fails due to a conflict when the VNF Package is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF Package for which the content is requested is different from CREATED. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Individual VNF Package Content from URI - Method not implemented ... Test title: GET Individual VNF Package Content from URI - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual VNF Package Content from URI - Method not implemented ... Test title: PUT Individual VNF Package Content from URI - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual VNF Package Content from URI - Method not implemented ... Test title: PATCH Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual VNF Package Content from URI - Method not implemented ... Test title: DELETE Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackages.robot b/SOL005/VNFPackageManagement-API/VNFPackages.robot index b0b15ff99..ebb6eaf3a 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackages.robot @@ -11,7 +11,7 @@ GET all VNF Packages ... Test title: GET all VNF Packages ... Test objective: The objective is to test the retrieval of all the available VNF packages information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET VNF Packages with attribute-based filter ... Test title: GET VNF Packages with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF packages using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ GET VNF Packages with invalid attribute-based filter ... Test title: GET VNF Packages with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ Get all VNF Packages with malformed authorization token ... Test title: Get all VNF Packages Information with malformed authorization token ... Test objective: The objective is to test that the retrieval of VNF Packages fails when using malformed authorization token ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -67,7 +67,7 @@ Get all VNF Packages without authorization token ... Test title: Get all VNF Packages without authorization token ... Test objective: The objective is to test that the retrieval of VNF Packages fails when omitting the authorization token ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -79,7 +79,7 @@ GET VNF Packages with "all_fields" attribute selector ... Test title: GET VNF Packages with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET VNF Packages with "exclude_default" attribute selector ... Test title: GET VNF Packages with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -107,7 +107,7 @@ GET VNF Packages with "fields" attribute selector ... Test title: GET VNF Packages with fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -121,7 +121,7 @@ GET VNF Packages with "exclude_fields" attribute selector ... Test title: GET VNF Packages with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -135,7 +135,7 @@ GET all VNF Packages with invalid resource endpoint ... Test title: GET VNF Packages with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid resource endpoint ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ Create new VNF Package Resource ... Test title: Create new VNF Package Resource ... Test objective: The objective is to test the creation of a new VNF Package Resource and perform the JSON schema validation of the returned structure ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Resource is successfully created on the NFVO @@ -164,7 +164,7 @@ PUT all VNF Packages - Method not implemented ... Test title: PUT all VNF Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -176,7 +176,7 @@ PATCH all VNF Packages - Method not implemented ... Test title: PATCH all VNF Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -188,7 +188,7 @@ DELETE all VNF Packages - Method not implemented ... Test title: DELETE all VNF Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -200,7 +200,7 @@ GET all VNF Packages as Paged Response ... Test title: GET all VNF Packages as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF packages information as paged response. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -213,7 +213,7 @@ GET VNF Packages - Bad Request Response too Big ... Test title: GET VNF Packages - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF packages fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v2.7.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 84ee3ad3952a47b1f492d0a5901262d052c58828 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Tue, 9 Mar 2021 07:59:08 +0100 Subject: [PATCH 339/580] updated schema --- .../schemas/softwareImage.schema.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/schemas/softwareImage.schema.json b/SOL005/VNFPackageManagement-API/schemas/softwareImage.schema.json index 7ccab2a08..9c56ba7cf 100644 --- a/SOL005/VNFPackageManagement-API/schemas/softwareImage.schema.json +++ b/SOL005/VNFPackageManagement-API/schemas/softwareImage.schema.json @@ -14,8 +14,7 @@ "createdAt", "minDisk", "minRam", - "size", - "imagePath" + "size" ], "type": "object", "properties": { @@ -107,7 +106,11 @@ "type": "object" }, "imagePath": { - "description": "Path in the VNF package, which identifies the image artifact and also allows to access a copy of the image artifact.\n", + "description": "Path which identifies the image artifact and also allows to access a copy of the image artifact.\n", + "type": "string" + }, + "imageUri": { + "description": "URI of the image artifact as defined in the VNF package manifest.\n", "type": "string" } } -- GitLab From d45dbc5433f3cbee8e86fd60257bd92f74d6cd09 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Thu, 11 Mar 2021 14:25:34 +0500 Subject: [PATCH 340/580] updated importing of variables for VNFD parsing --- .../VNFPackageManagementKeywords.robot | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index d368354fd..9cd205605 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -10,8 +10,8 @@ Library MockServerLibrary Library String Library Collections Library String -Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml -Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml +#Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +#Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** Get all VNF Packages @@ -196,6 +196,7 @@ 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 + Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml ${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} @@ -209,6 +210,7 @@ Fetch Information from SOL001 descriptor file Set Global Variable ${Descriptor_Version} ${descriptor_version} Fetch Information from SOL006 descriptor file + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${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} -- GitLab From feb58bced27d0dfda4a7091b64e9143342ed5e69 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Mon, 8 Mar 2021 16:04:32 +0500 Subject: [PATCH 341/580] added new resources in VNFSnapshotPackageManagement-API --- .../ApiVersion.robot | 125 +++++ .../IndividualVNFSnapshotPackage.robot | 104 ++++ .../VNFSnapshotPackageContent.robot | 129 +++++ .../VNFSnapshotPackages.robot | 182 +++++++ ...VnfSnapshotPackageManagementKeywords.robot | 476 ++++++++++++++++++ .../environment/variables.txt | 100 ++++ .../CreateVnfSnapshotPkgInfoRequest.json | 3 + .../VnfSnapshotPkgInfoModifications.json | 4 + .../schemas/VnfSnapshotPkgInfo.schema.json | 422 ++++++++++++++++ ...nfSnapshotPkgInfoModifications.schema.json | 37 ++ .../schemas/VnfSnapshotPkgInfos.schema.json | 426 ++++++++++++++++ .../zip/sampleVNFSnapshotPackage.zip | Bin 0 -> 260 bytes 12 files changed, 2008 insertions(+) create mode 100644 SOL005/VNFSnapshotPackageManagement-API/ApiVersion.robot create mode 100644 SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot create mode 100644 SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot create mode 100644 SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot create mode 100644 SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot create mode 100644 SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt create mode 100644 SOL005/VNFSnapshotPackageManagement-API/jsons/CreateVnfSnapshotPkgInfoRequest.json create mode 100644 SOL005/VNFSnapshotPackageManagement-API/jsons/VnfSnapshotPkgInfoModifications.json create mode 100644 SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfo.schema.json create mode 100644 SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfoModifications.schema.json create mode 100644 SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfos.schema.json create mode 100644 SOL005/VNFSnapshotPackageManagement-API/zip/sampleVNFSnapshotPackage.zip diff --git a/SOL005/VNFSnapshotPackageManagement-API/ApiVersion.robot b/SOL005/VNFSnapshotPackageManagement-API/ApiVersion.robot new file mode 100644 index 000000000..ba118d5c0 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/ApiVersion.robot @@ -0,0 +1,125 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 5.3.6.1.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 5.3.6.1.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 5.3.6.1.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 5.3.6.1.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 5.3.6.1.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.6.1.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 5.3.6.1.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.6.1.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.6.1.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 5.3.6.1.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot new file mode 100644 index 000000000..8ab4bde6d --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot @@ -0,0 +1,104 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST Individual VNF Snapshot Package - Method not implemented + [Documentation] Test ID: 5.3.6.3.1 + ... Test title: POST Individual VNF Snapshot Package - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST individual VNF Snapshot Package + Check HTTP Response Status Code Is 405 + +GET Information about an individual VNF Snapshot Package - SUCCESSFUL + [Documentation] Test ID: 5.3.6.3.2 + ... Test title: GET Information about an individual VNF Snapshot Package - SUCCESSFUL + ... Test objective: The objective is to create a new VNF Snapshot Package resource + ... Pre-conditions: none + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET individual VNF Snapshot Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfo + +GET Information about an individual VNF Snapshot Package - NOT FOUND + [Documentation] Test ID: 5.3.6.3.3 + ... Test title: GET Information about an individual VNF Snapshot Package - NOT FOUND + ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot Package fails when using an invalid resource identifier. + ... Pre-conditions: At least one individual VNF Snapshot Package is available in the NFV-MANO. + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Snapshot Package with Invalid URI + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Individual VNF Snapshot Package - Method not implemented + [Documentation] Test ID: 5.3.6.3.4 + ... Test title: PUT Individual VNF Snapshot Package - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package not modified + PUT individual VNF Snapshot Package + Check HTTP Response Status Code Is 405 + +PATCH Individual VNF Snapshot Package - Modified + [Documentation] Test ID: 5.3.6.3.5 + ... Test title: PATCH Individual VNF Snapshot Package - Modified + ... Test objective: The objective is to test that PATCH method updates the information of a VNF Snapshot package + ... Pre-conditions: none + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH individual VNF Snapshot Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfoModifications + +PATCH Individual VNF Snapshot Package - Conflict + [Documentation] Test ID: 5.3.6.3.6 + ... Test title: PATCH Individual VNF Snapshot Package - Conflict + ... Test objective: The objective is to test that PATCH method does not update the information of a VNF Snapshot package when the state of the VNF snapshot package resource is in a state other than CREATED, ERROR_EXTRACTING or AVAILABLE. + ... Pre-conditions: none + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The state of the VNF snapshot package resource is in a state other than CREATED, ERROR_EXTRACTING or AVAILABLE. + ... Post-Conditions: none + PATCH individual VNF Snapshot Package - Erroneous State + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +DELETE Individual VNF Snapshot Package + [Documentation] Test ID: 5.3.6.3.7 + ... Test title: DELETE Individual VNF Snapshot Package + ... Test objective: The objective is to test that DELETE method deletes an individual VNF Snapshot Package resource + ... Pre-conditions: none + ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package deleted + DELETE individual VNF Snapshot Package + Check HTTP Response Status Code Is 204 + +DELETE Individual VNF Snapshot Package - Conflict + [Documentation] Test ID: 5.3.6.3.8 + ... Test title: DELETE Individual VNF Snapshot Package - Method Not im + ... Test objective: The objective is to test that DELETE method does not delete a VNF Snapshot package when the state of the VNF snapshot package resource is in a state other than CREATED, ERROR or AVAILABLE. + ... Pre-conditions: none + ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The state of the VNF snapshot package resource is in a state other than CREATED, ERROR or AVAILABLE. + ... Post-Conditions: VNF Snapshot Package not deleted + DELETE individual VNF Snapshot Package - Conflict + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot new file mode 100644 index 000000000..7d9cca275 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot @@ -0,0 +1,129 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST VNF Snapshot Package Content - Method not implemented + [Documentation] Test ID: 5.3.6.4.1 + ... Test title: POST VNF Snapshot Package Content - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST VNF Snapshot Package Content + Check HTTP Response Status Code Is 405 + +GET VNF Snapshot Package Content - Complete File + [Documentation] Test ID: 5.3.6.4.2 + ... Test title: GET Information about an individual VNF Snapshot Package - Complete File + ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. + ... Pre-conditions: none + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET VNF Snapshot Package Content - Complete + Check HTTP Response Status Code Is 200 + Check HTTP Content-Type Header Is Set For Package Content + +GET VNF Snapshot Package Content - Partial Content + [Documentation] Test ID: 5.3.6.4.3 + ... Test title: GET VNF Snapshot Package Content - Partial Content + ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. + ... Pre-conditions: none + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO supports range requests + ... Post-Conditions: none + GET VNF Snapshot Package Content - Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Content-Type Header Is Set For Package Content + Check HTTP Content-Range Header Is Set + +GET VNF Snapshot Package Content - Range Request Not Supported + [Documentation] Test ID: 5.3.6.4.4 + ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported + ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. + ... Pre-conditions: none + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO does not support range requests + ... Post-Conditions: none + GET VNF Snapshot Package Content - Range Request + Check HTTP Response Status Code Is 200 + Check HTTP Content-Type Header Is Set For Package Content + +GET VNF Snapshot Package Content - Range Not Satisfiable + [Documentation] Test ID: 5.3.6.4.5 + ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable + ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. + ... Pre-conditions: none + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO supports range requests + ... Post-Conditions: none + GET VNF Snapshot Package Content - Invalid Range + Check HTTP Response Status Code Is 416 + +GET VNF Snapshot Package Content - Conflict + [Documentation] Test ID: 5.3.6.4.6 + ... Test title: GET Information about an individual VNF Snapshot Package - Conflict + ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". + ... Pre-conditions: none + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". + ... Post-Conditions: none + GET VNF Snapshot Package Content - Not Available + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT VNF Snapshot Package Content + [Documentation] Test ID: 5.3.6.4.7 + ... Test title: PUT VNF Snapshot Package Content + ... Test objective: The objective is to test that PUT method uploads the content of VNF Snapshot Package. + ... Pre-conditions: none + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT VNF Snapshot Package Content + Check HTTP Response Status Code Is 202 + +PUT VNF Snapshot Package Content - Conflict + [Documentation] Test ID: 5.3.6.4.8 + ... Test title: PUT VNF Snapshot Package Content + ... Test objective: The objective is to test that PUT method cannot upload the content of VNF Package when the state of the VNF snapshot package resource is other than "CREATED" or "ERROR".. + ... Pre-conditions: none + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: the state of the VNF snapshot package resource is other than "CREATED" or "ERROR". + ... Post-Conditions: none + PUT VNF Snapshot Package Content - Conflict + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +PATCH VNF Snapshot Package Content - Method Not implemented + [Documentation] Test ID: 5.3.6.4.9 + ... Test title: PATCH VNF Snapshot Package Content + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH VNF Snapshot Package Content + Check HTTP Response Status Code Is 405 + +DELETE VNF Snapshot Package Content - Method Not implemented + [Documentation] Test ID: 5.3.6.4.10 + ... Test title: DELETE VNF Snapshot Package Content - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE VNF Snapshot Package Content + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot new file mode 100644 index 000000000..e1c053128 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot @@ -0,0 +1,182 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST Create a VNF Snapshot Package + [Documentation] Test ID: 5.3.6.2.1 + ... Test title: POST Create a VNF Snapshot Package + ... Test objective: The objective is to test that POST method creates a VNF Snapshot Package + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST VNF Snapshot Packages + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfo + +GET information about multiple VNF Snapshot Packages + [Documentation] Test ID: 5.3.6.2.2 + ... Test title: GET information about multiple VNF Snapshot Packages + ... Test objective: The objective is to get information about multiples VNF Snapshot Packages + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos + +GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 5.3.6.2.3 + ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute-based filtering parameters + ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with bad attribute + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute selector + [Documentation] Test ID: 5.3.6.2.4 + ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute selector + ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with bad filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF Snapshot Packages with "all_fields" attribute selector + [Documentation] Test ID: 5.3.6.2.5 + ... Test title: GET information about multiple VNF Snapshot Packages with "all_fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshot Packages + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos + +GET information about multiple VNF Snapshot Packages with "exclude_default" attribute selector + [Documentation] Test ID: 5.3.6.2.6 + ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshot Packages + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos + +GET information about multiple VNF Snapshot Packages with "fields" attribute selector + [Documentation] Test ID: 5.3.6.2.7 + ... Test title: GET information about multiple VNF Snapshot Packages with "fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshot Packages + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos + +GET information about multiple VNF Snapshot Packages with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 5.3.6.2.8 + ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshot Packages + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos + +GET information about multiple VNF Snapshot Packages with "exclude_fields" attribute selector + [Documentation] Test ID: 5.3.6.2.9 + ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshot Packages + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos + +GET VNF Snapshot Packages - Bad Request Response too Big + [Documentation] Test ID: 5.3.6.2.10 + ... Test title: GET VNF Snapshot Packages - Bad Request Response too Big + ... Test objective: The objective is test that the retrieval of existing VNF Snapshot Packages list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO does not support paged response. + ... Post-Conditions: none + GET VNF Snapshot Packages without Paging support + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET VNF Snapshot Packages as Paged Response + [Documentation] Test ID: 5.3.6.2.11 + ... Test title: GET VNF Snapshot Packages as Paged Response + ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshot Packages as paged response. + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO supports paged response. + ... Post-Conditions: none + GET VNF Snapshot Packages with Paging support + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +PUT VNF Snapshot Packages - Method not implemented + [Documentation] Test ID: 5.3.6.2.12 + ... Test title: PUT VNF Snapshot Packages - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT VNF Snapshot Packages + Check HTTP Response Status Code Is 405 + +PATCH VNF Snapshot Packages - Method not implemented + [Documentation] Test ID: 5.3.6.2.13 + ... Test title: PATCH VNF Snapshot Packages - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH VNF Snapshot Packages + Check HTTP Response Status Code Is 405 + +DELETE VNF Snapshot Packages - Method not implemented + [Documentation] Test ID: 5.3.6.2.14 + ... Test title: DELETE VNF Snapshot Packages - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: VNF snapshot package is not deleted + DELETE VNF Snapshot Packages + Check HTTP Response Status Code Is 405 diff --git a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot new file mode 100644 index 000000000..9a81e1097 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -0,0 +1,476 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library String +Library OperatingSystem +Library Collections + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK + +POST VNF Snapshot Packages + Log Trying to create a VNF Snapshot Package using the POST method. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get File jsons/CreateVnfSnapshotPkgInfoRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshot Packages + Log Query VNF The GET method queries information about multiple VNF Snapshot Packages. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshot Packages with bad attribute + Log Query VNF The GET method queries information about multiple VNF Snapshot Packages. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?attribute_not_exist=some_value + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshot Packages with bad filter + Log Query VNF The GET method queries information about multiple VNF Snapshot Packages. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?fields=wrong_field + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshot Packages with all_fields attribute selector + Log Query status information about multiple VNF Snapshot Packages, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshot Packages with exclude_default attribute selector + Log Query status information about multiple VNF Snapshot Packages using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshot Packages with fields attribute selector + Log Query status information about multiple VNF Snapshot Packages, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshot Packages with exclude_default and fields attribute selector + Log Query status information about multiple VNF Snapshot Packages, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshot Packages with exclude_fields attribute selector + Log Query status information about multiple VNF Snapshot Packages, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?exclude_fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET VNF Snapshot Packages without Paging support + Run Keyword If ${PAGING_SUPPORTED} == 0 GET multiple VNF Snapshot Packages + +GET VNF Snapshot Packages with Paging support + Run Keyword If ${PAGING_SUPPORTED} == 1 GET multiple VNF Snapshot Packages + +Check HTTP Response Header Contains Link + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + +PUT VNF Snapshot Packages + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH VNF Snapshot Packages + Log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE VNF Snapshot Packages + Log Trying to perform a DELETE. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST individual VNF Snapshot Package + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot Package + log Trying to get information about an individual VNF Snapshot Package + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot Package with invalid URI + log Trying to get information about an individual VNF Snapshot Package + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${invalidVnfSnapshotPkgId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT individual VNF Snapshot Package + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH individual VNF Snapshot Package + log Trying to modify a VNF Snapshot Package using PATCH method + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get File jsons/VnfSnapshotPkgInfoModifications.json + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check state of the VNF Snapshot Package - PATCH + GET individual VNF Snapshot Package + ${state}= Get variable value ${response['body']['state']} + @{error_states_VnfSnapshotPackage}= Create List + Append to List ${error_states_VnfSnapshotPackage} ERROR BUILDING UPLOADING EXTRACTING + List should contain value @{error_states_VnfSnapshotPackage} ${state} + +PATCH individual VNF Snapshot Package - Erroneous State + Check state of the VNF Snapshot Package - PATCH + log Trying to modify a VNF Snapshot Package which is in state other than CREATED, ERROR_EXTRACTING or AVAILABLE + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get File jsons/VnfSnapshotPkgInfoModifications.json + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check state of the VNF Snapshot Package - DELETE + GET individual VNF Snapshot Package + ${state}= Get variable value ${response['body']['state']} + @{error_states_VnfSnapshotPackage}= Create List + Append to List ${error_states_VnfSnapshotPackage} ERROR_EXTRACTING BUILDING UPLOADING EXTRACTING + List should contain value @{error_states_VnfSnapshotPackage} ${state} + +DELETE individual VNF Snapshot Package + log Trying to DELETE an individual VNF Snapshot package + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE individual VNF Snapshot Package - Conflict + Check state of the VNF Snapshot Package - DELETE + log Trying to DELETE an individual VNF Snapshot package which is in state other than ERROR, CREATED or AVAILABLE + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST VNF Snapshot Package Content + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF Snapshot Package Content - Complete + log Trying to fetch the complete contents of VNF Snapshot Package + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF Snapshot Package Content - Range Request + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + log Trying to get information about an individual VNF Snapshot Package using a range request + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Range":"${range}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF Snapshot Package Content - Invalid Range + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + log Trying to get information about an individual VNF Snapshot Package with invalid range + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Range":"${erroneousRange}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF Snapshot Package Content - Not Available + Check State of VNF Package - Not AVAILABLE + Log Trying to fetch the contents of a VNF Snapshot Package which is not in AVAILABLE state + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId_notInAvailableState}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check State of VNF Package - Not AVAILABLE + GET individual VNF Snapshot Package + ${state}= Get variable value ${response['body']['state']} + Should not be equal as strings ${state} AVAILABLE + +Check HTTP Content-Type Header Is Set For Package Content + Log Check Content-Type HTTP Header + Should Contain ${response['headers']} Content-Type + Should Be Equal As Strings ${response['headers']['Content-Type']} ${CONTENT_TYPE_ZIP} + Log Content type validated + +Check HTTP Content-Range Header Is Set + Log Check Content-Range HTTP Header + Should Contain ${response['headers']} Content-Range + Should Be Equal As Strings ${response['headers']['Content-Range']} ${range} + Log Header Content-Range is present + +PUT VNF Snapshot Package Content + log Trying to upload the contents of VNF Snapshot Package using PUT + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get Binary File zip/sampleVNFSnapshotPackage.zip + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT VNF Snapshot Package Content - Conflict + Check Conflict State for PUT VNF Snapshot Package Content + log Trying to upload the contents of VNF Snapshot Package using PUT when the state of Individual VNF Snapshot Package is other than CREATED or ERROR + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get Binary File zip/sampleVNFSnapshotPackage.zip + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check Conflict State for PUT VNF Snapshot Package Content + GET individual VNF Snapshot Package + ${state}= Get variable value ${response['body']['state']} + @{allowedStates_VnfSnapshotPackage}= Create List + Append to List ${allowedStates_VnfSnapshotPackage} ERROR CREATED + List should not contain value ${allowedStates_VnfSnapshotPackage} ${state} + +PATCH VNF Snapshot Package Content + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE VNF Snapshot Package Content + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Individual VNF Snapshot Package Artifact + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual VNF Snapshot Package Artifact - Complete + log Trying to fetch the complete contents of an individual VNF Snapshot Package artifact + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual VNF Snapshot Package Artifact - Range Request + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + log Trying to get information about an individual VNF Snapshot Package artifact using a range request + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Range":"${range}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual VNF Snapshot Package Artifact - Invalid Range + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + log Trying to get information about an individual VNF Snapshot Package artifact with invalid range + Set Headers {"Accept":"${CONTENT_TYPE_OCTET}"} + Set Headers {"Range":"${erroneousRange}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual VNF Snapshot Package Artifact - Not Available + Log Trying to get information about an individual artifact of a VNF Snapshot Package which is not in AVAILABLE state + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId_notInAvailableState}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Individual VNF Snapshot Package Artifact + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Individual VNF Snapshot Package Artifact + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Individual VNF Snapshot Package Artifact + log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Content-Type Header Is Set For Package Artifact + Log Check Content-Type HTTP Header + Should Contain ${response['headers']} Content-Type + Should Be Equal As Strings ${response['headers']['Content-Type']} ${CONTENT_TYPE_OCTET} + Log Content type validated + diff --git a/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt b/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt new file mode 100644 index 000000000..aa96fc3d7 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt @@ -0,0 +1,100 @@ +*** Variables *** +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO +${NFVO_SCHEMA} https +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${ACCEPT_JSON} application/json +${AUTH_USAGE} 1 +${CONTENT_TYPE_JSON} application/json +${NEG_AUTHORIZATION} Bearer negativetoken +${NFVO_FIELDS} 1 + +${vnfPackageId} 788106a2-d692-44f3-a86d-384f0ce35e42 +${vndId} 788106a2-d692-44f3-a86d-384f0ce35e42 +${onboardingStateVnfPkgId} f9f130e4-05eb-4082-a676-4c97d13a883d +${onboardingStateVnfdId} f9f130e4-05eb-4082-a676-4c97d13a883d + +${apiRoot} / +${apiMajorVersion} v1 +${apiName} vnfsnapshotpkgm + +${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint + +${NFVO_ALLOWS_DUPLICATE_SUBS} 1 + +${PAGING_SUPPORTED} 1 + +${response} httpresponse + +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +${callback_uri} http://localhost +${callback_port} 9091 +${callback_endpoint} /endpoint +${callback_endpoint_fwd} /endpoint/check +${callback_endpoint_error} /endpoint_404 +${sleep_interval} 20s +${total_polling_time} 2 min +${polling_interval} 10 sec + + +${notification_request} [] +${notification_response} [] + +${NFVO_non-MANO_OK} 1 # If 1 means that non-MANO artifacts are supported by the NFVO +${non_mano_artifact_sets} + + +${subscriptionId} f3ae6df7-07e1-47c9-8924-9ebe10343586 +${erroneousSubscriptionId} 442e3ee5-0499-4849-9b31-eb91ce1638f1 # Not existing ID on the subscriptions +${newSubscriptionId} newSubsciptionId + +${origResponse} httpresponse + + +${erroneousVnfPackageId} erroneousVnfPackageId # Given ID for vnfPkg not present in database +${erroneousVnfdId} erroneousVnfdId + + +${filter_ok} callbackUri=http://172.22.1.7:9091/vnfpkgm/subscriptions +${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based +${SEPERATOR} = + + +${ACCEPT_PLAIN} text/plain +${CONTENT_TYPE_PLAIN} text/plain +${vnfPkgPlainVNFD} c26ad7fb-072b-48c4-a663-7d71646d9e98 # The VNF Pakcage contains a VNFD which is a Single Plain File +${ACCEPT_ZIP} application/zip +${ACCEPT_OCTET} application/octet-stream +${CONTENT_TYPE_ZIP} application/zip +${vnfPkgZipVNFD} f5b220d4-6177-4ebb-a554-a43311e16075 # The VNF Package contains a VNFD composed by multiple files +${erroneousVnfPkgId} erroneousVnfPackageId # Given ID for vnfPkg not present in database +${vndIdZipVnfd} f5b220d4-6177-4ebb-a554-a43311e16075 + + +${artifactPath} artifactPath +${CONTENT_TYPE_OCTET} application/octet-stream +${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO +${range} bytes=0-1023 +${full_size} 2000 # Size of the requested artifact to be downloaded via partial downloads +${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes +${vnfPackageOctetStreamId} octetStreamPkgId +${vnfdOctetStreamId} octetStreamVnfdId +${vndEncryptedArtifactID} encryptedId + + +${length} 1024 + +${POS_FILTER} vnfdId=41fdd38a-3d4c-465c-83e0-f80e014425f8 ,vnfProvider=NXW # Positive case, suing compiant fields name for filtering get request +${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field +${fields} softwareImages,additionalArtifacts +${VAR_SEPERATOR} & + +${callbackResp} localhost + +${vnfSnapshotPkgId} +${invalidVnfSnapshotPkgId} +${vnfSnapshotPkgId_notInAvailableState} + +${erroneousState_VnfSnapshotPackage} 1 diff --git a/SOL005/VNFSnapshotPackageManagement-API/jsons/CreateVnfSnapshotPkgInfoRequest.json b/SOL005/VNFSnapshotPackageManagement-API/jsons/CreateVnfSnapshotPkgInfoRequest.json new file mode 100644 index 000000000..235b5f010 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/jsons/CreateVnfSnapshotPkgInfoRequest.json @@ -0,0 +1,3 @@ +{ + "name": "Human-readable name of the VNF snapshot package" +} \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/jsons/VnfSnapshotPkgInfoModifications.json b/SOL005/VNFSnapshotPackageManagement-API/jsons/VnfSnapshotPkgInfoModifications.json new file mode 100644 index 000000000..5f9a9b894 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/jsons/VnfSnapshotPkgInfoModifications.json @@ -0,0 +1,4 @@ +{ + "name": "", + "state": "AVAILABLE" +} \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfo.schema.json b/SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfo.schema.json new file mode 100644 index 000000000..3810b4f9c --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfo.schema.json @@ -0,0 +1,422 @@ +{ + "description": "This type represents the information of a VNF snapshot package. It shall comply with the provisions defined in table 11.5.2.3-1.\n", + "type": "object", + "required": [ + "id", + "name", + "isFullSnapshot", + "state", + "isCancelPending", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshotPkgUniqueId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human-readable name of the VNF snapshot package.\n", + "type": "string" + }, + "checksum": { + "description": "This type represents the checksum of a VNF package or an artifact file.\n", + "required": [ + "algorithm", + "hash" + ], + "type": "object", + "properties": { + "algorithm": { + "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512.\n", + "type": "string" + }, + "hash": { + "description": "The hexadecimal value of the checksum.\n", + "type": "string" + } + } + }, + "createdAt": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "vnfSnapshotId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcSnapshotInfoIds": { + "description": "Identifier of information held by the VNFM about specific VNFC snapshot(s) part of the VNF snapshot and contained in the VNF snapshot package. This identifier is allocated by the VNFM during the VNF snapshot creation.\nThe attribute shall not be present before the VNF snapshot package content has been uploaded or built. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + } + }, + "isFullSnapshot": { + "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", + "type": "boolean" + }, + "vnfdInfo": { + "description": "This type represents the VNFD which is contained in a VNF snapshot package. It shall comply with provisions defined in Table 11.5.3.4-1.\n", + "type": "object", + "required": [ + "vnfdId", + "vnfdPath", + "checksum", + "isEncrypted" + ], + "properties": { + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfdPath": { + "description": "Path which allows to access a copy of the VNFD. The VNFD is implemented as a collection of one or more files, and the path refers to the ZIP archive file embedding these files. The VNF snapshot package format is defined in the ETSI GS NFV-SOL 010.\nThe value of this attribute shall start with the name of the first segment of the path in the package, i.e. it shall not be prefixed by path separator characters such as \".\" and \"/\".\nEXAMPLE: foo/bar/m@ster\n", + "type": "string" + }, + "checksum": { + "description": "This type represents the checksum of a VNF package or an artifact file.\n", + "required": [ + "algorithm", + "hash" + ], + "type": "object", + "properties": { + "algorithm": { + "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512.\n", + "type": "string" + }, + "hash": { + "description": "The hexadecimal value of the checksum.\n", + "type": "string" + } + } + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", + "type": "boolean" + } + } + }, + "vnfsr": { + "description": "This type represents the VNF snapshot record which is contained in a VNF snapshot package. It shall comply with provisions defined in Table 11.5.3.5-1.\n", + "type": "object", + "required": [ + "recordPath", + "checksum", + "isEncrypted" + ], + "properties": { + "recordPath": { + "description": "Path which identifies the VNF snapshot record and allows to access a copy of the VNF snapshot record for the extraction.\nThe value of this attribute shall start with the name of the first segment of the path in the package, i.e. it shall not be prefixed by path separator characters such as \".\" and \"/\".\nEXAMPLE: foo/bar/m@ster\n", + "type": "string" + }, + "checksum": { + "description": "This type represents the checksum of a VNF package or an artifact file.\n", + "required": [ + "algorithm", + "hash" + ], + "type": "object", + "properties": { + "algorithm": { + "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512.\n", + "type": "string" + }, + "hash": { + "description": "The hexadecimal value of the checksum.\n", + "type": "string" + } + } + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", + "type": "boolean" + } + } + }, + "vnfcSnapshotImages": { + "description": "Information about VNF snapshot artifacts that are VNFC snapshot images. Every local and external snapshot image shall be included. No other artifacts shall be included. \nThe attribute shall not be present before the VNF snapshot package content has been uploaded or built. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n", + "type": "array", + "items": { + "description": "This type represents an artifact contained in or external to a VNF snapshot package which represents a snapshot image. It shall comply with the provisions defined in table 11.5.3.2-1.\n", + "type": "object", + "required": [ + "id", + "name", + "checksum", + "isEncrypted", + "vnfcInstanceId", + "containerFormat", + "diskFormat", + "createdAt", + "minDisk", + "minRam", + "size" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "name": { + "description": "Name of the VNFC snapshot image.", + "type": "string" + }, + "checksum": { + "description": "This type represents the checksum of a VNF package or an artifact file.\n", + "required": [ + "algorithm", + "hash" + ], + "type": "object", + "properties": { + "algorithm": { + "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512.\n", + "type": "string" + }, + "hash": { + "description": "The hexadecimal value of the checksum.\n", + "type": "string" + } + } + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", + "type": "boolean" + }, + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "containerFormat": { + "description": "Container format indicates whether the snapshot image is in a file format that also contains metadata about the actual snapshot.\nPermitted values: - AKI: a kernel image format. - AMI: a machine image format. - ARI: a ramdisk image format. - BARE: the image does not have a container or metadata envelope. - DOCKER: docker container format. - OVA: OVF package in a tarfile. - OVF: OVF container format.\nThe list of permitted values was taken from \"Container formats\" in OpenStack®: \"Disk and container formats for images\" (Available from https://docs.openstack.org/glance/pike/user/formats.html)\n", + "type": "string", + "enum": [ + "AKI", + "AMI", + "ARI", + "BARE", + "DOCKER", + "OVA", + "OVF" + ] + }, + "diskFormat": { + "description": "Disk format of a snapshot image is the format of the underlying disk image.\nPermitted values: - AKI: a kernel image format. - AMI: a machine image format. - ARI: a ramdisk image format. - ISO: an archive format for the data contents of an optical disc, such as CD-ROM. - QCOW2: a common disk image format, which can expand dynamically and supports copy on write. - RAW: an unstructured disk image format. - VDI: a common disk image format. - VHD: a common disk image format. - VHDX: enhanced version of VHD format. - VMDK: a common disk image format.\nThe list of permitted values was adapted from \"Disk formats\" in OpenStack®: \"Disk and container formats for images\" (Available from https://docs.openstack.org/glance/pike/user/formats.html)\n", + "type": "string", + "enum": [ + "AKI", + "AMI", + "ARI", + "ISO", + "QCOW2", + "RAW", + "VDI", + "VHD", + "VHDX", + "VMDK" + ] + }, + "createdAt": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "minDisk": { + "description": "Unsigned integer number\n", + "type": "integer", + "minimum": 0 + }, + "minRam": { + "description": "Unsigned integer number\n", + "type": "integer", + "minimum": 0 + }, + "size": { + "description": "Unsigned integer number\n", + "type": "integer", + "minimum": 0 + }, + "userMetadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "imagePath": { + "description": "Path which identifies the image artifact and also allows to access a copy of the image artifact. \nFor an image artifact contained as a file in the VNF snapshot package, this attribute shall be present, and the value of this attribute shall start with the name of the first segment in the path in the package, i.e., it shall not be prefixed by path separator characters such as \".\" and \"/\".\nEXAMPLE: foo/bar/m%40ster.vhd\nFor an external image artifact represented as a URI in the manifest file, this attribute shall be present if the artifact has been downloaded by the NFVO or the artifact has been processed after building the VNF snapshot package and shall be absent otherwise. If present, it shall contain the artifactPath under which the image artifact can be obtained using the \"Individual artifact in a VNF snapshot package\" resource defined in clause 11.4.10. It is the responsibility of the NFVO to synthesize this path in a manner that avoids any collision of the synthesized artifact path with the paths and names of artifacts included in the snapshot package.\n", + "type": "string" + }, + "imageUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + } + } + } + }, + "additionalArtifacts": { + "description": "Information about VNF snapshot artifacts that are not VNFC snapshot images. \nThe attribute shall not be present before the VNF snapshot package content has been uploaded or built. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n", + "type": "array", + "items": { + "description": "This type represents an artifact other than a software image which is contained in a VNF snapshot package. It shall comply with provisions defined in table 11.5.3.3-1.\n", + "type": "object", + "required": [ + "checksum", + "isEncrypted" + ], + "properties": { + "artifactPath": { + "description": "Path which identifies the artifact and also allows to access a copy of the artifact.\nFor an artifact contained as a file in the VNF snapshot package, this attribute shall be present, and the value of this attribute shall start with the name of the first segment in the path in the package, i.e. it shall not be prefixed by path separator characters such as \".\" and \"/\".\nEXAMPLE: foo/bar/m%40ster.sh\nFor an external artifact represented as a URI in the manifest file, this attribute shall be present if the artifact has been downloaded by the NFVO or the artifact has been processed after building the VNF snapshot package and shall be absent otherwise. If present, it shall contain the artifactPath under which the artifact can be obtained using the \"Individual artifact in a VNF snapshot package\" resource defined in clause 11.4.10. It is the responsibility of the NFVO to synthesize this path in a manner that avoids any collision of the synthesized artifact path with the paths and names of artifacts included in the snapshot package.\n", + "type": "string" + }, + "artifactUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "checksum": { + "description": "This type represents the checksum of a VNF package or an artifact file.\n", + "required": [ + "algorithm", + "hash" + ], + "type": "object", + "properties": { + "algorithm": { + "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512.\n", + "type": "string" + }, + "hash": { + "description": "The hexadecimal value of the checksum.\n", + "type": "string" + } + } + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", + "type": "boolean" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + }, + "state": { + "description": "State of the VNF snapshot package.\nPermitted values: - CREATED: the VNF snapshot package information has been created. - BUILDING: the VNF snapshot package is being built. - UPLOADING: the VNF snapshot package is being uploaded. - EXTRACTING: the VNF snapshot package’s content is being extracted. - AVAILABLE: the VNF snapshot package is available (i.e., build or upload is completed). - ERROR: failure during the VNF snapshot package building, uploading or processing. - ERROR_EXTRACTING: failure during the VNF snapshot package extraction task.\n", + "type": "string", + "enum": [ + "CREATED", + "BUILDING", + "UPLOADING", + "EXTRACTING", + "AVAILABLE", + "ERROR", + "ERROR_EXTRACTING" + ] + }, + "isCancelPending": { + "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", + "type": "boolean" + }, + "failureDetails": { + "description": "Failure details associated to current error state of the VNF snapshot package state. If \"state\" is \"ERROR\" or \"ERROR_EXTRACTING\", this attribute shall be present unless it has been requested to be excluded via an attribute selector.\n", + "type": "object", + "required": [ + "errorType", + "details" + ], + "properties": { + "errorType": { + "description": "Type of error, when the failure happened (building, upload, processing, extracting). Permitted values: - BUILD_ERROR - UPLOAD_ERROR - PROCESS_ERROR - CANCELLED - EXTRACTION_ERROR\n", + "type": "string", + "enum": [ + "BUILD_ERROR", + "UPLOAD_ERROR", + "PROCESS_ERROR", + "CANCELLED", + "EXTRACTION_ERROR" + ] + }, + "details": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "packageContent" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "packageContent": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfoModifications.schema.json b/SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfoModifications.schema.json new file mode 100644 index 000000000..35345d93c --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfoModifications.schema.json @@ -0,0 +1,37 @@ +{ + "description": "This type represents modifications to the information of a VNF snapshot package. It shall comply with the provisions defined in table 11.5.2.4-1.\n", + "type": "object", + "anyOf": [{ + "required": [ + "name" + ] + }, + { + "required": [ + "userDefinedData" + ] + }, + { + "required": [ + "state" + ] + } + ], + "properties": { + "name": { + "description": "New value of the human-readable name of the VNF snapshot package. \nAt least one of the three parameters shall be present. If the VNF snapshot package is not uploaded or built, the operation is used only to update existing or add additional user defined data using the userDefinedData attribute.\n", + "type": "string" + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "state": { + "description": "New value of the \"state\" of the VNF snapshot package.\nPermitted values: - AVAILABLE: to change the \"Individual VNF snapshot package\" resource state to \"AVAILABLE\".\nExplicit change of state is only permitted from the following states: - ERROR_EXTRACTING \nAt least one of the three parameters shall be present. If the VNF snapshot package is not uploaded or built, the operation is used only to update existing or add additional user defined data using the userDefinedData attribute.\n", + "type": "string", + "enum": [ + "AVAILABLE" + ] + } + } +} \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfos.schema.json b/SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfos.schema.json new file mode 100644 index 000000000..e911edf17 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfos.schema.json @@ -0,0 +1,426 @@ +{ + "type": "array", + "items": + { + "description": "This type represents the information of a VNF snapshot package. It shall comply with the provisions defined in table 11.5.2.3-1.\n", + "type": "object", + "required": [ + "id", + "name", + "isFullSnapshot", + "state", + "isCancelPending", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshotPkgUniqueId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human-readable name of the VNF snapshot package.\n", + "type": "string" + }, + "checksum": { + "description": "This type represents the checksum of a VNF package or an artifact file.\n", + "required": [ + "algorithm", + "hash" + ], + "type": "object", + "properties": { + "algorithm": { + "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512.\n", + "type": "string" + }, + "hash": { + "description": "The hexadecimal value of the checksum.\n", + "type": "string" + } + } + }, + "createdAt": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "vnfSnapshotId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcSnapshotInfoIds": { + "description": "Identifier of information held by the VNFM about specific VNFC snapshot(s) part of the VNF snapshot and contained in the VNF snapshot package. This identifier is allocated by the VNFM during the VNF snapshot creation.\nThe attribute shall not be present before the VNF snapshot package content has been uploaded or built. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + } + }, + "isFullSnapshot": { + "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", + "type": "boolean" + }, + "vnfdInfo": { + "description": "This type represents the VNFD which is contained in a VNF snapshot package. It shall comply with provisions defined in Table 11.5.3.4-1.\n", + "type": "object", + "required": [ + "vnfdId", + "vnfdPath", + "checksum", + "isEncrypted" + ], + "properties": { + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfdPath": { + "description": "Path which allows to access a copy of the VNFD. The VNFD is implemented as a collection of one or more files, and the path refers to the ZIP archive file embedding these files. The VNF snapshot package format is defined in the ETSI GS NFV-SOL 010.\nThe value of this attribute shall start with the name of the first segment of the path in the package, i.e. it shall not be prefixed by path separator characters such as \".\" and \"/\".\nEXAMPLE: foo/bar/m@ster\n", + "type": "string" + }, + "checksum": { + "description": "This type represents the checksum of a VNF package or an artifact file.\n", + "required": [ + "algorithm", + "hash" + ], + "type": "object", + "properties": { + "algorithm": { + "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512.\n", + "type": "string" + }, + "hash": { + "description": "The hexadecimal value of the checksum.\n", + "type": "string" + } + } + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", + "type": "boolean" + } + } + }, + "vnfsr": { + "description": "This type represents the VNF snapshot record which is contained in a VNF snapshot package. It shall comply with provisions defined in Table 11.5.3.5-1.\n", + "type": "object", + "required": [ + "recordPath", + "checksum", + "isEncrypted" + ], + "properties": { + "recordPath": { + "description": "Path which identifies the VNF snapshot record and allows to access a copy of the VNF snapshot record for the extraction.\nThe value of this attribute shall start with the name of the first segment of the path in the package, i.e. it shall not be prefixed by path separator characters such as \".\" and \"/\".\nEXAMPLE: foo/bar/m@ster\n", + "type": "string" + }, + "checksum": { + "description": "This type represents the checksum of a VNF package or an artifact file.\n", + "required": [ + "algorithm", + "hash" + ], + "type": "object", + "properties": { + "algorithm": { + "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512.\n", + "type": "string" + }, + "hash": { + "description": "The hexadecimal value of the checksum.\n", + "type": "string" + } + } + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", + "type": "boolean" + } + } + }, + "vnfcSnapshotImages": { + "description": "Information about VNF snapshot artifacts that are VNFC snapshot images. Every local and external snapshot image shall be included. No other artifacts shall be included. \nThe attribute shall not be present before the VNF snapshot package content has been uploaded or built. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n", + "type": "array", + "items": { + "description": "This type represents an artifact contained in or external to a VNF snapshot package which represents a snapshot image. It shall comply with the provisions defined in table 11.5.3.2-1.\n", + "type": "object", + "required": [ + "id", + "name", + "checksum", + "isEncrypted", + "vnfcInstanceId", + "containerFormat", + "diskFormat", + "createdAt", + "minDisk", + "minRam", + "size" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "name": { + "description": "Name of the VNFC snapshot image.", + "type": "string" + }, + "checksum": { + "description": "This type represents the checksum of a VNF package or an artifact file.\n", + "required": [ + "algorithm", + "hash" + ], + "type": "object", + "properties": { + "algorithm": { + "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512.\n", + "type": "string" + }, + "hash": { + "description": "The hexadecimal value of the checksum.\n", + "type": "string" + } + } + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", + "type": "boolean" + }, + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "containerFormat": { + "description": "Container format indicates whether the snapshot image is in a file format that also contains metadata about the actual snapshot.\nPermitted values: - AKI: a kernel image format. - AMI: a machine image format. - ARI: a ramdisk image format. - BARE: the image does not have a container or metadata envelope. - DOCKER: docker container format. - OVA: OVF package in a tarfile. - OVF: OVF container format.\nThe list of permitted values was taken from \"Container formats\" in OpenStack®: \"Disk and container formats for images\" (Available from https://docs.openstack.org/glance/pike/user/formats.html)\n", + "type": "string", + "enum": [ + "AKI", + "AMI", + "ARI", + "BARE", + "DOCKER", + "OVA", + "OVF" + ] + }, + "diskFormat": { + "description": "Disk format of a snapshot image is the format of the underlying disk image.\nPermitted values: - AKI: a kernel image format. - AMI: a machine image format. - ARI: a ramdisk image format. - ISO: an archive format for the data contents of an optical disc, such as CD-ROM. - QCOW2: a common disk image format, which can expand dynamically and supports copy on write. - RAW: an unstructured disk image format. - VDI: a common disk image format. - VHD: a common disk image format. - VHDX: enhanced version of VHD format. - VMDK: a common disk image format.\nThe list of permitted values was adapted from \"Disk formats\" in OpenStack®: \"Disk and container formats for images\" (Available from https://docs.openstack.org/glance/pike/user/formats.html)\n", + "type": "string", + "enum": [ + "AKI", + "AMI", + "ARI", + "ISO", + "QCOW2", + "RAW", + "VDI", + "VHD", + "VHDX", + "VMDK" + ] + }, + "createdAt": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "format": "date-time" + }, + "minDisk": { + "description": "Unsigned integer number\n", + "type": "integer", + "minimum": 0 + }, + "minRam": { + "description": "Unsigned integer number\n", + "type": "integer", + "minimum": 0 + }, + "size": { + "description": "Unsigned integer number\n", + "type": "integer", + "minimum": 0 + }, + "userMetadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "imagePath": { + "description": "Path which identifies the image artifact and also allows to access a copy of the image artifact. \nFor an image artifact contained as a file in the VNF snapshot package, this attribute shall be present, and the value of this attribute shall start with the name of the first segment in the path in the package, i.e., it shall not be prefixed by path separator characters such as \".\" and \"/\".\nEXAMPLE: foo/bar/m%40ster.vhd\nFor an external image artifact represented as a URI in the manifest file, this attribute shall be present if the artifact has been downloaded by the NFVO or the artifact has been processed after building the VNF snapshot package and shall be absent otherwise. If present, it shall contain the artifactPath under which the image artifact can be obtained using the \"Individual artifact in a VNF snapshot package\" resource defined in clause 11.4.10. It is the responsibility of the NFVO to synthesize this path in a manner that avoids any collision of the synthesized artifact path with the paths and names of artifacts included in the snapshot package.\n", + "type": "string" + }, + "imageUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + } + } + } + }, + "additionalArtifacts": { + "description": "Information about VNF snapshot artifacts that are not VNFC snapshot images. \nThe attribute shall not be present before the VNF snapshot package content has been uploaded or built. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n", + "type": "array", + "items": { + "description": "This type represents an artifact other than a software image which is contained in a VNF snapshot package. It shall comply with provisions defined in table 11.5.3.3-1.\n", + "type": "object", + "required": [ + "checksum", + "isEncrypted" + ], + "properties": { + "artifactPath": { + "description": "Path which identifies the artifact and also allows to access a copy of the artifact.\nFor an artifact contained as a file in the VNF snapshot package, this attribute shall be present, and the value of this attribute shall start with the name of the first segment in the path in the package, i.e. it shall not be prefixed by path separator characters such as \".\" and \"/\".\nEXAMPLE: foo/bar/m%40ster.sh\nFor an external artifact represented as a URI in the manifest file, this attribute shall be present if the artifact has been downloaded by the NFVO or the artifact has been processed after building the VNF snapshot package and shall be absent otherwise. If present, it shall contain the artifactPath under which the artifact can be obtained using the \"Individual artifact in a VNF snapshot package\" resource defined in clause 11.4.10. It is the responsibility of the NFVO to synthesize this path in a manner that avoids any collision of the synthesized artifact path with the paths and names of artifacts included in the snapshot package.\n", + "type": "string" + }, + "artifactUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "checksum": { + "description": "This type represents the checksum of a VNF package or an artifact file.\n", + "required": [ + "algorithm", + "hash" + ], + "type": "object", + "properties": { + "algorithm": { + "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512.\n", + "type": "string" + }, + "hash": { + "description": "The hexadecimal value of the checksum.\n", + "type": "string" + } + } + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", + "type": "boolean" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + }, + "state": { + "description": "State of the VNF snapshot package.\nPermitted values: - CREATED: the VNF snapshot package information has been created. - BUILDING: the VNF snapshot package is being built. - UPLOADING: the VNF snapshot package is being uploaded. - EXTRACTING: the VNF snapshot package’s content is being extracted. - AVAILABLE: the VNF snapshot package is available (i.e., build or upload is completed). - ERROR: failure during the VNF snapshot package building, uploading or processing. - ERROR_EXTRACTING: failure during the VNF snapshot package extraction task.\n", + "type": "string", + "enum": [ + "CREATED", + "BUILDING", + "UPLOADING", + "EXTRACTING", + "AVAILABLE", + "ERROR", + "ERROR_EXTRACTING" + ] + }, + "isCancelPending": { + "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", + "type": "boolean" + }, + "failureDetails": { + "description": "Failure details associated to current error state of the VNF snapshot package state. If \"state\" is \"ERROR\" or \"ERROR_EXTRACTING\", this attribute shall be present unless it has been requested to be excluded via an attribute selector.\n", + "type": "object", + "required": [ + "errorType", + "details" + ], + "properties": { + "errorType": { + "description": "Type of error, when the failure happened (building, upload, processing, extracting). Permitted values: - BUILD_ERROR - UPLOAD_ERROR - PROCESS_ERROR - CANCELLED - EXTRACTION_ERROR\n", + "type": "string", + "enum": [ + "BUILD_ERROR", + "UPLOAD_ERROR", + "PROCESS_ERROR", + "CANCELLED", + "EXTRACTION_ERROR" + ] + }, + "details": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "packageContent" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "packageContent": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/zip/sampleVNFSnapshotPackage.zip b/SOL005/VNFSnapshotPackageManagement-API/zip/sampleVNFSnapshotPackage.zip new file mode 100644 index 0000000000000000000000000000000000000000..dad810a7ff3870b21aeb7e2692e52d607b349f75 GIT binary patch literal 260 zcmWIWW@Zs#0D(KT89_XC^*306Y!DU#;*!+j5`7S1s8>=^0>U6p09?;4pq^+)Lwhcu zS`bFjV}z`SmkXkkkx7IBw|zh(7#JB8Kok&Q+8*GI(2vb-kS>UR6J-5xmjrmTvVqhv M0bv7>&I5560AYPJ@&Et; literal 0 HcmV?d00001 -- GitLab From 6e8bba5244b5c9bf56e484aded2cce8fcb2cd7fe Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Mon, 8 Mar 2021 19:43:43 +0500 Subject: [PATCH 342/580] additional resources added for VNFSnapshotPackageManagement-API --- ...essConfigurationForExternalArtifacts.robot | 78 +++++ .../BuildVNFSnapshotPackageContentTask.robot | 76 ++++ ...ancelVNFSnapshotPackageOperationTask.robot | 76 ++++ ...ExtractVNFSnapshotPackageContentTask.robot | 89 +++++ .../UploadVNFSnapshotPackageFromUriTask.robot | 76 ++++ ...VnfSnapshotPackageManagementKeywords.robot | 324 +++++++++++++++++- .../environment/variables.txt | 6 +- .../jsons/BuildVnfSnapshotPkgRequest.json | 3 + .../CancelVnfSnapshotPkgOperationRequest.json | 3 + .../jsons/ExtractVnfSnapshotPkgRequest.json | 4 + .../UploadVnfSnapshotPkgFromUriRequest.json | 3 + ...nfSnapshotPkgExtArtifactsAccessConfig.json | 7 + 12 files changed, 742 insertions(+), 3 deletions(-) create mode 100644 SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot create mode 100644 SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot create mode 100644 SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot create mode 100644 SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot create mode 100644 SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot create mode 100644 SOL005/VNFSnapshotPackageManagement-API/jsons/BuildVnfSnapshotPkgRequest.json create mode 100644 SOL005/VNFSnapshotPackageManagement-API/jsons/CancelVnfSnapshotPkgOperationRequest.json create mode 100644 SOL005/VNFSnapshotPackageManagement-API/jsons/ExtractVnfSnapshotPkgRequest.json create mode 100644 SOL005/VNFSnapshotPackageManagement-API/jsons/UploadVnfSnapshotPkgFromUriRequest.json create mode 100644 SOL005/VNFSnapshotPackageManagement-API/jsons/VnfSnapshotPkgExtArtifactsAccessConfig.json diff --git a/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot b/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot new file mode 100644 index 000000000..9f0595b80 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot @@ -0,0 +1,78 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST Access Configuration for External Artifacts - Method not implemented + [Documentation] Test ID: 5.3.6.9.1 + ... Test title: POST Access Configuration for External Artifacts - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: Individual VNF Snapshot Package resource have been created. + ... Reference: Clause 11.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST Access Configuration for External Artifacts + Check HTTP Response Status Code Is 405 + +GET Access Configuration for External Artifacts + [Documentation] Test ID: 5.3.6.9.2 + ... Test title: GET Access Configuration for External Artifacts + ... Test objective: The objective is to test that GET method reads the access configuration information that is used by the NFVO to get the content of external VNF snapshot package artifacts. + ... Pre-conditions: Individual VNF Snapshot Package resource have been created. + ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Access Configuration for External Artifacts + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgExtArtifactsAccessInfo + +PUT Access Configuration for External Artifacts + [Documentation] Test ID: 5.3.6.9.3 + ... Test title: PUT Access Configuration for External Artifacts + ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. + ... Pre-conditions: Individual VNF Snapshot Package resource have been created. + ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT Access Configuration for External Artifacts + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgExtArtifactsAccessInfo + +PUT Access Configuration for External Artifacts - Conflict + [Documentation] Test ID: 5.3.6.9.4 + ... Test title: PUT Access Configuration for External Artifacts - Conflict + ... Test objective: The objective is to test that PUT method cannot provide the access configuration information to the NFVO when the VNF Snapshot Package resource is not in CREATED or ERROR state. + ... Pre-conditions: Individual VNF Snapshot Package resource have been created. + ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The "state" attribute of the "Individual VNF snapshot package" resources contains a value different from "CREATED" or "ERROR". + ... Post-Conditions: none + PUT Access Configuration for External Artifacts - Conflict + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +PATCH Access Configuration for External Artifacts - Method Not implemented + [Documentation] Test ID: 5.3.6.9.5 + ... Test title: PATCH Access Configuration for External Artifacts - Method Not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH Access Configuration for External Artifacts + Check HTTP Response Status Code Is 405 + +DELETE Access Configuration for External Artifacts - Method Not implemented + [Documentation] Test ID: 5.3.6.9.6 + ... Test title: DELETE Access Configuration for External Artifacts - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE Access Configuration for External Artifacts + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot b/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot new file mode 100644 index 000000000..142e5485f --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot @@ -0,0 +1,76 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST Build VNF Snapshot Package Content Task + [Documentation] Test ID: 5.3.6.6.1 + ... Test title: POST Build VNF Snapshot Package Content Task + ... Test objective: The objective is to test that POST method provides the information for the NFVO to start building the content of a VNF snapshot package. + ... Pre-conditions: none + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST Build VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 202 + +POST Build VNF Snapshot Package Content Task - Conflict + [Documentation] Test ID: 5.3.6.6.2 + ... Test title: POST Build VNF Snapshot Package Content Task - Conflict + ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate building of VNF Snapshot Package and the state of the VNF snapshot package resource is other than "CREATED". + ... Pre-conditions: none + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The state of the VNF snapshot package resource is other than "CREATED". + ... Post-Conditions: none + POST Build VNF Snapshot Package Content Task - Conflict + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Build VNF Snapshot Package Content Task - Method Not implemented + [Documentation] Test ID: 5.3.6.6.3 + ... Test title: GET Build VNF Snapshot Package Content Task - Method Not implemented + ... Test objective: The objective is to test that GET method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Build VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 405 + +PUT Build VNF Snapshot Package Content Task - Method Not implemented + [Documentation] Test ID: 5.3.6.6.4 + ... Test title: PUT Build VNF Snapshot Package Content Task - Method Not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH Build VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 405 + +PATCH Build VNF Snapshot Package Content Task - Method Not implemented + [Documentation] Test ID: 5.3.6.6.5 + ... Test title: PATCH Build VNF Snapshot Package Content Task - Method Not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH Build VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 405 + +DELETE Build VNF Snapshot Package Content Task - Method Not implemented + [Documentation] Test ID: 5.3.6.6.6 + ... Test title: DELETE Build VNF Snapshot Package Content Task - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE Build VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot b/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot new file mode 100644 index 000000000..7e9f6829b --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot @@ -0,0 +1,76 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST Cancel VNF Snapshot Package Content Task + [Documentation] Test ID: 5.3.6.8.1 + ... Test title: POST Cancel VNF Snapshot Package Content Task + ... Test objective: The objective is to test that POST method provides the information for the NFVO to cancel the ongoing operation related to the content of a VNF snapshot package. + ... Pre-conditions: none + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST Cancel VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 202 + +POST Cancel VNF Snapshot Package Content Task - Conflict + [Documentation] Test ID: 5.3.6.8.2 + ... Test title: POST Cancel VNF Snapshot Package Content Task - Conflict + ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to cancel a VNF Snapshot Package task and the state of the VNF snapshot package resource is other than "UPLOADING", "BUILDING", "PROCESSING" or "EXTRACTING". + ... Pre-conditions: none + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The state of the VNF snapshot package resource is other than "UPLOADING", "BUILDING", "PROCESSING" or "EXTRACTING". + ... Post-Conditions: none + POST Cancel VNF Snapshot Package Content Task - Conflict + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Cancel VNF Snapshot Package Content Task - Method Not implemented + [Documentation] Test ID: 5.3.6.8.3 + ... Test title: GET Cancel VNF Snapshot Package Content Task - Method Not implemented + ... Test objective: The objective is to test that GET method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Cancel VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 405 + +PUT Cancel VNF Snapshot Package Content Task - Method Not implemented + [Documentation] Test ID: 5.3.6.8.4 + ... Test title: PUT Cancel VNF Snapshot Package Content Task - Method Not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH Cancel VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 405 + +PATCH Cancel VNF Snapshot Package Content Task - Method Not implemented + [Documentation] Test ID: 5.3.6.8.5 + ... Test title: PATCH Cancel VNF Snapshot Package Content Task - Method Not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH Cancel VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 405 + +DELETE Cancel VNF Snapshot Package Content Task - Method Not implemented + [Documentation] Test ID: 5.3.6.8.6 + ... Test title: DELETE Cancel VNF Snapshot Package Content Task - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE Cancel VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot b/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot new file mode 100644 index 000000000..2a5ec3d06 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot @@ -0,0 +1,89 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST Extract VNF Snapshot Package Content Task + [Documentation] Test ID: 5.3.6.7.1 + ... Test title: POST Extract VNF Snapshot Package Content Task + ... Test objective: The objective is to test that POST method provides the information for the NFVO to start extracting the content of a VNF snapshot package. + ... Pre-conditions: none + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST Extract VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 202 + +POST Extract VNF Snapshot Package Content Task - Conflict State + [Documentation] Test ID: 5.3.6.7.2 + ... Test title: POST Extract VNF Snapshot Package Content Task - Conflict + ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate extraction of VNF Snapshot Package and the state of the VNF snapshot package resource is other than "AVAILABLE". + ... Pre-conditions: none + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The state of the VNF snapshot package resource is other than "AVAILABLE". + ... Post-Conditions: none + POST Extract VNF Snapshot Package Content Task - Conflict State + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Extract VNF Snapshot Package Content Task - Invalid VnfInstanceId + [Documentation] Test ID: 5.3.6.7.3 + ... Test title: POST Extract VNF Snapshot Package Content Task - Conflict + ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate extraction of VNF Snapshot Package using an invalid VnfInstanceId in the request body. + ... Pre-conditions: none + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The state of the VNF snapshot package resource is other than "CREATED". + ... Post-Conditions: none + POST Extract VNF Snapshot Package Content Task - Invalid vnfInstanceId + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Extract VNF Snapshot Package Content Task - Method Not implemented + [Documentation] Test ID: 5.3.6.7.4 + ... Test title: GET Extract VNF Snapshot Package Content Task - Method Not implemented + ... Test objective: The objective is to test that GET method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Extract VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 405 + +PUT Extract VNF Snapshot Package Content Task - Method Not implemented + [Documentation] Test ID: 5.3.6.7.5 + ... Test title: PUT Extract VNF Snapshot Package Content Task - Method Not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH Extract VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 405 + +PATCH Extract VNF Snapshot Package Content Task - Method Not implemented + [Documentation] Test ID: 5.3.6.7.6 + ... Test title: PATCH Extract VNF Snapshot Package Content Task - Method Not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH Extract VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 405 + +DELETE Extract VNF Snapshot Package Content Task - Method Not implemented + [Documentation] Test ID: 5.3.6.7.7 + ... Test title: DELETE Extract VNF Snapshot Package Content Task - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE Extract VNF Snapshot Package Content Task + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot b/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot new file mode 100644 index 000000000..4d4a00a69 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot @@ -0,0 +1,76 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST Upload VNF Snapshot Package Content from URI + [Documentation] Test ID: 5.3.6.5.1 + ... Test title: POST Upload VNF Snapshot Package Content from URI + ... Test objective: The objective is to test that POST method provides the information for the NFVO to get the content of a VNF snapshot package. + ... Pre-conditions: none + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST Upload VNF Snapshot Package Content from URI + Check HTTP Response Status Code Is 202 + +POST Upload VNF Snapshot Package Content from URI - Conflict + [Documentation] Test ID: 5.3.6.5.2 + ... Test title: POST Upload VNF Snapshot Package Content from URI - Conflict + ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate upload VNF Snapshot Package from URI task and the state of the VNF snapshot package resource is other than "CREATED" or "ERROR". + ... Pre-conditions: none + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The state of the VNF snapshot package resource is other than "CREATED" or "ERROR". + ... Post-Conditions: none + POST Upload VNF Snapshot Package Content from URI - Conflict + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Upload VNF Snapshot Package Content from URI - Method Not implemented + [Documentation] Test ID: 5.3.6.5.3 + ... Test title: GET Upload VNF Snapshot Package Content from URI - Method Not implemented + ... Test objective: The objective is to test that GET method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Upload VNF Snapshot Package Content from URI + Check HTTP Response Status Code Is 405 + +PUT Upload VNF Snapshot Package Content from URI - Method Not implemented + [Documentation] Test ID: 5.3.6.5.4 + ... Test title: PUT Upload VNF Snapshot Package Content from URI - Method Not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH Upload VNF Snapshot Package Content from URI + Check HTTP Response Status Code Is 405 + +PATCH Upload VNF Snapshot Package Content from URI - Method Not implemented + [Documentation] Test ID: 5.3.6.5.5 + ... Test title: PATCH Upload VNF Snapshot Package Content from URI - Method Not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH Upload VNF Snapshot Package Content from URI + Check HTTP Response Status Code Is 405 + +DELETE Upload VNF Snapshot Package Content from URI - Method Not implemented + [Documentation] Test ID: 5.3.6.5.6 + ... Test title: DELETE Upload VNF Snapshot Package Content from URI - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE Upload VNF Snapshot Package Content from URI + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index 9a81e1097..b54ed478d 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -252,7 +252,7 @@ Check state of the VNF Snapshot Package - PATCH ${state}= Get variable value ${response['body']['state']} @{error_states_VnfSnapshotPackage}= Create List Append to List ${error_states_VnfSnapshotPackage} ERROR BUILDING UPLOADING EXTRACTING - List should contain value @{error_states_VnfSnapshotPackage} ${state} + List should contain value ${error_states_VnfSnapshotPackage} ${state} PATCH individual VNF Snapshot Package - Erroneous State Check state of the VNF Snapshot Package - PATCH @@ -270,7 +270,7 @@ Check state of the VNF Snapshot Package - DELETE ${state}= Get variable value ${response['body']['state']} @{error_states_VnfSnapshotPackage}= Create List Append to List ${error_states_VnfSnapshotPackage} ERROR_EXTRACTING BUILDING UPLOADING EXTRACTING - List should contain value @{error_states_VnfSnapshotPackage} ${state} + List should contain value ${error_states_VnfSnapshotPackage} ${state} DELETE individual VNF Snapshot Package log Trying to DELETE an individual VNF Snapshot package @@ -474,3 +474,323 @@ Check HTTP Content-Type Header Is Set For Package Artifact Should Be Equal As Strings ${response['headers']['Content-Type']} ${CONTENT_TYPE_OCTET} Log Content type validated +POST Upload VNF Snapshot Package Content from URI + Log Trying to initiate Upload VNF Snapshot Content from URI task + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/UploadVnfSnapshotPkgFromUriRequest.json + ${body}= Format String ${template} addressInformation=${vnfPackageContent_URI} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/upload_from_uri ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Upload VNF Snapshot Package Content from URI - Conflict + Check Conflict State for PUT VNF Snapshot Package Content + Log Trying to initiate Upload VNF Snapshot Content from URI task when the state of the VNF Snapshot Package is other than ERROR or CREATED. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/UploadVnfSnapshotPkgFromUriRequest.json + ${body}= Format String ${template} addressInformation=${vnfPackageContent_URI} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/upload_from_uri ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Upload VNF Snapshot Package Content from URI + log Trying to perform a GET. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/upload_from_uri + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Upload VNF Snapshot Package Content from URI + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/upload_from_uri + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Upload VNF Snapshot Package Content from URI + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/upload_from_uri + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Upload VNF Snapshot Package Content from URI + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/upload_from_uri + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Build VNF Snapshot Package Content Task + Log Trying to initiate the Build of VNF Snapshot Content Task + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/BuildVnfSnapshotPkgRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/build ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Build VNF Snapshot Package Content Task - Conflict + Check Conflict State for BUILD VNF Snapshot Package Content + Log Trying to initiate the Build VNF Snapshot Content task when the state of the VNF Snapshot Package is not CREATED. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/BuildVnfSnapshotPkgRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/build ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check Conflict State for BUILD VNF Snapshot Package Content + GET individual VNF Snapshot Package + ${state}= Get variable value ${response['body']['state']} + Should not be equal as strings ${state} CREATED + +GET Build VNF Snapshot Package Content Task + log Trying to perform a GET. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/build + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Build VNF Snapshot Package Content Task + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/build + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Build VNF Snapshot Package Content Task + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/build + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Build VNF Snapshot Package Content Task + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/build + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Extract VNF Snapshot Package Content Task + Log Trying to initiate Extract VNF Snapshot Content from URI task + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/ExtractVnfSnapshotPkgRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/extract ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Extract VNF Snapshot Package Content Task - Conflict State + Check Conflict State for Extract VNF Snapshot Package Content + Log Trying to initiate the Extract VNF Snapshot Content task when the state of the VNF Snapshot Package is not AVAILABLE. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/ExtractVnfSnapshotPkgRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} vnfInstanceId=${vnfInstanceId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/extract ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check Conflict State for Extract VNF Snapshot Package Content + GET individual VNF Snapshot Package + ${state}= Get variable value ${response['body']['state']} + Should not be equal as strings ${state} AVAILABLE + +POST Extract VNF Snapshot Package Content Task - Invalid vnfInstanceId + Log Trying to initiate the Extract VNF Snapshot Content task when the state of the VNF Snapshot Package is not AVAILABLE. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/ExtractVnfSnapshotPkgRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} vnfInstanceId=${invalidVnfInstanceId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/extract ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Extract VNF Snapshot Package Content Task + log Trying to perform a GET. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/extract + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Extract VNF Snapshot Package Content Task + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/extract + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Extract VNF Snapshot Package Content Task + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/extract + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Extract VNF Snapshot Package Content Task + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/extract + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Cancel VNF Snapshot Package Content Task + Log Trying to initiate cancelation of VNF Snapshot Content Task + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get File jsons/CancelVnfSnapshotPkgOperationRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/cancel ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Cancel VNF Snapshot Package Content Task - Conflict + Check Conflict State for Cancel VNF Snapshot Package Content + Log Trying to initiate the cancelation of VNF Snapshot Content task when the state of the VNF Snapshot Package is other than "UPLOADING", "BUILDING", "PROCESSING" or "EXTRACTING". + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get File jsons/CancelVnfSnapshotPkgOperationRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/cancel ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check Conflict State for Cancel VNF Snapshot Package Content + GET individual VNF Snapshot Package + ${state}= Get variable value ${response['body']['state']} + @{allowedStates}= Create List + Append to List ${allowedStates} PROCESSING BUILDING UPLOADING EXTRACTING + List should not contain value ${allowedStates} ${state} + +GET Cancel VNF Snapshot Package Content Task + log Trying to perform a GET. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/cancel + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Cancel VNF Snapshot Package Content Task + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/cancel + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Cancel VNF Snapshot Package Content Task + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/cancel + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Cancel VNF Snapshot Package Content Task + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content/cancel + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Access Configuration for External Artifacts + Log Trying to perform a POST. This method should not be implemented. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/ext_artifacts_access + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Access Configuration for External Artifacts + Log Trying to provide the access configuration information to the NFVO using PUT method. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get File jsons/VnfSnapshotPkgExtArtifactsAccessInfo.json + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/ext_artifacts_access ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Access Configuration for External Artifacts - Conflict + Check Conflict State for Cancel VNF Snapshot Package Content + Log Trying to provide the access configuration information to the NFVO using PUT method when the state of VNF Snapshot Package is not ERROR or CREATED. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get File jsons/VnfSnapshotPkgExtArtifactsAccessInfo.json + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/ext_artifacts_access ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check Conflict State for External Artifact Access Configuration + GET individual VNF Snapshot Package + ${state}= Get variable value ${response['body']['state']} + @{allowedStates}= Create List + Append to List ${allowedStates} CREATED ERROR + List should not contain value ${allowedStates} ${state} + +GET Access Configuration for External Artifacts + log Trying to read the access configuration information that is used by the NFVO to get the content of external VNF snapshot package artifacts + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/ext_artifacts_access + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Access Configuration for External Artifacts + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/ext_artifacts_access + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Access Configuration for External Artifacts + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/ext_artifacts_access + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt b/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt index aa96fc3d7..e614f4a8b 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt @@ -96,5 +96,9 @@ ${callbackResp} localhost ${vnfSnapshotPkgId} ${invalidVnfSnapshotPkgId} ${vnfSnapshotPkgId_notInAvailableState} +${vnfSnapshotInfoId} +${vnfInstanceId} associated-with-extraction-of-VNF-snapshot-package +${invalidVnfInstanceId} invlalid-association-with-VNF-snapshot-package -${erroneousState_VnfSnapshotPackage} 1 +${vnfPackageContent_URI} http://uri/for/vnfpackagecontent/upload +${externalArtifact_URI} http://uri/for/external/artifact \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/jsons/BuildVnfSnapshotPkgRequest.json b/SOL005/VNFSnapshotPackageManagement-API/jsons/BuildVnfSnapshotPkgRequest.json new file mode 100644 index 000000000..55e7f94ce --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/jsons/BuildVnfSnapshotPkgRequest.json @@ -0,0 +1,3 @@ +{{ + "vnfSnapshotInfoId": "{vnfSnapshotInfoId}" +}} \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/jsons/CancelVnfSnapshotPkgOperationRequest.json b/SOL005/VNFSnapshotPackageManagement-API/jsons/CancelVnfSnapshotPkgOperationRequest.json new file mode 100644 index 000000000..b5cd8abd9 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/jsons/CancelVnfSnapshotPkgOperationRequest.json @@ -0,0 +1,3 @@ +{ + "cause": "Cancelation cause..." +} \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/jsons/ExtractVnfSnapshotPkgRequest.json b/SOL005/VNFSnapshotPackageManagement-API/jsons/ExtractVnfSnapshotPkgRequest.json new file mode 100644 index 000000000..9984bf184 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/jsons/ExtractVnfSnapshotPkgRequest.json @@ -0,0 +1,4 @@ +{{ + "vnfSnapshotInfoId": "{vnfSnapshotInfoId}", + "vnfInstanceId": "{vnfInstanceId}" +}} \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/jsons/UploadVnfSnapshotPkgFromUriRequest.json b/SOL005/VNFSnapshotPackageManagement-API/jsons/UploadVnfSnapshotPkgFromUriRequest.json new file mode 100644 index 000000000..133ac9d84 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/jsons/UploadVnfSnapshotPkgFromUriRequest.json @@ -0,0 +1,3 @@ +{{ + "addressInformation": "{addressInformation}" +}} \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/jsons/VnfSnapshotPkgExtArtifactsAccessConfig.json b/SOL005/VNFSnapshotPackageManagement-API/jsons/VnfSnapshotPkgExtArtifactsAccessConfig.json new file mode 100644 index 000000000..d7ccdb92f --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/jsons/VnfSnapshotPkgExtArtifactsAccessConfig.json @@ -0,0 +1,7 @@ +{{ + "artifact": [ + {{ + "artifactUri": "{artifactUri}" + }} + ] +}} \ No newline at end of file -- GitLab From 95e31ed7252859c3096d02a2fdd20fe6fc2ec5a3 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Mon, 8 Mar 2021 20:23:12 +0500 Subject: [PATCH 343/580] added a new resource in VNFSnapshotPackageManagement-API --- ...IndividualVNFSnapshotPackageArtifact.robot | 128 ++++++++++++++++++ ...VnfSnapshotPackageManagementKeywords.robot | 13 ++ .../environment/variables.txt | 1 + 3 files changed, 142 insertions(+) create mode 100644 SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot diff --git a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot new file mode 100644 index 000000000..72384260a --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot @@ -0,0 +1,128 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST Individual VNF Snapshot Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.6.10.1 + ... Test title: POST Individual VNF Snapshot Package Artifact - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST Individual VNF Snapshot Package Artifact + Check HTTP Response Status Code Is 405 + +GET Individual VNF Snapshot Package Artifact - Complete File + [Documentation] Test ID: 5.3.6.10.2 + ... Test title: GET Information about an individual VNF Snapshot Package - Complete File + ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. + ... Pre-conditions: none + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Snapshot Package Artifact - Complete + Check HTTP Response Status Code Is 200 + Check HTTP Content-Type Header Is Set For Package Artifact + +GET Individual VNF Snapshot Package Artifact - Partial Content + [Documentation] Test ID: 5.3.6.10.3 + ... Test title: GET Individual VNF Snapshot Package Artifact - Partial Content + ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. + ... Pre-conditions: none + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO supports range requests + ... Post-Conditions: none + GET Individual VNF Snapshot Package Artifact - Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Content-Type Header Is Set For Package Artifact + Check HTTP Content-Range Header Is Set + +GET Individual VNF Snapshot Package Artifact - Range Request Not Supported + [Documentation] Test ID: 5.3.6.10.4 + ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported + ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. + ... Pre-conditions: none + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO does not support range requests + ... Post-Conditions: none + GET Individual VNF Snapshot Package Artifact - Range Request + Check HTTP Response Status Code Is 200 + Check HTTP Content-Type Header Is Set For Package Artifact + +GET Individual VNF Snapshot Package Artifact - Range Not Satisfiable + [Documentation] Test ID: 5.3.6.10.5 + ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable + ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. + ... Pre-conditions: none + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: NFVO supports range requests + ... Post-Conditions: none + GET Individual VNF Snapshot Package Artifact - Invalid Range + Check HTTP Response Status Code Is 416 + +GET Individual VNF Snapshot Package Artifact - Conflict + [Documentation] Test ID: 5.3.6.10.6 + ... Test title: GET Information about an individual VNF Snapshot Package - Conflict + ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". + ... Pre-conditions: none + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". + ... Post-Conditions: none + GET Individual VNF Snapshot Package Artifact - Not Available + Check HTTP Response Status Code Is 409 + +GET Individual VNF Snapshot Package Artifact - External Artifact + [Documentation] Test ID: 5.3.6.10.7 + ... Test title: GET Information about an individual VNF Snapshot Package - External Artifact + ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". + ... Pre-conditions: none + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". + ... Post-Conditions: none + GET Individual VNF Snapshot Package Artifact - External + Check HTTP Response Status Code Is 302 + Check HTTP Response Contains Resource URI + +PUT Individual VNF Snapshot Package Artifact - Method not implemented + [Documentation] Test ID: 5.3.6.10.8 + ... Test title: PUT Individual VNF Snapshot Package Artifact - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package not modified + PUT Individual VNF Snapshot Package Artifact + Check HTTP Response Status Code Is 405 + +PATCH Individual VNF Snapshot Package Artifact - Method Not implemented + [Documentation] Test ID: 5.3.6.10.9 + ... Test title: PATCH Individual VNF Snapshot Package Artifact + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH Individual VNF Snapshot Package Artifact + Check HTTP Response Status Code Is 405 + +DELETE Individual VNF Snapshot Package Artifact - Method Not implemented + [Documentation] Test ID: 5.3.6.10.10 + ... Test title: DELETE Individual VNF Snapshot Package Artifact - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 11.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE Individual VNF Snapshot Package Artifact + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index b54ed478d..1025fefec 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -435,12 +435,21 @@ GET Individual VNF Snapshot Package Artifact - Invalid Range Set Global Variable ${response} ${outputResponse} GET Individual VNF Snapshot Package Artifact - Not Available + Check Conflict State for Extract VNF Snapshot Package Content Log Trying to get information about an individual artifact of a VNF Snapshot Package which is not in AVAILABLE state Set Headers {"Accept":"${ACCEPT_OCTET}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId_notInAvailableState}/artifacts/${artifactPath} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +GET Individual VNF Snapshot Package Artifact - External + log Trying to fetch information about an external VNF Snapshot artifact + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${ext_artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} PUT Individual VNF Snapshot Package Artifact log Trying to perform a PUT. This method should not be implemented @@ -468,6 +477,10 @@ DELETE Individual VNF Snapshot Package Artifact ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +Check HTTP Response Contains Resource URI + ${ResourceURI}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${ResourceURI} + Check HTTP Content-Type Header Is Set For Package Artifact Log Check Content-Type HTTP Header Should Contain ${response['headers']} Content-Type diff --git a/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt b/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt index e614f4a8b..0c2117dd2 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt @@ -74,6 +74,7 @@ ${vndIdZipVnfd} f5b220d4-6177-4ebb-a554-a43311e16075 ${artifactPath} artifactPath +${ext_artifactPath} artifactPath/external ${CONTENT_TYPE_OCTET} application/octet-stream ${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO ${range} bytes=0-1023 -- GitLab From 1ad824c79088ff818f7561fbbf737e39766b0a44 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Mon, 8 Mar 2021 20:29:22 +0500 Subject: [PATCH 344/580] minor fix in documentation --- .../IndividualVNFSnapshotPackageArtifact.robot | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot index 72384260a..2ffa83338 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot @@ -77,15 +77,16 @@ GET Individual VNF Snapshot Package Artifact - Conflict ... Post-Conditions: none GET Individual VNF Snapshot Package Artifact - Not Available Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails GET Individual VNF Snapshot Package Artifact - External Artifact [Documentation] Test ID: 5.3.6.10.7 ... Test title: GET Information about an individual VNF Snapshot Package - External Artifact - ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". + ... Test objective: The objective is to test that correct response code is returned the referred "Individual VNF Snapshot package artifact" is external to the main VNF snapshot package file created from a build process. ... Pre-conditions: none ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO - ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". + ... Applicability: The "Individual VNF Snapshot package artifact" is external to the main VNF snapshot package file created from a build process. ... Post-Conditions: none GET Individual VNF Snapshot Package Artifact - External Check HTTP Response Status Code Is 302 -- GitLab From 57d99aadbf64d5fbdbeec76598e49041a989eec3 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 13:11:11 +0500 Subject: [PATCH 345/580] corrected Test IDs and added minor bug fixes --- ...essConfigurationForExternalArtifacts.robot | 12 +++--- .../ApiVersion.robot | 20 ++++----- .../BuildVNFSnapshotPackageContentTask.robot | 12 +++--- ...ancelVNFSnapshotPackageOperationTask.robot | 12 +++--- ...ExtractVNFSnapshotPackageContentTask.robot | 14 +++---- .../IndividualVNFSnapshotPackage.robot | 16 ++++---- ...IndividualVNFSnapshotPackageArtifact.robot | 20 ++++----- .../UploadVNFSnapshotPackageFromUriTask.robot | 12 +++--- .../VNFSnapshotPackageContent.robot | 20 ++++----- .../VNFSnapshotPackages.robot | 41 ++++++++++++------- ...VnfSnapshotPackageManagementKeywords.robot | 13 +++++- .../environment/variables.txt | 2 +- .../schemas/ProblemDetails.schema.json | 32 +++++++++++++++ 13 files changed, 140 insertions(+), 86 deletions(-) create mode 100644 SOL005/VNFSnapshotPackageManagement-API/schemas/ProblemDetails.schema.json diff --git a/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot b/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot index 9f0595b80..cad4a06c6 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot @@ -3,7 +3,7 @@ Resource VnfSnapshotPackageManagementKeywords.robot *** Test Cases *** POST Access Configuration for External Artifacts - Method not implemented - [Documentation] Test ID: 5.3.6.9.1 + [Documentation] Test ID: 5.3.7.9.1 ... Test title: POST Access Configuration for External Artifacts - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: Individual VNF Snapshot Package resource have been created. @@ -15,7 +15,7 @@ POST Access Configuration for External Artifacts - Method not implemented Check HTTP Response Status Code Is 405 GET Access Configuration for External Artifacts - [Documentation] Test ID: 5.3.6.9.2 + [Documentation] Test ID: 5.3.7.9.2 ... Test title: GET Access Configuration for External Artifacts ... Test objective: The objective is to test that GET method reads the access configuration information that is used by the NFVO to get the content of external VNF snapshot package artifacts. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. @@ -28,7 +28,7 @@ GET Access Configuration for External Artifacts Check HTTP Response Body Json Schema Is VnfSnapshotPkgExtArtifactsAccessInfo PUT Access Configuration for External Artifacts - [Documentation] Test ID: 5.3.6.9.3 + [Documentation] Test ID: 5.3.7.9.3 ... Test title: PUT Access Configuration for External Artifacts ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. @@ -41,7 +41,7 @@ PUT Access Configuration for External Artifacts Check HTTP Response Body Json Schema Is VnfSnapshotPkgExtArtifactsAccessInfo PUT Access Configuration for External Artifacts - Conflict - [Documentation] Test ID: 5.3.6.9.4 + [Documentation] Test ID: 5.3.7.9.4 ... Test title: PUT Access Configuration for External Artifacts - Conflict ... Test objective: The objective is to test that PUT method cannot provide the access configuration information to the NFVO when the VNF Snapshot Package resource is not in CREATED or ERROR state. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. @@ -54,7 +54,7 @@ PUT Access Configuration for External Artifacts - Conflict Check HTTP Response Body Json Schema Is ProblemDetails PATCH Access Configuration for External Artifacts - Method Not implemented - [Documentation] Test ID: 5.3.6.9.5 + [Documentation] Test ID: 5.3.7.9.5 ... Test title: PATCH Access Configuration for External Artifacts - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -66,7 +66,7 @@ PATCH Access Configuration for External Artifacts - Method Not implemented Check HTTP Response Status Code Is 405 DELETE Access Configuration for External Artifacts - Method Not implemented - [Documentation] Test ID: 5.3.6.9.6 + [Documentation] Test ID: 5.3.7.9.6 ... Test title: DELETE Access Configuration for External Artifacts - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/ApiVersion.robot b/SOL005/VNFSnapshotPackageManagement-API/ApiVersion.robot index ba118d5c0..df3ac023c 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/ApiVersion.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/ApiVersion.robot @@ -3,7 +3,7 @@ Resource VnfSnapshotPackageManagementKeywords.robot *** Test Cases *** POST API Version - Method not implemented - [Documentation] Test ID: 5.3.6.1.1 + [Documentation] Test ID: 5.3.7.1.1 ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -15,7 +15,7 @@ POST API Version - Method not implemented Check HTTP Response Status Code Is 405 GET API Version - [Documentation] Test ID: 5.3.6.1.2 + [Documentation] Test ID: 5.3.7.1.2 ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none @@ -28,7 +28,7 @@ GET API Version Check HTTP Response Body Json Schema Is ApiVersionInformation PUT API Version - Method not implemented - [Documentation] Test ID: 5.3.6.1.3 + [Documentation] Test ID: 5.3.7.1.3 ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -40,7 +40,7 @@ PUT API Version - Method not implemented Check HTTP Response Status Code Is 405 PATCH API Version - Method not implemented - [Documentation] Test ID: 5.3.6.1.4 + [Documentation] Test ID: 5.3.7.1.4 ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -52,7 +52,7 @@ PATCH API Version - Method not implemented Check HTTP Response Status Code Is 405 DELETE API Version - Method not implemented - [Documentation] Test ID: 5.3.6.1.5 + [Documentation] Test ID: 5.3.7.1.5 ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none @@ -64,7 +64,7 @@ DELETE API Version - Method not implemented Check HTTP Response Status Code Is 405 POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.6.1.6 + [Documentation] Test ID: 5.3.7.1.6 ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -76,7 +76,7 @@ POST API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 GET API Version with apiMajorVerion - [Documentation] Test ID: 5.3.6.1.7 + [Documentation] Test ID: 5.3.7.1.7 ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none @@ -89,7 +89,7 @@ GET API Version with apiMajorVerion Check HTTP Response Body Json Schema Is ApiVersionInformation PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.6.1.8 + [Documentation] Test ID: 5.3.7.1.8 ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -101,7 +101,7 @@ PUT API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.6.1.9 + [Documentation] Test ID: 5.3.7.1.9 ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -113,7 +113,7 @@ PATCH API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 5.3.6.1.10 + [Documentation] Test ID: 5.3.7.1.10 ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot b/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot index 142e5485f..6bd1a6e31 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot @@ -3,7 +3,7 @@ Resource VnfSnapshotPackageManagementKeywords.robot *** Test Cases *** POST Build VNF Snapshot Package Content Task - [Documentation] Test ID: 5.3.6.6.1 + [Documentation] Test ID: 5.3.7.6.1 ... Test title: POST Build VNF Snapshot Package Content Task ... Test objective: The objective is to test that POST method provides the information for the NFVO to start building the content of a VNF snapshot package. ... Pre-conditions: none @@ -15,7 +15,7 @@ POST Build VNF Snapshot Package Content Task Check HTTP Response Status Code Is 202 POST Build VNF Snapshot Package Content Task - Conflict - [Documentation] Test ID: 5.3.6.6.2 + [Documentation] Test ID: 5.3.7.6.2 ... Test title: POST Build VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate building of VNF Snapshot Package and the state of the VNF snapshot package resource is other than "CREATED". ... Pre-conditions: none @@ -28,7 +28,7 @@ POST Build VNF Snapshot Package Content Task - Conflict Check HTTP Response Body Json Schema Is ProblemDetails GET Build VNF Snapshot Package Content Task - Method Not implemented - [Documentation] Test ID: 5.3.6.6.3 + [Documentation] Test ID: 5.3.7.6.3 ... Test title: GET Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none @@ -40,7 +40,7 @@ GET Build VNF Snapshot Package Content Task - Method Not implemented Check HTTP Response Status Code Is 405 PUT Build VNF Snapshot Package Content Task - Method Not implemented - [Documentation] Test ID: 5.3.6.6.4 + [Documentation] Test ID: 5.3.7.6.4 ... Test title: PUT Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -52,7 +52,7 @@ PUT Build VNF Snapshot Package Content Task - Method Not implemented Check HTTP Response Status Code Is 405 PATCH Build VNF Snapshot Package Content Task - Method Not implemented - [Documentation] Test ID: 5.3.6.6.5 + [Documentation] Test ID: 5.3.7.6.5 ... Test title: PATCH Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -64,7 +64,7 @@ PATCH Build VNF Snapshot Package Content Task - Method Not implemented Check HTTP Response Status Code Is 405 DELETE Build VNF Snapshot Package Content Task - Method Not implemented - [Documentation] Test ID: 5.3.6.6.6 + [Documentation] Test ID: 5.3.7.6.6 ... Test title: DELETE Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot b/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot index 7e9f6829b..439d4cc14 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot @@ -3,7 +3,7 @@ Resource VnfSnapshotPackageManagementKeywords.robot *** Test Cases *** POST Cancel VNF Snapshot Package Content Task - [Documentation] Test ID: 5.3.6.8.1 + [Documentation] Test ID: 5.3.7.8.1 ... Test title: POST Cancel VNF Snapshot Package Content Task ... Test objective: The objective is to test that POST method provides the information for the NFVO to cancel the ongoing operation related to the content of a VNF snapshot package. ... Pre-conditions: none @@ -15,7 +15,7 @@ POST Cancel VNF Snapshot Package Content Task Check HTTP Response Status Code Is 202 POST Cancel VNF Snapshot Package Content Task - Conflict - [Documentation] Test ID: 5.3.6.8.2 + [Documentation] Test ID: 5.3.7.8.2 ... Test title: POST Cancel VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to cancel a VNF Snapshot Package task and the state of the VNF snapshot package resource is other than "UPLOADING", "BUILDING", "PROCESSING" or "EXTRACTING". ... Pre-conditions: none @@ -28,7 +28,7 @@ POST Cancel VNF Snapshot Package Content Task - Conflict Check HTTP Response Body Json Schema Is ProblemDetails GET Cancel VNF Snapshot Package Content Task - Method Not implemented - [Documentation] Test ID: 5.3.6.8.3 + [Documentation] Test ID: 5.3.7.8.3 ... Test title: GET Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none @@ -40,7 +40,7 @@ GET Cancel VNF Snapshot Package Content Task - Method Not implemented Check HTTP Response Status Code Is 405 PUT Cancel VNF Snapshot Package Content Task - Method Not implemented - [Documentation] Test ID: 5.3.6.8.4 + [Documentation] Test ID: 5.3.7.8.4 ... Test title: PUT Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -52,7 +52,7 @@ PUT Cancel VNF Snapshot Package Content Task - Method Not implemented Check HTTP Response Status Code Is 405 PATCH Cancel VNF Snapshot Package Content Task - Method Not implemented - [Documentation] Test ID: 5.3.6.8.5 + [Documentation] Test ID: 5.3.7.8.5 ... Test title: PATCH Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -64,7 +64,7 @@ PATCH Cancel VNF Snapshot Package Content Task - Method Not implemented Check HTTP Response Status Code Is 405 DELETE Cancel VNF Snapshot Package Content Task - Method Not implemented - [Documentation] Test ID: 5.3.6.8.6 + [Documentation] Test ID: 5.3.7.8.6 ... Test title: DELETE Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot b/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot index 2a5ec3d06..aceaff8c0 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot @@ -3,7 +3,7 @@ Resource VnfSnapshotPackageManagementKeywords.robot *** Test Cases *** POST Extract VNF Snapshot Package Content Task - [Documentation] Test ID: 5.3.6.7.1 + [Documentation] Test ID: 5.3.7.7.1 ... Test title: POST Extract VNF Snapshot Package Content Task ... Test objective: The objective is to test that POST method provides the information for the NFVO to start extracting the content of a VNF snapshot package. ... Pre-conditions: none @@ -15,7 +15,7 @@ POST Extract VNF Snapshot Package Content Task Check HTTP Response Status Code Is 202 POST Extract VNF Snapshot Package Content Task - Conflict State - [Documentation] Test ID: 5.3.6.7.2 + [Documentation] Test ID: 5.3.7.7.2 ... Test title: POST Extract VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate extraction of VNF Snapshot Package and the state of the VNF snapshot package resource is other than "AVAILABLE". ... Pre-conditions: none @@ -28,7 +28,7 @@ POST Extract VNF Snapshot Package Content Task - Conflict State Check HTTP Response Body Json Schema Is ProblemDetails POST Extract VNF Snapshot Package Content Task - Invalid VnfInstanceId - [Documentation] Test ID: 5.3.6.7.3 + [Documentation] Test ID: 5.3.7.7.3 ... Test title: POST Extract VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate extraction of VNF Snapshot Package using an invalid VnfInstanceId in the request body. ... Pre-conditions: none @@ -41,7 +41,7 @@ POST Extract VNF Snapshot Package Content Task - Invalid VnfInstanceId Check HTTP Response Body Json Schema Is ProblemDetails GET Extract VNF Snapshot Package Content Task - Method Not implemented - [Documentation] Test ID: 5.3.6.7.4 + [Documentation] Test ID: 5.3.7.7.4 ... Test title: GET Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none @@ -53,7 +53,7 @@ GET Extract VNF Snapshot Package Content Task - Method Not implemented Check HTTP Response Status Code Is 405 PUT Extract VNF Snapshot Package Content Task - Method Not implemented - [Documentation] Test ID: 5.3.6.7.5 + [Documentation] Test ID: 5.3.7.7.5 ... Test title: PUT Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -65,7 +65,7 @@ PUT Extract VNF Snapshot Package Content Task - Method Not implemented Check HTTP Response Status Code Is 405 PATCH Extract VNF Snapshot Package Content Task - Method Not implemented - [Documentation] Test ID: 5.3.6.7.6 + [Documentation] Test ID: 5.3.7.7.6 ... Test title: PATCH Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -77,7 +77,7 @@ PATCH Extract VNF Snapshot Package Content Task - Method Not implemented Check HTTP Response Status Code Is 405 DELETE Extract VNF Snapshot Package Content Task - Method Not implemented - [Documentation] Test ID: 5.3.6.7.7 + [Documentation] Test ID: 5.3.7.7.7 ... Test title: DELETE Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot index 8ab4bde6d..2200ca054 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot @@ -3,7 +3,7 @@ Resource VnfSnapshotPackageManagementKeywords.robot *** Test Cases *** POST Individual VNF Snapshot Package - Method not implemented - [Documentation] Test ID: 5.3.6.3.1 + [Documentation] Test ID: 5.3.7.3.1 ... Test title: POST Individual VNF Snapshot Package - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -15,7 +15,7 @@ POST Individual VNF Snapshot Package - Method not implemented Check HTTP Response Status Code Is 405 GET Information about an individual VNF Snapshot Package - SUCCESSFUL - [Documentation] Test ID: 5.3.6.3.2 + [Documentation] Test ID: 5.3.7.3.2 ... Test title: GET Information about an individual VNF Snapshot Package - SUCCESSFUL ... Test objective: The objective is to create a new VNF Snapshot Package resource ... Pre-conditions: none @@ -28,7 +28,7 @@ GET Information about an individual VNF Snapshot Package - SUCCESSFUL Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfo GET Information about an individual VNF Snapshot Package - NOT FOUND - [Documentation] Test ID: 5.3.6.3.3 + [Documentation] Test ID: 5.3.7.3.3 ... Test title: GET Information about an individual VNF Snapshot Package - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot Package fails when using an invalid resource identifier. ... Pre-conditions: At least one individual VNF Snapshot Package is available in the NFV-MANO. @@ -41,7 +41,7 @@ GET Information about an individual VNF Snapshot Package - NOT FOUND Check HTTP Response Body Json Schema Is ProblemDetails PUT Individual VNF Snapshot Package - Method not implemented - [Documentation] Test ID: 5.3.6.3.4 + [Documentation] Test ID: 5.3.7.3.4 ... Test title: PUT Individual VNF Snapshot Package - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -53,7 +53,7 @@ PUT Individual VNF Snapshot Package - Method not implemented Check HTTP Response Status Code Is 405 PATCH Individual VNF Snapshot Package - Modified - [Documentation] Test ID: 5.3.6.3.5 + [Documentation] Test ID: 5.3.7.3.5 ... Test title: PATCH Individual VNF Snapshot Package - Modified ... Test objective: The objective is to test that PATCH method updates the information of a VNF Snapshot package ... Pre-conditions: none @@ -66,7 +66,7 @@ PATCH Individual VNF Snapshot Package - Modified Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfoModifications PATCH Individual VNF Snapshot Package - Conflict - [Documentation] Test ID: 5.3.6.3.6 + [Documentation] Test ID: 5.3.7.3.6 ... Test title: PATCH Individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that PATCH method does not update the information of a VNF Snapshot package when the state of the VNF snapshot package resource is in a state other than CREATED, ERROR_EXTRACTING or AVAILABLE. ... Pre-conditions: none @@ -79,7 +79,7 @@ PATCH Individual VNF Snapshot Package - Conflict Check HTTP Response Body Json Schema Is ProblemDetails DELETE Individual VNF Snapshot Package - [Documentation] Test ID: 5.3.6.3.7 + [Documentation] Test ID: 5.3.7.3.7 ... Test title: DELETE Individual VNF Snapshot Package ... Test objective: The objective is to test that DELETE method deletes an individual VNF Snapshot Package resource ... Pre-conditions: none @@ -91,7 +91,7 @@ DELETE Individual VNF Snapshot Package Check HTTP Response Status Code Is 204 DELETE Individual VNF Snapshot Package - Conflict - [Documentation] Test ID: 5.3.6.3.8 + [Documentation] Test ID: 5.3.7.3.8 ... Test title: DELETE Individual VNF Snapshot Package - Method Not im ... Test objective: The objective is to test that DELETE method does not delete a VNF Snapshot package when the state of the VNF snapshot package resource is in a state other than CREATED, ERROR or AVAILABLE. ... Pre-conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot index 2ffa83338..c0241349a 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot @@ -3,7 +3,7 @@ Resource VnfSnapshotPackageManagementKeywords.robot *** Test Cases *** POST Individual VNF Snapshot Package Artifact - Method not implemented - [Documentation] Test ID: 5.3.6.10.1 + [Documentation] Test ID: 5.3.7.10.1 ... Test title: POST Individual VNF Snapshot Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -15,7 +15,7 @@ POST Individual VNF Snapshot Package Artifact - Method not implemented Check HTTP Response Status Code Is 405 GET Individual VNF Snapshot Package Artifact - Complete File - [Documentation] Test ID: 5.3.6.10.2 + [Documentation] Test ID: 5.3.7.10.2 ... Test title: GET Information about an individual VNF Snapshot Package - Complete File ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. ... Pre-conditions: none @@ -28,7 +28,7 @@ GET Individual VNF Snapshot Package Artifact - Complete File Check HTTP Content-Type Header Is Set For Package Artifact GET Individual VNF Snapshot Package Artifact - Partial Content - [Documentation] Test ID: 5.3.6.10.3 + [Documentation] Test ID: 5.3.7.10.3 ... Test title: GET Individual VNF Snapshot Package Artifact - Partial Content ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. ... Pre-conditions: none @@ -42,7 +42,7 @@ GET Individual VNF Snapshot Package Artifact - Partial Content Check HTTP Content-Range Header Is Set GET Individual VNF Snapshot Package Artifact - Range Request Not Supported - [Documentation] Test ID: 5.3.6.10.4 + [Documentation] Test ID: 5.3.7.10.4 ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. ... Pre-conditions: none @@ -55,7 +55,7 @@ GET Individual VNF Snapshot Package Artifact - Range Request Not Supported Check HTTP Content-Type Header Is Set For Package Artifact GET Individual VNF Snapshot Package Artifact - Range Not Satisfiable - [Documentation] Test ID: 5.3.6.10.5 + [Documentation] Test ID: 5.3.7.10.5 ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. ... Pre-conditions: none @@ -67,7 +67,7 @@ GET Individual VNF Snapshot Package Artifact - Range Not Satisfiable Check HTTP Response Status Code Is 416 GET Individual VNF Snapshot Package Artifact - Conflict - [Documentation] Test ID: 5.3.6.10.6 + [Documentation] Test ID: 5.3.7.10.6 ... Test title: GET Information about an individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Pre-conditions: none @@ -80,7 +80,7 @@ GET Individual VNF Snapshot Package Artifact - Conflict Check HTTP Response Body Json Schema Is ProblemDetails GET Individual VNF Snapshot Package Artifact - External Artifact - [Documentation] Test ID: 5.3.6.10.7 + [Documentation] Test ID: 5.3.7.10.7 ... Test title: GET Information about an individual VNF Snapshot Package - External Artifact ... Test objective: The objective is to test that correct response code is returned the referred "Individual VNF Snapshot package artifact" is external to the main VNF snapshot package file created from a build process. ... Pre-conditions: none @@ -93,7 +93,7 @@ GET Individual VNF Snapshot Package Artifact - External Artifact Check HTTP Response Contains Resource URI PUT Individual VNF Snapshot Package Artifact - Method not implemented - [Documentation] Test ID: 5.3.6.10.8 + [Documentation] Test ID: 5.3.7.10.8 ... Test title: PUT Individual VNF Snapshot Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -105,7 +105,7 @@ PUT Individual VNF Snapshot Package Artifact - Method not implemented Check HTTP Response Status Code Is 405 PATCH Individual VNF Snapshot Package Artifact - Method Not implemented - [Documentation] Test ID: 5.3.6.10.9 + [Documentation] Test ID: 5.3.7.10.9 ... Test title: PATCH Individual VNF Snapshot Package Artifact ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -117,7 +117,7 @@ PATCH Individual VNF Snapshot Package Artifact - Method Not implemented Check HTTP Response Status Code Is 405 DELETE Individual VNF Snapshot Package Artifact - Method Not implemented - [Documentation] Test ID: 5.3.6.10.10 + [Documentation] Test ID: 5.3.7.10.10 ... Test title: DELETE Individual VNF Snapshot Package Artifact - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot b/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot index 4d4a00a69..74d13ee52 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot @@ -3,7 +3,7 @@ Resource VnfSnapshotPackageManagementKeywords.robot *** Test Cases *** POST Upload VNF Snapshot Package Content from URI - [Documentation] Test ID: 5.3.6.5.1 + [Documentation] Test ID: 5.3.7.5.1 ... Test title: POST Upload VNF Snapshot Package Content from URI ... Test objective: The objective is to test that POST method provides the information for the NFVO to get the content of a VNF snapshot package. ... Pre-conditions: none @@ -15,7 +15,7 @@ POST Upload VNF Snapshot Package Content from URI Check HTTP Response Status Code Is 202 POST Upload VNF Snapshot Package Content from URI - Conflict - [Documentation] Test ID: 5.3.6.5.2 + [Documentation] Test ID: 5.3.7.5.2 ... Test title: POST Upload VNF Snapshot Package Content from URI - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate upload VNF Snapshot Package from URI task and the state of the VNF snapshot package resource is other than "CREATED" or "ERROR". ... Pre-conditions: none @@ -28,7 +28,7 @@ POST Upload VNF Snapshot Package Content from URI - Conflict Check HTTP Response Body Json Schema Is ProblemDetails GET Upload VNF Snapshot Package Content from URI - Method Not implemented - [Documentation] Test ID: 5.3.6.5.3 + [Documentation] Test ID: 5.3.7.5.3 ... Test title: GET Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none @@ -40,7 +40,7 @@ GET Upload VNF Snapshot Package Content from URI - Method Not implemented Check HTTP Response Status Code Is 405 PUT Upload VNF Snapshot Package Content from URI - Method Not implemented - [Documentation] Test ID: 5.3.6.5.4 + [Documentation] Test ID: 5.3.7.5.4 ... Test title: PUT Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -52,7 +52,7 @@ PUT Upload VNF Snapshot Package Content from URI - Method Not implemented Check HTTP Response Status Code Is 405 PATCH Upload VNF Snapshot Package Content from URI - Method Not implemented - [Documentation] Test ID: 5.3.6.5.5 + [Documentation] Test ID: 5.3.7.5.5 ... Test title: PATCH Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -64,7 +64,7 @@ PATCH Upload VNF Snapshot Package Content from URI - Method Not implemented Check HTTP Response Status Code Is 405 DELETE Upload VNF Snapshot Package Content from URI - Method Not implemented - [Documentation] Test ID: 5.3.6.5.6 + [Documentation] Test ID: 5.3.7.5.6 ... Test title: DELETE Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot index 7d9cca275..14b738274 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot @@ -3,7 +3,7 @@ Resource VnfSnapshotPackageManagementKeywords.robot *** Test Cases *** POST VNF Snapshot Package Content - Method not implemented - [Documentation] Test ID: 5.3.6.4.1 + [Documentation] Test ID: 5.3.7.4.1 ... Test title: POST VNF Snapshot Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -15,7 +15,7 @@ POST VNF Snapshot Package Content - Method not implemented Check HTTP Response Status Code Is 405 GET VNF Snapshot Package Content - Complete File - [Documentation] Test ID: 5.3.6.4.2 + [Documentation] Test ID: 5.3.7.4.2 ... Test title: GET Information about an individual VNF Snapshot Package - Complete File ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. ... Pre-conditions: none @@ -28,7 +28,7 @@ GET VNF Snapshot Package Content - Complete File Check HTTP Content-Type Header Is Set For Package Content GET VNF Snapshot Package Content - Partial Content - [Documentation] Test ID: 5.3.6.4.3 + [Documentation] Test ID: 5.3.7.4.3 ... Test title: GET VNF Snapshot Package Content - Partial Content ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. ... Pre-conditions: none @@ -42,7 +42,7 @@ GET VNF Snapshot Package Content - Partial Content Check HTTP Content-Range Header Is Set GET VNF Snapshot Package Content - Range Request Not Supported - [Documentation] Test ID: 5.3.6.4.4 + [Documentation] Test ID: 5.3.7.4.4 ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. ... Pre-conditions: none @@ -55,7 +55,7 @@ GET VNF Snapshot Package Content - Range Request Not Supported Check HTTP Content-Type Header Is Set For Package Content GET VNF Snapshot Package Content - Range Not Satisfiable - [Documentation] Test ID: 5.3.6.4.5 + [Documentation] Test ID: 5.3.7.4.5 ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. ... Pre-conditions: none @@ -67,7 +67,7 @@ GET VNF Snapshot Package Content - Range Not Satisfiable Check HTTP Response Status Code Is 416 GET VNF Snapshot Package Content - Conflict - [Documentation] Test ID: 5.3.6.4.6 + [Documentation] Test ID: 5.3.7.4.6 ... Test title: GET Information about an individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Pre-conditions: none @@ -80,7 +80,7 @@ GET VNF Snapshot Package Content - Conflict Check HTTP Response Body Json Schema Is ProblemDetails PUT VNF Snapshot Package Content - [Documentation] Test ID: 5.3.6.4.7 + [Documentation] Test ID: 5.3.7.4.7 ... Test title: PUT VNF Snapshot Package Content ... Test objective: The objective is to test that PUT method uploads the content of VNF Snapshot Package. ... Pre-conditions: none @@ -92,7 +92,7 @@ PUT VNF Snapshot Package Content Check HTTP Response Status Code Is 202 PUT VNF Snapshot Package Content - Conflict - [Documentation] Test ID: 5.3.6.4.8 + [Documentation] Test ID: 5.3.7.4.8 ... Test title: PUT VNF Snapshot Package Content ... Test objective: The objective is to test that PUT method cannot upload the content of VNF Package when the state of the VNF snapshot package resource is other than "CREATED" or "ERROR".. ... Pre-conditions: none @@ -105,7 +105,7 @@ PUT VNF Snapshot Package Content - Conflict Check HTTP Response Body Json Schema Is ProblemDetails PATCH VNF Snapshot Package Content - Method Not implemented - [Documentation] Test ID: 5.3.6.4.9 + [Documentation] Test ID: 5.3.7.4.9 ... Test title: PATCH VNF Snapshot Package Content ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -117,7 +117,7 @@ PATCH VNF Snapshot Package Content - Method Not implemented Check HTTP Response Status Code Is 405 DELETE VNF Snapshot Package Content - Method Not implemented - [Documentation] Test ID: 5.3.6.4.10 + [Documentation] Test ID: 5.3.7.4.10 ... Test title: DELETE VNF Snapshot Package Content - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot index e1c053128..7a6c51d84 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot @@ -3,7 +3,7 @@ Resource VnfSnapshotPackageManagementKeywords.robot *** Test Cases *** POST Create a VNF Snapshot Package - [Documentation] Test ID: 5.3.6.2.1 + [Documentation] Test ID: 5.3.7.2.1 ... Test title: POST Create a VNF Snapshot Package ... Test objective: The objective is to test that POST method creates a VNF Snapshot Package ... Pre-conditions: none @@ -16,7 +16,7 @@ POST Create a VNF Snapshot Package Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfo GET information about multiple VNF Snapshot Packages - [Documentation] Test ID: 5.3.6.2.2 + [Documentation] Test ID: 5.3.7.2.2 ... Test title: GET information about multiple VNF Snapshot Packages ... Test objective: The objective is to get information about multiples VNF Snapshot Packages ... Pre-conditions: none @@ -29,7 +29,7 @@ GET information about multiple VNF Snapshot Packages Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute-based filtering parameters - [Documentation] Test ID: 5.3.6.2.3 + [Documentation] Test ID: 5.3.7.2.3 ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters ... Pre-conditions: none @@ -42,7 +42,7 @@ GET information about multiple VNF Snapshot Packages Bad Request Invalid attribu Check HTTP Response Body Json Schema Is ProblemDetails GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute selector - [Documentation] Test ID: 5.3.6.2.4 + [Documentation] Test ID: 5.3.7.2.4 ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters ... Pre-conditions: none @@ -55,7 +55,7 @@ GET information about multiple VNF Snapshot Packages Bad Request Invalid attribu Check HTTP Response Body Json Schema Is ProblemDetails GET information about multiple VNF Snapshot Packages with "all_fields" attribute selector - [Documentation] Test ID: 5.3.6.2.5 + [Documentation] Test ID: 5.3.7.2.5 ... Test title: GET information about multiple VNF Snapshot Packages with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none @@ -68,7 +68,7 @@ GET information about multiple VNF Snapshot Packages with "all_fields" attribute Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos GET information about multiple VNF Snapshot Packages with "exclude_default" attribute selector - [Documentation] Test ID: 5.3.6.2.6 + [Documentation] Test ID: 5.3.7.2.6 ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none @@ -81,7 +81,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_default" attr Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos GET information about multiple VNF Snapshot Packages with "fields" attribute selector - [Documentation] Test ID: 5.3.6.2.7 + [Documentation] Test ID: 5.3.7.2.7 ... Test title: GET information about multiple VNF Snapshot Packages with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none @@ -94,7 +94,7 @@ GET information about multiple VNF Snapshot Packages with "fields" attribute sel Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos GET information about multiple VNF Snapshot Packages with "exclude_default" and "fields" attribute selector - [Documentation] Test ID: 5.3.6.2.8 + [Documentation] Test ID: 5.3.7.2.8 ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none @@ -107,7 +107,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_default" and Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos GET information about multiple VNF Snapshot Packages with "exclude_fields" attribute selector - [Documentation] Test ID: 5.3.6.2.9 + [Documentation] Test ID: 5.3.7.2.9 ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none @@ -120,7 +120,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_fields" attri Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos GET VNF Snapshot Packages - Bad Request Response too Big - [Documentation] Test ID: 5.3.6.2.10 + [Documentation] Test ID: 5.3.7.2.10 ... Test title: GET VNF Snapshot Packages - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing VNF Snapshot Packages list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none @@ -133,7 +133,7 @@ GET VNF Snapshot Packages - Bad Request Response too Big Check HTTP Response Body Json Schema Is ProblemDetails GET VNF Snapshot Packages as Paged Response - [Documentation] Test ID: 5.3.6.2.11 + [Documentation] Test ID: 5.3.7.2.11 ... Test title: GET VNF Snapshot Packages as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshot Packages as paged response. ... Pre-conditions: none @@ -146,7 +146,7 @@ GET VNF Snapshot Packages as Paged Response Check HTTP Response Header Contains Link PUT VNF Snapshot Packages - Method not implemented - [Documentation] Test ID: 5.3.6.2.12 + [Documentation] Test ID: 5.3.7.2.12 ... Test title: PUT VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -158,7 +158,7 @@ PUT VNF Snapshot Packages - Method not implemented Check HTTP Response Status Code Is 405 PATCH VNF Snapshot Packages - Method not implemented - [Documentation] Test ID: 5.3.6.2.13 + [Documentation] Test ID: 5.3.7.2.13 ... Test title: PATCH VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -170,7 +170,7 @@ PATCH VNF Snapshot Packages - Method not implemented Check HTTP Response Status Code Is 405 DELETE VNF Snapshot Packages - Method not implemented - [Documentation] Test ID: 5.3.6.2.14 + [Documentation] Test ID: 5.3.7.2.14 ... Test title: DELETE VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none @@ -180,3 +180,16 @@ DELETE VNF Snapshot Packages - Method not implemented ... Post-Conditions: VNF snapshot package is not deleted DELETE VNF Snapshot Packages Check HTTP Response Status Code Is 405 + +GET information about multiple VNF Snapshot Packages with Filter + [Documentation] Test ID: 5.3.7.2.15 + ... Test title: GET information about multiple VNF Snapshot Packages with Filter + ... Test objective: The objective is to get information about multiples VNF Snapshot Packages using filter + ... Pre-conditions: none + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages using filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos \ No newline at end of file diff --git a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index 1025fefec..3c5a616bc 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -124,15 +124,24 @@ GET multiple VNF Snapshot Packages with bad filter Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?fields=wrong_field + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?${filter_ko} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +GET multiple VNF Snapshot Packages using filter + Log Query VNF The GET method queries information about multiple VNF Snapshot Packages using filter + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?${filter_ok} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET multiple VNF Snapshot Packages with all_fields attribute selector Log Query status information about multiple VNF Snapshot Packages, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?all_fields ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt b/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt index 0c2117dd2..7c7acc135 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt @@ -57,7 +57,7 @@ ${erroneousVnfPackageId} erroneousVnfPackageId # Given ID for vnfPkg not p ${erroneousVnfdId} erroneousVnfdId -${filter_ok} callbackUri=http://172.22.1.7:9091/vnfpkgm/subscriptions +${filter_ok} id=f9f130e4-05eb-4082-a676-4c97d13a883d ${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based ${SEPERATOR} = diff --git a/SOL005/VNFSnapshotPackageManagement-API/schemas/ProblemDetails.schema.json b/SOL005/VNFSnapshotPackageManagement-API/schemas/ProblemDetails.schema.json new file mode 100644 index 000000000..c6156efbe --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/schemas/ProblemDetails.schema.json @@ -0,0 +1,32 @@ +{ + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } +} \ No newline at end of file -- GitLab From 02dd94c831f23bc967420388956fda93d58f53fb Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 16:04:05 +0500 Subject: [PATCH 346/580] minor fix in variable value --- .../VNFSnapshotPackageManagement-API/environment/variables.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt b/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt index 7c7acc135..3bdb6092b 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt @@ -89,7 +89,7 @@ ${length} 1024 ${POS_FILTER} vnfdId=41fdd38a-3d4c-465c-83e0-f80e014425f8 ,vnfProvider=NXW # Positive case, suing compiant fields name for filtering get request ${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field -${fields} softwareImages,additionalArtifacts +${fields} additionalArtifacts,failureDetails ${VAR_SEPERATOR} & ${callbackResp} localhost -- GitLab From 574612a70bb171f7f409b758bf45f9fc3c0998b4 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 17:02:51 +0500 Subject: [PATCH 347/580] fixed Content-Range and Content-Length checks --- .../IndividualVNFSnapshotPackageArtifact.robot | 1 + .../VNFSnapshotPackageContent.robot | 1 + .../VnfSnapshotPackageManagementKeywords.robot | 8 +++++++- .../environment/variables.txt | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot index c0241349a..37db5643f 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot @@ -40,6 +40,7 @@ GET Individual VNF Snapshot Package Artifact - Partial Content Check HTTP Response Status Code Is 206 Check HTTP Content-Type Header Is Set For Package Artifact Check HTTP Content-Range Header Is Set + Check HTTP Content-Length Header Is Set GET Individual VNF Snapshot Package Artifact - Range Request Not Supported [Documentation] Test ID: 5.3.7.10.4 diff --git a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot index 14b738274..bf1a14008 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot @@ -40,6 +40,7 @@ GET VNF Snapshot Package Content - Partial Content Check HTTP Response Status Code Is 206 Check HTTP Content-Type Header Is Set For Package Content Check HTTP Content-Range Header Is Set + Check HTTP Content-Length Header Is Set GET VNF Snapshot Package Content - Range Request Not Supported [Documentation] Test ID: 5.3.7.4.4 diff --git a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index 3c5a616bc..fd2074090 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -358,8 +358,14 @@ Check HTTP Content-Type Header Is Set For Package Content Check HTTP Content-Range Header Is Set Log Check Content-Range HTTP Header Should Contain ${response['headers']} Content-Range - Should Be Equal As Strings ${response['headers']['Content-Range']} ${range} + Should Be Equal As Strings ${response['headers']['Content-Range']} ${range}/${full_length} Log Header Content-Range is present + +Check HTTP Content-Length Header Is Set + Log Check Content-Length HTTP Header + Should Contain ${response['headers']} Content-Lenght + Should Be Equal As Strings ${response['headers']['Content-Length']} ${full_length} + Log Header Content-Length is present PUT VNF Snapshot Package Content log Trying to upload the contents of VNF Snapshot Package using PUT diff --git a/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt b/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt index 3bdb6092b..ea521e2b4 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFSnapshotPackageManagement-API/environment/variables.txt @@ -78,7 +78,7 @@ ${ext_artifactPath} artifactPath/external ${CONTENT_TYPE_OCTET} application/octet-stream ${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO ${range} bytes=0-1023 -${full_size} 2000 # Size of the requested artifact to be downloaded via partial downloads +${full_length} 2000 # Size of the requested artifact to be downloaded via partial downloads ${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes ${vnfPackageOctetStreamId} octetStreamPkgId ${vnfdOctetStreamId} octetStreamVnfdId -- GitLab From e2737f793ddf7b25b509b31c5627155b95788484 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Thu, 11 Mar 2021 12:42:58 +0500 Subject: [PATCH 348/580] fixed inconsistency in VNFSnapshotPackageManagement-API: VnfSnapshotPkgExtArtifactsAccessInfo --> VnfSnapshotPkgExtArtifactsAccessConfig --- ...essConfigurationForExternalArtifacts.robot | 4 +- ...VnfSnapshotPackageManagementKeywords.robot | 6 +- ...hotPkgExtArtifactsAccessConfig.schema.json | 68 +++++++++++++++++++ 3 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgExtArtifactsAccessConfig.schema.json diff --git a/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot b/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot index cad4a06c6..47e424066 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot @@ -25,7 +25,7 @@ GET Access Configuration for External Artifacts ... Post-Conditions: none GET Access Configuration for External Artifacts Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is VnfSnapshotPkgExtArtifactsAccessInfo + Check HTTP Response Body Json Schema Is VnfSnapshotPkgExtArtifactsAccessConfig PUT Access Configuration for External Artifacts [Documentation] Test ID: 5.3.7.9.3 @@ -38,7 +38,7 @@ PUT Access Configuration for External Artifacts ... Post-Conditions: none PUT Access Configuration for External Artifacts Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is VnfSnapshotPkgExtArtifactsAccessInfo + Check HTTP Response Body Json Schema Is VnfSnapshotPkgExtArtifactsAccessConfig PUT Access Configuration for External Artifacts - Conflict [Documentation] Test ID: 5.3.7.9.4 diff --git a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index fd2074090..165ffc5bb 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -774,7 +774,8 @@ PUT Access Configuration for External Artifacts Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${body}= Get File jsons/VnfSnapshotPkgExtArtifactsAccessInfo.json + ${template}= Get File jsons/VnfSnapshotPkgExtArtifactsAccessConfig.json + ${body}= Format String ${template} artifactUri=${ext_artifactPath} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/ext_artifacts_access ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -785,7 +786,8 @@ PUT Access Configuration for External Artifacts - Conflict Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${body}= Get File jsons/VnfSnapshotPkgExtArtifactsAccessInfo.json + ${template}= Get File jsons/VnfSnapshotPkgExtArtifactsAccessConfig.json + ${body}= Format String ${template} artifactUri=${ext_artifactPath} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/ext_artifacts_access ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgExtArtifactsAccessConfig.schema.json b/SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgExtArtifactsAccessConfig.schema.json new file mode 100644 index 000000000..f6252a508 --- /dev/null +++ b/SOL005/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgExtArtifactsAccessConfig.schema.json @@ -0,0 +1,68 @@ +{ + "description": "This type represents the access configuration information for downloading external VNF snapshot package artifacts. The NFVO can obtain the external VNF snapshot package artifact file through the information provided in this structure, together with information provided in the manifest. The data structure shall comply with the provisions defined in Table 11.5.2.9-1. If the data structure is part of a response body, security-sensitive attributes shall be excluded as specified in Table 11.5.2.9-1.\n", + "type": "object", + "properties": { + "artifact": { + "description": "Access configuration information for an external artifact.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "artifactUri" + ], + "properties": { + "artifactUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "overrideUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "authType": { + "description": "Defines the type of authentication / authorization for downloading the VNF package.\nPermitted values: - BASIC: Only the \"username\" and \"password\" attributes shall be present. - OAUTH2_CLIENT_CREDENTIALS: Only the \"paramsOauth2ClientCredentials\" attribute shall be present.\nThis attribute shall not be present if no credentials are provided for the artifact.\n", + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS" + ] + }, + "username": { + "description": "Username to be used for authentication.\n", + "type": "string" + }, + "password": { + "description": "Password to be used for authentication. Shall not be present in response bodies.\n", + "type": "string" + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS.\n", + "type": "object", + "required": [ + "clientId", + "clientPassword", + "tokenEndpoint" + ], + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall not be present in response bodies.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + } + } + } + } + } + } + } +} \ No newline at end of file -- GitLab From d1024d3a603c6fab79a4c03c5576c870f489703e Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 3 Mar 2021 19:34:28 +0500 Subject: [PATCH 349/580] added new resources in VNFLifecycleManagement-API --- .../ChangeCurrentVNFPackageTask.robot | 91 + .../CreateVNFSnapshotTask.robot | 117 ++ .../RevertToVNFSnapshotTask.robot | 104 ++ .../VNFInstances.robot | 49 +- .../VNFSnapshots.robot | 183 ++ .../VnfLcmMntOperationKeywords.robot | 301 +++- .../environment/variables.txt | 9 +- .../jsons/CreateVnfSnapshotInfoRequest.json | 3 + .../jsons/CreateVnfSnapshotRequest.json | 3 + .../jsons/RevertToVnfSnapshotRequest.json | 5 + .../jsons/changeCurrentVnfPkgRequest.json | 20 + .../jsons/createVnfRequest.json | 8 +- .../schemas/VnfSnapshotInfo.schema.json | 1542 ++++++++++++++++ .../schemas/VnfSnapshotsInfo.schema.json | 1546 +++++++++++++++++ 14 files changed, 3954 insertions(+), 27 deletions(-) create mode 100644 SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot create mode 100644 SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot create mode 100644 SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot create mode 100644 SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot create mode 100644 SOL003/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotInfoRequest.json create mode 100644 SOL003/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotRequest.json create mode 100644 SOL003/VNFLifecycleManagement-API/jsons/RevertToVnfSnapshotRequest.json create mode 100644 SOL003/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json create mode 100644 SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json create mode 100644 SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json diff --git a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot new file mode 100644 index 000000000..b4939655d --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -0,0 +1,91 @@ +*** Settings *** +Resource VnfLcmMntOperationKeywords.robot +Resource environment/variables.txt +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existence + +*** Test Cases *** +POST Change current VNF Package Task + [Documentation] Test ID: 7.3.1.37.1 + ... Test title: POST Change current VNF Package Task + ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based. + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change Current VNF Package Task + Check HTTP Response Status Code Is 202 + Check HTTP Location Header Contains URI of Created Resource + +POST Change current VNF Package Task - Conflict + [Documentation] Test ID: 7.3.1.37.2 + ... Test title: POST Change current VNF Package Task - Conflict + ... Test objective: The objective is to test that the POST method cannot change the current VNF package task when another lifecycle management operation is ongoing. + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: There is another lifecycle management operation ongoing. + ... Post-Conditions: none + POST Change Current VNF Package Task + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Change current VNF Package Task - Method not implemented + [Documentation] Test ID: 7.3.1.37.3 + ... Test title: GET Change current VNF Package Task - Method not implemented + ... Test objective: The objective is to test that GET method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET Change Current VNF Package Task + Check HTTP Response Status Code Is 405 + +PUT Change current VNF Package Task - Method not implemented + [Documentation] Test ID: 7.3.1.37.4 + ... Test title: PUT Change current VNF Package Task - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT Change Current VNF Package Task + Check HTTP Response Status Code Is 405 + +PATCH Change current VNF Package Task - Method not implemented + [Documentation] Test ID: 7.3.1.37.5 + ... Test title: PATCH Change current VNF Package Task - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH Change Current VNF Package Task + Check HTTP Response Status Code Is 405 + +DELETE Change current VNF Package Task - Method not implemented + [Documentation] Test ID: 7.3.1.37.6 + ... Test title: DELETE Change current VNF Package Task - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE Change Current VNF Package Task + Check HTTP Response Status Code Is 405 + +*** Keywords *** +Check resource existence + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} + Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot new file mode 100644 index 000000000..9f13d0429 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -0,0 +1,117 @@ +*** Settings *** +Resource VnfLcmMntOperationKeywords.robot +Resource environment/variables.txt +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existence + +*** Test Cases *** +POST Create VNF Snapshot Task + [Documentation] Test ID: 7.3.1.38.1 + ... Test title: POST Create VNF Snapshot Task + ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance. + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Create VNF Snapshot Task + Check HTTP Response Status Code Is 202 + Check HTTP Location Header Contains URI of Created Resource + +POST Create VNF Snapshot Task - NOT FOUND + [Documentation] Test ID: 7.3.1.38.2 + ... Test title: POST Create VNF Snapshot Task - NOT FOUND + ... Test objective: The objective is to test that the POST method cannot request for a snapshot if the task is not supported for the VNF instance represented by the parent resource. + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: Task is not supported for the VNF instance represented by the parent resource. + ... Post-Conditions: none + POST Create VNF Snapshot Task NOT SUPPORTED + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Create VNF Snapshot Task - CONFLICT + [Documentation] Test ID: 7.3.1.38.3 + ... Test title: POST Create VNF Snapshot Task - CONFLICT + ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the VNF instance is in NOT_INSTANTIATED state. + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: VNF instance is in NOT_INSTANTIATED state. + ... Post-Conditions: none + POST Create VNF Snapshot Task VNF_NOT_INSTANTIATED + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Create VNF Snapshot Task - UNPROCESSIBLE ENTITY + [Documentation] Test ID: 7.3.1.38.4 + ... Test title: POST Create VNF Snapshot Task - UNPROCESSIBLE ENTITY + ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the provided identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. + ... Post-Conditions: none + POST Create VNF Snapshot Task INVALID IDENTIFIER + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Create VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 7.3.1.38.5 + ... Test title: GET Create VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that GET method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET Create VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +PUT Create VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 7.3.1.38.6 + ... Test title: PUT Create VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT Create VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +PATCH Create VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 7.3.1.38.7 + ... Test title: PATCH Create VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH Create VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +DELETE Create VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 7.3.1.38.8 + ... Test title: DELETE Create VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE Create VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +*** Keywords *** +Check resource existence + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} + Integer response status 200 diff --git a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot new file mode 100644 index 000000000..aaa0ccbdb --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -0,0 +1,104 @@ +*** Settings *** +Resource environment/variables.txt +Resource VnfLcmMntOperationKeywords.robot +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existence + +*** Test Cases *** +POST Revert to VNF Snapshot Task + [Documentation] Test ID: 7.3.1.38.1 + ... Test title: POST Revert to VNF Snapshot Task + ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot. + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Revert to VNF Snapshot Task + Check HTTP Response Status Code Is 202 + Check HTTP Location Header Contains URI of Created Resource + +POST Revert to VNF Snapshot Task - NOT FOUND + [Documentation] Test ID: 7.3.1.38.2 + ... Test title: POST Revert to VNF Snapshot Task - NOT FOUND + ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot if the task is not supported for the VNF instance represented by the parent resource. + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: Task is not supported for the VNF instance represented by the parent resource. + ... Post-Conditions: none + POST Revert to VNF Snapshot Task NOT SUPPORTED + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Revert to VNF Snapshot Task - CONFLICT + [Documentation] Test ID: 7.3.1.38.3 + ... Test title: POST Revert to VNF Snapshot Task - CONFLICT + ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot when the VNF instance is in NOT_INSTANTIATED state. + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: VNF instance is in NOT_INSTANTIATED state. + ... Post-Conditions: none + POST Revert to VNF Snapshot Task VNF_NOT_INSTANTIATED + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Revert to VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 7.3.1.38.4 + ... Test title: GET Revert to VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that GET method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET Revert to VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +PUT Revert to VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 7.3.1.38.5 + ... Test title: PUT Revert to VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT Revert to VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +PATCH Revert to VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 7.3.1.38.6 + ... Test title: PATCH Revert to VNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH Revert to VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +DELETE Revert to VNF Snapshot Task - Method not implemented + [Documentation] Test ID: 7.3.1.38.7 + ... Test title: DELETE Revert to sVNF Snapshot Task - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE Revert to VNF Snapshot Task + Check HTTP Response Status Code Is 405 + +*** Keywords *** +Check resource existence + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} + Integer response status 200 diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index fbf1f03db..c6af813df 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -13,7 +13,7 @@ POST Create a new vnfInstance ... Test title: POST Create a new vnfInstance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance created @@ -26,7 +26,7 @@ GET information about multiple VNF instances ... Test title: GET information about multiple VNF instances ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,8 +38,8 @@ GET information about multiple VNF instances Bad Request Invalid attribute-based [Documentation] Test ID: 7.3.1.1.3 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to query information about multiple VNF instances with Invalid attribute-based filtering parameters - ... Pre-conditions: A VNF is instantiated, a bad filter selector (filter selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v2.7.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Pre-conditions: A VNF is instantiated, a bad filter selector (filter selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v3.3.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,8 +52,8 @@ GET information about multiple VNF instances Bad Request Invalid attribute selec [Documentation] Test ID: 7.3.1.1.4 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute selector ... Test objective: The objective is to query information about multiple VNF instances with Invalid attribute selector - ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v2.7.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v3.3.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ GET information about multiple VNF instances with "all_fields" attribute selecto ... Test title: GET information about multiple VNF instances with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ GET information about multiple VNF instances with "exclude_default" attribute se ... Test title: GET information about multiple VNF instances with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ GET information about multiple VNF instances with "fields" attribute selector ... Test title: GET information about multiple VNF instances with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ GET information about multiple VNF instances with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF instances with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ PUT multiples VNFInstances - Method not implemented ... Test title: PUT multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ PATCH multiples VNFInstances - Method not implemented ... Test title: PATCH multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ DELETE VNFInstances - Method not implemented ... Test title: DELETE multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -154,7 +154,7 @@ GET information about multiple VNF instances to get Paged Response ... Test title: GET information about multiple VNF instances to get Paged Response ... Test objective: The objective is to query information about multiple VNF instances to get Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -166,8 +166,8 @@ GET information about multiple VNF instances - Bad Request Response too Big [Documentation] Test ID: 7.3.1.1.13 ... Test title: GET information about multiple VNF instances - Bad Request Response too Big ... Test objective: The objective is to query information about multiple VNF instances fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. - ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v2.7.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v3.3.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -180,10 +180,23 @@ GET information about multiple VNF instances with "exclude_default" and "fields" ... Test title: GET information about multiple VNF instances with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none GET multiple vnfInstances with exclude_default and fields attribute selector Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is vnfInstances \ No newline at end of file + Check HTTP Response Body Json Schema Is vnfInstances + +POST Create a new vnfInstance - Unprocessible Entity + [Documentation] Test ID: 7.3.1.1.15 + ... Test title: POST Create a new vnfInstance - Unprocessible Entity + ... Test objective: The objective is to test that correct error code is returned when VNF package referenced by the "vnfdId" attribute in the "CreateVnfRequest" structure is not in the "ENABLED" state or does not exist. + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNF package referenced by the "vnfdId" attribute in the "CreateVnfRequest" structure is not in the "ENABLED" state or does not exist. + ... Post-Conditions: none + POST Create a new vnfInstance - Not ENABLED + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot new file mode 100644 index 000000000..21fe53dd9 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -0,0 +1,183 @@ +*** Settings *** +Resource VnfLcmMntOperationKeywords.robot + +*** Test Cases *** +POST Create a new VNF Snapshot + [Documentation] Test ID: 7.3.1.38.1 + ... Test title: POST Create a new VNF Snapshot + ... Test objective: The objective is to create a new VNF snapshot + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF snapshot is created + POST Create a new VNF Snapshot + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is VnfSnapshotInfo + Check HTTP Location Header Contains URI of Created Resource + +GET information about multiple VNF Snapshots + [Documentation] Test ID: 7.3.1.38.2 + ... Test title: GET information about multiple VNF Snapshots + ... Test objective: The objective is to get information about multiples VNF snapshots + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 7.3.1.38.3 + ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters + ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with bad attribute + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF Snapshots Bad Request Invalid attribute selector + [Documentation] Test ID: 7.3.1.38.4 + ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute selector + ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with bad filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF Snapshots with "all_fields" attribute selector + [Documentation] Test ID: 7.3.1.38.5 + ... Test title: GET information about multiple VNF Snapshots with "all_fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots with "exclude_default" attribute selector + [Documentation] Test ID: 7.3.1.38.6 + ... Test title: GET information about multiple VNF Snapshots with "exclude_default" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots with "fields" attribute selector + [Documentation] Test ID: 7.3.1.38.7 + ... Test title: GET information about multiple VNF Snapshots with "fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 7.3.1.38.8 + ... Test title: GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET information about multiple VNF Snapshots with "exclude_fields" attribute selector + [Documentation] Test ID: 7.3.1.38.9 + ... Test title: GET information about multiple VNF Snapshots with "exclude_fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshots + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +GET VNF Snapshots - Bad Request Response too Big + [Documentation] Test ID: 7.3.1.38.10 + ... Test title: GET VNF Snapshots - Bad Request Response too Big + ... Test objective: The objective is test that the retrieval of existing VNF Snapshots list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: VNFM does not support paged response. + ... Post-Conditions: none + GET VNF Snapshots without Paging support + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET VNF Snapshots as Paged Response + [Documentation] Test ID: 7.3.1.38.11 + ... Test title: GET VNF Snapshots as Paged Response + ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshots as paged response. + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: VNFM supports paged response. + ... Post-Conditions: none + GET VNF Snapshots with Paging support + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +PUT VNF Snapshots - Method not implemented + [Documentation] Test ID: 7.3.1.38.12 + ... Test title: PUT VNF Snapshots - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT VNF Snapshots + Check HTTP Response Status Code Is 405 + +PATCH VNF Snapshots - Method not implemented + [Documentation] Test ID: 7.3.1.38.13 + ... Test title: PATCH VNF Snapshots - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH VNF Snapshots + Check HTTP Response Status Code Is 405 + +DELETE VNF Snapshots - Method not implemented + [Documentation] Test ID: 7.3.1.38.14 + ... Test title: DELETE VNF Snapshots - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF instance not deleted + DELETE VNF Snapshots + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index e157cac4b..2493217c7 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -412,9 +412,19 @@ POST Create a new vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Run Keyword If ${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} + ${body}= Format String ${template} vnfdId=${vnfdId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create a new vnfInstance - Not ENABLED + Log Create VNF instance by POST to /vnf_instances using vnfdId of a VNF Package which is not in ENABLED state or DNE. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/createVnfRequest.json + ${body}= Format String ${template} vnfdId=${vnfdId_notInEnabledState} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1574,5 +1584,292 @@ Match the VNF LCM Operation Occurence Response Attributes with Descriptors 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']} + +POST Change Current VNF Package Task + Log Trying to change current VNF package task. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/changeCurrentVnfPkgRequest.json + ${body}= Format String ${template} vnfdId=${vnfdId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Change Current VNF Package Task + log Trying to perform a GET. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Change Current VNF Package Task + log Trying to perform a PUT. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Change Current VNF Package Task + log Trying to perform a PATCH. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Change Current VNF Package Task + log Trying to perform a DELETE. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Location Header Contains URI of Created Resource + ${URI}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${URI} +*** Keywords *** + +POST Create VNF Snapshot Task + Log Trying to request a snapshot of a VNF instance + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CreateVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create VNF Snapshot Task NOT SUPPORTED + Log Trying to request a snapshot of a VNF instance for which task resource does not exist + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CreateVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId_NoSnapshotTask}/create_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create VNF Snapshot Task VNF_NOT_INSTANTIATED + Log Trying to request a snapshot of a VNF instance which is in NOT_INSTANTIATED state + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CreateVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/create_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create VNF Snapshot Task INVALID IDENTIFIER + Log Trying to request a snapshot of a VNF instance with invalid "Individual VNF Snapshot" resource identifier + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CreateVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${invalidVnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Create VNF Snapshot Task + log Trying to perform a GET. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Create VNF Snapshot Task + log Trying to perform a PUT. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Create VNF Snapshot Task + log Trying to perform a PATCH. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Create VNF Snapshot Task + log Trying to perform a DELETE. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Revert to VNF Snapshot Task + Log Trying to initiate revert to VNF snapshot task. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/RevertToVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Revert to VNF Snapshot Task NOT SUPPORTED + Log Trying to revert to a snapshot of a VNF instance for which task resource does not exist + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/RevertToVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId_NoSnapshotTask}/revert_to_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Revert to VNF Snapshot Task VNF_NOT_INSTANTIATED + Log Trying to revert to a snapshot of a VNF instance which is in NOT_INSTANTIATED state + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/RevertToVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/revert_to_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Revert to VNF Snapshot Task + log Trying to perform a GET. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Revert to VNF Snapshot Task + log Trying to perform a PUT. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Revert to VNF Snapshot Task + log Trying to perform a PATCH. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Revert to VNF Snapshot Task + log Trying to perform a DELETE. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create a new VNF Snapshot + Log Create VNF snapshot by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/CreateVnfSnapshotInfoRequest.json + ${body}= Format String ${template} vnfSnapshotPkgId=${vnfSnapshotPkgId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots + Log Query VNF The GET method queries information about multiple VNF snapshots. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots with bad attribute + Log Query VNF The GET method queries information about multiple VNF snapshots. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?attribute_not_exist=some_value + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots with bad filter + Log Query VNF The GET method queries information about multiple VNF snapshots. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=wrong_field + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots with all_fields attribute selector + Log Query status information about multiple VNF snapshots, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} +GET multiple VNF Snapshots with exclude_default attribute selector + Log Query status information about multiple VNF snapshots using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshots with fields attribute selector + Log Query status information about multiple VNF snapshots, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshots with exclude_default and fields attribute selector + Log Query status information about multiple VNF snapshots, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshots with exclude_fields attribute selector + Log Query status information about multiple VNF snapshots, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?exclude_fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET VNF Snapshots without Paging support + Run Keyword If ${PAGING_SUPPORTED} == 0 GET multiple VNF Snapshots + +GET VNF Snapshots with Paging support + Run Keyword If ${PAGING_SUPPORTED} == 1 GET multiple VNF Snapshots + +Check HTTP Response Header Contains Link + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + +PUT VNF Snapshots + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH VNF Snapshots + Log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE VNF Snapshots + Log Trying to perform a DELETE. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 116c942ab..1461ca192 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -12,7 +12,7 @@ ${CONTENT_TYPE_PATCH} application/merge-patch+json ${apiRoot} / ${apiName} vnflcm -${apiMajorVersion} v1 +${apiMajorVersion} v2 ${CancelMode} GRACEFUL ${VNFM_DUPLICATION} 0 @@ -35,6 +35,10 @@ ${notExistingVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${vnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${conflicVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${vnfInstanceId_NoSnapshotTask} no-snapshot-task-supported +${vnfSnapshotInfoId} +${invalidVnfSnapshotInfoId} +${vnfSnapshotPkgId} ${vnfLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d ${notExistingVnfLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d @@ -53,6 +57,8 @@ ${sub_filter_invalid} filter_invalid ${fields} criteria,objectInstanceIds +${PAGING_SUPPORTED} 1 + ${vnfInstanceName} Test-VnfInstance ${vnfInstanceDescription} description vnf ${vnfInstanceDescription_Update} Updated description vnf @@ -80,6 +86,7 @@ ${notification_response} [] ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar ${vnfdId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${vnfdId_notInEnabledState} vnfdId-which-is-not-in-ENABLED-state-or-DNE ${scaletype} SCALE_OUT ${scaleAspectId} myAspect diff --git a/SOL003/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotInfoRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotInfoRequest.json new file mode 100644 index 000000000..c16bca9c0 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotInfoRequest.json @@ -0,0 +1,3 @@ +{{ + "vnfSnapshotPkgId": "{vnfSnapshotPkgId}" +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotRequest.json new file mode 100644 index 000000000..55e7f94ce --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotRequest.json @@ -0,0 +1,3 @@ +{{ + "vnfSnapshotInfoId": "{vnfSnapshotInfoId}" +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/RevertToVnfSnapshotRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/RevertToVnfSnapshotRequest.json new file mode 100644 index 000000000..014b500d3 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/jsons/RevertToVnfSnapshotRequest.json @@ -0,0 +1,5 @@ +{{ + "vnfSnapshotInfoId": "{vnfSnapshotInfoId}", + "vnfcInstanceId": "", + "vnfcSnapshotInfoId": "" +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json new file mode 100644 index 000000000..521b2b647 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json @@ -0,0 +1,20 @@ +{{ + "vnfdId": "{vnfdId}", + "extVirtualLinks": [ + { + "id": "", + "vimConnectionId": "", + "resourceProviderId": "", + "resourceId": "" + } + ], + "extManagedVirtualLinks": [ + { + "id": "", + "vnfVirtualLinkDescId": "", + "resourceId": "" + } + ], + "additionalParams": {}, + "vnfConfigurableProperties": {} +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 15a5f7f7d..5e7ee7f30 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -1,9 +1,5 @@ {{ + "vnfdId": "{vnfdId}" "vnfInstanceName": "string", - "vnfInstanceDescription": "string", - "vnfdId": "{vnfdId}", - "vnfProvider":"{vnfProvider}", - "vnfProductName":"{vnfProductName}", - "vnfSoftwareVersion":"{vnfSoftwareVersion}", - "vnfdVersion":"{vnfdVersion}" + "vnfInstanceDescription": "string" }} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json new file mode 100644 index 000000000..63e536508 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json @@ -0,0 +1,1542 @@ +{ + "description": "This type represents an \"Individual VNF snapshot\" resource. It shall comply with the provisions defined in table 5.5.2.22-1.\n", + "type": "object", + "required": [ + "id", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshotPkgId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshot": { + "description": "This type represents a VNF snapshot. It shall comply with the provisions defined in table 5.5.2.23-1.\n", + "type": "object", + "required": [ + "id", + "vnfInstanceId", + "triggeredAt", + "vnfdId", + "vnfInfo", + "vnfcSnapshots" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstance": { + "description": "This type represents a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "instantiationState" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vimConnectionInfo": { + "description": "Information about VIM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if VNF-related resource management in direct mode is pplicable. This attribute can be modified with the PATCH method.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState" + ], + "properties": { + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [{ + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "extManagedVirtualLinkInfo": { + "description": "Information about the externally-managed internal VLs of the VNF instance.\nNOTE: It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.3).\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "extManagedMultisiteVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "monitoringParameters": { + "description": "Active monitoring parameters.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "virtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "Additional VNF-specific attributes that affect the lifecycle management of this VNF instance. These attributes represent values that are stored persistently in the VnfInstance structure for consumption by the VNFM or the lifecycle management scripts during the execution of VNF lifecycle management operations. All extensions that are allowed for the VNF are declared in the VNFD. The declaration of an extension in the VNFD contains information on whether its presence is optional or required, and optionally can specify an initial value. See note 2 and note 4. The VNFM shall reject requests to write extension attributes that are not declared in the VNFD with a \"422 Unprocessable entity\" error response as defined in clause 6.4 of ETSI GS NFV-SOL 013. Modifying the values of these attributes has no direct effect on the VNF instance; however, the modified attribute values can be considered during subsequent VNF lifecycle management operations, which means that the modified values can indirectly affect the configuration of the VNF instance. These attributes can be initialized with default values from the VNFD. These attributes can be modified with values passed in the request structures of certain LCM operations, such as the InstantiateVnfRequest structure. Further, these attributes can be created, modified or deleted with the PATCH method.\nNOTE: Upon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defineddeclared initial value shall not be created, in order to be consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null values as deletion request.\n" + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "indicators": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "instantiate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "terminate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scale": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scaleToLevel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeFlavour": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "heal": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "operate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeExtConn": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + }, + "vnfcSnapshots": { + "description": "Information about VNFC snapshots constituting this VNF snapshot.\n", + "type": "array", + "items": { + "description": "This type represents a VNFC snapshot.\n", + "type": "object", + "required": [ + "id", + "vnfcInstanceId", + "triggeredAt", + "vnfcResourceId" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "computeSnapshotResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "storageSnapshotResources": { + "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "storageResourceId" + ], + "properties": { + "storageResourceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "storageSnapshotResource": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfStateSnapshotInfo": { + "description": "This type represents information about VNF-specific state snapshot data.\n", + "type": "object", + "required": [ + "checksum", + "isEncrypted" + ], + "properties": { + "checksum": { + "description": "Checksum of the VNF state snapshot file. Hash algorithms applicable to VNF snapshot package artifacts are defined in ETSI GS NFV-SOL 010. $ref: \"../definitions/SOL002SOL003_def.yaml#/definitions/Checksum\"\n" + }, + "isEncrypted": { + "description": "Reflects whether the VNF state snapshot content is encrypted (true) or not (false). $ref: \"../definitions/SOL002SOL003_def.yaml#/definitions/Boolean\"\n" + }, + "metadata": { + "description": "The metadata with additional information such as content type, size, creation date, etc. $ref: \"../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs\"\n" + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfStateSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "takenFrom": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json new file mode 100644 index 000000000..8347ed0a5 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json @@ -0,0 +1,1546 @@ +{ + "type": "array", + "items": + { + "description": "This type represents an \"Individual VNF snapshot\" resource. It shall comply with the provisions defined in table 5.5.2.22-1.\n", + "type": "object", + "required": [ + "id", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshotPkgId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshot": { + "description": "This type represents a VNF snapshot. It shall comply with the provisions defined in table 5.5.2.23-1.\n", + "type": "object", + "required": [ + "id", + "vnfInstanceId", + "triggeredAt", + "vnfdId", + "vnfInfo", + "vnfcSnapshots" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstance": { + "description": "This type represents a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "instantiationState" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vimConnectionInfo": { + "description": "Information about VIM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if VNF-related resource management in direct mode is pplicable. This attribute can be modified with the PATCH method.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState" + ], + "properties": { + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [{ + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "extManagedVirtualLinkInfo": { + "description": "Information about the externally-managed internal VLs of the VNF instance.\nNOTE: It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.3).\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "extManagedMultisiteVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "monitoringParameters": { + "description": "Active monitoring parameters.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "virtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "Additional VNF-specific attributes that affect the lifecycle management of this VNF instance. These attributes represent values that are stored persistently in the VnfInstance structure for consumption by the VNFM or the lifecycle management scripts during the execution of VNF lifecycle management operations. All extensions that are allowed for the VNF are declared in the VNFD. The declaration of an extension in the VNFD contains information on whether its presence is optional or required, and optionally can specify an initial value. See note 2 and note 4. The VNFM shall reject requests to write extension attributes that are not declared in the VNFD with a \"422 Unprocessable entity\" error response as defined in clause 6.4 of ETSI GS NFV-SOL 013. Modifying the values of these attributes has no direct effect on the VNF instance; however, the modified attribute values can be considered during subsequent VNF lifecycle management operations, which means that the modified values can indirectly affect the configuration of the VNF instance. These attributes can be initialized with default values from the VNFD. These attributes can be modified with values passed in the request structures of certain LCM operations, such as the InstantiateVnfRequest structure. Further, these attributes can be created, modified or deleted with the PATCH method.\nNOTE: Upon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defineddeclared initial value shall not be created, in order to be consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null values as deletion request.\n" + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "indicators": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "instantiate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "terminate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scale": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scaleToLevel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeFlavour": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "heal": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "operate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeExtConn": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + }, + "vnfcSnapshots": { + "description": "Information about VNFC snapshots constituting this VNF snapshot.\n", + "type": "array", + "items": { + "description": "This type represents a VNFC snapshot.\n", + "type": "object", + "required": [ + "id", + "vnfcInstanceId", + "triggeredAt", + "vnfcResourceId" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "computeSnapshotResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "storageSnapshotResources": { + "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "storageResourceId" + ], + "properties": { + "storageResourceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "storageSnapshotResource": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfStateSnapshotInfo": { + "description": "This type represents information about VNF-specific state snapshot data.\n", + "type": "object", + "required": [ + "checksum", + "isEncrypted" + ], + "properties": { + "checksum": { + "description": "Checksum of the VNF state snapshot file. Hash algorithms applicable to VNF snapshot package artifacts are defined in ETSI GS NFV-SOL 010. $ref: \"../definitions/SOL002SOL003_def.yaml#/definitions/Checksum\"\n" + }, + "isEncrypted": { + "description": "Reflects whether the VNF state snapshot content is encrypted (true) or not (false). $ref: \"../definitions/SOL002SOL003_def.yaml#/definitions/Boolean\"\n" + }, + "metadata": { + "description": "The metadata with additional information such as content type, size, creation date, etc. $ref: \"../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs\"\n" + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfStateSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "takenFrom": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } +} \ No newline at end of file -- GitLab From 4fa6af5510300f1eb95936ac153bace8d5565e0e Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Thu, 4 Mar 2021 17:29:38 +0500 Subject: [PATCH 350/580] added new resources --- .../IndividualVNFSnapshot.robot | 117 ++ .../RevertToVNFSnapshotTask.robot | 14 +- .../VNFSnapshots.robot | 28 +- .../VNFStateSnapshot.robot | 115 ++ .../VnfLcmMntOperationKeywords.robot | 164 +- .../environment/variables.txt | 12 + .../VnfSnapshotInfoModificationRequest.json | 3 + .../VnfSnapshotInfoModifications.schema.json | 1499 +++++++++++++++++ 8 files changed, 1930 insertions(+), 22 deletions(-) create mode 100644 SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot create mode 100644 SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot create mode 100644 SOL003/VNFLifecycleManagement-API/jsons/VnfSnapshotInfoModificationRequest.json create mode 100644 SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot new file mode 100644 index 000000000..36db74796 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -0,0 +1,117 @@ +*** Settings *** +Resource VnfLcmMntOperationKeywords.robot + +*** Test Cases *** +POST Individual VNF Snapshot - Method not implemented + [Documentation] Test ID: 7.3.1.41.1 + ... Test title: POST Individual VNF Snapshot - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST individual VNF Snapshot + Check HTTP Response Status Code Is 405 + +GET Information about an individual VNF Snapshot - SUCCESSFUL + [Documentation] Test ID: 7.3.1.41.2 + ... Test title: GET Information about an individual VNF Snapshot - SUCCESSFUL + ... Test objective: The objective is to GET information about an individual VNF Snapshot + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual VNF Snapshot + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotInfo + +GET Information about an individual VNF Snapshot - NOT FOUND + [Documentation] Test ID: 7.3.1.41.3 + ... Test title: GET Information about an individual VNF Snapshot - NOT FOUND + ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot fails when using an invalid resource identifier. + ... Pre-conditions: At least one individual VNF Snapshot is available in the NFV-MANO. + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Snapshot with Invalid URI + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Individual VNF Snapshot - Method not implemented + [Documentation] Test ID: 7.3.1.41.4 + ... Test title: PUT Individual VNF Snapshot - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF Snapshot not modified + PUT individual VNF Snapshot + Check HTTP Response Status Code Is 405 + +PATCH Individual VNF Snapshot - Success + [Documentation] Test ID: 7.3.1.41.5 + ... Test title: PATCH Individual VNF Snapshot - Success + ... Test objective: The objective is to test that PATCH method successfully modifies an individual VNF Snapshot resource + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF Snapshot modified + PATCH individual VNF Snapshot + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotInfoModifications + +PATCH Individual VNF Snapshot - Conflict + [Documentation] Test ID: 7.3.1.41.6 + ... Test title: PATCH Individual VNF Snapshot - Success + ... Test objective: The objective is to test that PATCH method cannot modify an individual VNF Snapshot resource due to the fact that another modification is ongoing. + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The Individual VNF Snapshot resource is currently being modified due to an underlying VNF snapshot operation. + ... Post-Conditions: none + PATCH individual VNF Snapshot + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +PATCH Individual VNF Snapshot - Precondition Failed + [Documentation] Test ID: 7.3.1.41.7 + ... Test title: PATCH Individual VNF Snapshot - Precondition Failed + ... Test objective: The objective is to that the modification of individual VNF Snapshot fails because precondition given in an HTTP request header is not fulfilled due to an ETag mismatch. + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF snapshot is not modified + PATCH individual VNF Snapshot - ETag Mismatch + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails + +DELETE Individual VNF Snapshot + [Documentation] Test ID: 7.3.1.41.8 + ... Test title: DELETE Individual VNF Snapshot + ... Test objective: The objective is to delete a VNF Snapshot + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF Snapshot deleted + DELETE individual VNF Snapshot + Check HTTP Response Status Code Is 204 + +DELETE Individual VNF Snapshot - Conflict + [Documentation] Test ID: 7.3.1.41.9 + ... Test title: DELETE Individual VNF Snapshot Conflict + ... Test objective: The objective is to verify that The operation cannot be executed currently, due to a conflict with the state of the VNF Snapshot resource. + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: VNF snapshot is in use by some operation such as reverting a VNF instance to a VNF snapshot or creating a VNF snapshot package. + ... Post-Conditions: none + DELETE individual VNF Snapshot - CONFLICT + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot index aaa0ccbdb..05176938c 100644 --- a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -9,7 +9,7 @@ Suite Setup Check resource existence *** Test Cases *** POST Revert to VNF Snapshot Task - [Documentation] Test ID: 7.3.1.38.1 + [Documentation] Test ID: 7.3.1.39.1 ... Test title: POST Revert to VNF Snapshot Task ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot. ... Pre-conditions: none @@ -22,7 +22,7 @@ POST Revert to VNF Snapshot Task Check HTTP Location Header Contains URI of Created Resource POST Revert to VNF Snapshot Task - NOT FOUND - [Documentation] Test ID: 7.3.1.38.2 + [Documentation] Test ID: 7.3.1.39.2 ... Test title: POST Revert to VNF Snapshot Task - NOT FOUND ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot if the task is not supported for the VNF instance represented by the parent resource. ... Pre-conditions: none @@ -35,7 +35,7 @@ POST Revert to VNF Snapshot Task - NOT FOUND Check HTTP Response Body Json Schema Is ProblemDetails POST Revert to VNF Snapshot Task - CONFLICT - [Documentation] Test ID: 7.3.1.38.3 + [Documentation] Test ID: 7.3.1.39.3 ... Test title: POST Revert to VNF Snapshot Task - CONFLICT ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot when the VNF instance is in NOT_INSTANTIATED state. ... Pre-conditions: none @@ -48,7 +48,7 @@ POST Revert to VNF Snapshot Task - CONFLICT Check HTTP Response Body Json Schema Is ProblemDetails GET Revert to VNF Snapshot Task - Method not implemented - [Documentation] Test ID: 7.3.1.38.4 + [Documentation] Test ID: 7.3.1.39.4 ... Test title: GET Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none @@ -60,7 +60,7 @@ GET Revert to VNF Snapshot Task - Method not implemented Check HTTP Response Status Code Is 405 PUT Revert to VNF Snapshot Task - Method not implemented - [Documentation] Test ID: 7.3.1.38.5 + [Documentation] Test ID: 7.3.1.39.5 ... Test title: PUT Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -72,7 +72,7 @@ PUT Revert to VNF Snapshot Task - Method not implemented Check HTTP Response Status Code Is 405 PATCH Revert to VNF Snapshot Task - Method not implemented - [Documentation] Test ID: 7.3.1.38.6 + [Documentation] Test ID: 7.3.1.39.6 ... Test title: PATCH Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -84,7 +84,7 @@ PATCH Revert to VNF Snapshot Task - Method not implemented Check HTTP Response Status Code Is 405 DELETE Revert to VNF Snapshot Task - Method not implemented - [Documentation] Test ID: 7.3.1.38.7 + [Documentation] Test ID: 7.3.1.39.7 ... Test title: DELETE Revert to sVNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot index 21fe53dd9..4040ddbd2 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -3,7 +3,7 @@ Resource VnfLcmMntOperationKeywords.robot *** Test Cases *** POST Create a new VNF Snapshot - [Documentation] Test ID: 7.3.1.38.1 + [Documentation] Test ID: 7.3.1.40.1 ... Test title: POST Create a new VNF Snapshot ... Test objective: The objective is to create a new VNF snapshot ... Pre-conditions: none @@ -17,7 +17,7 @@ POST Create a new VNF Snapshot Check HTTP Location Header Contains URI of Created Resource GET information about multiple VNF Snapshots - [Documentation] Test ID: 7.3.1.38.2 + [Documentation] Test ID: 7.3.1.40.2 ... Test title: GET information about multiple VNF Snapshots ... Test objective: The objective is to get information about multiples VNF snapshots ... Pre-conditions: none @@ -30,7 +30,7 @@ GET information about multiple VNF Snapshots Check HTTP Response Body Json Schema Is VnfSnapshotsInfo GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters - [Documentation] Test ID: 7.3.1.38.3 + [Documentation] Test ID: 7.3.1.40.3 ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none @@ -43,7 +43,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute-based Check HTTP Response Body Json Schema Is ProblemDetails GET information about multiple VNF Snapshots Bad Request Invalid attribute selector - [Documentation] Test ID: 7.3.1.38.4 + [Documentation] Test ID: 7.3.1.40.4 ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none @@ -56,7 +56,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute selec Check HTTP Response Body Json Schema Is ProblemDetails GET information about multiple VNF Snapshots with "all_fields" attribute selector - [Documentation] Test ID: 7.3.1.38.5 + [Documentation] Test ID: 7.3.1.40.5 ... Test title: GET information about multiple VNF Snapshots with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none @@ -69,7 +69,7 @@ GET information about multiple VNF Snapshots with "all_fields" attribute selecto Check HTTP Response Body Json Schema Is VnfSnapshotsInfo GET information about multiple VNF Snapshots with "exclude_default" attribute selector - [Documentation] Test ID: 7.3.1.38.6 + [Documentation] Test ID: 7.3.1.40.6 ... Test title: GET information about multiple VNF Snapshots with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none @@ -82,7 +82,7 @@ GET information about multiple VNF Snapshots with "exclude_default" attribute se Check HTTP Response Body Json Schema Is VnfSnapshotsInfo GET information about multiple VNF Snapshots with "fields" attribute selector - [Documentation] Test ID: 7.3.1.38.7 + [Documentation] Test ID: 7.3.1.40.7 ... Test title: GET information about multiple VNF Snapshots with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none @@ -95,7 +95,7 @@ GET information about multiple VNF Snapshots with "fields" attribute selector Check HTTP Response Body Json Schema Is VnfSnapshotsInfo GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector - [Documentation] Test ID: 7.3.1.38.8 + [Documentation] Test ID: 7.3.1.40.8 ... Test title: GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none @@ -108,7 +108,7 @@ GET information about multiple VNF Snapshots with "exclude_default" and "fields" Check HTTP Response Body Json Schema Is VnfSnapshotsInfo GET information about multiple VNF Snapshots with "exclude_fields" attribute selector - [Documentation] Test ID: 7.3.1.38.9 + [Documentation] Test ID: 7.3.1.40.9 ... Test title: GET information about multiple VNF Snapshots with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none @@ -121,7 +121,7 @@ GET information about multiple VNF Snapshots with "exclude_fields" attribute sel Check HTTP Response Body Json Schema Is VnfSnapshotsInfo GET VNF Snapshots - Bad Request Response too Big - [Documentation] Test ID: 7.3.1.38.10 + [Documentation] Test ID: 7.3.1.40.10 ... Test title: GET VNF Snapshots - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing VNF Snapshots list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none @@ -134,7 +134,7 @@ GET VNF Snapshots - Bad Request Response too Big Check HTTP Response Body Json Schema Is ProblemDetails GET VNF Snapshots as Paged Response - [Documentation] Test ID: 7.3.1.38.11 + [Documentation] Test ID: 7.3.1.40.11 ... Test title: GET VNF Snapshots as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshots as paged response. ... Pre-conditions: none @@ -147,7 +147,7 @@ GET VNF Snapshots as Paged Response Check HTTP Response Header Contains Link PUT VNF Snapshots - Method not implemented - [Documentation] Test ID: 7.3.1.38.12 + [Documentation] Test ID: 7.3.1.40.12 ... Test title: PUT VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -159,7 +159,7 @@ PUT VNF Snapshots - Method not implemented Check HTTP Response Status Code Is 405 PATCH VNF Snapshots - Method not implemented - [Documentation] Test ID: 7.3.1.38.13 + [Documentation] Test ID: 7.3.1.40.13 ... Test title: PATCH VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -171,7 +171,7 @@ PATCH VNF Snapshots - Method not implemented Check HTTP Response Status Code Is 405 DELETE VNF Snapshots - Method not implemented - [Documentation] Test ID: 7.3.1.38.14 + [Documentation] Test ID: 7.3.1.40.14 ... Test title: DELETE VNF Snapshots - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot new file mode 100644 index 000000000..985422c38 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot @@ -0,0 +1,115 @@ +*** Settings *** +Resource VnfLcmMntOperationKeywords.robot + +*** Test Cases *** +POST VNF State Snapshot - Method not implemented + [Documentation] Test ID: 7.3.1.42.1 + ... Test title: POST VNF State Snapshot - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.25.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST VNF State Snapshot + Check HTTP Response Status Code Is 405 + +GET VNF State Snapshot - Complete File + [Documentation] Test ID: 7.3.1.42.2 + ... Test title: GET Information about an individual VNF State Snapshot - Complete File + ... Test objective: The objective is to fetch the whole content of a VNF State Snapshot using GET method. + ... Pre-conditions: none + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET VNF State Snapshot - Complete + Check HTTP Response Status Code Is 200 + Check HTTP Content-Type Header Is Set + +GET VNF State Snapshot - Partial Content + [Documentation] Test ID: 7.3.1.42.3 + ... Test title: GET VNF State Snapshot - Partial Content + ... Test objective: The objective is to fetch partial content of a VNF State Snapshot by sending a range request using GET method. + ... Pre-conditions: none + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: VNFM supports range requests + ... Post-Conditions: none + GET VNF State Snapshot - Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Content-Type Header Is Set + Check HTTP Content-Range Header Is Set + +GET VNF State Snapshot - Range Request Not Supported + [Documentation] Test ID: 7.3.1.42.4 + ... Test title: GET VNF State Snapshot - Range Request Not Supported + ... Test objective: The objective is to test that the whole content of a VNF State Snapshot is delivered even with a range request when VNFM does not support range requests. + ... Pre-conditions: none + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: VNFM does not support range requests + ... Post-Conditions: none + GET VNF State Snapshot - Range Request + Check HTTP Response Status Code Is 200 + Check HTTP Content-Type Header Is Set + +GET VNF State Snapshot - Range Not Satisfiable + [Documentation] Test ID: 7.3.1.42.5 + ... Test title: GET VNF State Snapshot - Range Not Satisfiable + ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF State Snapshot package file. + ... Pre-conditions: none + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: VNFM supports range requests + ... Post-Conditions: none + GET VNF State Snapshot - Invalid Range + Check HTTP Response Status Code Is 416 + +GET VNF State Snapshot - Conflict + [Documentation] Test ID: 7.3.1.42.6 + ... Test title: GET VNF State Snapshot - Conflict + ... Test objective: The objective is to test that an error is returned when there is a conflict with the state of the VNF snapshot resource. + ... Pre-conditions: none + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: Typically, this is due to the fact that the VNF snapshot creation process is not completed. + ... Post-Conditions: none + GET VNF State Snapshot - Conflict in State + Check HTTP Response Status Code Is 409 + +PUT VNF State Snapshot - Method not implemented + [Documentation] Test ID: 7.3.1.42.7 + ... Test title: PUT VNF State Snapshot - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.25.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF State Snapshot Package not modified + PUT VNF State Snapshot + Check HTTP Response Status Code Is 405 + +PATCH VNF State Snapshot - Method Not implemented + [Documentation] Test ID: 7.3.1.42.8 + ... Test title: PATCH VNF State Snapshot + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.25.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH VNF State Snapshot + Check HTTP Response Status Code Is 405 + +DELETE VNF State Snapshot - Method Not implemented + [Documentation] Test ID: 7.3.1.42.9 + ... Test title: DELETE VNF State Snapshot - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.25.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE VNF State Snapshot + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 2493217c7..90632195b 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1872,4 +1872,166 @@ DELETE VNF Snapshots Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Set Global Variable ${response} ${outputResponse} + +POST individual VNF Snapshot + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot + log Trying to get information about an individual VNF snapshot + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot with invalid URI + log Trying to get information about an individual VNF snapshot + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${invalidVnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT individual VNF Snapshot + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH individual VNF Snapshot + log Trying to perform a PATCH to modify individual VNF snapshot + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"If-Match": "${original_etag}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfSnapshotInfoModificationRequest.json + ${body}= Format String ${template} vnfSnapshotPkgId=${vnfSnapshotPkgId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH individual VNF Snapshot - ETag mismatch + log Trying to perform a PATCH to modify individual VNF snapshot + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"If-Match": "${invalid_etag}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfSnapshotInfoModificationRequest.json + ${body}= Format String ${template} vnfSnapshotPkgId=${vnfSnapshotPkgId} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE individual VNF Snapshot + log Trying to DELETE an individual VNF Snapshot + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE individual VNF Snapshot - CONFLICT + log Trying to DELETE an individual VNF Snapshot that is already in use by another operation + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId_InUse} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST VNF State Snapshot + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF State Snapshot - Complete + log Trying to fetch the complete contents of an VNF State Snapshot + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF State Snapshot - Range Request + Pass Execution If ${VNFM_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + log Trying to get information about an VNF State Snapshot using a range request + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Range":"${range}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF State Snapshot - Invalid Range + Pass Execution If ${VNFM_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + log Trying to get information about a VNF State Snapshot with invalid range + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Range":"${erroneousRange}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF State Snapshot - Conflict in State + Log Trying to get information about a VNF State Snapshot whose creation process is not completed + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId_creationIncomplete}/vnf_state_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT VNF State Snapshot + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH VNF State Snapshot + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE VNF State Snapshot + log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Content-Type Header Is Set + Log Check Content-Type HTTP Header + Should Contain ${response['headers']} Content-Type + Should Be Equal As Strings ${response['headers']['Content-Type']} ${CONTENT_TYPE_OCTET} + Log Content type validated + + +Check HTTP Content-Range Header Is Set + Log Check Content-Range HTTP Header + Should Contain ${response['headers']} Content-Range + Should Be Equal As Strings ${response['headers']['Content-Range']} ${range} + Log Header Content-Range is present \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 1461ca192..07c4dbe0b 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -29,6 +29,16 @@ ${ARTIFACT_ID} artifactId ${WRONG_ACCEPT} application/json ${SYNC_MODE} 0 +${original_etag} 1234 +${invalid_etag} 4321 + +${ACCEPT_OCTET} application/octet-stream +${CONTENT_TYPE_OCTET} application/octet-stream +${VNFM_RANGE_OK} 1 # If 1 means that Range is supported by the VNFM +${range} bytes=0-1023 +${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes + + ${instantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${notInstantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${notExistingVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f @@ -37,6 +47,8 @@ ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${conflicVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${vnfInstanceId_NoSnapshotTask} no-snapshot-task-supported ${vnfSnapshotInfoId} +${vnfSnapshotInfoId_InUse} snapshotId-of-a-resource-AlreadyInUse-bySomeOther-operation +${vnfSnapshotInfoId_creationIncomplete} snapshotId-of-a-resource-whose-creation-isn't-complete ${invalidVnfSnapshotInfoId} ${vnfSnapshotPkgId} diff --git a/SOL003/VNFLifecycleManagement-API/jsons/VnfSnapshotInfoModificationRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/VnfSnapshotInfoModificationRequest.json new file mode 100644 index 000000000..c16bca9c0 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/jsons/VnfSnapshotInfoModificationRequest.json @@ -0,0 +1,3 @@ +{{ + "vnfSnapshotPkgId": "{vnfSnapshotPkgId}" +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json new file mode 100644 index 000000000..dee7a6ddf --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json @@ -0,0 +1,1499 @@ +{ + "description": "This type represents attribute modifications that were performed on an \"Individual VNF snapshot\" \nresource. The attributes that can be included consist of those requested to be modified explicitly \nin the \"VnfSnapshotInfoModificationRequest\" data structure, and additional attributes of the \n\"VnfSnapshotInfo\" data structure that were modified implicitly. The \"VnfSnapshotInfoModifications\" \ndata type shall comply with the provisions defined in table 5.5.2.25-1.\n", + "type": "object", + "properties": { + "vnfSnapshotPkgId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshot": { + "description": "This type represents a VNF snapshot. It shall comply with the provisions defined in table 5.5.2.23-1.\n", + "type": "object", + "required": [ + "id", + "vnfInstanceId", + "triggeredAt", + "vnfdId", + "vnfInfo", + "vnfcSnapshots" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstance": { + "description": "This type represents a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "instantiationState" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vimConnectionInfo": { + "description": "Information about VIM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if VNF-related resource management in direct mode is pplicable. This attribute can be modified with the PATCH method.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState" + ], + "properties": { + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [{ + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "extManagedVirtualLinkInfo": { + "description": "Information about the externally-managed internal VLs of the VNF instance.\nNOTE: It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.3).\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "extManagedMultisiteVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "monitoringParameters": { + "description": "Active monitoring parameters.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "virtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "Additional VNF-specific attributes that affect the lifecycle management of this VNF instance. These attributes represent values that are stored persistently in the VnfInstance structure for consumption by the VNFM or the lifecycle management scripts during the execution of VNF lifecycle management operations. All extensions that are allowed for the VNF are declared in the VNFD. The declaration of an extension in the VNFD contains information on whether its presence is optional or required, and optionally can specify an initial value. See note 2 and note 4. The VNFM shall reject requests to write extension attributes that are not declared in the VNFD with a \"422 Unprocessable entity\" error response as defined in clause 6.4 of ETSI GS NFV-SOL 013. Modifying the values of these attributes has no direct effect on the VNF instance; however, the modified attribute values can be considered during subsequent VNF lifecycle management operations, which means that the modified values can indirectly affect the configuration of the VNF instance. These attributes can be initialized with default values from the VNFD. These attributes can be modified with values passed in the request structures of certain LCM operations, such as the InstantiateVnfRequest structure. Further, these attributes can be created, modified or deleted with the PATCH method.\nNOTE: Upon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defineddeclared initial value shall not be created, in order to be consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null values as deletion request.\n" + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "indicators": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "instantiate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "terminate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scale": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scaleToLevel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeFlavour": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "heal": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "operate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeExtConn": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + }, + "vnfcSnapshots": { + "description": "Information about VNFC snapshots constituting this VNF snapshot.\n", + "type": "array", + "items": { + "description": "This type represents a VNFC snapshot.\n", + "type": "object", + "required": [ + "id", + "vnfcInstanceId", + "triggeredAt", + "vnfcResourceId" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "computeSnapshotResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "storageSnapshotResources": { + "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "storageResourceId" + ], + "properties": { + "storageResourceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "storageSnapshotResource": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfStateSnapshotInfo": { + "description": "This type represents information about VNF-specific state snapshot data.\n", + "type": "object", + "required": [ + "checksum", + "isEncrypted" + ], + "properties": { + "checksum": { + "description": "Checksum of the VNF state snapshot file. Hash algorithms applicable to VNF snapshot package artifacts are defined in ETSI GS NFV-SOL 010. $ref: \"../definitions/SOL002SOL003_def.yaml#/definitions/Checksum\"\n" + }, + "isEncrypted": { + "description": "Reflects whether the VNF state snapshot content is encrypted (true) or not (false). $ref: \"../definitions/SOL002SOL003_def.yaml#/definitions/Boolean\"\n" + }, + "metadata": { + "description": "The metadata with additional information such as content type, size, creation date, etc. $ref: \"../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs\"\n" + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfStateSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } +} \ No newline at end of file -- GitLab From 017b96d2e35a6e35da550bb478baa4bee43c7f40 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Thu, 4 Mar 2021 19:59:31 +0500 Subject: [PATCH 351/580] updated jsons and schemas --- ...VnfLcmOperationOccurrenceNotification.json | 8 +- .../jsons/changeCurrentVnfPkgRequest.json | 72 +- .../jsons/changeVnfFlavourRequest.json | 77 +- .../jsons/createVnfRequest.json | 2 +- .../jsons/instantiateVnfRequest.json | 3 +- .../schemas/LccnSubscription.schema.json | 220 +- .../schemas/LccnSubscriptions.schema.json | 224 +- .../schemas/VnfLcmOpOcc.schema.json | 949 ++++++- .../schemas/VnfLcmOpOccs.schema.json | 1312 ++++++---- .../schemas/vnfInstance.schema.json | 2298 +++++++++------- .../schemas/vnfInstances.schema.json | 2303 ++++++++++------- 11 files changed, 5021 insertions(+), 2447 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/jsons/VnfLcmOperationOccurrenceNotification.json b/SOL003/VNFLifecycleManagement-API/jsons/VnfLcmOperationOccurrenceNotification.json index 0756a3323..2bea45087 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/VnfLcmOperationOccurrenceNotification.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/VnfLcmOperationOccurrenceNotification.json @@ -3,11 +3,15 @@ "notificationType":"VnfLcmOperationOccurrenceNotification", "subscriptionId":"{subscriptionId}", "timeStamp":"", - "notificationStatus":"STRAT", + "notificationStatus":"START", "operationState":"PROCESSING", "vnfInstanceId":"{vnfInstanceId}", "operation":"SCALE", "isAutomaticInvocation":"false", "vnfLcmOpOccId":"{vnfLcmOpOccId}", - "_links":"" + "_links": { + "vnfInstance": "", + "subscription": "", + "vnfLcmOpOcc": "" + } }} diff --git a/SOL003/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json index 521b2b647..4d7a1db8e 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json @@ -1,20 +1,68 @@ {{ "vnfdId": "{vnfdId}", "extVirtualLinks": [ - { - "id": "", - "vimConnectionId": "", - "resourceProviderId": "", - "resourceId": "" - } + { + "id": "string", + "vimConnectionId": "string", + "resourceProviderId": "string", + "resourceId": "string", + "extCps": [ + { + "cpdId": "string", + "cpConfig": [ + { + "cpInstanceId": "string", + "linkPortId": "string", + "cpProtocolData": [ + { + "layerProtocol": "IP_OVER_ETHERNET", + "ipOverEthernet": { + "macAddress": "string", + "ipAddresses": [ + { + "type": "IPV4", + "fixedAddresses": [ + "string" + ], + "numDynamicAddresses": 0, + "addressRange": { + "minAddress": "string", + "maxAddress": "string" + }, + "subnetId": "string" + } + ] + } + } + ] + } + ] + } + ], + "extLinkPorts": [ + { + "id": "string", + "resourceHandle": { + "vimConnectionId": "string", + "resourceProviderId": "string", + "resourceId": "string", + "vimLevelResourceType": "string" + } + } + ] + } ], - "extManagedVirtualLinks": [ - { - "id": "", - "vnfVirtualLinkDescId": "", - "resourceId": "" - } + "vimConnectionInfo": [ + { + "id": "string", + "vimId": "string", + "vimType": "string", + "interfaceInfo": {}, + "accessInfo": {}, + "extra": {} + } ], "additionalParams": {}, + "extensions": {}, "vnfConfigurableProperties": {} }} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/changeVnfFlavourRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/changeVnfFlavourRequest.json index 50d5eb5db..feff51f91 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/changeVnfFlavourRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/changeVnfFlavourRequest.json @@ -1,3 +1,78 @@ {{ - "newFlavourId": "{newFlavourId}" + "newFlavourId": "{newFlavourId}", + "instantiationLevelId": "string", + "extVirtualLinks": [ + { + "id": "string", + "vimConnectionId": "string", + "resourceProviderId": "string", + "resourceId": "string", + "extCps": [ + { + "cpdId": "string", + "cpConfig": [ + { + "cpInstanceId": "string", + "linkPortId": "string", + "cpProtocolData": [ + { + "layerProtocol": "IP_OVER_ETHERNET", + "ipOverEthernet": { + "macAddress": "string", + "ipAddresses": [ + { + "type": "IPV4", + "fixedAddresses": [ + "string" + ], + "numDynamicAddresses": 0, + "addressRange": { + "minAddress": "string", + "maxAddress": "string" + }, + "subnetId": "string" + } + ] + } + } + ] + } + ] + } + ], + "extLinkPorts": [ + { + "id": "string", + "resourceHandle": { + "vimConnectionId": "string", + "resourceProviderId": "string", + "resourceId": "string", + "vimLevelResourceType": "string" + } + } + ] + } + ], + "extManagedVirtualLinks": [ + { + "id": "string", + "virtualLinkDescId": "string", + "vimConnectionId": "string", + "resourceProviderId": "string", + "resourceId": "string" + } + ], + "vimConnectionInfo": [ + { + "id": "string", + "vimId": "string", + "vimType": "string", + "interfaceInfo": {}, + "accessInfo": {}, + "extra": {} + } + ], + "extensions": {}, + "additionalParams": {}, + "vnfConfigurableProperties": {} }} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 5e7ee7f30..710694f38 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -1,5 +1,5 @@ {{ - "vnfdId": "{vnfdId}" + "vnfdId": "{vnfdId}", "vnfInstanceName": "string", "vnfInstanceDescription": "string" }} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/instantiateVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/instantiateVnfRequest.json index bb96e19dd..d250c8951 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/instantiateVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/instantiateVnfRequest.json @@ -74,5 +74,6 @@ ], "localizationLanguage": "English", "extensions": {}, - "additionalParams": {} + "additionalParams": {}, + "vnfConfigurableProperties": {} } \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json index 608d47f58..c86be18a0 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json @@ -1 +1,219 @@ -{ "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" } } } } } }} \ No newline at end of file +{ + "description": "This type represents a subscription related to notifications about VNF lifecycle changes.\n", + "type": "object", + "required": [ + "id", + "callbackUri", + "verbosity", + "_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", + "anyOf": [{ + "oneOf": [{ + "required": [ + "vnfdId" + ] + }, + { + "required": [ + "vnfProductsFromProviders" + ] + } + ] + }, + { + "oneOf": [{ + "required": [ + "vnfInstanceIds" + ] + }, + { + "required": [ + "vnfInstanceNames" + ] + } + ] + } + ], + "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. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO", + "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", + "CHANGE_VNFPKG" + ] + } + }, + "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": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The 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" + }, + "verbosity": { + "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", + "type": "string", + "enum": [ + "FULL", + "SHORT" + ] + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json index 608d47f58..03137a04d 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json @@ -1 +1,223 @@ -{ "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" } } } } } }} \ 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", + "verbosity", + "_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", + "anyOf": [{ + "oneOf": [{ + "required": [ + "vnfdId" + ] + }, + { + "required": [ + "vnfProductsFromProviders" + ] + } + ] + }, + { + "oneOf": [{ + "required": [ + "vnfInstanceIds" + ] + }, + { + "required": [ + "vnfInstanceNames" + ] + } + ] + } + ], + "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. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO", + "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", + "CHANGE_VNFPKG" + ] + } + }, + "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": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The 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" + }, + "verbosity": { + "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", + "type": "string", + "enum": [ + "FULL", + "SHORT" + ] + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json index a74f93d81..42324ff09 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json @@ -1 +1,948 @@ -{ "description": "This type represents a VNF lifecycle management operation occurrence.\n", "type": "object", "required": [ "id", "operationState", "stateEnteredTime", "startTime", "vnfInstanceId", "operation", "isAutomaticInvocation", "operationParams", "isCancelPending" ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "operationState": { "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" ] }, "stateEnteredTime": { "description": "Date-time when the current state was entered.\n", "type": "string", "format": "date-time" }, "startTime": { "description": "Date-time of the start of the operation.\n", "type": "string", "format": "date-time" }, "vnfInstanceId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "grantId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "operation": { "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" ] }, "isAutomaticInvocation": { "description": "Set to true if this VNF LCM operation occurrence has been triggered by an automated procedure inside the VNFM (i.e. ScaleVnf / ScaleVnfToLevel triggered by auto-scale, or HealVnf triggered by auto-heal). Set to false otherwise.\n", "type": "boolean" }, "operationParams": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", "type": "object" }, "isCancelPending": { "description": "If the VNF LCM operation occurrence is in \"STARTING\", \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n", "type": "boolean" }, "cancelMode": { "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n", "type": "string", "enum": [ "GRACEFUL", "FORCEFUL" ] }, "error": { "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", "type": "object", "required": [ "status", "detail" ], "properties": { "type": { "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", "type": "string", "format": "URI" }, "title": { "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", "type": "string" }, "status": { "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", "type": "integer" }, "detail": { "description": "A human-readable explanation specific to this occurrence of the problem.\n", "type": "string" }, "instance": { "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", "type": "string", "format": "URI" } } }, "resourceChanges": { "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n", "type": "object", "properties": { "affectedVnfcs": { "description": "Information about VNFC instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", "type": "array", "items": { "description": "This type provides information about added, deleted, modified and temporary VNFCs. \n", "type": "object", "required": [ "id", "vduId", "changeType", "computeResource" ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "vduId": { "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, "changeType": { "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", "type": "string", "enum": [ "ADDED", "REMOVED", "MODIFIED", "TEMPORARY" ] }, "computeResource": { "required": [ "vimConnectionId", "resourceId" ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceProviderId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceId": { "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, "vimLevelResourceType": { "description": "Type of the resource in the scope of the VIM or the resource provider.\n", "type": "string" } } }, "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", "type": "object" }, "affectedVnfcCpIds": { "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" } }, "addedStorageResourceIds": { "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" } }, "removedStorageResourceIds": { "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" } } } } }, "affectedVirtualLinks": { "description": "Information about VL instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", "type": "array", "items": { "description": "This type provides information about added, deleted, modified and temporary VLs.\n", "type": "object", "required": [ "id", "virtualLinkDescId", "changeType", "networkResource" ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "virtualLinkDescId": { "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, "changeType": { "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists.\n", "type": "string", "enum": [ "ADDED", "REMOVED", "MODIFIED", "TEMPORARY", "LINK_PORT_ADDED", "LINK_PORT_REMOVED" ] }, "networkResource": { "required": [ "vimConnectionId", "resourceId" ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceProviderId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceId": { "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, "vimLevelResourceType": { "description": "Type of the resource in the scope of the VIM or the resource provider.\n", "type": "string" } } }, "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", "type": "object" } } } }, "affectedVirtualStorages": { "description": "Information about virtualised storage instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", "type": "array", "items": { "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n", "type": "object", "required": [ "id", "virtualStorageDescId", "changeType", "storageResource" ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "virtualStorageDescId": { "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, "changeType": { "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", "type": "string", "enum": [ "ADDED", "REMOVED", "MODIFIED", "TEMPORARY" ] }, "storageResource": { "required": [ "vimConnectionId", "resourceId" ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceProviderId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceId": { "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, "vimLevelResourceType": { "description": "Type of the resource in the scope of the VIM or the resource provider.\n", "type": "string" } } }, "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", "type": "object" } } } } } }, "changedInfo": { "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n", "type": "object", "properties": { "vnfInstanceName": { "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\".\n", "type": "string" }, "vnfInstanceDescription": { "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\".\n", "type": "string" }, "vnfConfigurableProperties": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", "type": "object" }, "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", "type": "object" }, "extensions": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", "type": "object" }, "vimConnectionInfo": { "description": "If present, this attribute signals modifications of certain entries in the \"vimConnectionInfo\" attribute array in \"VnfInstance\".\n", "type": "array", "items": { "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n", "type": "object", "required": [ "id", "vimType" ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "vimId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "vimType": { "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", "type": "string" }, "interfaceInfo": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", "type": "object" }, "accessInfo": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", "type": "object" }, "extra": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", "type": "object" } } } }, "vnfPkgId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "vnfdId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "vnfProvider": { "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId†attribute.\n", "type": "string" }, "vnfProductName": { "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId†attribute.\n", "type": "string" }, "vnfSoftwareVersion": { "description": "A Version.\n", "type": "string" }, "vnfdVersion": { "description": "A Version.\n", "type": "string" } } }, "changedExtConnectivity": { "description": "Information about changed external connectivity, if applicable. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", "type": "array", "items": { "type": "object", "required": [ "id", "resourceHandle" ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { "required": [ "vimConnectionId", "resourceId" ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceProviderId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceId": { "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, "vimLevelResourceType": { "description": "Type of the resource in the scope of the VIM or the resource provider.\n", "type": "string" } } }, "extLinkPorts": { "description": "Link ports of this VL.\n", "type": "array", "items": { "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. \n", "type": "object", "required": [ "id", "resourceHandle" ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { "required": [ "vimConnectionId", "resourceId" ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceProviderId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceId": { "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, "vimLevelResourceType": { "description": "Type of the resource in the scope of the VIM or the resource provider.\n", "type": "string" } } }, "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" } } } } } } }, "_links": { "description": "Links to resources related to this resource.\n", "type": "object", "required": [ "self", "vnfInstance" ], "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" } } }, "vnfInstance": { "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" } } }, "grant": { "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" } } }, "cancel": { "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" } } }, "retry": { "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" } } }, "rollback": { "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" } } }, "fail": { "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 +{ + "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists.\n", + "type": "object", + "oneOf": [{ + "required": [ + "changedInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ], + "required": [ + "id", + "operationState", + "stateEnteredTime", + "startTime", + "vnfInstanceId", + "operation", + "isAutomaticInvocation", + "isCancelPending" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operationState": { + "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The 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" + ] + }, + "stateEnteredTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "grantId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operation": { + "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. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO", + "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", + "CHANGE_VNFPKG" + ] + }, + "isAutomaticInvocation": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "operationParams": { + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n", + "type": "object" + }, + "isCancelPending": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "cancelMode": { + "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n", + "type": "string", + "enum": [ + "GRACEFUL", + "FORCEFUL" + ] + }, + "error": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + }, + "resourceChanges": { + "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n", + "type": "object", + "properties": { + "affectedVnfcs": { + "description": "Information about VNFC instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n", + "type": "object", + "required": [ + "id", + "vduId", + "changeType", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "affectedVnfcCpIds": { + "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "addedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "removedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + }, + "affectedVirtualLinks": { + "description": "Information about VL instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter. For a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed for signalling the different types of changes, i.e., one per virtual link and change type. For instance, in the case of signaling affected VL instances involving the addition of a particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\", and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the \"changeType\" equal to \"LINK_PORT_ADDED\".\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "changeType", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY", + "LINK_PORT_ADDED", + "LINK_PORT_REMOVED" + ] + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "vnfLinkPortIds": { + "description": "Identifiers of the link ports of the affected VL (reference to the vnfLinkPortInfo) related to the change. Each identifier references a \"VnfLinkPortInfo\" structure. Shall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related “VnfLinkPortInfo” structures are present (case \"added\") or have been present (case \"removed\") in the “VnfVirtualLinkResourceInfo” or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResourceInfo\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "affectedExtLinkPorts": { + "description": "Information about external VNF link ports that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\n", + "type": "object", + "required": [ + "id", + "changeType", + "extCpInstanceId", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED" + ] + }, + "extCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + } + } + } + }, + "affectedVirtualStorages": { + "description": "Information about virtualised storage instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "changeType", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "changedInfo": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n", + "type": "object", + "properties": { + "vnfInstanceName": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vimConnectionInfo": { + "description": "If present, this attribute signals modifications the \"vimConnectionInfo\" attribute array in \"VnfInstance\".\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "vnfProductName": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + } + } + }, + "changedExtConnectivity": { + "description": "Information about changed external connectivity, if applicable. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "modificationsTriggeredByVnfPkgChange": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\n", + "type": "object", + "properties": { + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfProductName": { + "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + } + } + }, + "vnfSnapshotInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "vnfInstance" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "grant": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "cancel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "retry": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "rollback": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "fail": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json index a11def07d..2492e0eee 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json @@ -1,241 +1,600 @@ { - "type": "array", - "items": { - "description": "This type represents a VNF lifecycle management operation occurrence.\n", - "type": "object", - "required": ["id", "operationState", "stateEnteredTime", "startTime", "vnfInstanceId", "operation", "isAutomaticInvocation", "operationParams", "isCancelPending"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "operationState": { - "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"] - }, - "stateEnteredTime": { - "description": "Date-time when the current state was entered.\n", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Date-time of the start of the operation.\n", - "type": "string", - "format": "date-time" - }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "grantId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "operation": { - "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"] - }, - "isAutomaticInvocation": { - "description": "Set to true if this VNF LCM operation occurrence has been triggered by an automated procedure inside the VNFM (i.e. ScaleVnf / ScaleVnfToLevel triggered by auto-scale, or HealVnf triggered by auto-heal). Set to false otherwise.\n", - "type": "boolean" - }, - "operationParams": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", - "type": "object" - }, - "isCancelPending": { - "description": "If the VNF LCM operation occurrence is in \"STARTING\", \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n", - "type": "boolean" - }, - "cancelMode": { - "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n", - "type": "string", - "enum": ["GRACEFUL", "FORCEFUL"] - }, - "error": { - "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", - "type": "object", - "required": ["status", "detail"], - "properties": { - "type": { - "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", - "type": "string", - "format": "URI" - }, - "title": { - "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", - "type": "string" - }, - "status": { - "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", - "type": "integer" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem.\n", - "type": "string" - }, - "instance": { - "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", - "type": "string", - "format": "URI" - } + "type": "array", + "items": + { + "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists.\n", + "type": "object", + "oneOf": [{ + "required": [ + "changedInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ], + "required": [ + "id", + "operationState", + "stateEnteredTime", + "startTime", + "vnfInstanceId", + "operation", + "isAutomaticInvocation", + "isCancelPending" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operationState": { + "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The 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" + ] + }, + "stateEnteredTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "grantId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operation": { + "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. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO", + "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", + "CHANGE_VNFPKG" + ] + }, + "isAutomaticInvocation": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "operationParams": { + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n", + "type": "object" + }, + "isCancelPending": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "cancelMode": { + "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n", + "type": "string", + "enum": [ + "GRACEFUL", + "FORCEFUL" + ] + }, + "error": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" } - }, - "resourceChanges": { - "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n", - "type": "object", - "properties": { - "affectedVnfcs": { - "description": "Information about VNFC instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VNFCs. \n", - "type": "object", - "required": ["id", "vduId", "changeType", "computeResource"], - "properties": { - "id": { + } + }, + "resourceChanges": { + "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n", + "type": "object", + "properties": { + "affectedVnfcs": { + "description": "Information about VNFC instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n", + "type": "object", + "required": [ + "id", + "vduId", + "changeType", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "affectedVnfcCpIds": { + "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", + "type": "array", + "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + } + }, + "addedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"] - }, - "computeResource": { - "required": ["vimConnectionId", "resourceId"], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider.\n", - "type": "string" - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", - "type": "object" - }, - "affectedVnfcCpIds": { - "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + } + }, + "removedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + }, + "affectedVirtualLinks": { + "description": "Information about VL instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter. For a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed for signalling the different types of changes, i.e., one per virtual link and change type. For instance, in the case of signaling affected VL instances involving the addition of a particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\", and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the \"changeType\" equal to \"LINK_PORT_ADDED\".\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "changeType", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY", + "LINK_PORT_ADDED", + "LINK_PORT_REMOVED" + ] + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - } - }, - "addedStorageResourceIds": { - "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", "type": "string" } - }, - "removedStorageResourceIds": { - "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + } + }, + "vnfLinkPortIds": { + "description": "Identifiers of the link ports of the affected VL (reference to the vnfLinkPortInfo) related to the change. Each identifier references a \"VnfLinkPortInfo\" structure. Shall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related “VnfLinkPortInfo” structures are present (case \"added\") or have been present (case \"removed\") in the “VnfVirtualLinkResourceInfo” or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResourceInfo\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "affectedExtLinkPorts": { + "description": "Information about external VNF link ports that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\n", + "type": "object", + "required": [ + "id", + "changeType", + "extCpInstanceId", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED" + ] + }, + "extCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", "type": "string" } } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" } } - }, - "affectedVirtualLinks": { - "description": "Information about VL instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VLs.\n", - "type": "object", - "required": ["id", "virtualLinkDescId", "changeType", "networkResource"], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY", "LINK_PORT_ADDED", "LINK_PORT_REMOVED"] - }, - "networkResource": { - "required": ["vimConnectionId", "resourceId"], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider.\n", - "type": "string" - } + } + }, + "affectedVirtualStorages": { + "description": "Information about virtualised storage instances that were affected during the lifecycle operation. This allows the API consumer to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "changeType", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", - "type": "object" } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "changedInfo": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n", + "type": "object", + "properties": { + "vnfInstanceName": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vimConnectionInfo": { + "description": "If present, this attribute signals modifications the \"vimConnectionInfo\" attribute array in \"VnfInstance\".\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "vnfProductName": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + } + } + }, + "changedExtConnectivity": { + "description": "Information about changed external connectivity, if applicable. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" } } }, - "affectedVirtualStorages": { - "description": "Information about virtualised storage instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", + "extLinkPorts": { + "description": "Link ports of this VL.\n", "type": "array", "items": { - "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n", + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", "type": "object", - "required": ["id", "virtualStorageDescId", "changeType", "storageResource"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"] - }, - "storageResource": { - "required": ["vimConnectionId", "resourceId"], + "resourceHandle": { + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", "properties": { @@ -252,275 +611,342 @@ "type": "string" }, "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider.\n", + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", "type": "string" } } }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", - "type": "object" + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" } } } - } - } - }, - "changedInfo": { - "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n", - "type": "object", - "properties": { - "vnfInstanceName": { - "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\".\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\".\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", - "type": "object" }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", - "type": "object" - }, - "vimConnectionInfo": { - "description": "If present, this attribute signals modifications of certain entries in the \"vimConnectionInfo\" attribute array in \"VnfInstance\".\n", + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", "type": "array", "items": { - "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n", - "type": "object", - "required": ["id", "vimType"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", - "type": "string" - }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", - "type": "object" - }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", - "type": "object" - }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n", - "type": "object" - } - } - } - }, - "vnfPkgId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId� attribute.\n", - "type": "string" - }, - "vnfProductName": { - "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId� attribute.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A Version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A Version.\n", - "type": "string" - } - } - }, - "changedExtConnectivity": { - "description": "Information about changed external connectivity, if applicable. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n", - "type": "array", - "items": { - "type": "object", - "required": ["id", "resourceHandle"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": ["vimConnectionId", "resourceId"], + "description": "This type represents configuration information for external CPs created from a CPD.\n", "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "required": [ + "cpdId" + ], "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider.\n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. \n", - "type": "object", - "required": ["id", "resourceHandle"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": ["vimConnectionId", "resourceId"], + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "resourceProviderId": { + "linkPortId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider.\n", - "type": "string" + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } } } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" } } } } } } - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": ["self", "vnfInstance"], - "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" - } + } + }, + "modificationsTriggeredByVnfPkgChange": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\n", + "type": "object", + "properties": { + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfProductName": { + "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly during the related operation, and contains a copy of the value of he related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + } + } + }, + "vnfSnapshotInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "vnfInstance" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "vnfInstance": { - "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" - } + } + }, + "vnfInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "grant": { - "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" - } + } + }, + "grant": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "cancel": { - "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" - } + } + }, + "cancel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "retry": { - "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" - } + } + }, + "retry": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "rollback": { - "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" - } + } + }, + "rollback": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "fail": { - "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" - } + } + }, + "fail": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } } } } } } + } } \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 8cb99a67e..da288dbf3 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -1,992 +1,1308 @@ { - "description": "This type represents a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vnfdId", - "vnfProvider", - "vnfProductName", - "vnfSoftwareVersion", - "vnfdVersion", - "instantiationState" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstanceName": { - "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfProductName": { - "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "vimConnectionInfo": { - "description": "Information about VIM connections to be used for managing the resources for the VNF instance. This attribute shall only be supported and present if VNF-related resource management in direct mode is applicable. This attribute can be modified with the PATCH method.\n", - "type": "array", - "items": { - "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n", - "type": "object", - "required": [ - "id", - "vimType" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", - "type": "string" - }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "instantiationState": { - "description": "The instantiation state of the VNF.\n", - "type": "string", - "enum": [ - "NOT_INSTANTIATED", - "INSTANTIATED" - ] - }, - "instantiatedVnfInfo": { - "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", - "type": "object", - "required": [ - "flavourId", - "vnfState" - ], - "properties": { - "flavourId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfState": { - "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", - "type": "string", - "enum": [ - "STARTED", - "STOPPED" - ] - }, - "scaleStatus": { - "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", - "type": "array", - "items": { - "required": [ - "aspectId", - "scaleLevel" - ], - "type": "object", - "properties": { - "aspectId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleLevel": { - "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", - "type": "integer" - } - } - } - }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance.\n", - "type": "array", - "minItems": 1, - "items": { - "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n", - "type": "object", - "required": [ - "id", - "cpdId", - "cpProtocolInfo" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\n", - "type": "object", - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - } - } - } - } - } - } - }, - "extLinkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "associatedVnfcCpId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "associatedVnfVirtualLinkId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "extVirtualLinkInfo": { - "description": "Information about the external VLs the VNF instance is connected to.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - } - } - }, - "extManagedVirtualLinkInfo": { - "description": "External virtual links the VNF instance is connected to.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "vnfLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - } - } - } - } - } - } - }, - "monitoringParameters": { - "description": "Active monitoring parameters.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "performanceMetric" - ], - "properties": { - "id": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", - "type": "string" - }, - "performanceMetric": { - "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", - "type": "string" - } - } - } - }, - "localizationLanguage": { - "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", - "type": "string" - }, - "vnfcResourceInfo": { - "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "cpdId" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\n", - "type": "object", - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - } - } - } - } - } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "virtualLinkResourceInfo": { - "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "virtualStorageResourceInfo": { - "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "_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 using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "indicators": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "instantiate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "terminate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scale": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scaleToLevel": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeFlavour": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "heal": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "operate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeExtConn": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - } - } - } - } - } \ No newline at end of file + "description": "This type represents a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "instantiationState" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vimConnectionInfo": { + "description": "Information about VIM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if VNF-related resource management in direct mode is pplicable. This attribute can be modified with the PATCH method.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState" + ], + "properties": { + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [{ + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "extManagedVirtualLinkInfo": { + "description": "Information about the externally-managed internal VLs of the VNF instance.\nNOTE: It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.3).\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "extManagedMultisiteVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "monitoringParameters": { + "description": "Active monitoring parameters.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "virtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "Additional VNF-specific attributes that affect the lifecycle management of this VNF instance. These attributes represent values that are stored persistently in the VnfInstance structure for consumption by the VNFM or the lifecycle management scripts during the execution of VNF lifecycle management operations. All extensions that are allowed for the VNF are declared in the VNFD. The declaration of an extension in the VNFD contains information on whether its presence is optional or required, and optionally can specify an initial value. See note 2 and note 4. The VNFM shall reject requests to write extension attributes that are not declared in the VNFD with a \"422 Unprocessable entity\" error response as defined in clause 6.4 of ETSI GS NFV-SOL 013. Modifying the values of these attributes has no direct effect on the VNF instance; however, the modified attribute values can be considered during subsequent VNF lifecycle management operations, which means that the modified values can indirectly affect the configuration of the VNF instance. These attributes can be initialized with default values from the VNFD. These attributes can be modified with values passed in the request structures of certain LCM operations, such as the InstantiateVnfRequest structure. Further, these attributes can be created, modified or deleted with the PATCH method.\nNOTE: Upon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defineddeclared initial value shall not be created, in order to be consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null values as deletion request.\n" + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "indicators": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "instantiate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "terminate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scale": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scaleToLevel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeFlavour": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "heal": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "operate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeExtConn": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index 776e2d87b..5ab222666 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -1,995 +1,1312 @@ -{ +{ "type": "array", - "items": { - "description": "This type represents a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vnfdId", - "vnfProvider", - "vnfProductName", - "vnfSoftwareVersion", - "vnfdVersion", - "instantiationState" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstanceName": { - "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfProductName": { - "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "vimConnectionInfo": { - "description": "Information about VIM connections to be used for managing the resources for the VNF instance. This attribute shall only be supported and present if VNF-related resource management in direct mode is applicable. This attribute can be modified with the PATCH method.\n", - "type": "array", - "items": { - "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n", - "type": "object", - "required": [ - "id", - "vimType" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", - "type": "string" - }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "instantiationState": { - "description": "The instantiation state of the VNF.\n", - "type": "string", - "enum": [ - "NOT_INSTANTIATED", - "INSTANTIATED" - ] - }, - "instantiatedVnfInfo": { - "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", - "type": "object", - "required": [ - "flavourId", - "vnfState" - ], - "properties": { - "flavourId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfState": { - "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", - "type": "string", - "enum": [ - "STARTED", - "STOPPED" - ] - }, - "scaleStatus": { - "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", - "type": "array", - "items": { - "required": [ - "aspectId", - "scaleLevel" - ], - "type": "object", - "properties": { - "aspectId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleLevel": { - "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", - "type": "integer" - } - } - } - }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance.\n", - "type": "array", - "minItems": 1, - "items": { - "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n", - "type": "object", - "required": [ - "id", - "cpdId", - "cpProtocolInfo" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\n", - "type": "object", - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - } - } - } - } - } - } - }, - "extLinkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "associatedVnfcCpId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "associatedVnfVirtualLinkId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "extVirtualLinkInfo": { - "description": "Information about the external VLs the VNF instance is connected to.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - } - } - }, - "extManagedVirtualLinkInfo": { - "description": "External virtual links the VNF instance is connected to.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "vnfLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - } - } - } - } - } - } - }, - "monitoringParameters": { - "description": "Active monitoring parameters.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "performanceMetric" - ], - "properties": { - "id": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", - "type": "string" - }, - "performanceMetric": { - "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", - "type": "string" - } - } - } - }, - "localizationLanguage": { - "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", - "type": "string" - }, - "vnfcResourceInfo": { - "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "cpdId" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\n", - "type": "object", - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - } - } - } - } - } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "virtualLinkResourceInfo": { - "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "virtualStorageResourceInfo": { - "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "_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 using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "indicators": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "instantiate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "terminate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scale": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scaleToLevel": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeFlavour": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "heal": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "operate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeExtConn": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - } - } - } - } + "items": + { + "description": "This type represents a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "instantiationState" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vimConnectionInfo": { + "description": "Information about VIM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if VNF-related resource management in direct mode is pplicable. This attribute can be modified with the PATCH method.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState" + ], + "properties": { + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "required": [ + "aspectId", + "scaleLevel" + ], + "type": "object", + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF. It shall comply with the provisions defined in table 5.5.3.25 1.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [{ + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. This attribute reflects the current configuration information that has resulted from merging into this attribute the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" or \"ChangeCurrentVnfPkgRequest\", or has been provided by the NFVO during the granting procedure. If applying such change results in an empty list of \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its parent data structure.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created from a CPD.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n", + "anyOf": [{ + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": 1) Void 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes \n shall be present for an external CP instance representing a subport \n that is to be created, or an external CP instance that is to be created \n by creating the corresponding VNFC or VNF instance during the current or \n a subsequent LCM operation, or for an existing external CP instance \n that is to be re-configured or added to a particular external virtual link.\n3) If the \"linkPortId\" attribute is absent, the VNFM shall create a\n link port.\n4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"\n attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API\n consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "extManagedVirtualLinkInfo": { + "description": "Information about the externally-managed internal VLs of the VNF instance.\nNOTE: It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.3).\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "extManagedMultisiteVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "monitoringParameters": { + "description": "Active monitoring parameters.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to an external CP of the VNF instance. A VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly to an external VL. May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\n", + "type": "object", + "anyOf": [{ + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [{ + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. If the Cp instance represents a subport in a trunk, segmentationId shall be present. Otherwise it shall not be present. Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface of the trunk port in question. In the latter case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. At least one of \"macAddress\" or \"ipAddresses\" shall be present.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "virtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "Additional VNF-specific attributes that affect the lifecycle management of this VNF instance. These attributes represent values that are stored persistently in the VnfInstance structure for consumption by the VNFM or the lifecycle management scripts during the execution of VNF lifecycle management operations. All extensions that are allowed for the VNF are declared in the VNFD. The declaration of an extension in the VNFD contains information on whether its presence is optional or required, and optionally can specify an initial value. See note 2 and note 4. The VNFM shall reject requests to write extension attributes that are not declared in the VNFD with a \"422 Unprocessable entity\" error response as defined in clause 6.4 of ETSI GS NFV-SOL 013. Modifying the values of these attributes has no direct effect on the VNF instance; however, the modified attribute values can be considered during subsequent VNF lifecycle management operations, which means that the modified values can indirectly affect the configuration of the VNF instance. These attributes can be initialized with default values from the VNFD. These attributes can be modified with values passed in the request structures of certain LCM operations, such as the InstantiateVnfRequest structure. Further, these attributes can be created, modified or deleted with the PATCH method.\nNOTE: Upon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defineddeclared initial value shall not be created, in order to be consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null values as deletion request.\n" + }, + "_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 using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "indicators": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "instantiate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "terminate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scale": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scaleToLevel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeFlavour": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "heal": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "operate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeExtConn": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } } - } \ No newline at end of file +} \ No newline at end of file -- GitLab From d020b80a19226124dd62f266b40335485e9c9b1a Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 5 Mar 2021 11:26:06 +0500 Subject: [PATCH 352/580] updated references --- .../ApiVersion.robot | 20 ++++++------ .../CancelOperationTask.robot | 14 ++++---- .../CancelOperationWorkflow.robot | 4 +-- .../ChangeExternalVNFConnectivityTask.robot | 10 +++--- ...hangeExternalVNFConnectivityWorkflow.robot | 2 +- .../ChangeVNFFlavourTask.robot | 14 ++++---- .../ChangeVNFFlavourWorkflow.robot | 2 +- .../CreateVNFWorkflow.robot | 2 +- .../DeleteVNFWorkflow.robot | 2 +- .../FailOperationTask.robot | 14 ++++---- .../FailOperationWorkflow.robot | 2 +- .../HealVNFTask.robot | 14 ++++---- .../HealVNFWorkflow.robot | 2 +- .../IndividualSubscription.robot | 12 +++---- .../IndividualVNFInstance.robot | 18 +++++------ .../IndividualVnfLcmOperationOccurence.robot | 12 +++---- .../InstantiateVNFTask.robot | 12 +++---- .../InstantiateVNFTaskWorkflow.robot | 2 +- .../ModifyVNFInformationWorkflow.robot | 2 +- .../NotificationConsumer.robot | 6 ++-- .../NotificationEndpoint.robot | 8 ++--- .../OperateVNFTask.robot | 14 ++++---- .../OperateVNFWorkflow.robot | 2 +- .../RetryOperationTask.robot | 14 ++++---- .../RetryOperationWorkflow.robot | 4 +-- .../RollBackOperationWorkflow.robot | 4 +-- .../RollbackOperationTask.robot | 14 ++++---- .../ScaleVNFTask.robot | 14 ++++---- .../ScaleVNFToLevelTask.robot | 14 ++++---- .../ScaleVNFToLevelWorkflow.robot | 2 +- .../ScaleVNFWorkflow.robot | 2 +- .../Subscriptions.robot | 32 +++++++++---------- .../TerminateVNFTask.robot | 12 +++---- .../TerminateVNFWorkflow.robot | 2 +- .../VnfLcmOperationOccurences.robot | 30 ++++++++--------- 35 files changed, 167 insertions(+), 167 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot index 5c35bdd70..adf8f7dbb 100644 --- a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot @@ -11,7 +11,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot index 92461b333..5700ba314 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -12,7 +12,7 @@ POST Cancel operation task ... Test title: POST Cancel operation task ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. ... Pre-conditions: The "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance status equal to FAILED_TEMP @@ -25,7 +25,7 @@ POST Cancel operation task Conflict ... Test title: POST Cancel operation task Conflict ... Test objective: The POST method is NOT cancelling an ongoing VNF lifecycle operation due to the fact that the VNF instance resource is not in STARTING, PROCESSING or ROLLING_BACK state ... Pre-conditions: The "VNF LCM operation occurrence" is not in STARTING, PROCESSING or ROLLING_BACK state - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ POST Cancel operation task Not Found ... Test title: POST Cancel operation task Not Found ... Test objective: The objective is to test that POST method cannot cancel a VNF lifecycle operation because the resource is not found ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET Cancel operation task - Method not implemented ... Test title: GET Cancel operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Cancel operation task - Method not implemented ... Test title: PUT Cancel operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH Cancel operation task - Method not implemented ... Test title: PATCH Cancel operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE Cancel operation task - Method not implemented ... Test title: DELETE Cancel operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot index 28738b8e5..708b239b9 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot @@ -18,7 +18,7 @@ Cancel a VNF LCM Operation - STARTING ... Test title: Cancel a VNF LCM Operation - STARTING ... Test objective: The objective is to test the workflow for Cancelling a VNF LCM Operation being in the STARTING state ... Pre-conditions: The VNF lifecycle management operation occurrence is in STARTING state. NFVO is subscribed to VNF LCM Operation Occurrence notifications (Test ID 5.4.20.1) - ... Reference: Clause 5.4.17 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.17 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in ROLLED_BACK state @@ -34,7 +34,7 @@ Cancel a VNF LCM Operation - PROCESSING - ROLLING_BACK ... Test title: Cancel a VNF LCM Operation - PROCESSING - ROLLING_BACK ... Test objective: The objective is to test the workflow for Cancelling a VNF LCM Operation being either in the PROCESSIONG or ROLLING_BACK state ... Pre-conditions: The VNF lifecycle management operation occurrence is in PROCESSING or ROLLING_BACK state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index 32ee14b51..55ea09cbe 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -12,7 +12,7 @@ POST Change external VNF connectivity ... Test title: POST Change external VNF connectivity ... Test objective: The objective is to test that POST method trigger a change in VNF external connectivity ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -25,7 +25,7 @@ GET Change external VNF connectivity - Method not implemented ... Test title: GET Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT Change external VNF connectivity - Method not implemented ... Test title: PUT Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PATCH Change external VNF connectivity - Method not implemented ... Test title: PATCH Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ DELETE Change external VNF connectivity - Method not implemented ... Test title: DELETE Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot index 197063b64..47595f6fc 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot @@ -17,7 +17,7 @@ Change external connectivity of VNF Workflow ... Test title: Change external connectivity of VNF Workflow ... Test objective: The objective is to change the external connectivity of a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.4.11 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.11 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. The VNFD supports the external connectivity change ... Post-Conditions: VNF instance still in INSTANTIATED state and external connectivity of the VNF is changed diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 93a4003e0..1a0e50e0f 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -12,7 +12,7 @@ POST Change deployment flavour of a vnfInstance ... Test title: POST Change deployment flavour of a vnfInstance ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -25,7 +25,7 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because of a conflict with the state of the VNF instance resource. (VNF instance resource is not in NOT-INSTANTIATED state) ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ POST Change deployment flavour of a vnfInstance Not Found ... Test title: POST Change deployment flavour of a vnfInstance Not Found ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET Change deployment flavour VNFInstance - Method not implemented ... Test title: GET Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Change deployment flavour VNFInstance - Method not implemented ... Test title: PUT Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH Change deployment flavour VNFInstance - Method not implemented ... Test title: PATCH Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE Change deployment flavour VNFInstance - Method not implemented ... Test title: DELETE Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot index c772ba1c1..1bbe9ec47 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot @@ -17,7 +17,7 @@ Change VNF Flavour Workflow ... Test title: Change VNF Flavour Workflow ... Test objective: The objective is to test the workflow for a change flavour of an existing VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state . NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.7 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.7 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: Multiple flavours are supported for the VNF (as capability in the VNFD). NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance still in INSTANTIATED state and the flavour is changed diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot index a3d0dab02..309f34c1c 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot @@ -17,7 +17,7 @@ Create VNF Instance Resource ... Test title: Create VNF Instance workflow ... Test objective: The objective is to test the workflow for the creation of a new VNF instance resource. ... Pre-conditions: NFVO is subscribed to VNF Identifier Creation notifications - ... Reference: Clause 5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF instance resource has been created in "NOT_INSTANTIATED" state. diff --git a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot index 353a4c42a..ed7885930 100644 --- a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot @@ -17,7 +17,7 @@ Delete VNF Instance Resource ... Test title: Delete VNF Instance workflow ... Test objective: The objective is to test the workflow for the deleteion of an existing VNF instance resource ... Pre-conditions: The VNF Instance resource is in NOT_INSTANTIATED state. NFVO is subscribed to VNF Identifier Creation notifications - ... Reference: Clause 5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF instance resource is deleted on the VNFM. diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index 3d3cb5877..a0e5e4502 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -12,7 +12,7 @@ POST Fail operation task ... Test title: POST Fail operation task ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF resource state is FINALLY_FAILED @@ -26,7 +26,7 @@ Post Fail operation task Conflict (Not-FAILED_TEMP) ... Test title: Post Fail operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Post Fail operation task Not Found ... Test title: Post Fail operation task Not Found ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation because the operation is not supported ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Fail operation task - Method not implemented ... Test title: GET Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -64,7 +64,7 @@ PUT Fail operation task - Method not implemented ... Test title: PUT Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -76,7 +76,7 @@ PATCH Fail operation task - Method not implemented ... Test title: PATCH Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -88,7 +88,7 @@ DELETE Fail operation task - Method not implemented ... Test title: DELETE Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot index e7bdd1e74..d022b69b5 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot @@ -17,7 +17,7 @@ Fail a VNF LCM Operation Workflow ... Test title: Fail a VNF LCM Operation Workflow ... Test objective: The objective is to test the workflow for a Fail VNF LCM Operation ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.16 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.16 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED state diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index ca6daf95b..828dff8f2 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -12,7 +12,7 @@ POST Heal a vnfInstance ... Test title: POST Heal a vnfInstance ... Test objective: The objective is to test that POST method heal a VNF instance ... Pre-conditions: the VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ POST Heal a vnfInstance Not Found ... Test title: POST Heal a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET Heal VNFInstance - Method not implemented ... Test title: GET Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Heal VNFInstance - Method not implemented ... Test title: PUT Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH Heal VNFInstance - Method not implemented ... Test title: PATCH Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE Heal VNFInstance - Method not implemented ... Test title: DELETE Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot index 0b2a3b868..96845cc4b 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot @@ -17,7 +17,7 @@ Heal a VNF Instance ... Test title: Heal a VNF Instance ... Test objective: The objective is to heal a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.4.9 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.9 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Heal a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot index f5f85691b..6bec315ef 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the Get individual subscription ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription deleted from VNFM @@ -72,7 +72,7 @@ GET Individual Subscription - Not Found ... Test title: GET Individual Subscription - Not Found ... Test objective: The objective is to test the retrieval of individual subscription fails when subscription is not present ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index b87e388ba..693322efe 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -16,7 +16,7 @@ Post Individual VNFInstance - Method not implemented ... Test title: Post Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ Get Information about an individual VNF Instance ... Test title: Get Information about an individual VNF Instance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ PUT Individual VNFInstance - Method not implemented ... Test title: PUT Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ PATCH Individual VNFInstance ... Test title: PATCH Individual VNFInstance ... Test objective: This method modifies an individual VNF instance resource ... Pre-conditions: an existing VNF instance resource - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance modified @@ -67,7 +67,7 @@ PATCH Individual VNFInstance Precondition failed ... Test title: PATCH Individual VNFInstance Precondition failed ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: ETag mismatch - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance not modified @@ -80,7 +80,7 @@ PATCH Individual VNFInstance Conflict ... Test title: PATCH Individual VNFInstance Conflict ... Test objective: The objective is to test the conflict while modifying a VNF instance resource ... Pre-conditions: another LCM operation is ongoing - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance not modified @@ -93,7 +93,7 @@ DELETE Individual VNFInstance ... Test title: DELETE Individual VNFInstance ... Test objective: The objective is to delete a VNF instance ... Pre-conditions: the VNF instance resource is existing - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance deleted @@ -105,7 +105,7 @@ DELETE Individual VNFInstance Conflict ... Test title: DELETE Individual VNFInstance Conflict ... Test objective: The objective is to verify that the deletion cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resources are not deleted @@ -119,7 +119,7 @@ Get Information about an individual VNF Instance - Not Found ... Test title: Get Information about an individual VNF Instance - Not Found ... Test objective: The objective is to test that the retrieval of an individual VNF Instance fails when instance is not present. ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 85bc89adc..30880414a 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -11,7 +11,7 @@ Post Individual VNF LCM Operation occurrences - Method not implemented ... Test title: Post Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ Get Individual VNF LCM Operation occurrences ... Test title: Get Individual VNF LCM Operation occurrences ... Test objective: The objective is to test that this method retrieve information about a VNF lifecycle management operation occurrence ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT Individual VNF LCM Operation occurrences - Method not implemented ... Test title: PUT Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PATCH Individual VNF LCM Operation occurrences - Method not implemented ... Test title: PATCH Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ PATCH Individual VNF LCM Operation occurrences - Method not implemented ... Test title: DELETE Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ Get Individual VNF LCM Operation occurrences - Not Found ... Test title: Get Individual VNF LCM Operation occurrences - Not Found ... Test objective: The objective is to test that the retrieval of VNF lifecycle management operation occurrence fails when instance is not present. ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 5a2275f77..a585e8e25 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -13,7 +13,7 @@ Instantiate a vnfInstance ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ Instantiate a vnfInstance Conflict ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to verify that the instantiation of the vnf cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Instantiate VNFInstance - Method not implemented ... Test title: GET Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Instantiate VNFInstance - Method not implemented ... Test title: PUT Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Instantiate VNFInstance - Method not implemented ... Test title: PATCH Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Instantiate VNFInstance - Method not implemented ... Test title: DELETE Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot index 3b2377c2d..aa099c10c 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot @@ -20,7 +20,7 @@ VNF Instantiation ... Test title: VNF Instantiation workflow ... Test objective: The objective is to test the workflow for the instantiation of a VNF instance ... Pre-conditions: VNF instance resources is already created. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance in INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot index c3a7159cf..bd5201f81 100644 --- a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot @@ -17,7 +17,7 @@ Modify info of a VNF Instance ... Test title: Update information about a VNF instance ... Test objective: The objective is to update information about a VNF instance. ... Pre-conditions: VNF instance is created - ... Reference: Clause 5.3.6 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.3.6 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Update information of a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance info is updated diff --git a/SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot b/SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot index 8310ce197..ca6dd1098 100644 --- a/SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot @@ -13,7 +13,7 @@ VNF LCM Operation Occurrence Notification ... Test title: VNF LCM Operation Occurrence Notification ... Test objective: The objective is to test that the POST request triggers VNF LCM Operation Occurrence Notification. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test that the POST request triggers VNF Identifier Creation Notification. ... Pre-conditions: A subscription for VNF identifier creation cotification is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test that the POST request triggers VNF Identifier Deletion Notification. ... Pre-conditions: A subscription for VNF identifier deletion notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot index b956fd49b..ebf4f10bc 100644 --- a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF LCM Operation Occurrence Start Notification ... Test title: VNF LCM Operation Occurrence Start Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Start Notification when a new VNF LCM operation is started in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ VNF LCM Operation Occurrence Result Notification ... Test title: VNF LCM Operation Occurrence Result Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Result Notification when a VNF LCM operation is completed in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: An VNF LCM operation is in progress, and a subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Creation Notification when a new VNF instance resource is created in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Deletion Notification when a VNF instance resource is deleted in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance resource is created, and a subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index f0d227b3e..b932ff445 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -14,7 +14,7 @@ POST Operate a vnfInstance ... Test title: POST Operate a vnfInstance ... Test objective: The objective is to test that POST method operate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Operate a vnfInstance Not Found ... Test title: POST Operate a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed currently, because the resource is not existing ... Pre-conditions: the VNF instance resource is in not existing - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Operate VNFInstance - Method not implemented ... Test title: GET Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Operate VNFInstance - Method not implemented ... Test title: PUT Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Operate VNFInstance - Method not implemented ... Test title: PATCH Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Operate VNFInstance - Method not implemented ... Test title: DELETE Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot index 8755e4780..e444b92cf 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot @@ -18,7 +18,7 @@ Operate a VNF Instance ... Test title: Operate a VNF Instance ... Test objective: The objective is to test the workflow of operational change of a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: change the operational state of a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and the operational state is changed diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index 8f52055f4..b63abe4bf 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -15,7 +15,7 @@ Post Retry operation task ... Test title: Post Retry operation task ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ Post Retry operation task Conflict (Not-FAILED_TEMP) ... Test title: Post Retry operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that the retry operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. (i.e. the VNF instance resource is not in FAILED_TEMP state) ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ Post Retry operation task Not Found ... Test title: Post Retry operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Retry operation task - Method not implemented ... Test title: GET Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.14.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ PUT Retry operation task - Method not implemented ... Test title: PUT Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.14.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ PATCH Retry operation task - Method not implemented ... Test title: PATCH Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.14.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ DELETE Retry operation task - Method not implemented ... Test title: DELETE Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.14.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot index c512576c8..e91d5d32e 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot @@ -15,7 +15,7 @@ Retry VNF LCM Operation - Successful ... Test title: Retry VNF LCM Operation - Successful ... Test objective: The objective is to test the workflow for a successful Retry VNF LCM Operation and the status notifications ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in COMPLETED state @@ -30,7 +30,7 @@ Retry VNF LCM Operation - Unsuccessful ... Test title: Retry VNF LCM Operation - Unsuccessful ... Test objective: The objective is to test the workflow for an unsuccesful Retry VNF LCM Operation and the status notifications ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot index d3787aeca..05ffd4271 100644 --- a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot @@ -17,7 +17,7 @@ Rollback a VNF LCM Operation - Successful ... Test title: Rollback VNF LCM Operation - Successful ... Test objective: The objective is to test the workflow for a Rolling Back a VNF LCM Operation and the operation is successful ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.11 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.3.11 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in ROLLED_BACK state @@ -32,7 +32,7 @@ Rollback VNF LCM Operation - Unsuccessful ... Test title: Rollback VNF LCM Operation - Unsuccessful ... Test objective: The objective is to test the workflow for a Rollback VNF LCM Operation and the operation is not successful ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index 34443682d..21b085bff 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -14,7 +14,7 @@ Post Rollback operation task ... Test title: Post Rollback operation task ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method initiates a rollback on a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Rollback operation task Not Found ... Test title: POST Rollback operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Rollback operation task - Method not implemented ... Test title: GET Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Rollback operation task - Method not implemented ... Test title: PUT Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Rollback operation task - Method not implemented ... Test title: PATCH Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Rollback operation task - Method not implemented ... Test title: DELETE Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index 5d6da78ee..b9029a584 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -13,7 +13,7 @@ POST Scale a vnfInstance ... Test title: POST Scale a vnfInstance ... Test objective: The objective is to scale a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the scale operation cannot be executed ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Scale a vnfInstance Not Found ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed currently, because the VNF instance resource is not found. ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Scale VNFInstance - Method not implemented ... Test title: GET Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Scale VNFInstance - Method not implemented ... Test title: PUT Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Scale VNFInstance - Method not implemented ... Test title: PATCH Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Scale VNFInstance - Method not implemented ... Test title: DELETE Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 0b9f1c50d..427d6cf6a 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -12,7 +12,7 @@ POST Scale a vnfInstance to level ... Test title: POST Scale a vnfInstance to level ... Test objective: The objective is to scale a VNF instance to a target level. ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the scale operation cannot be executed because the resource is not instantiated ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Scale a vnfInstance Not Found ... Test title: Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed , because the VNF instance resource cannot be found. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET Scale to level VNFInstance - Method not implemented ... Test title: GET Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Scale to level VNFInstance - Method not implemented ... Test title: PUT Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH Scale to level VNFInstance - Method not implemented ... Test title: PATCH Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE Scale to level VNFInstance - Method not implemented ... Test title: DELETE Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot index bc7c374b9..abf90db5a 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot @@ -15,7 +15,7 @@ VNF Instance Scale To Level ... Test title: VNF Instance Scale To Level workflow ... Test objective: The objective is to test the workflow for the scale to level of a VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state . NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.6 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.6 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Scale operation is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and VNF is scaled to the new level diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot index 7e5c507fe..468a7dff0 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot @@ -15,7 +15,7 @@ VNF Instance Scale Out ... Test title: VNF Instance Scale Out workflow ... Test objective: The objective is to test the workflow for the scaling out a VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state (Test ID 5.4.4.1). NFVO is subscribed to VNF LCM Operation Occurrence notifications (Test ID 5.4.20.1) - ... Reference: Clause 5.4.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Scale operation is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and VNF is scaled out diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index a8ee0fba1..fd135b8cf 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -15,7 +15,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The POST method creates a new subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -28,7 +28,7 @@ Create a new Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The objective is to test request to create a duplicate (same callbackurl and filter) subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: duplication is supported by SUT ... Post-Conditions: in response header Location shall not be null @@ -41,7 +41,7 @@ Create a new Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The objective is to test the request that does not create a duplicate (same callbackurl and filter) subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: duplication is not supported by SUT ... Post-Conditions: in response header Location shall not be null @@ -54,7 +54,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET Subscription - Filter ... Test title: GET Subscriptions - Filter ... Test objective: The objective is Get the list of active subscriptions using a filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is Get the list of active subscriptions using an invalid filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ GET subscriptions with all_fields attribute selector ... Test title: GET subscriptions with all_fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -107,7 +107,7 @@ GET subscriptions with exclude_default attribute selector ... Test title: GET subscriptions with exclude_default attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -120,7 +120,7 @@ GET subscriptions with fields attribute selector ... Test title: GET subscriptions with fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -133,7 +133,7 @@ GET subscriptions with exclude_fields attribute selector ... Test title: GET subscriptions with exclude_fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -146,7 +146,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -158,7 +158,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -170,7 +170,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -182,7 +182,7 @@ GET Subscriptions as a Paged Response ... Test title: GET Subscriptions as a Paged Response ... Test objective: The objective is Get the list of active subscriptions as a Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -195,7 +195,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of the list of active subscriptions fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -208,7 +208,7 @@ POST Create a new Subscription - Unprocessable Entity ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index fd8544442..c36856c50 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -13,7 +13,7 @@ POST Terminate a vnfInstance ... Test title: POST Terminate a vnfInstance ... Test objective: The objective is to test that POST method terminate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the vnf Instance cannot be terminated ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Terminate VNFInstance - Method not implemented ... Test title: GET Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Terminate VNFInstance - Method not implemented ... Test title: PUT Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Terminate VNFInstance - Method not implemented ... Test title: PATCH Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Terminate VNFInstance - Method not implemented ... Test title: DELETE Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot index 2e7698784..54a4c1e75 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot @@ -15,7 +15,7 @@ Terminate a VNF Instance ... Test title: Terminate a VNF Instance ... Test objective: The objective is to terminate a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. ... Post-Conditions: VNF instance in NOT_INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index 07f88d6a4..29d32fb25 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -11,7 +11,7 @@ POST VNF LCM Operation occurrences - Method not implemented ... Test title: POST VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET status information about multiple VNF LCM Operation OCC ... Test title: GET status information about multiple VNF LCM Operation OCC ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ GET status information about multiple VNF LCM Operation OCC Bad Request Invalid ... Test title: GET status information about multiple VNF LCM Operation OCC Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ GET status information about multiple VNF LCM Operation OCC Bad Request Invalid ... Test title: GET status information about multiple VNF LCM Operation OCC Bad Request Invalid attribute selector ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test title: GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ GET status information about multiple VNF LCM Operation OCC with "exlude_default ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ GET status information about multiple VNF LCM Operation OCC with "fields" ... Test title: GET status information about multiple VNF LCM Operation OCC with "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_fields ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -114,7 +114,7 @@ PUT status information about multiple VNF LCM Operation OCC - Method not impleme ... Test title: PUT status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ PATCH status information about multiple VNF LCM Operation OCC - Method not imple ... Test title: PATCH status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -138,7 +138,7 @@ DELETE status information about multiple VNF LCM Operation OCC - Method not impl ... Test title: DELETE status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -150,7 +150,7 @@ GET status information about multiple VNF LCM Operation OCC to get Paged Respons ... Test title: GET status information about multiple VNF LCM Operation OCC to get Paged Response ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences to get a Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -163,7 +163,7 @@ GET status information about multiple VNF LCM Operation OCC - Bad Request Respon ... Test title: GET status information about multiple VNF LCM Operation OCC - Bad Request Response too Big ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -172,11 +172,11 @@ GET status information about multiple VNF LCM Operation OCC - Bad Request Respon Check HTTP Response Body Json Schema Is ProblemDetails GET status information about multiple VNF LCM Operation OCC with "exclude_default" and "fields" - [Documentation] Test ID: 7.3.1.11.13 + [Documentation] Test ID: 7.3.1.11.14 ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" and "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 0c697141bd48ada108d52af9cff66430add8c2c2 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 5 Mar 2021 13:05:52 +0500 Subject: [PATCH 353/580] updated importing variables for descriptors in LCM-API --- .../VnfLcmMntOperationKeywords.robot | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 90632195b..4a21d9175 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -9,8 +9,8 @@ Library JSONLibrary Library Collections Library Process Library JSONSchemaLibrary schemas/ -Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml -Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml +#Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +#Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** Create Sessions @@ -1441,6 +1441,7 @@ 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 + Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @{VDU_labels}= Create List @{VNF_labels}= Create List @{VirtualLink_labels}= Create List @@ -1467,7 +1468,8 @@ Fetch Information from SOL001 descriptor file Set Global Variable @{Storage_IDs} @{Storage_labels} Get VNF Attributes from SOL001 - [Arguments] ${VNF_label} + [Arguments] ${VNF_label} + Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml ${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} @@ -1484,6 +1486,7 @@ Get VNF Attributes from SOL001 Fetch Information from SOL006 descriptor file + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${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']} @@ -1511,6 +1514,7 @@ Fetch Information from SOL006 descriptor file Get VDU IDs [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @{VDU_labels}= Create List ${Storage_labels}= Create List FOR ${i} IN RANGE ${count} @@ -1523,6 +1527,7 @@ Get VDU IDs Get Internal CPs for each VDU [Arguments] ${vdu} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${count}= Get Length ${nfv.vnfd[0].vdu[${vdu}]['int-cpd']} ${internal_CPs}= Create List FOR ${i} IN RANGE ${count} @@ -1532,6 +1537,7 @@ Get Internal CPs for each VDU Get External CP IDs [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @{external_CPs}= Create List FOR ${i} IN RANGE ${count} Append To List ${external_CPs} ${nfv.vnfd[0].ext_cpd[${i}].id} @@ -1540,6 +1546,7 @@ Get External CP IDs Get Virtual Link IDs [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${VirtualLink_labels}= Create List FOR ${i} IN RANGE ${count} Append To List ${VirtualLink_labels} ${nfv.vnfd[0]['int-virtual-link-desc'][${i}]['id']} @@ -1548,6 +1555,7 @@ Get Virtual Link IDs Get Instantiation Levels [Arguments] ${count} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @{Instantiation_Levels}= Create List FOR ${i} IN RANGE ${count} Append To List ${Instantiation_Levels} ${nfv.vnfd[0].df['instantiation-level'][${i}]['id']} @@ -1627,8 +1635,6 @@ DELETE Change Current VNF Package Task Check HTTP Location Header Contains URI of Created Resource ${URI}= Get Value From Json ${response['headers']} $..Location Should Not Be Empty ${URI} - -*** Keywords *** POST Create VNF Snapshot Task Log Trying to request a snapshot of a VNF instance @@ -2029,7 +2035,6 @@ Check HTTP Content-Type Header Is Set Should Be Equal As Strings ${response['headers']['Content-Type']} ${CONTENT_TYPE_OCTET} Log Content type validated - Check HTTP Content-Range Header Is Set Log Check Content-Range HTTP Header Should Contain ${response['headers']} Content-Range -- GitLab From 313a00fdc644c7b620dc6bb8b03d64759ff666c3 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 14:16:50 +0500 Subject: [PATCH 354/580] bug fixes in query based parameter keywords --- .../Subscriptions.robot | 108 ++++++++-------- .../VNFInstances.robot | 15 ++- .../VNFSnapshots.robot | 15 ++- .../VnfLcmMntOperationKeywords.robot | 116 +++++++++++------- .../environment/variables.txt | 16 ++- 5 files changed, 166 insertions(+), 104 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index fd135b8cf..ee092ffdc 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -89,60 +89,60 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET subscriptions with all_fields attribute selector - [Documentation] Test ID: 7.3.1.17.7 - ... Test title: GET subscriptions with all_fields attribute selector - ... Test objective: The objective is Get the list of active subscriptions - ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get subscriptions with all_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is Subscriptions +#GET subscriptions with all_fields attribute selector +# [Documentation] Test ID: 7.3.1.17.7 +# ... Test title: GET subscriptions with all_fields attribute selector +# ... Test objective: The objective is Get the list of active subscriptions +# ... Pre-conditions: none +# ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 +# ... Config ID: Config_prod_VNFM +# ... Applicability: none +# ... Post-Conditions: none +# Get subscriptions with all_fields attribute selector +# Check HTTP Response Status Code Is 200 +# Check HTTP Response Body Json Schema Is Subscriptions -GET subscriptions with exclude_default attribute selector - [Documentation] Test ID: 7.3.1.17.8 - ... Test title: GET subscriptions with exclude_default attribute selector - ... Test objective: The objective is Get the list of active subscriptions - ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get subscriptions with exclude_default attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is Subscriptions +#GET subscriptions with exclude_default attribute selector +# [Documentation] Test ID: 7.3.1.17.8 +# ... Test title: GET subscriptions with exclude_default attribute selector +# ... Test objective: The objective is Get the list of active subscriptions +# ... Pre-conditions: none +# ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 +# ... Config ID: Config_prod_VNFM +# ... Applicability: none +# ... Post-Conditions: none +# Get subscriptions with exclude_default attribute selector +# Check HTTP Response Status Code Is 200 +# Check HTTP Response Body Json Schema Is Subscriptions -GET subscriptions with fields attribute selector - [Documentation] Test ID: 7.3.1.17.9 - ... Test title: GET subscriptions with fields attribute selector - ... Test objective: The objective is Get the list of active subscriptions - ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get subscriptions with fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is Subscriptions +#GET subscriptions with fields attribute selector +# [Documentation] Test ID: 7.3.1.17.9 +# ... Test title: GET subscriptions with fields attribute selector +# ... Test objective: The objective is Get the list of active subscriptions +# ... Pre-conditions: none +# ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 +# ... Config ID: Config_prod_VNFM +# ... Applicability: none +# ... Post-Conditions: none +# Get subscriptions with fields attribute selector +# Check HTTP Response Status Code Is 200 +# Check HTTP Response Body Json Schema Is Subscriptions -GET subscriptions with exclude_fields attribute selector - [Documentation] Test ID: 7.3.1.17.10 - ... Test title: GET subscriptions with exclude_fields attribute selector - ... Test objective: The objective is Get the list of active subscriptions - ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get subscriptions with exclude_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is Subscriptions +#GET subscriptions with exclude_fields attribute selector +# [Documentation] Test ID: 7.3.1.17.10 +# ... Test title: GET subscriptions with exclude_fields attribute selector +# ... Test objective: The objective is Get the list of active subscriptions +# ... Pre-conditions: none +# ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 +# ... Config ID: Config_prod_VNFM +# ... Applicability: none +# ... Post-Conditions: none +# Get subscriptions with exclude_fields attribute selector +# Check HTTP Response Status Code Is 200 +# Check HTTP Response Body Json Schema Is Subscriptions PUT subscriptions - Method not implemented - [Documentation] Test ID: 7.3.1.17.11 + [Documentation] Test ID: 7.3.1.17.7 ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -154,7 +154,7 @@ PUT subscriptions - Method not implemented Check HTTP Response Status Code Is 405 PATCH subscriptions - Method not implemented - [Documentation] Test ID: 7.3.1.17.12 + [Documentation] Test ID: 7.3.1.17.8 ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -166,7 +166,7 @@ PATCH subscriptions - Method not implemented Check HTTP Response Status Code Is 405 DELETE subscriptions - Method not implemented - [Documentation] Test ID: 7.3.1.17.13 + [Documentation] Test ID: 7.3.1.17.9 ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none @@ -178,7 +178,7 @@ DELETE subscriptions - Method not implemented Check HTTP Response Status Code Is 405 GET Subscriptions as a Paged Response - [Documentation] Test ID: 7.3.1.17.14 + [Documentation] Test ID: 7.3.1.17.10 ... Test title: GET Subscriptions as a Paged Response ... Test objective: The objective is Get the list of active subscriptions as a Paged Response. ... Pre-conditions: none @@ -191,7 +191,7 @@ GET Subscriptions as a Paged Response Check HTTP Response Header Contain Link GET subscriptions - Bad Request Response too Big - [Documentation] Test ID: 7.3.1.17.15 + [Documentation] Test ID: 7.3.1.17.11 ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of the list of active subscriptions fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: none @@ -204,7 +204,7 @@ GET subscriptions - Bad Request Response too Big Check HTTP Response Body Json Schema Is ProblemDetails POST Create a new Subscription - Unprocessable Entity - [Documentation] Test ID: 7.3.1.17.16 + [Documentation] Test ID: 7.3.1.17.12 ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index c6af813df..a4f553332 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -199,4 +199,17 @@ POST Create a new vnfInstance - Unprocessible Entity ... Post-Conditions: none POST Create a new vnfInstance - Not ENABLED Check HTTP Response Status Code Is 422 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF instances using Filter + [Documentation] Test ID: 7.3.1.1.16 + ... Test title: GET information about multiple VNF instances using Filter + ... Test objective: The objective is to query information about multiple VNF instances using filter + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple vnfInstances using filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is vnfInstances \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot index 4040ddbd2..b18ff99fd 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -180,4 +180,17 @@ DELETE VNF Snapshots - Method not implemented ... Applicability: none ... Post-Conditions: VNF instance not deleted DELETE VNF Snapshots - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +GET information about multiple VNF Snapshots using Filter + [Documentation] Test ID: 7.3.1.40.15 + ... Test title: GET information about multiple VNF Snapshots using Filter + ... Test objective: The objective is to get information about multiples VNF snapshots using filter + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshots using filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 4a21d9175..493888e0f 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -455,7 +455,17 @@ GET multiple vnfInstances with bad filter Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?attribute_not_exist=some_value + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?${NEG_FILTER_snapshot} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple vnfInstances using filter + Log Query VNF The GET method queries information about multiple VNF instances using filter + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?${POS_FILTER_snapshot} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -463,7 +473,7 @@ GET multiple vnfInstances with all_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?all_fields ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_default attribute selector @@ -477,21 +487,21 @@ GET multiple vnfInstances with fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields_vnfInstance} ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_default and fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields_vnfInstance}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} GET multiple vnfInstances with exclude_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_fields=${fields_vnfInstance} ${output}= Output response Set Suite Variable ${response} ${output} @@ -942,21 +952,28 @@ GET VNF LCM Operation occurrences invalid filter Log Query status information about multiple VNF lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=wrong_field + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?${NEG_FILTER_vnfLcmOpOcc} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +GET VNF LCM Operation occurrences using filter + Log Query status information about multiple VNF lifecycle management operation occurrences. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?${POS_FILTER_vnfLcmOpOcc} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get VNF LCM Operation occurrences with all_fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?all_fields ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_default and fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields_vnfLcmOpOcc}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_default attribute selector @@ -970,14 +987,14 @@ Get VNF LCM Operation occurrences with fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields_vnfLcmOpOcc} ${output}= Output response Set Suite Variable ${response} ${output} Get VNF LCM Operation occurrences with exclude_fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_fields=${fields_vnfLcmOpOcc} ${output}= Output response Set Suite Variable ${response} ${output} PUT VNF LCM Operation occurrences @@ -1263,44 +1280,44 @@ Get subscriptions - filter Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${POS_filter_subscription} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get subscriptions - invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${NEG_filter_subscription} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -Get subscriptions with all_fields attribute selector - Log Get the list of active subscriptions, using fields - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default - ${output}= Output response - Set Suite Variable ${response} ${output} -Get subscriptions with exclude_default attribute selector - Log Get the list of active subscriptions, using fields - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default - ${output}= Output response - Set Suite Variable ${response} ${output} -Get subscriptions with fields attribute selector - Log Get the list of active subscriptions, using fields - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} - ${output}= Output response - Set Suite Variable ${response} ${output} -Get subscriptions with exclude_fields attribute selector - Log Get the list of active subscriptions, using fields - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} - ${output}= Output response - Set Suite Variable ${response} ${output} +#Get subscriptions with all_fields attribute selector +# Log Get the list of active subscriptions, using fields +# Set Headers {"Accept": "${ACCEPT_JSON}"} +# Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} +# GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?all_fields +# ${output}= Output response +# Set Suite Variable ${response} ${output} +#Get subscriptions with exclude_default attribute selector +# Log Get the list of active subscriptions, using fields +# Set Headers {"Accept": "${ACCEPT_JSON}"} +# Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} +# GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default +# ${output}= Output response +# Set Suite Variable ${response} ${output} +#Get subscriptions with fields attribute selector +# Log Get the list of active subscriptions, using fields +# Set Headers {"Accept": "${ACCEPT_JSON}"} +# Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} +# GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields_subscription} +# ${output}= Output response +# Set Suite Variable ${response} ${output} +#Get subscriptions with exclude_fields attribute selector +# Log Get the list of active subscriptions, using fields +# Set Headers {"Accept": "${ACCEPT_JSON}"} +# Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} +# GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields_subscription} +# ${output}= Output response +# Set Suite Variable ${response} ${output} PUT subscriptions log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -1803,7 +1820,16 @@ GET multiple VNF Snapshots with bad filter Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=wrong_field + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?${NEG_FILTER_snapshot} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshots using filter + Log Query VNF The GET method queries information about multiple VNF snapshots. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?${POS_FILTER_snapshot} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1811,7 +1837,7 @@ GET multiple VNF Snapshots with all_fields attribute selector Log Query status information about multiple VNF snapshots, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -1827,7 +1853,7 @@ GET multiple VNF Snapshots with fields attribute selector Log Query status information about multiple VNF snapshots, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=${fields_snapshot} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1835,7 +1861,7 @@ GET multiple VNF Snapshots with exclude_default and fields attribute selector Log Query status information about multiple VNF snapshots, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=${fields}&exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=${fields_snapshot}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -1843,7 +1869,7 @@ GET multiple VNF Snapshots with exclude_fields attribute selector Log Query status information about multiple VNF snapshots, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?exclude_fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?exclude_fields=${fields_snapshot} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 07c4dbe0b..bc47d9d4d 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -64,10 +64,20 @@ ${response} {} ${json} {} ${requestedFlavour} test -${sub_filter} filter -${sub_filter_invalid} filter_invalid +${POS_filter_subscription} id=41fdd38a-3d4c-465c-83e0-f80e014425f8 +${NEG_filter_subscription} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 -${fields} criteria,objectInstanceIds +${fields_vnfLcmOpOcc} operationParams,grantId +${POS_FILTER_vnfLcmOpOcc} id=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Positive case, suing compiant fields name for filtering get request +${NEG_FILTER_vnfLcmOpOcc} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field + +${fields_vnfInstance} vnfInstanceDescription,vimConnectionInfo +${POS_FILTER_vnfInstance} id=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Positive case, suing compiant fields name for filtering get request +${NEG_FILTER_vnfInstance} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field + +${POS_FILTER_snapshot} id=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Positive case, suing compiant fields name for filtering get request +${NEG_FILTER_snapshot} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field +${fields_snapshot} vnfStateSnapshotInfo ${PAGING_SUPPORTED} 1 -- GitLab From 1264460de1051b1728e5213a18d095bcaf4ddf7f Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 14:22:28 +0500 Subject: [PATCH 355/580] minor bug fix --- .../VnfLcmMntOperationKeywords.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 493888e0f..13eff74f2 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1971,7 +1971,7 @@ DELETE individual VNF Snapshot Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1980,7 +1980,7 @@ DELETE individual VNF Snapshot - CONFLICT Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId_InUse} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId_InUse} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -- GitLab From 14f75f970301dd76ca819139e061f970110ad3cb Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 16:56:30 +0500 Subject: [PATCH 356/580] fixed Content-Range and Content-Length checks --- .../VNFLifecycleManagement-API/VNFStateSnapshot.robot | 1 + .../VnfLcmMntOperationKeywords.robot | 10 ++++++++-- .../environment/variables.txt | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot index 985422c38..6556cef27 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot @@ -53,6 +53,7 @@ GET VNF State Snapshot - Range Request Not Supported GET VNF State Snapshot - Range Request Check HTTP Response Status Code Is 200 Check HTTP Content-Type Header Is Set + Check HTTP Content-Length Header Is Set GET VNF State Snapshot - Range Not Satisfiable [Documentation] Test ID: 7.3.1.42.5 diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 13eff74f2..0ece9f1ac 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -2064,5 +2064,11 @@ Check HTTP Content-Type Header Is Set Check HTTP Content-Range Header Is Set Log Check Content-Range HTTP Header Should Contain ${response['headers']} Content-Range - Should Be Equal As Strings ${response['headers']['Content-Range']} ${range} - Log Header Content-Range is present \ No newline at end of file + Should Be Equal As Strings ${response['headers']['Content-Range']} ${range}/${full_length} + Log Header Content-Range is present + +Check HTTP Content-Length Header Is Set + Log Check Content-Range HTTP Header + Should Contain ${response['headers']} Content-Length + Should Be Equal As Strings ${response['headers']['Content-Length']} ${full_length} + Log Header Content-Length is present \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index bc47d9d4d..a179dde98 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -37,7 +37,7 @@ ${CONTENT_TYPE_OCTET} application/octet-stream ${VNFM_RANGE_OK} 1 # If 1 means that Range is supported by the VNFM ${range} bytes=0-1023 ${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes - +${full_length} 2000 #Full size of the content file to be transmitted using partial downloads ${instantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${notInstantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -- GitLab From 7b2a5b93b163f05b4098e2e14415b1dcf2efd90e Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 18:41:05 +0500 Subject: [PATCH 357/580] minor fix in documentation --- SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot index 36db74796..14e06b536 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -31,9 +31,9 @@ GET Information about an individual VNF Snapshot - NOT FOUND [Documentation] Test ID: 7.3.1.41.3 ... Test title: GET Information about an individual VNF Snapshot - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot fails when using an invalid resource identifier. - ... Pre-conditions: At least one individual VNF Snapshot is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_NFV-MANO + ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none GET Individual VNF Snapshot with Invalid URI -- GitLab From 2aa94a518e4d51d94a28b10cf76a4f98885fce80 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 18:44:01 +0500 Subject: [PATCH 358/580] postcondition checks added in DELETE method for IndividualVNFSnapshot resource --- .../IndividualVNFSnapshot.robot | 4 +++- .../VnfLcmMntOperationKeywords.robot | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot index 14e06b536..b795a2f63 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -102,6 +102,7 @@ DELETE Individual VNF Snapshot ... Post-Conditions: VNF Snapshot deleted DELETE individual VNF Snapshot Check HTTP Response Status Code Is 204 + Check Postcondition VNF Snapshot Resource Is Deleted DELETE Individual VNF Snapshot - Conflict [Documentation] Test ID: 7.3.1.41.9 @@ -114,4 +115,5 @@ DELETE Individual VNF Snapshot - Conflict ... Post-Conditions: none DELETE individual VNF Snapshot - CONFLICT Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + Check Postcondition VNF Snapshot Resource Existence \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 0ece9f1ac..3772a2166 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1983,6 +1983,16 @@ DELETE individual VNF Snapshot - CONFLICT Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId_InUse} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +Check Postcondition VNF Snapshot Resource Is Deleted + Get individual VNF Snapshot + Integer response status 404 + Log VNF Snapshot Resource deleted + +Check Postcondition VNF Snapshot Resource Existence + Get individual VNF Snapshot + Integer response status 200 + Log VNF Snapshot Resource is not deleted POST VNF State Snapshot log Trying to perform a POST. This method should not be implemented -- GitLab From 2de3070a7589a7281a5a4084ffb7f385b19bc86a Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Tue, 2 Mar 2021 18:17:25 +0500 Subject: [PATCH 359/580] New resources added in the VNFSnapshotPackageManagement-API --- .../ApiVersion.robot | 125 ++++++ .../IndividualVNFSnapshotPackage.robot | 77 ++++ ...IndividualVNFSnapshotPackageArtifact.robot | 115 +++++ .../VNFSnapshotPackageContent.robot | 115 +++++ .../VNFSnapshotPackages.robot | 181 ++++++++ ...VnfSnapshotPackageManagementKeywords.robot | 412 ++++++++++++++++++ .../environment/variables.txt | 98 +++++ .../schemas/VnfSnapshotPkgInfo.schema.json | 350 +++++++++++++++ .../schemas/VnfSnapshotPkgInfos.schema.json | 354 +++++++++++++++ 9 files changed, 1827 insertions(+) create mode 100644 SOL003/VNFSnapshotPackageManagement-API/ApiVersion.robot create mode 100644 SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot create mode 100644 SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot create mode 100644 SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot create mode 100644 SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot create mode 100644 SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot create mode 100644 SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt create mode 100644 SOL003/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfo.schema.json create mode 100644 SOL003/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfos.schema.json diff --git a/SOL003/VNFSnapshotPackageManagement-API/ApiVersion.robot b/SOL003/VNFSnapshotPackageManagement-API/ApiVersion.robot new file mode 100644 index 000000000..e770a7790 --- /dev/null +++ b/SOL003/VNFSnapshotPackageManagement-API/ApiVersion.robot @@ -0,0 +1,125 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 7.3.8.1.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 7.3.8.1.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 7.3.8.1.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 7.3.8.1.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 7.3.8.1.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.8.1.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 7.3.8.1.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.8.1.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.8.1.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 7.3.8.1.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot new file mode 100644 index 000000000..36d951061 --- /dev/null +++ b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot @@ -0,0 +1,77 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST Individual VNF Snapshot Package - Method not implemented + [Documentation] Test ID: 7.3.8.3.1 + ... Test title: POST Individual VNF Snapshot Package - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST individual VNF Snapshot Package + Check HTTP Response Status Code Is 405 + +GET Information about an individual VNF Snapshot Package - SUCCESSFUL + [Documentation] Test ID: 7.3.8.3.2 + ... Test title: GET Information about an individual VNF Snapshot Package - SUCCESSFUL + ... Test objective: The objective is to create a new VNF Snapshot Package resource + ... Pre-conditions: none + ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual VNF Snapshot Package + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfo + +GET Information about an individual VNF Snapshot Package - NOT FOUND + [Documentation] Test ID: 7.3.8.3.3 + ... Test title: GET Information about an individual VNF Snapshot Package - NOT FOUND + ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot Package fails when using an invalid resource identifier. + ... Pre-conditions: At least one individual VNF Snapshot Package is available in the NFV-MANO. + ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Snapshot Package with Invalid URI + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Individual VNF Snapshot Package - Method not implemented + [Documentation] Test ID: 7.3.8.3.4 + ... Test title: PUT Individual VNF Snapshot Package - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package not modified + PUT individual VNF Snapshot Package + Check HTTP Response Status Code Is 405 + +PATCH Individual VNF Snapshot Package - Method Not implemented + [Documentation] Test ID: 7.3.8.3.5 + ... Test title: PATCH Individual VNF Snapshot Package + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package modified + PATCH individual VNF Snapshot Package + Check HTTP Response Status Code Is 405 + +DELETE Individual VNF Snapshot Package - Method Not implemented + [Documentation] Test ID: 7.3.8.3.6 + ... Test title: DELETE Individual VNF Snapshot Package - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package deleted + DELETE individual VNF Snapshot Package + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot new file mode 100644 index 000000000..224459059 --- /dev/null +++ b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot @@ -0,0 +1,115 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST Individual VNF Snapshot Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.8.5.1 + ... Test title: POST Individual VNF Snapshot Package Artifact - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Individual VNF Snapshot Package Artifact + Check HTTP Response Status Code Is 405 + +GET Individual VNF Snapshot Package Artifact - Complete File + [Documentation] Test ID: 7.3.8.5.2 + ... Test title: GET Information about an individual VNF Snapshot Package - Complete File + ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. + ... Pre-conditions: none + ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Snapshot Package Artifact - Complete + Check HTTP Response Status Code Is 200 + Check HTTP Content-Type Header Is Set For Package Artifact + +GET Individual VNF Snapshot Package Artifact - Partial Content + [Documentation] Test ID: 7.3.8.5.3 + ... Test title: GET Individual VNF Snapshot Package Artifact - Partial Content + ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. + ... Pre-conditions: none + ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: NFVO supports range requests + ... Post-Conditions: none + GET Individual VNF Snapshot Package Artifact - Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Content-Type Header Is Set For Package Artifact + Check HTTP Content-Range Header Is Set + +GET Individual VNF Snapshot Package Artifact - Range Request Not Supported + [Documentation] Test ID: 7.3.8.5.4 + ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported + ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. + ... Pre-conditions: none + ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: NFVO does not support range requests + ... Post-Conditions: none + GET Individual VNF Snapshot Package Artifact - Range Request + Check HTTP Response Status Code Is 200 + Check HTTP Content-Type Header Is Set For Package Artifact + +GET Individual VNF Snapshot Package Artifact - Range Not Satisfiable + [Documentation] Test ID: 7.3.8.5.5 + ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable + ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. + ... Pre-conditions: none + ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: NFVO supports range requests + ... Post-Conditions: none + GET Individual VNF Snapshot Package Artifact - Invalid Range + Check HTTP Response Status Code Is 416 + +GET Individual VNF Snapshot Package Artifact - Conflict + [Documentation] Test ID: 7.3.8.5.6 + ... Test title: GET Information about an individual VNF Snapshot Package - Conflict + ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". + ... Pre-conditions: none + ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". + ... Post-Conditions: none + GET Individual VNF Snapshot Package Artifact - Not Available + Check HTTP Response Status Code Is 409 + +PUT Individual VNF Snapshot Package Artifact - Method not implemented + [Documentation] Test ID: 7.3.8.5.7 + ... Test title: PUT Individual VNF Snapshot Package Artifact - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package not modified + PUT Individual VNF Snapshot Package Artifact + Check HTTP Response Status Code Is 405 + +PATCH Individual VNF Snapshot Package Artifact - Method Not implemented + [Documentation] Test ID: 7.3.8.5.8 + ... Test title: PATCH Individual VNF Snapshot Package Artifact + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH Individual VNF Snapshot Package Artifact + Check HTTP Response Status Code Is 405 + +DELETE Individual VNF Snapshot Package Artifact - Method Not implemented + [Documentation] Test ID: 7.3.8.5.9 + ... Test title: DELETE Individual VNF Snapshot Package Artifact - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE Individual VNF Snapshot Package Artifact + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot new file mode 100644 index 000000000..8271d7489 --- /dev/null +++ b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot @@ -0,0 +1,115 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST VNF Snapshot Package Content - Method not implemented + [Documentation] Test ID: 7.3.8.4.1 + ... Test title: POST VNF Snapshot Package Content - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST VNF Snapshot Package Content + Check HTTP Response Status Code Is 405 + +GET VNF Snapshot Package Content - Complete File + [Documentation] Test ID: 7.3.8.4.2 + ... Test title: GET Information about an individual VNF Snapshot Package - Complete File + ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. + ... Pre-conditions: none + ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET VNF Snapshot Package Content - Complete + Check HTTP Response Status Code Is 200 + Check HTTP Content-Type Header Is Set For Package Content + +GET VNF Snapshot Package Content - Partial Content + [Documentation] Test ID: 7.3.8.4.3 + ... Test title: GET VNF Snapshot Package Content - Partial Content + ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. + ... Pre-conditions: none + ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: NFVO supports range requests + ... Post-Conditions: none + GET VNF Snapshot Package Content - Range Request + Check HTTP Response Status Code Is 206 + Check HTTP Content-Type Header Is Set For Package Content + Check HTTP Content-Range Header Is Set + +GET VNF Snapshot Package Content - Range Request Not Supported + [Documentation] Test ID: 7.3.8.4.4 + ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported + ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. + ... Pre-conditions: none + ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: NFVO does not support range requests + ... Post-Conditions: none + GET VNF Snapshot Package Content - Range Request + Check HTTP Response Status Code Is 200 + Check HTTP Content-Type Header Is Set For Package Content + +GET VNF Snapshot Package Content - Range Not Satisfiable + [Documentation] Test ID: 7.3.8.4.5 + ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable + ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. + ... Pre-conditions: none + ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: NFVO supports range requests + ... Post-Conditions: none + GET VNF Snapshot Package Content - Invalid Range + Check HTTP Response Status Code Is 416 + +GET VNF Snapshot Package Content - Conflict + [Documentation] Test ID: 7.3.8.4.6 + ... Test title: GET Information about an individual VNF Snapshot Package - Conflict + ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". + ... Pre-conditions: none + ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". + ... Post-Conditions: none + GET VNF Snapshot Package Content - Not Available + Check HTTP Response Status Code Is 409 + +PUT VNF Snapshot Package Content - Method not implemented + [Documentation] Test ID: 7.3.8.4.7 + ... Test title: PUT VNF Snapshot Package Content - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package not modified + PUT VNF Snapshot Package Content + Check HTTP Response Status Code Is 405 + +PATCH VNF Snapshot Package Content - Method Not implemented + [Documentation] Test ID: 7.3.8.4.8 + ... Test title: PATCH VNF Snapshot Package Content + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH VNF Snapshot Package Content + Check HTTP Response Status Code Is 405 + +DELETE VNF Snapshot Package Content - Method Not implemented + [Documentation] Test ID: 7.3.8.4.9 + ... Test title: DELETE VNF Snapshot Package Content - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE VNF Snapshot Package Content + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot new file mode 100644 index 000000000..6a845045f --- /dev/null +++ b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot @@ -0,0 +1,181 @@ +*** Settings *** +Resource VnfSnapshotPackageManagementKeywords.robot + +*** Test Cases *** +POST VNF Snapshot Packages - Method not implemented + [Documentation] Test ID: 7.3.8.2.1 + ... Test title: POST VNF Snapshot Packages - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST VNF Snapshot Packages + Check HTTP Response Status Code Is 405 + +GET information about multiple VNF Snapshot Packages + [Documentation] Test ID: 7.3.8.2.2 + ... Test title: GET information about multiple VNF Snapshot Packages + ... Test objective: The objective is to get information about multiples VNF Snapshot Packages + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos + +GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 7.3.8.2.3 + ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute-based filtering parameters + ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with bad attribute + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute selector + [Documentation] Test ID: 7.3.8.2.4 + ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute selector + ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with bad filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF Snapshot Packages with "all_fields" attribute selector + [Documentation] Test ID: 7.3.8.2.5 + ... Test title: GET information about multiple VNF Snapshot Packages with "all_fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshot Packages + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos + +GET information about multiple VNF Snapshot Packages with "exclude_default" attribute selector + [Documentation] Test ID: 7.3.8.2.6 + ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshot Packages + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos + +GET information about multiple VNF Snapshot Packages with "fields" attribute selector + [Documentation] Test ID: 7.3.8.2.7 + ... Test title: GET information about multiple VNF Snapshot Packages with "fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshot Packages + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos + +GET information about multiple VNF Snapshot Packages with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 7.3.8.2.8 + ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshot Packages + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos + +GET information about multiple VNF Snapshot Packages with "exclude_fields" attribute selector + [Documentation] Test ID: 7.3.8.2.9 + ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_fields" attribute selector + ... Test objective: The objective is to query information about multiple VNF Snapshot Packages + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos + +GET VNF Snapshot Packages - Bad Request Response too Big + [Documentation] Test ID: 7.3.8.2.10 + ... Test title: GET VNF Snapshot Packages - Bad Request Response too Big + ... Test objective: The objective is test that the retrieval of existing VNF Snapshot Packages list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: NFVO does not support paged response. + ... Post-Conditions: none + GET VNF Snapshot Packages without Paging support + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET VNF Snapshot Packages as Paged Response + [Documentation] Test ID: 7.3.8.2.11 + ... Test title: GET VNF Snapshot Packages as Paged Response + ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshot Packages as paged response. + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: NFVO supports paged response. + ... Post-Conditions: none + GET VNF Snapshot Packages with Paging support + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +PUT VNF Snapshot Packages - Method not implemented + [Documentation] Test ID: 7.3.8.2.12 + ... Test title: PUT VNF Snapshot Packages - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT VNF Snapshot Packages + Check HTTP Response Status Code Is 405 + +PATCH VNF Snapshot Packages - Method not implemented + [Documentation] Test ID: 7.3.8.2.13 + ... Test title: PATCH VNF Snapshot Packages - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH VNF Snapshot Packages + Check HTTP Response Status Code Is 405 + +DELETE VNF Snapshot Packages - Method not implemented + [Documentation] Test ID: 7.3.8.2.14 + ... Test title: DELETE VNF Snapshot Packages - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF snapshot package is not deleted + DELETE VNF Snapshot Packages + Check HTTP Response Status Code Is 405 diff --git a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot new file mode 100644 index 000000000..ac4c4a0fa --- /dev/null +++ b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -0,0 +1,412 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK + +POST VNF Snapshot Packages + Log Trying to perform a POST. This method should not be implemented. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshot Packages + Log Query VNF The GET method queries information about multiple VNF Snapshot Packages. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshot Packages with bad attribute + Log Query VNF The GET method queries information about multiple VNF Snapshot Packages. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?attribute_not_exist=some_value + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshot Packages with bad filter + Log Query VNF The GET method queries information about multiple VNF Snapshot Packages. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?fields=wrong_field + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshot Packages with all_fields attribute selector + Log Query status information about multiple VNF Snapshot Packages, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshot Packages with exclude_default attribute selector + Log Query status information about multiple VNF Snapshot Packages using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshot Packages with fields attribute selector + Log Query status information about multiple VNF Snapshot Packages, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshot Packages with exclude_default and fields attribute selector + Log Query status information about multiple VNF Snapshot Packages, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET multiple VNF Snapshot Packages with exclude_fields attribute selector + Log Query status information about multiple VNF Snapshot Packages, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?exclude_fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET VNF Snapshot Packages without Paging support + Run Keyword If ${PAGING_SUPPORTED} == 0 GET multiple VNF Snapshot Packages + +GET VNF Snapshot Packages with Paging support + Run Keyword If ${PAGING_SUPPORTED} == 1 GET multiple VNF Snapshot Packages + +Check HTTP Response Header Contains Link + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + +PUT VNF Snapshot Packages + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH VNF Snapshot Packages + Log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE VNF Snapshot Packages + Log Trying to perform a DELETE. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST individual VNF Snapshot Package + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot Package + log Trying to get information about an individual VNF Snapshot Package + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot Package with invalid URI + log Trying to get information about an individual VNF Snapshot Package + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${invalidVnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT individual VNF Snapshot Package + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH individual VNF Snapshot Package + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE individual VNF Snapshot Package + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST VNF Snapshot Package Content + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF Snapshot Package Content - Complete + log Trying to fetch the complete contents of VNF Snapshot Package + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF Snapshot Package Content - Range Request + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + log Trying to get information about an individual VNF Snapshot Package using a range request + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Range":"${range}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF Snapshot Package Content - Invalid Range + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + log Trying to get information about an individual VNF Snapshot Package with invalid range + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Range":"${erroneousRange}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF Snapshot Package Content - Not Available + Log Trying to fetch the contents of a VNF Snapshot Package which is not in AVAILABLE state + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId_notInAvailableState}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Content-Type Header Is Set For Package Content + Log Check Content-Type HTTP Header + Should Contain ${response['headers']} Content-Type + Should Be Equal As Strings ${response['headers']['Content-Type']} ${CONTENT_TYPE_ZIP} + Log Content type validated + +Check HTTP Content-Range Header Is Set + Log Check Content-Range HTTP Header + Should Contain ${response['headers']} Content-Range + Should Be Equal As Strings ${response['headers']['Content-Range']} ${range} + Log Header Content-Range is present + +PUT VNF Snapshot Package Content + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH VNF Snapshot Package Content + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE VNF Snapshot Package Content + 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_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Individual VNF Snapshot Package Artifact + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual VNF Snapshot Package Artifact - Complete + log Trying to fetch the complete contents of an individual VNF Snapshot Package artifact + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual VNF Snapshot Package Artifact - Range Request + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + log Trying to get information about an individual VNF Snapshot Package artifact using a range request + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Range":"${range}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual VNF Snapshot Package Artifact - Invalid Range + Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. + log Trying to get information about an individual VNF Snapshot Package artifact with invalid range + Set Headers {"Accept":"${CONTENT_TYPE_OCTET}"} + Set Headers {"Range":"${erroneousRange}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual VNF Snapshot Package Artifact - Not Available + Log Trying to get information about an individual artifact of a VNF Snapshot Package which is not in AVAILABLE state + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId_notInAvailableState}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Individual VNF Snapshot Package Artifact + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Individual VNF Snapshot Package Artifact + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Individual VNF Snapshot Package Artifact + log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Content-Type Header Is Set For Package Artifact + Log Check Content-Type HTTP Header + Should Contain ${response['headers']} Content-Type + Should Be Equal As Strings ${response['headers']['Content-Type']} ${CONTENT_TYPE_OCTET} + Log Content type validated + diff --git a/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt b/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt new file mode 100644 index 000000000..845607daf --- /dev/null +++ b/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt @@ -0,0 +1,98 @@ +*** Variables *** +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO +${NFVO_SCHEMA} https +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${ACCEPT_JSON} application/json +${AUTH_USAGE} 1 +${CONTENT_TYPE_JSON} application/json +${NEG_AUTHORIZATION} Bearer negativetoken +${NFVO_FIELDS} 1 + +${vnfPackageId} 788106a2-d692-44f3-a86d-384f0ce35e42 +${vndId} 788106a2-d692-44f3-a86d-384f0ce35e42 +${onboardingStateVnfPkgId} f9f130e4-05eb-4082-a676-4c97d13a883d +${onboardingStateVnfdId} f9f130e4-05eb-4082-a676-4c97d13a883d + +${apiRoot} / +${apiMajorVersion} v1 +${apiName} vnfsnapshotpkgm + +${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint + +${NFVO_ALLOWS_DUPLICATE_SUBS} 1 + +${PAGING_SUPPORTED} 1 + +${response} httpresponse + +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +${callback_uri} http://localhost +${callback_port} 9091 +${callback_endpoint} /endpoint +${callback_endpoint_fwd} /endpoint/check +${callback_endpoint_error} /endpoint_404 +${sleep_interval} 20s +${total_polling_time} 2 min +${polling_interval} 10 sec + + +${notification_request} [] +${notification_response} [] + +${NFVO_non-MANO_OK} 1 # If 1 means that non-MANO artifacts are supported by the NFVO +${non_mano_artifact_sets} + + +${subscriptionId} f3ae6df7-07e1-47c9-8924-9ebe10343586 +${erroneousSubscriptionId} 442e3ee5-0499-4849-9b31-eb91ce1638f1 # Not existing ID on the subscriptions +${newSubscriptionId} newSubsciptionId + +${origResponse} httpresponse + + +${erroneousVnfPackageId} erroneousVnfPackageId # Given ID for vnfPkg not present in database +${erroneousVnfdId} erroneousVnfdId + + +${filter_ok} callbackUri=http://172.22.1.7:9091/vnfpkgm/subscriptions +${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based +${SEPERATOR} = + + +${ACCEPT_PLAIN} text/plain +${CONTENT_TYPE_PLAIN} text/plain +${vnfPkgPlainVNFD} c26ad7fb-072b-48c4-a663-7d71646d9e98 # The VNF Pakcage contains a VNFD which is a Single Plain File +${ACCEPT_ZIP} application/zip +${ACCEPT_OCTET} application/octet-stream +${CONTENT_TYPE_ZIP} application/zip +${vnfPkgZipVNFD} f5b220d4-6177-4ebb-a554-a43311e16075 # The VNF Package contains a VNFD composed by multiple files +${erroneousVnfPkgId} erroneousVnfPackageId # Given ID for vnfPkg not present in database +${vndIdZipVnfd} f5b220d4-6177-4ebb-a554-a43311e16075 + + +${artifactPath} artifactPath +${CONTENT_TYPE_OCTET} application/octet-stream +${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO +${range} bytes=0-1023 +${full_size} 2000 # Size of the requested artifact to be downloaded via partial downloads +${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes +${vnfPackageOctetStreamId} octetStreamPkgId +${vnfdOctetStreamId} octetStreamVnfdId +${vndEncryptedArtifactID} encryptedId + + +${length} 1024 + +${POS_FILTER} vnfdId=41fdd38a-3d4c-465c-83e0-f80e014425f8 ,vnfProvider=NXW # Positive case, suing compiant fields name for filtering get request +${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field +${fields} softwareImages,additionalArtifacts +${VAR_SEPERATOR} & + +${callbackResp} localhost + +${vnfSnapshotPkgId} +${invalidVnfSnapshotInfoId} +${vnfSnapshotPkgId_notInAvailableState} \ No newline at end of file diff --git a/SOL003/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfo.schema.json b/SOL003/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfo.schema.json new file mode 100644 index 000000000..d2cf2c049 --- /dev/null +++ b/SOL003/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfo.schema.json @@ -0,0 +1,350 @@ +{ + "description": "This type represents the information of a VNF snapshot package.\n", + "type": "object", + "required": [ + "id", + "name", + "isFullSnapshot", + "state", + "isCancelPending", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshotPkgUniqueId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "checksum": { + "description": "Cheksum description\n", + "type": "string" + }, + "createdAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfSnapshotId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcSnapshotInfoIds": { + "description": "Identifiers of information held by the VNFM about specific VNFC snapshots part of the VNF snapshot and contained in the VNF snapshot package. This identifier is allocated by the VNFM during the VNF snapshot creation.\nNOTE: The attribute shall not be present before the VNF snapshot package content has been uploaded or built. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n", + "type": "object", + "items": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + } + }, + "isFullSnapshot": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "vnfdInfo": { + "description": "This type represents the VNFD which is contained in a VNF snapshot package.\n", + "type": "object", + "required": [ + "avnfdId", + "vnfdPath", + "checksum", + "isEncrypted" + ], + "properties": { + "avnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfdPath": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "checksum": { + "description": "Cheksum description\n", + "type": "string" + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + } + } + }, + "vnfsr": { + "description": "This type represents the VNF snapshot record which is contained in a VNF snapshot package.\n", + "type": "object", + "required": [ + "recordPath", + "checksum", + "isEncrypted" + ], + "properties": { + "recordPath": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "checksum": { + "description": "Cheksum description\n", + "type": "string" + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + } + } + }, + "vnfcSnapshotImages": { + "description": "Information about VNF snapshot artifacts that are VNFC snapshot images. Every local and external snapshot image shall be included. No other artifacts shall be included.\nNOTE: The attribute shall not be present before the VNF snapshot package content has been uploaded or built. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n", + "type": "object", + "items": { + "description": "This type represents an artifact contained in a VNF snapshot package which represents a snapshot image.\n", + "type": "object", + "required": [ + "id", + "name", + "checksum", + "isEncrypted", + "vnfcInstanceId", + "containerFormat", + "diskFormat", + "createdAt", + "minDisk", + "minRam", + "size" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "name": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "checksum": { + "description": "Cheksum description\n", + "type": "string" + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "containerFormat": { + "description": "Container format indicates whether the snapshot image is in a file format that also contains metadata about the actual snapshot.\nPermitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ramdisk image format - BARE: the image does not have a container or metadata envelope - DOCKER: docker container format - OVA: OVF package in a tarfile - OVF: OVF container format\nNOTE: The list of permitted values was taken from \"Container formats\" in [i.5] (OpenStack® documentation: \"Disk and container formats for images\").\n", + "type": "string", + "enum": [ + "AKI", + "AMI", + "ARI", + "BARE", + "DOCKER", + "OVA", + "OVF" + ] + }, + "diskFormat": { + "description": "Disk format of a snapshot image is the format of the underlying disk image.\nPermitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ramdisk image format - ISO: an archive format for the data contents of an optical disc, such as CD-ROM - QCOW2: a common disk image format, which can expand dynamically and supports copy on write - RAW: an unstructured disk image format - VDI: a common disk image format - VHD: a common disk image format - VHDX: enhanced version of VHD format - VMDK: a common disk image format\nNOTE: The list of permitted values was adapted from \"Disk formats\" in [i.5] (OpenStack® documentation: \"Disk and container formats for images\").\n", + "type": "string", + "enum": [ + "AKI", + "AMI", + "ARI", + "ISO", + "QCOW2", + "RAW", + "VDI", + "VHD", + "VHDX", + "VMDK" + ] + }, + "createdAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "minDisk": { + "description": "Unsigned integer number\n", + "type": "integer", + "minimum": 0 + }, + "minRam": { + "description": "Unsigned integer number\n", + "type": "integer", + "minimum": 0 + }, + "size": { + "description": "Unsigned integer number\n", + "type": "integer", + "minimum": 0 + }, + "userMetadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "imagePath": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "imageUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + }, + "additionalArtifacts": { + "description": "Information about VNF snapshot artifacts that are not VNFC snapshot images.\nNOTE: The attribute shall not be present before the VNF snapshot package content has been uploaded or built. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n", + "type": "object", + "items": { + "description": "This type represents an artifact other than a software image which is contained in a VNF snapshot package.\n", + "type": "object", + "required": [ + "checksum", + "isEncrypted" + ], + "properties": { + "artifactPath": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "artifactUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "checksum": { + "description": "Cheksum description\n", + "type": "string" + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "state": { + "description": "State of the VNF snapshot package. Permitted values: - CREATED: the VNF snapshot package information has been created. - BUILDING: the VNF snapshot package is being built. - UPLOADING: the VNF snapshot package is being uploaded. - EXTRACTING: the VNF snapshot package’s content is being extracted. - AVAILABLE: the VNF snapshot package is available (i.e., build or upload is completed). - ERROR: failure during the VNF snapshot package building, uploading or processing. - ERROR_EXTRACTING: failure during the VNF snapshot package extraction task.\n", + "type": "string", + "enum": [ + "CREATED", + "BUILDING", + "UPLOADING", + "EXTRACTING", + "AVAILABLE", + "ERROR", + "ERROR_EXTRACTING" + ] + }, + "isCancelPending": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "failureDetails": { + "description": "Failure details associated to current error state of the VNF snapshot package state. If \"state\" is \"ERROR\" or \"ERROR_EXTRACTING\", this attribute shall be present unless it has been requested to be excluded via an attribute selector.\n", + "type": "object", + "required": [ + "errorType", + "details" + ], + "properties": { + "errorType": { + "description": "Type of error, when the failure happened (building, upload, processing, extracting).\nPermitted values: - BUILD_ERROR - UPLOAD_ERROR - PROCESS_ERROR - CANCELLED - EXTRACTION_ERROR\n", + "type": "string", + "enum": [ + "BUILD_ERROR", + "UPLOAD_ERROR", + "PROCESS_ERROR", + "CANCELLED", + "EXTRACTION_ERROR" + ] + }, + "details": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "packageContent" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "packageContent": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL003/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfos.schema.json b/SOL003/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfos.schema.json new file mode 100644 index 000000000..692200c73 --- /dev/null +++ b/SOL003/VNFSnapshotPackageManagement-API/schemas/VnfSnapshotPkgInfos.schema.json @@ -0,0 +1,354 @@ +{ + "type": "array", + "items": + { + "description": "This type represents the information of a VNF snapshot package.\n", + "type": "object", + "required": [ + "id", + "name", + "isFullSnapshot", + "state", + "isCancelPending", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfSnapshotPkgUniqueId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "checksum": { + "description": "Cheksum description\n", + "type": "string" + }, + "createdAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfSnapshotId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcSnapshotInfoIds": { + "description": "Identifiers of information held by the VNFM about specific VNFC snapshots part of the VNF snapshot and contained in the VNF snapshot package. This identifier is allocated by the VNFM during the VNF snapshot creation.\nNOTE: The attribute shall not be present before the VNF snapshot package content has been uploaded or built. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n", + "type": "object", + "items": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + } + }, + "isFullSnapshot": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "vnfdInfo": { + "description": "This type represents the VNFD which is contained in a VNF snapshot package.\n", + "type": "object", + "required": [ + "avnfdId", + "vnfdPath", + "checksum", + "isEncrypted" + ], + "properties": { + "avnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfdPath": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "checksum": { + "description": "Cheksum description\n", + "type": "string" + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + } + } + }, + "vnfsr": { + "description": "This type represents the VNF snapshot record which is contained in a VNF snapshot package.\n", + "type": "object", + "required": [ + "recordPath", + "checksum", + "isEncrypted" + ], + "properties": { + "recordPath": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "checksum": { + "description": "Cheksum description\n", + "type": "string" + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + } + } + }, + "vnfcSnapshotImages": { + "description": "Information about VNF snapshot artifacts that are VNFC snapshot images. Every local and external snapshot image shall be included. No other artifacts shall be included.\nNOTE: The attribute shall not be present before the VNF snapshot package content has been uploaded or built. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n", + "type": "object", + "items": { + "description": "This type represents an artifact contained in a VNF snapshot package which represents a snapshot image.\n", + "type": "object", + "required": [ + "id", + "name", + "checksum", + "isEncrypted", + "vnfcInstanceId", + "containerFormat", + "diskFormat", + "createdAt", + "minDisk", + "minRam", + "size" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "name": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "checksum": { + "description": "Cheksum description\n", + "type": "string" + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "containerFormat": { + "description": "Container format indicates whether the snapshot image is in a file format that also contains metadata about the actual snapshot.\nPermitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ramdisk image format - BARE: the image does not have a container or metadata envelope - DOCKER: docker container format - OVA: OVF package in a tarfile - OVF: OVF container format\nNOTE: The list of permitted values was taken from \"Container formats\" in [i.5] (OpenStack® documentation: \"Disk and container formats for images\").\n", + "type": "string", + "enum": [ + "AKI", + "AMI", + "ARI", + "BARE", + "DOCKER", + "OVA", + "OVF" + ] + }, + "diskFormat": { + "description": "Disk format of a snapshot image is the format of the underlying disk image.\nPermitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ramdisk image format - ISO: an archive format for the data contents of an optical disc, such as CD-ROM - QCOW2: a common disk image format, which can expand dynamically and supports copy on write - RAW: an unstructured disk image format - VDI: a common disk image format - VHD: a common disk image format - VHDX: enhanced version of VHD format - VMDK: a common disk image format\nNOTE: The list of permitted values was adapted from \"Disk formats\" in [i.5] (OpenStack® documentation: \"Disk and container formats for images\").\n", + "type": "string", + "enum": [ + "AKI", + "AMI", + "ARI", + "ISO", + "QCOW2", + "RAW", + "VDI", + "VHD", + "VHDX", + "VMDK" + ] + }, + "createdAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "minDisk": { + "description": "Unsigned integer number\n", + "type": "integer", + "minimum": 0 + }, + "minRam": { + "description": "Unsigned integer number\n", + "type": "integer", + "minimum": 0 + }, + "size": { + "description": "Unsigned integer number\n", + "type": "integer", + "minimum": 0 + }, + "userMetadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "imagePath": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "imageUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + }, + "additionalArtifacts": { + "description": "Information about VNF snapshot artifacts that are not VNFC snapshot images.\nNOTE: The attribute shall not be present before the VNF snapshot package content has been uploaded or built. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n", + "type": "object", + "items": { + "description": "This type represents an artifact other than a software image which is contained in a VNF snapshot package.\n", + "type": "object", + "required": [ + "checksum", + "isEncrypted" + ], + "properties": { + "artifactPath": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "artifactUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "checksum": { + "description": "Cheksum description\n", + "type": "string" + }, + "isEncrypted": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "state": { + "description": "State of the VNF snapshot package. Permitted values: - CREATED: the VNF snapshot package information has been created. - BUILDING: the VNF snapshot package is being built. - UPLOADING: the VNF snapshot package is being uploaded. - EXTRACTING: the VNF snapshot package’s content is being extracted. - AVAILABLE: the VNF snapshot package is available (i.e., build or upload is completed). - ERROR: failure during the VNF snapshot package building, uploading or processing. - ERROR_EXTRACTING: failure during the VNF snapshot package extraction task.\n", + "type": "string", + "enum": [ + "CREATED", + "BUILDING", + "UPLOADING", + "EXTRACTING", + "AVAILABLE", + "ERROR", + "ERROR_EXTRACTING" + ] + }, + "isCancelPending": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "failureDetails": { + "description": "Failure details associated to current error state of the VNF snapshot package state. If \"state\" is \"ERROR\" or \"ERROR_EXTRACTING\", this attribute shall be present unless it has been requested to be excluded via an attribute selector.\n", + "type": "object", + "required": [ + "errorType", + "details" + ], + "properties": { + "errorType": { + "description": "Type of error, when the failure happened (building, upload, processing, extracting).\nPermitted values: - BUILD_ERROR - UPLOAD_ERROR - PROCESS_ERROR - CANCELLED - EXTRACTION_ERROR\n", + "type": "string", + "enum": [ + "BUILD_ERROR", + "UPLOAD_ERROR", + "PROCESS_ERROR", + "CANCELLED", + "EXTRACTION_ERROR" + ] + }, + "details": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "packageContent" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "packageContent": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } +} \ No newline at end of file -- GitLab From 48dc1df98a50df51200826744a44f244c90ca74e Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Tue, 2 Mar 2021 19:05:10 +0500 Subject: [PATCH 360/580] bug fixes --- .../ApiVersion.robot | 20 ++++++------- .../IndividualVNFSnapshotPackage.robot | 10 +++---- ...IndividualVNFSnapshotPackageArtifact.robot | 18 ++++++------ .../VNFSnapshotPackageContent.robot | 18 ++++++------ .../VNFSnapshotPackages.robot | 28 +++++++++---------- ...VnfSnapshotPackageManagementKeywords.robot | 2 +- 6 files changed, 48 insertions(+), 48 deletions(-) diff --git a/SOL003/VNFSnapshotPackageManagement-API/ApiVersion.robot b/SOL003/VNFSnapshotPackageManagement-API/ApiVersion.robot index e770a7790..2faac7da5 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/ApiVersion.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/ApiVersion.robot @@ -8,7 +8,7 @@ POST API Version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none POST API Version @@ -20,7 +20,7 @@ GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET API Version @@ -33,7 +33,7 @@ PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none PUT API Version @@ -45,7 +45,7 @@ PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none PATCH API Version @@ -57,7 +57,7 @@ DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none DELETE API Version @@ -69,7 +69,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none POST API Version @@ -81,7 +81,7 @@ GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET API Version @@ -94,7 +94,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none PUT API Version @@ -106,7 +106,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none PATCH API Version @@ -118,7 +118,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none DELETE API Version diff --git a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot index 36d951061..082970684 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot @@ -8,7 +8,7 @@ POST Individual VNF Snapshot Package - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none POST individual VNF Snapshot Package @@ -20,7 +20,7 @@ GET Information about an individual VNF Snapshot Package - SUCCESSFUL ... Test objective: The objective is to create a new VNF Snapshot Package resource ... Pre-conditions: none ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET individual VNF Snapshot Package @@ -46,7 +46,7 @@ PUT Individual VNF Snapshot Package - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package not modified PUT individual VNF Snapshot Package @@ -58,7 +58,7 @@ PATCH Individual VNF Snapshot Package - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package modified PATCH individual VNF Snapshot Package @@ -70,7 +70,7 @@ DELETE Individual VNF Snapshot Package - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package deleted DELETE individual VNF Snapshot Package diff --git a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot index 224459059..44da2f1e1 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot @@ -8,7 +8,7 @@ POST Individual VNF Snapshot Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none POST Individual VNF Snapshot Package Artifact @@ -20,7 +20,7 @@ GET Individual VNF Snapshot Package Artifact - Complete File ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. ... Pre-conditions: none ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET Individual VNF Snapshot Package Artifact - Complete @@ -33,7 +33,7 @@ GET Individual VNF Snapshot Package Artifact - Partial Content ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. ... Pre-conditions: none ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none GET Individual VNF Snapshot Package Artifact - Range Request @@ -47,7 +47,7 @@ GET Individual VNF Snapshot Package Artifact - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. ... Pre-conditions: none ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support range requests ... Post-Conditions: none GET Individual VNF Snapshot Package Artifact - Range Request @@ -60,7 +60,7 @@ GET Individual VNF Snapshot Package Artifact - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. ... Pre-conditions: none ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none GET Individual VNF Snapshot Package Artifact - Invalid Range @@ -72,7 +72,7 @@ GET Individual VNF Snapshot Package Artifact - Conflict ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Pre-conditions: none ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Post-Conditions: none GET Individual VNF Snapshot Package Artifact - Not Available @@ -84,7 +84,7 @@ PUT Individual VNF Snapshot Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package not modified PUT Individual VNF Snapshot Package Artifact @@ -96,7 +96,7 @@ PATCH Individual VNF Snapshot Package Artifact - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none PATCH Individual VNF Snapshot Package Artifact @@ -108,7 +108,7 @@ DELETE Individual VNF Snapshot Package Artifact - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none DELETE Individual VNF Snapshot Package Artifact diff --git a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot index 8271d7489..9518e4bbf 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot @@ -8,7 +8,7 @@ POST VNF Snapshot Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none POST VNF Snapshot Package Content @@ -20,7 +20,7 @@ GET VNF Snapshot Package Content - Complete File ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. ... Pre-conditions: none ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET VNF Snapshot Package Content - Complete @@ -33,7 +33,7 @@ GET VNF Snapshot Package Content - Partial Content ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. ... Pre-conditions: none ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none GET VNF Snapshot Package Content - Range Request @@ -47,7 +47,7 @@ GET VNF Snapshot Package Content - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. ... Pre-conditions: none ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support range requests ... Post-Conditions: none GET VNF Snapshot Package Content - Range Request @@ -60,7 +60,7 @@ GET VNF Snapshot Package Content - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. ... Pre-conditions: none ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none GET VNF Snapshot Package Content - Invalid Range @@ -72,7 +72,7 @@ GET VNF Snapshot Package Content - Conflict ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Pre-conditions: none ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Post-Conditions: none GET VNF Snapshot Package Content - Not Available @@ -84,7 +84,7 @@ PUT VNF Snapshot Package Content - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package not modified PUT VNF Snapshot Package Content @@ -96,7 +96,7 @@ PATCH VNF Snapshot Package Content - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none PATCH VNF Snapshot Package Content @@ -108,7 +108,7 @@ DELETE VNF Snapshot Package Content - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none DELETE VNF Snapshot Package Content diff --git a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot index 6a845045f..b5de47fe8 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot @@ -8,7 +8,7 @@ POST VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none POST VNF Snapshot Packages @@ -20,7 +20,7 @@ GET information about multiple VNF Snapshot Packages ... Test objective: The objective is to get information about multiples VNF Snapshot Packages ... Pre-conditions: none ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET multiple VNF Snapshot Packages @@ -33,7 +33,7 @@ GET information about multiple VNF Snapshot Packages Bad Request Invalid attribu ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters ... Pre-conditions: none ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET multiple VNF Snapshot Packages with bad attribute @@ -46,7 +46,7 @@ GET information about multiple VNF Snapshot Packages Bad Request Invalid attribu ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters ... Pre-conditions: none ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET multiple VNF Snapshot Packages with bad filter @@ -59,7 +59,7 @@ GET information about multiple VNF Snapshot Packages with "all_fields" attribute ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET multiple VNF Snapshot Packages with all_fields attribute selector @@ -72,7 +72,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_default" attr ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET multiple VNF Snapshot Packages with exclude_default attribute selector @@ -85,7 +85,7 @@ GET information about multiple VNF Snapshot Packages with "fields" attribute sel ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET multiple VNF Snapshot Packages with fields attribute selector @@ -98,7 +98,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_default" and ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET multiple VNF Snapshot Packages with exclude_default and fields attribute selector @@ -111,7 +111,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_fields" attri ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none GET multiple VNF Snapshot Packages with exclude_fields attribute selector @@ -124,7 +124,7 @@ GET VNF Snapshot Packages - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing VNF Snapshot Packages list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support paged response. ... Post-Conditions: none GET VNF Snapshot Packages without Paging support @@ -137,7 +137,7 @@ GET VNF Snapshot Packages as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshot Packages as paged response. ... Pre-conditions: none ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports paged response. ... Post-Conditions: none GET VNF Snapshot Packages with Paging support @@ -150,7 +150,7 @@ PUT VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none PUT VNF Snapshot Packages @@ -162,7 +162,7 @@ PATCH VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none PATCH VNF Snapshot Packages @@ -174,7 +174,7 @@ DELETE VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none ... Reference: Clause 12.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF snapshot package is not deleted DELETE VNF Snapshot Packages diff --git a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index ac4c4a0fa..0100f7d55 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -1,6 +1,6 @@ *** Settings *** Resource environment/variables.txt -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library DependencyLibrary Library JSONLibrary Library JSONSchemaLibrary schemas/ -- GitLab From cdfc8e5433ea9ea61e82dc0380f5be629702eee8 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Mon, 8 Mar 2021 19:49:41 +0500 Subject: [PATCH 361/580] minor fix in variable name --- .../VnfSnapshotPackageManagementKeywords.robot | 2 +- .../VNFSnapshotPackageManagement-API/environment/variables.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index 0100f7d55..2ae5c0aa2 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -220,7 +220,7 @@ GET individual VNF Snapshot Package with invalid URI Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${invalidVnfSnapshotInfoId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${invalidVnfSnapshotPkgId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt b/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt index 845607daf..130ed7b5d 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt @@ -94,5 +94,5 @@ ${VAR_SEPERATOR} & ${callbackResp} localhost ${vnfSnapshotPkgId} -${invalidVnfSnapshotInfoId} +${invalidVnfSnapshotPkgId} ${vnfSnapshotPkgId_notInAvailableState} \ No newline at end of file -- GitLab From 160f811574312118529a0d2702c1c3eaa28e40ec Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 13:24:56 +0500 Subject: [PATCH 362/580] minor bug fixes and an additional test for filter based quering of VNFSnapshotPackages resource --- .../IndividualVNFSnapshotPackage.robot | 2 +- .../VNFSnapshotPackages.robot | 13 +++++++++++++ .../VnfSnapshotPackageManagementKeywords.robot | 13 +++++++++++-- .../environment/variables.txt | 2 +- .../schemas/ProblemDetails.schema.json | 1 + 5 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 SOL003/VNFSnapshotPackageManagement-API/schemas/ProblemDetails.schema.json diff --git a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot index 082970684..61a4f53a0 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot @@ -17,7 +17,7 @@ POST Individual VNF Snapshot Package - Method not implemented GET Information about an individual VNF Snapshot Package - SUCCESSFUL [Documentation] Test ID: 7.3.8.3.2 ... Test title: GET Information about an individual VNF Snapshot Package - SUCCESSFUL - ... Test objective: The objective is to create a new VNF Snapshot Package resource + ... Test objective: The objective is to query information about a VNF Snapshot Package resource ... Pre-conditions: none ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO diff --git a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot index b5de47fe8..19060b7ab 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot @@ -179,3 +179,16 @@ DELETE VNF Snapshot Packages - Method not implemented ... Post-Conditions: VNF snapshot package is not deleted DELETE VNF Snapshot Packages Check HTTP Response Status Code Is 405 + +GET information about multiple VNF Snapshot Packages using filter + [Documentation] Test ID: 7.3.8.2.15 + ... Test title: GET information about multiple VNF Snapshot Packages using filter + ... Test objective: The objective is to get information about multiples VNF Snapshot Packages using filter + ... Pre-conditions: none + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET multiple VNF Snapshot Packages using filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotPkgInfos diff --git a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index 2ae5c0aa2..9a74ba0f6 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -120,7 +120,16 @@ GET multiple VNF Snapshot Packages with bad filter Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?fields=wrong_field + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?${NEG_FILTER} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET multiple VNF Snapshot Packages using filter + Log Query VNF The GET method queries information about multiple VNF Snapshot Packages. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?${POS_FILTER} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -128,7 +137,7 @@ GET multiple VNF Snapshot Packages with all_fields attribute selector Log Query status information about multiple VNF Snapshot Packages, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?all_fields ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt b/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt index 130ed7b5d..9cfcb189e 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt @@ -86,7 +86,7 @@ ${vndEncryptedArtifactID} encryptedId ${length} 1024 -${POS_FILTER} vnfdId=41fdd38a-3d4c-465c-83e0-f80e014425f8 ,vnfProvider=NXW # Positive case, suing compiant fields name for filtering get request +${POS_FILTER} id=41fdd38a-3d4c-465c-83e0-f80e014425f8 ,vnfProvider=NXW # Positive case, suing compiant fields name for filtering get request ${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field ${fields} softwareImages,additionalArtifacts ${VAR_SEPERATOR} & diff --git a/SOL003/VNFSnapshotPackageManagement-API/schemas/ProblemDetails.schema.json b/SOL003/VNFSnapshotPackageManagement-API/schemas/ProblemDetails.schema.json new file mode 100644 index 000000000..2af3ef9b3 --- /dev/null +++ b/SOL003/VNFSnapshotPackageManagement-API/schemas/ProblemDetails.schema.json @@ -0,0 +1 @@ +{ "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", "type": "object", "required": [ "status", "detail" ], "properties": { "type": { "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", "type": "string", "format": "URI" }, "title": { "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", "type": "string" }, "status": { "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", "type": "integer" }, "detail": { "description": "A human-readable explanation specific to this occurrence of the problem.\n", "type": "string" }, "instance": { "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", "type": "string", "format": "URI" } }} \ No newline at end of file -- GitLab From 4269e6aac1d4165b2b75c9127464fd91cdd9dab2 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 15:54:08 +0500 Subject: [PATCH 363/580] minor fix in variable value --- .../VNFSnapshotPackageManagement-API/environment/variables.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt b/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt index 9cfcb189e..4ccd69c8a 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt @@ -88,7 +88,7 @@ ${length} 1024 ${POS_FILTER} id=41fdd38a-3d4c-465c-83e0-f80e014425f8 ,vnfProvider=NXW # Positive case, suing compiant fields name for filtering get request ${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, using wrong name of field -${fields} softwareImages,additionalArtifacts +${fields} failureDetails ${VAR_SEPERATOR} & ${callbackResp} localhost -- GitLab From 2d8dc96e075443659452107665086ab8018aa19d Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Mar 2021 16:43:00 +0500 Subject: [PATCH 364/580] fixed Content-Length and Content-Range checks --- .../IndividualVNFSnapshotPackageArtifact.robot | 1 + .../VNFSnapshotPackageContent.robot | 1 + .../VnfSnapshotPackageManagementKeywords.robot | 8 +++++++- .../environment/variables.txt | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot index 44da2f1e1..e850c7284 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot @@ -40,6 +40,7 @@ GET Individual VNF Snapshot Package Artifact - Partial Content Check HTTP Response Status Code Is 206 Check HTTP Content-Type Header Is Set For Package Artifact Check HTTP Content-Range Header Is Set + Check HTTP Content-Length Header Is Set GET Individual VNF Snapshot Package Artifact - Range Request Not Supported [Documentation] Test ID: 7.3.8.5.4 diff --git a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot index 9518e4bbf..458d08b71 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot @@ -40,6 +40,7 @@ GET VNF Snapshot Package Content - Partial Content Check HTTP Response Status Code Is 206 Check HTTP Content-Type Header Is Set For Package Content Check HTTP Content-Range Header Is Set + Check HTTP Content-Length Header Is Set GET VNF Snapshot Package Content - Range Request Not Supported [Documentation] Test ID: 7.3.8.4.4 diff --git a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index 9a74ba0f6..0a68e1451 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -313,9 +313,15 @@ Check HTTP Content-Type Header Is Set For Package Content Check HTTP Content-Range Header Is Set Log Check Content-Range HTTP Header Should Contain ${response['headers']} Content-Range - Should Be Equal As Strings ${response['headers']['Content-Range']} ${range} + Should Be Equal As Strings ${response['headers']['Content-Range']} ${range}/${full_length} Log Header Content-Range is present +Check HTTP Content-Length Header Is Set + Log Check Content-Length HTTP Header + Should Contain ${response['headers']} Content-Length + Should Be Equal As Strings ${response['headers']['Content-Length']} ${full_length} + Log Header Content-Length is present + PUT VNF Snapshot Package Content log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT_ZIP}"} diff --git a/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt b/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt index 4ccd69c8a..c7b18c060 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt @@ -77,7 +77,7 @@ ${artifactPath} artifactPath ${CONTENT_TYPE_OCTET} application/octet-stream ${NFVO_RANGE_OK} 1 # If 1 means that Range is supported by the NFVO ${range} bytes=0-1023 -${full_size} 2000 # Size of the requested artifact to be downloaded via partial downloads +${full_length} 2000 # Size of the requested artifact to be downloaded via partial downloads ${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range number of bytes ${vnfPackageOctetStreamId} octetStreamPkgId ${vnfdOctetStreamId} octetStreamVnfdId -- GitLab From d546c58f321be8202e666948cd8d282e5a304ec2 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Tue, 2 Mar 2021 13:57:25 +0100 Subject: [PATCH 365/580] added deltas 161 -> 165 --- .../IndividualPmJob.robot | 39 +++++++++++--- .../IndividualThreshold.robot | 43 ++++++++++++--- .../VNFPerformanceManagement-API/PMJobs.robot | 52 ++++++++++++++----- .../Thresholds.robot | 46 ++++++++++++---- .../environment/variables.txt | 1 + .../jsons/CreatePmJobRequest.json | 3 +- .../jsons/CreateThresholdRequest.json | 3 +- .../jsons/PmJobModifications.json | 2 +- .../jsons/ThresholdModifications.json | 2 +- 9 files changed, 148 insertions(+), 43 deletions(-) diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index bbe425897..ede0ebf4b 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -11,7 +11,7 @@ GET individual VNF Performance Job ... Test title: Get individual VNF Performance Job ... Test objective: The objective is to test the retrieval of an individual VNF performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET individual VNF Performance Job with invalid resource identifier ... Test title: Get individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ DELETE Individual VNF Performance Job ... Test title: Delete Individual VNF Performance Job ... Test objective: The objective is to test the deletion of an individual VNF performance monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is no more available in the VNFM @@ -64,7 +64,7 @@ POST Individual VNF Performance Job - Method not implemented ... Test title: POST Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Monitoring Job ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ PATCH Individual VNF Performance Job ... Test title: PATCH Individual VNF Performance Job ... Test objective: The objective is to test that PATCH method allows to modify individual performace management job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -101,14 +101,29 @@ PATCH Individual VNF Performance Job - Precondition failed ... Test title: PATCH Individual VNF Performance Job - Precondition failed ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation Send Patch request for individual VNF Performance Job Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails - Check Postcondition VNF Performance Job is Unmodified (Implicit) + Check Postcondition VNF Performance Job is Unmodified (Implicit) + +PATCH Individual VNF Performance Job - Unprocessable Entity + [Documentation] Test ID: 7.3.4.2.9 + ... Test title: PATCH Individual VNF Performance Job - Unprocessable Entity + ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual PM job resource when a request contains syntactically correct data but the data cannot be processed. + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: + Send Patch request for individual VNF Performance Job with unprocessable entity + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + + *** Keywords *** GET individual VNF Performance Job Log Trying to get a Pm Job present in the NFVO Catalogue @@ -170,6 +185,16 @@ Send Patch request for individual VNF Performance Job ${output}= Output response Set Suite Variable ${response} ${output} + +Send Patch request for individual VNF Performance Job with unprocessable entity + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/PMJobModifications.json + ${body}= Format String ${template} callback_uri=${unreachable_callback_uri}:${callback_port} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} Check Postcondition VNF Performance Job is not Created Log Trying to get a new Pm Job diff --git a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot index 39af0c1aa..9e2ab15ec 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -4,6 +4,7 @@ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem +Library String *** Test Cases *** GET Individual Threshold @@ -11,7 +12,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +26,7 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance threshold fails when using an invalid resource identifier ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +39,7 @@ DELETE Individual Threshold ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not available anymore in the VNFM @@ -51,7 +52,7 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +65,7 @@ POST Individual Threshold - Method not implemented ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Threshold ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +77,7 @@ PUT Individual Threshold - Method not implemented ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +89,7 @@ PATCH Individual Threshold ... Test title: PATCH Individual Threshold ... Test objective: The objective is to test that PATCH method allows to modify an Individual threshold resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -101,7 +102,7 @@ PATCH Individual Threshold - Precondition failed ... Test title: PATCH Individual Threshold - Preconition failed ... Test objective: The objective is to attempt to modify an individual threshold resource, where the precondition was not met. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation @@ -109,6 +110,21 @@ PATCH Individual Threshold - Precondition failed Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails Check Postcondition VNF Performance Threshold is Unmodified (Implicit) + +PATCH Individual Threshold - Unprocessible Entity + [Documentation] Test ID: 7.3.4.5.9 + ... Test title: PATCH Individual Threshold - Unprocessible Entity + ... Test objective: The objective is to test that PATCH method cannot modify an individual threshold resource when a request contains syntactically correct data but the data cannot be processed. + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Send Patch request for individual VNF Performance Threshold with unprocessable entity + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + + *** Keywords *** GET Individual VNF Performance Threshold Log Trying to get a Threhsold present in the VNFM @@ -167,6 +183,17 @@ Send Patch request for individual VNF Performance Threshold PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} + +Send Patch request for individual VNF Performance Threshold with unprocessable entity + Log Trying to PATCH threshold + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/ThresholdModifications.json + ${body}= Format String ${template} callback_uri=${unreachable_callback_uri}:${callback_port} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} Check Postcondition VNF Performance Threshold is Unmodified (Implicit) Log Check postconidtion threshold not modified diff --git a/SOL003/VNFPerformanceManagement-API/PMJobs.robot b/SOL003/VNFPerformanceManagement-API/PMJobs.robot index be4b8957f..dcd471014 100644 --- a/SOL003/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL003/VNFPerformanceManagement-API/PMJobs.robot @@ -13,7 +13,7 @@ GET all VNF Performance Monitoring Jobs ... Test title: GET all VNF Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET VNF Performance Monitoring Jobs with attribute-based filter ... Test title: GET all VNF Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs all_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued all_fileds selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_default selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -97,7 +97,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ Create new VNF Performance Monitoring Job ... Test title: Create a new VNF Performance Monitoring Job ... Test objective: The objective is to test the creation of a new VNF performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is successfully created on the VNFM @@ -136,7 +136,7 @@ PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test title: PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Monitoring Jobs ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ PATCH all VNF Performance Monitoring Jobs - (Method not implemented) ... Test title: PATCH all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test title: DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -173,7 +173,7 @@ GET all VNF Performance Monitoring Jobs as Paged Response ... Test title: GET all VNF Performance Monitoring Jobs as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs as Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -186,7 +186,7 @@ GET VNF Performance Monitoring Jobs - Bad Request Response too Big ... Test title: GET VNF Performance Monitoring Jobs - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -199,7 +199,7 @@ GET all VNF Performance Monitoring Jobs with fields and exclude_default attribut ... Test title: GET all VNF Performance Monitoring Jobs with fields and exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs fields and exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of fields and exclude_fields attribute selector ... Post-Conditions: none @@ -208,6 +208,19 @@ GET all VNF Performance Monitoring Jobs with fields and exclude_default attribut Check HTTP Response Body Json Schema Is PmJobs Check HTTP Response Body PmJobs Matches the requested fields selector +POST Create new VNF Performance Monitoring Job - Unprocessable Entity + [Documentation] Test ID: 7.3.4.1.16 + ... Test title: POST Create new VNF Performance Monitoring Job - Unprocessable Entity + ... Test objective: The objective is to test the creation of a new VNF performance monitoring job fails when a request contains syntactically correct data but the data cannot be processed. + ... Pre-conditions: none + ... Reference: clause 6.4.2.3.1 - ETSI GS NFV-SOL 003 [1] V3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Send Post Request for VNF Performance Monitoring Job with unprocessable entity + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** GET all VNF Performance Monitoring Jobs Log Trying to get all PM Jobs present in the VNFM @@ -407,4 +420,15 @@ Check HTTP Response Body Json Schema Is Check LINK in Header ${linkURL}= Get Value From Json ${response['headers']} $..Link - Should Not Be Empty ${linkURL} \ No newline at end of file + Should Not Be Empty ${linkURL} + +Send Post Request for VNF Performance Monitoring Job with unprocessable entity + Log trying to create a new PM Job + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CreatePmJobRequest.json + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${unreachable_callback_uri}:${callback_port} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/Thresholds.robot b/SOL003/VNFPerformanceManagement-API/Thresholds.robot index efcc68988..191540a1d 100644 --- a/SOL003/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL003/VNFPerformanceManagement-API/Thresholds.robot @@ -12,7 +12,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds and perform a JSON schema validation of the collected thresholds data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Performance Thresholds with invalid attribute-based filter ... Test title: GET Performance Thresholds with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET Performance Thresholds with invalid resource endpoint ... Test title: GET Performance Thresholds with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ Create new Performance Threshold ... Test title: Create new Performance Threshold ... Test objective: The objective is to test the creation of a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is successfully created on the VNFM @@ -79,7 +79,7 @@ PUT Performance Thresholds - Method not implemented ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNF. - ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ PATCH Performance Thresholds - Method not implemented ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ DELETE Performance Thresholds - Method not implemented ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Thresholds ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF performance thresholds are not deleted by the failed operation @@ -116,7 +116,7 @@ GET All Performance Thresholds as Paged Response ... Test title: GET All Performance Thresholds as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds as a Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -129,13 +129,27 @@ GET Performance Thresholds - Bad Request Response too Big ... Test title: GET Performance Thresholds - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none GET all Performance Thresholds Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails + +POST create new Performance Threshold - Unprocessable Entity + [Documentation] Test ID: 7.3.4.4.11 + ... Test title: POST create new Performance Threshold - Unprocessable Entity + ... Test objective: The objective is to test that creation of new VNF performance threshold fails when a request contains syntactically correct data but the data cannot be processed. + ... Pre-conditions: A VNF instance is instantiated. + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Send Post Request Create new Performance Threshold with unprocessable entity + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** GET all Performance Thresholds Log Trying to get all thresholds present in the VNFM @@ -179,6 +193,18 @@ Send Post Request Create new Performance Threshold POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${request} ${output}= Output response Set Suite Variable ${response} ${output} + +Send Post Request Create new Performance Threshold with unprocessable entity + Log trying to create a new Threshold + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + 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=${unreachable_callback_uri}:${callback_port} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + Send PUT Request for all Performance Thresholds Log PUT THresholds diff --git a/SOL003/VNFPerformanceManagement-API/environment/variables.txt b/SOL003/VNFPerformanceManagement-API/environment/variables.txt index 3b1c0b844..0b9801980 100644 --- a/SOL003/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL003/VNFPerformanceManagement-API/environment/variables.txt @@ -22,6 +22,7 @@ ${apiName} vnfpm ${callback_port} 9091 ${callback_uri} http://172.22.1.7:${callback_port} +${unreachable_callback_uri} http://not-reachable-uri ${callback_endpoint} /vnfpm/subscriptions ${callback_endpoint_error} /subs_404 ${sleep_interval} 20s diff --git a/SOL003/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json b/SOL003/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json index 4dbfc7c6c..c8abf77c8 100644 --- a/SOL003/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json +++ b/SOL003/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json @@ -5,5 +5,6 @@ "performanceMetricGroup": [], "collectionPeriod": 10, "reportingPeriod": 30 - }} + }}, + "callbackUri": "{callback_uri}" }} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json b/SOL003/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json index c7cfee14f..645c64fda 100644 --- a/SOL003/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json +++ b/SOL003/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json @@ -8,5 +8,6 @@ "hysteresis": 50 }} - }} + }}, + "callbackUri": "{callback_uri}" }} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/jsons/PmJobModifications.json b/SOL003/VNFPerformanceManagement-API/jsons/PmJobModifications.json index 799d664ba..275f942d9 100644 --- a/SOL003/VNFPerformanceManagement-API/jsons/PmJobModifications.json +++ b/SOL003/VNFPerformanceManagement-API/jsons/PmJobModifications.json @@ -1,3 +1,3 @@ { - "callbackUri":"127.0.0.3" + "callbackUri": "{callback_uri}" } \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/jsons/ThresholdModifications.json b/SOL003/VNFPerformanceManagement-API/jsons/ThresholdModifications.json index b3f998b3f..bcd6f0090 100644 --- a/SOL003/VNFPerformanceManagement-API/jsons/ThresholdModifications.json +++ b/SOL003/VNFPerformanceManagement-API/jsons/ThresholdModifications.json @@ -1,3 +1,3 @@ { - "callbackUri":"127.0.0.1" + "callbackUri": "{callback_uri}" } \ No newline at end of file -- GitLab From 97a71b816ef57140fdf3782c473579dcd1694e16 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Tue, 2 Mar 2021 14:02:12 +0100 Subject: [PATCH 366/580] updated versions --- .../IndividualReport.robot | 13 +++++++------ .../NotificationConsumer.robot | 4 ++-- .../PerformanceManagementNotification.robot | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot index e029d6cbe..913685180 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot @@ -3,6 +3,7 @@ Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library String *** Test Cases *** Get Individual Performance Report @@ -10,7 +11,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +24,7 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual VNF performance report associated to a monitoring job fails when using an invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +37,7 @@ POST Individual Performance Report - Method not implemented ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +49,7 @@ PUT Individual Performance Report - Method not implemented ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +61,7 @@ PATCH Individual Performance Report - Method not implemented ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -72,7 +73,7 @@ DELETE Individual Performance Report - Method not implemented ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot b/SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot index ea8f9283a..d89234a18 100644 --- a/SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot +++ b/SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot @@ -13,7 +13,7 @@ Performance Information Available Notification ... Test title: Performance Information Available Notification ... Test objective: The objective is to test that the POST request triggers Performance Information Available Notification. ... Pre-conditions: A VNF performance job is created, and a subscription for performance information available notification is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Threshold Crossed Notification ... Test title: Threshold Crossed Notification ... Test objective: The objective is to test that the POST request triggers Threshold Crossed Notification ... Pre-conditions: A VNF performance job is created, and a subscription for threshold crossed notification is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot b/SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot index fc6f7035b..a9b8c9a63 100644 --- a/SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot +++ b/SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot @@ -16,7 +16,7 @@ VNF Performance Information Availability Notification ... Test title: VNF Performance Information Availability Notification ... Test objective: The objective is to test the dispatch of VNF Performance Information Availability Notification when new VNF performance information is available in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ VNF Threshold Crossed Notification ... Test title: VNF Threshold Crossed Notification ... Test objective: The objective is to test the dispatch of VNF Threshold Crossed Notification when a previously set VNF performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a threshold subscription is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 5377c07b2858bd7b880cc31f91f639d2725ca866 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Tue, 2 Mar 2021 15:00:49 +0100 Subject: [PATCH 367/580] added missing library --- SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index ede0ebf4b..68844d259 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -4,6 +4,7 @@ Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library String *** Test Cases *** GET individual VNF Performance Job @@ -118,7 +119,7 @@ PATCH Individual VNF Performance Job - Unprocessable Entity ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Patch request for individual VNF Performance Job with unprocessable entity Check HTTP Response Status Code Is 422 Check HTTP Response Body Json Schema Is ProblemDetails -- GitLab From 99faa09bdaecbb2e6e6e7b7956fd0df9ebae30ee Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 5 Mar 2021 14:54:29 +0500 Subject: [PATCH 368/580] updated PerformanceInformationAvailableNotification schema --- .../environment/variables.txt | 1 + ...formationAvailableNotification.schema.json | 203 +++++++++--------- 2 files changed, 100 insertions(+), 104 deletions(-) diff --git a/SOL003/VNFPerformanceManagement-API/environment/variables.txt b/SOL003/VNFPerformanceManagement-API/environment/variables.txt index 0b9801980..6c393bb33 100644 --- a/SOL003/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL003/VNFPerformanceManagement-API/environment/variables.txt @@ -9,6 +9,7 @@ ${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${NEG_AUTHORIZATION} Bearer negativetoken ${CONTENT_TYPE_JSON} application/json +${CONTENT_TYPE_PATCH} application/merge-patch+json ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 ${FIELD_USAGE} 1 diff --git a/SOL003/VNFPerformanceManagement-API/schemas/PerformanceInformationAvailableNotification.schema.json b/SOL003/VNFPerformanceManagement-API/schemas/PerformanceInformationAvailableNotification.schema.json index 04ae7ead4..87a113683 100644 --- a/SOL003/VNFPerformanceManagement-API/schemas/PerformanceInformationAvailableNotification.schema.json +++ b/SOL003/VNFPerformanceManagement-API/schemas/PerformanceInformationAvailableNotification.schema.json @@ -1,105 +1,100 @@ { - "description": "This notification informs the receiver that performance information is available. The timing of sending this notification is determined by the capability of the producing entity to evaluate the threshold crossing condition. The notification shall be triggered by the VNFM when new performance information collected by a PM job is available.\n", - "type": "object", - "required": [ - "id", - "notificationType", - "subscriptionId", - "timeStamp", - "objectInstanceId", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "notificationType": { - "description": "Discriminator for the different notification types. Shall be set to \"PerformanceInformationAvailableNotification\" for this notification type.\n", - "type": "string", - "enum": [ - "PerformanceInformationAvailableNotification" - ] - }, - "subscriptionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "timeStamp": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "objectInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "_links": { - "description": "Links to resources related to this notification.\n", - "type": "object", - "required": [ - "subscription", - "pmJob", - "performanceReport" - ], - "properties": { - "subscription": { - "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" - } - } - }, - "objectInstance": { - "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" - } - } - }, - "pmJob": { - "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" - } - } - }, - "performanceReport": { - "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 + "description": "This notification informs the receiver that performance information is available. The notification shall be triggered by the VNFM when new performance information collected by a PM job is available. The periodicity of triggering this notification is influenced by the \"reportingPeriod\" attribute in the \"PmJobCriteria\" data structure.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "timeStamp", + "pmJobId", + "objectType", + "objectInstanceId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"PerformanceInformationAvailableNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "PerformanceInformationAvailableNotification" + ] + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "pmJobId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectType": { + "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + }, + "objectInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance for which the measurements have been taken. Shall be present if the related PM job has been set up to measure only a subset of all sub-object instances of the measured object instance and a sub-object is defined in clause\n 6.2 of ETSI GS NFV-IFA 027 for the related measured object type.\nShall be absent otherwise.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "type": "object", + "required": [ + "pmJob", + "performanceReport" + ], + "properties": { + "objectInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "pmJob": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "performanceReport": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file -- GitLab From 783904ad45d2be3f2a0e476ac211850c6377b817 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 5 Mar 2021 18:26:10 +0500 Subject: [PATCH 369/580] updated refs --- .../ApiVersion.robot | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot index 38ce2dbc4..79cdead10 100644 --- a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 5f3d5c8f7730267372b15aeee0d5b7250c7b8e64 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Fri, 5 Mar 2021 08:38:32 +0100 Subject: [PATCH 370/580] Updated version & added new TD --- .../IndividualSubscription.robot | 12 +-- .../IndividualVNFPackage.robot | 22 +++--- .../IndividualVNFPackageArtifacts.robot | 54 +++++++------- .../ManifestInIndividualVNFPackage.robot | 32 ++++---- .../NotificationConsumer.robot | 4 +- .../PackageManagementNotification.robot | 6 +- .../Subscriptions.robot | 24 +++--- .../VNFDInIndividualVNFPackage.robot | 36 ++++----- .../VNFPackageArtifacts.robot | 73 +++++++++++-------- .../VNFPackageContent.robot | 40 +++++----- .../VNFPackageManagementKeywords.robot | 8 ++ .../VNFPackages.robot | 60 +++++++-------- 12 files changed, 196 insertions(+), 175 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot index 41839a657..7d2d35ae0 100644 --- a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Subscription ... Test title: GET Individual VNF Package Subscription ... Test objective: The objective is to test the retrieval of individual VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual VNF Package Subscription with invalid resource identifier ... Test title: GET Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ DELETE Individual VNF Package Subscription with invalid resource identifier ... Test title: DELETE Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Individual VNF Package Subscription - Method not implemented ... Test title: PUT Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH Individual VNF Package Subscription - Method not implemented ... Test title: PATCH Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE Individual VNF Package Subscription ... Test title: DELETE Individual VNF Package Subscription ... Test objective: The objective is to test the deletion of an individual VNF package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Subscription is not available anymore in the NFVO diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot index 875b06bf8..fa6426ede 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -12,7 +12,7 @@ GET Individual VNF Package ... Test title: GET Individual VNF Package ... Test objective: The objective is to test the retrieval of an individual VNF package information perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual VNF Package with invalid resource identifier ... Test title: GET Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Individual VNF Package - Method not implemented ... Test title: PUT Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Individual VNF Package - Method not implemented ... Test title: PATCH Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Individual VNF Package - Method not implemented ... Test title: DELETE Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ GET Individual OnBoarded VNF Package ... Test title: GET Individual OnBoarded VNF Package ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package information perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ GET Individual OnBoarded VNF Package with invalid resource identifier ... Test title: GET Individual OnBoarded VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ POST Individual OnBoarded VNF Package - Method not implemented ... Test title: POST Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new OnBoarded VNF Package ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ PUT Individual OnBoarded VNF Package - Method not implemented ... Test title: PUT Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -139,7 +139,7 @@ PATCH Individual OnBoarded VNF Package - Method not implemented ... Test title: PATCH Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ DELETE Individual OnBoarded VNF Package - Method not implemented ... Test title: DELETE Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot index cab10266e..e87ea152f 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot @@ -11,7 +11,7 @@ GET Individual VNF Package Artifact ... Test title: GET Individual VNF Package Artifact ... Test objective: The objective is to test the retrieval of an individual VNF package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual VNF Package Artifact in octet stream format ... Test title: GET Individual VNF Package Artifact in octet stream format ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -36,7 +36,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -50,7 +50,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO not supporting R ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -62,7 +62,7 @@ GET Individual VNF Package Artifact with invalid Range Request ... Test title: GET Individual VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -74,7 +74,7 @@ GET Individual VNF Package Artifact with invalid resource identifier ... Test title: GET Individual VNF Package Artifact with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ GET Individual VNF Package Artifact with conflict due to onboarding state ... Test title: GET Individual VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Individual VNF Package Artifact - Method not implemented ... Test title: POST Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ PUT Individual VNF Package Artifact - Method not implemented ... Test title: PUT Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ PATCH Individual VNF Package Artifact - Method not implemented ... Test title: PATCH Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ GET Individual OnBoarded VNF Package Artifact ... Test title: GET Individual OnBoarded VNF Package Artifact ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ GET Individual OnBoarded VNF Package Artifact in octet stream format ... Test title: GET Individual OnBoarded VNF Package Artifact in octet stream format ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -173,7 +173,7 @@ GET Individual OnBoarded VNF Package Artifact with Range Request and NFVO suppor ... Test title: GET Individual OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -187,7 +187,7 @@ GET Individual OnBoarded VNF Package Artifact with Range Request and NFVO not su ... Test title: GET Individual OnBoarded VNF Package Artifact with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -199,7 +199,7 @@ GET Individual OnBoarded VNF Package Artifact with invalid Range Request ... Test title: GET Individual OnBoarded VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -211,7 +211,7 @@ GET Individual OnBoarded VNF Package Artifact with invalid resource identifier ... Test title: GET Individual OnBoarded VNF Package Artifact with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -224,7 +224,7 @@ GET Individual OnBoarded VNF Package Artifact with conflict due to onboarding st ... Test title: GET Individual OnBoarded VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -237,7 +237,7 @@ POST Individual OnBoarded VNF Package Artifact - Method not implemented ... Test title: POST Individual OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -249,7 +249,7 @@ PUT Individual OnBoarded VNF Package Artifact - Method not implemented ... Test title: PUT Individual OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -261,7 +261,7 @@ PATCH Individual OnBoarded VNF Package Artifact - Method not implemented ... Test title: PATCH Individual OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -273,7 +273,7 @@ DELETE Individual OnBoarded VNF Package Artifact - Method not implemented ... Test title: DELETE Individual OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -285,7 +285,7 @@ GET Individual VNF Package Artifact with security information ... Test title: GET Individual VNF Package Artifact with security information ... Test objective: The objective is to test the retrieval of an individual VNF package artifact shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -298,7 +298,7 @@ GET Individual OnBoarded VNF Package Artifact with security information ... Test title: GET Individual OnBoarded VNF Package Artifact with security information ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -311,7 +311,7 @@ GET Individual VNF Package Artifact with encrypted artifact ... Test title: GET Individual VNF Package Artifact with encrypted artifact ... Test objective: The objective is to test the retrieval of an individual VNF package artifact shall include an encrypted artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -324,7 +324,7 @@ GET Individual OnBoarded VNF Package Artifact with encrypted artifact ... Test title: GET Individual OnBoarded VNF Package Artifact with encrypted artifact ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact shall include an encrypted artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -337,7 +337,7 @@ GET Individual VNF Package Artifact - Not Acceptable ... Test title: GET Individual VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when related request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -350,7 +350,7 @@ GET Individual OnBoarded VNF Package Artifact - Not Acceptable ... Test title: GET Individual OnBoarded VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact fails when related request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot index 2635c198a..44224b1f3 100644 --- a/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot @@ -11,7 +11,7 @@ Get Manifest in Individual VNF Package ... Test title: Get Manifest in Individual VNF Package ... Test objective: The objective is to test that the Get request read the content of manifest within a NVF Package and perform a validation that returned content is in plain text format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Manifest in Individual VNF Package with security information ... Test title: Get Manifest in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of manifest for an individual VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get Manifest in Individual VNF Package - Not acceptable ... Test title: Get Manifest in Individual VNF Package - Not acceptable ... Test objective: The objective is to test that retriveal of the of manifest for an individual VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ Get Manifest in Individual VNF Package - Conflict ... Test title: Get Manifest in Individual VNF Package - Conflict ... Test objective: The objective is to test that the retrieval of the manifest for an individual VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ POST Manifest in Individual VNF Package - Method not implemented ... Test title: POST Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new resource ... Pre-conditions: none - ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PUT Manifest in Individual VNF Package - Method not implemented ... Test title: PUT Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ PATCH Manifest in Individual VNF Package - Method not implemented ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ DELETE Manifest in Individual VNF Package - Method not implemented ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Resource is not deleted by the failed operation @@ -112,7 +112,7 @@ Get Manifest in Individual OnBoarded VNF Package ... Test title: Get Manifest in Individual OnBoarded VNF Package ... Test objective: The objective is to test that the Get request read the content of manifest within a OnBoarded NVF Package and perform a validation that returned content is in plain text format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -125,7 +125,7 @@ Get Manifest in Individual OnBoarded VNF Package with security information ... Test title: Get Manifest in Individual OnBoarded VNF Package with security information ... Test objective: The objective is to test the retrieval of manifest for an individual OnBoarded VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -138,7 +138,7 @@ Get Manifest in Individual OnBoarded VNF Package - Not acceptable ... Test title: Get Manifest in Individual OnBoarded VNF Package - Not acceptable ... Test objective: The objective is to test that retriveal of the of manifest for an individual OnBoarded VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ Get Manifest in Individual OnBoarded VNF Package - Conflict ... Test title: Get Manifest in Individual OnBoarded VNF Package - Conflict ... Test objective: The objective is to test that the retrieval of the manifest for an individual OnBoarded VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ POST Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test title: POST Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new resource ... Pre-conditions: none - ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -176,7 +176,7 @@ PUT Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test title: PUT Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -188,7 +188,7 @@ PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test title: PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -200,7 +200,7 @@ DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test title: DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Resource is not deleted by the failed operation diff --git a/SOL003/VNFPackageManagement-API/NotificationConsumer.robot b/SOL003/VNFPackageManagement-API/NotificationConsumer.robot index 0cc88c3de..4b6c4f3e6 100644 --- a/SOL003/VNFPackageManagement-API/NotificationConsumer.robot +++ b/SOL003/VNFPackageManagement-API/NotificationConsumer.robot @@ -13,7 +13,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test that the POST request triggers VNF Package Onboarding notification. ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Package Change Notification ... Test title: VNF Package Change Notification ... Test objective: The objective is to test that the POST request triggers VNF Package Change notification. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/PackageManagementNotification.robot b/SOL003/VNFPackageManagement-API/PackageManagementNotification.robot index 13830fc38..c25964625 100644 --- a/SOL003/VNFPackageManagement-API/PackageManagementNotification.robot +++ b/SOL003/VNFPackageManagement-API/PackageManagementNotification.robot @@ -16,7 +16,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test the dispatch of VNF Package Onboarding notification when the VNF package onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ VNF Package Operational State Change Notification ... Test title: VNF Package Operational State Change Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package operational state is modified, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ VNF Package Deletion Notification ... Test title: VNF Package Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package is deleted on the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/Subscriptions.robot b/SOL003/VNFPackageManagement-API/Subscriptions.robot index 534beaa72..8422e40ec 100644 --- a/SOL003/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL003/VNFPackageManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ Get All VNF Package Subscriptions ... Test title: GET all VNF Package Subscriptions ... Test objective: The objective is to test the retrieval of all VNF package subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Get VNF Package Subscriptions with attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF package subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ Get VNF Package Subscriptions with invalid attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filters ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET VNF Package Subscription with invalid resource endpoint ... Test title: GET VNF Package Subscription with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF package subscriptions fails when using invalid resource endpoint. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ Create new VNF Package subscription ... Test title: Create new VNF Package subscription ... Test objective: The objective is to test the creation of a new VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF package subscription is successfully set and it matches the issued subscription @@ -86,7 +86,7 @@ Create duplicated VNF Package subscription with NFVO not creating duplicated sub ... Test title: Create duplicated VNF Package subscription with NFVO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF package subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing VNF package subscription returned is available in the NFVO @@ -102,7 +102,7 @@ Create duplicated VNF Package subscription with NFVO creating duplicated subscri ... Test title: Create duplicated VNF Package subscription with NFVO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated VNF package subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated VNF package subscription is successfully set and it matches the issued subscription @@ -117,7 +117,7 @@ PUT VNF Package Subscriptions - Method not implemented ... Test title: PUT VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH VNF Package Subscriptions - Method not implemented ... Test title: PATCH VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ DELETE VNF Package Subscriptions - Method not implemented ... Test title: DELETE VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -167,7 +167,7 @@ Get VNF Package Subscriptions - Bad Request Response too Big ... Test title: Get VNF Package Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -180,7 +180,7 @@ Get VNF Package Subscriptions - Unprocessable Entity ... Test title: Get VNF Package Subscriptions - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed., and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index ecac9cb58..633f43b49 100644 --- a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -11,7 +11,7 @@ Get single file VNFD in Individual VNF Package in Plain Format ... Test title: Get single file VNFD in Individual VNF Package in Plain Format ... Test objective: The objective is to test the retrieval of the VNFD in plain format for an individual VNF package and perform a validation that returned content is in plain format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -24,7 +24,7 @@ Get VNFD in Individual VNF Package in Zip Format ... Test title: Get VNFD in Individual VNF Package in Zip Format ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get single file VNFD in Individual VNF Package in Plain or Zip Format ... Test title: Get single file VNFD in Individual VNF Package in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file VNFD for an individual VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Plain or Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -50,7 +50,7 @@ Get multi file VNFD in Individual VNF Package in Plain or Zip Format ... Test title: Get multi file VNFD in Individual VNF Package in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a multi file ... Post-Conditions: none @@ -63,7 +63,7 @@ Get VNFD in Individual VNF Package with invalid resource identifier ... Test title: Get VNFD in Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF package content fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ Get VNFD in Individual VNF Package Content with conflict due to onboarding state ... Test title: Get VNFD in Individual VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ POST VNFD in Individual VNF Package Content - Method not implemented ... Test title: POST VNFD in Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNFD ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ PATCH VNFD in Individual VNF Package Content - Method not implemented ... Test title: PATCH VNFD in Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -136,7 +136,7 @@ Get single file VNFD in Individual OnBoarded VNF Package in Plain Format ... Test title: Get single file VNFD in Individual OnBoarded VNF Package in Plain Format ... Test objective: The objective is to test the retrieval of the VNFD in plain format for an individual OnBoarded VNF package and perform a validation that returned content is in plain format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -149,7 +149,7 @@ Get VNFD in Individual OnBoarded VNF Package in Zip Format ... Test title: Get VNFD in Individual OnBoarded VNF Package in Zip Format ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual OnBoarded VNF package and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -162,7 +162,7 @@ Get single file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format ... Test title: Get single file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file VNFD for an individual OnBoarded VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Plain or Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -188,7 +188,7 @@ Get VNFD in Individual OnBoarded VNF Package with invalid resource identifier ... Test title: Get VNFD in Individual OnBoarded VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the VNFD for an individual OnBoarded VNF package content fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -200,7 +200,7 @@ Get VNFD in Individual OnBoarded VNF Package Content with conflict due to onboar ... Test title: Get VNFD in Individual OnBoarded VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the VNFD for an individual OnBoarded VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -213,7 +213,7 @@ POST VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test title: POST VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNFD ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -225,7 +225,7 @@ PUT VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test title: PUT VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -249,7 +249,7 @@ DELETE VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test title: DELETE VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -261,7 +261,7 @@ Get multi file VNFD in Individual VNF Package with security information ... Test title: Get multi file VNFD in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a multi file ... Post-Conditions: none @@ -274,7 +274,7 @@ Get multi file VNFD in Individual OnBoarded VNF Package with security informatio ... Test title: Get multi file VNFD in Individual OnBoarded VNF Package with security information ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual OnBoarded VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a multi file ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot index 4fe69be41..946193f63 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -11,7 +11,7 @@ Get VNF Package Artifact ... Test title: Get VNF Package Artifact ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test title: Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ Get VNF Package Artifact with "include_signatures" parameter ... Test title: Get VNF Package Artifact with "include_signatures" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test title: Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the GET request read the whole content of the archive containing the artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -90,7 +90,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ Get VNF Package Artifact with invalid URI parameters undifend select_non_mano_ar ... Test title: Get VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ Get VNF Package Artifact with conflict due to onboarding state ... Test title: Get VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ GET VNF Package Artifact with invalid Range Request ... Test title: GET VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -154,7 +154,7 @@ POST VNF Package Artifact - Method not implemented ... Test title: POST VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ PUT VNF Package Artifact - Method not implemented ... Test title: PUT VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -178,7 +178,7 @@ PATCH VNF Package Artifact - Method not implemented ... Test title: PATCH VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -190,7 +190,7 @@ DELETE VNF Package Artifact - Method not implemented ... Test title: DELETE VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -202,7 +202,7 @@ Get OnBoarded VNF Package Artifact ... Test title: Get OnBoarded VNF Package Artifact ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package Artifact files successfully, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -215,7 +215,7 @@ Get OnBoarded VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test title: Get OnBoarded VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package Artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -228,7 +228,7 @@ Get OnBoarded VNF Package Artifact with "exclude_all_non_mano_artifacts" paramet ... Test title: Get OnBoarded VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -241,7 +241,7 @@ Get OnBoarded VNF Package Artifact with "select_non_mano_artifact_sets" paramete ... Test title: Get OnBoarded VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -267,7 +267,7 @@ Get OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range ... Test title: Get OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -281,7 +281,7 @@ Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_ ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -294,7 +294,7 @@ Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_ ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -307,7 +307,7 @@ Get OnBoarded VNF Package Artifact with invalid URI parameters undifend select_n ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -320,7 +320,7 @@ Get OnBoarded VNF Package Artifact with conflict due to onboarding state ... Test title: Get OnBoarded VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -333,7 +333,7 @@ GET OnBoarded VNF Package Artifact with invalid Range Request ... Test title: GET OnBoarded VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -345,7 +345,7 @@ POST OnBoarded VNF Package Artifact - Method not implemented ... Test title: POST OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -357,7 +357,7 @@ PUT OnBoarded VNF Package Artifact - Method not implemented ... Test title: PUT OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -369,7 +369,7 @@ PATCH OnBoarded VNF Package Artifact - Method not implemented ... Test title: PATCH OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -381,9 +381,22 @@ DELETE OnBoarded VNF Package Artifact - Method not implemented ... Test title: DELETE OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none Send DELETE Request for OnBoarded VNF Package Artifact - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +Get VNF Package Artifact with "include_external_artifacts" parameter + [Documentation] Test ID: 7.3.3.11.31 + ... Test title: Get VNF Package Artifact with "include_external_artifacts" parameter + ... Test objective: The objective is to test that GET request reads the whole content of the archive containing the external artifacts successfully when requested with "include_external_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in VNF Package with include_external_artifacts parameter + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot index ded06fca3..9a5dd9b0e 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot @@ -11,7 +11,7 @@ GET Individual VNF Package Content ... Test title: GET Individual VNF Package Content ... Test objective: The objective is to test the retrieval of an individual VNF package content and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Individual VNF Package Content with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Individual VNF Package Content with Range Request and NFVO not supporting Ra ... Test title: GET Individual VNF Package Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Individual VNF Package Content with invalid Range Request ... Test title: GET Individual VNF Package Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -64,7 +64,7 @@ GET Individual VNF Package Content with invalid resource identifier ... Test title: GET Individual VNF Package Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ GET Individual VNF Package Content with conflict due to onboarding state ... Test title: GET Individual VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ POST Individual VNF Package Content - Method not implemented ... Test title: POST Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package content ... Pre-conditions: none - ... Reference: Clause 10.4.3.5.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.5.1 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ PUT Individual VNF Package Content - Method not implemented ... Test title: PUT Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.5.3 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -114,7 +114,7 @@ PATCH Individual VNF Package Content - Method not implemented ... Test title: PATCH Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.5.4 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ DELETE Individual VNF Package Content - Method not implemented ... Test title: DELETE Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -138,7 +138,7 @@ GET Individual OnBoarded VNF Package Content ... Test title: GET Individual OnBoarded VNF Package Content ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package content and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ GET Individual OnBoarded VNF Package Content with Range Request and NFVO support ... Test title: GET Individual OnBoarded VNF Package Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -166,7 +166,7 @@ GET Individual OnBoarded VNF Package Content with Range Request and NFVO not sup ... Test title: GET Individual OnBoarded VNF Package Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -179,7 +179,7 @@ GET Individual OnBoarded VNF Package Content with invalid Range Request ... Test title: GET Individual OnBoarded VNF Package Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -191,7 +191,7 @@ GET Individual OnBoarded VNF Package Content with invalid resource identifier ... Test title: GET Individual OnBoarded VNF Package Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package content fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -203,7 +203,7 @@ GET Individual OnBoarded VNF Package Content with conflict due to onboarding sta ... Test title: GET Individual OnBoarded VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -216,7 +216,7 @@ POST Individual OnBoarded VNF Package Content - Method not implemented ... Test title: POST Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package content ... Pre-conditions: none - ... Reference: Clause 10.4.3.5.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.5.1 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -228,7 +228,7 @@ PUT Individual OnBoarded VNF Package Content - Method not implemented ... Test title: PUT Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.5.3 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -240,7 +240,7 @@ PATCH Individual OnBoarded VNF Package Content - Method not implemented ... Test title: PATCH Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.5.4 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -252,7 +252,7 @@ DELETE Individual OnBoarded VNF Package Content - Method not implemented ... Test title: DELETE Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 1cefa6c91..398dc75cd 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1323,6 +1323,14 @@ Get Artifact in VNF Package with exclude_all_mano_artifacts parameter ${output}= Output response Set Suite Variable ${response} ${output} +Get Artifact in VNF Package with include_external_artifacts parameter + Log Trying to get Artifact in VNF Package with include_external_artifacts + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/include_external_artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + 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}"} diff --git a/SOL003/VNFPackageManagement-API/VNFPackages.robot b/SOL003/VNFPackageManagement-API/VNFPackages.robot index 77773430d..0b2a88e75 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackages.robot @@ -11,7 +11,7 @@ GET all VNF Packages ... Test title: GET all VNF Packages ... Test objective: The objective is to test the retrieval of all the available VNF packages information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET VNF Packages with attribute-based filter ... Test title: GET VNF Packages with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF packages using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET VNF Packages with invalid attribute-based filter ... Test title: GET VNF Packages with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET VNF Packages with "all_fields" attribute selector ... Test title: GET VNF Packages with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ GET VNF Packages with "exclude_default" attribute selector ... Test title: GET VNF Packages with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ GET VNF Packages with "fields" attribute selector ... Test title: GET VNF Packages with fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -96,7 +96,7 @@ GET VNF Packages with "exclude_fields" attribute selector ... Test title: GET VNF Packages with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -110,7 +110,7 @@ GET all VNF Packages with invalid resource endpoint ... Test title: GET VNF Packages with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid resource endpoint ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ POST all VNF Packages - Method not implemented ... Test title: POST all VNF Packages - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Packages ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -134,7 +134,7 @@ PUT all VNF Packages - Method not implemented ... Test title: PUT all VNF Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -146,7 +146,7 @@ PATCH all VNF Packages - Method not implemented ... Test title: PATCH all VNF Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -158,7 +158,7 @@ DELETE all VNF Packages - Method not implemented ... Test title: DELETE all VNF Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -170,7 +170,7 @@ GET all VNF Packages as a Paged Response ... Test title: GET all VNF Packages as a Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF packages information as a Paged Response. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -183,7 +183,7 @@ GET VNF Packages - Bad Request Response too Big ... Test title: GET VNF Packages - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF packages fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -196,7 +196,7 @@ GET all OnBoarded VNF Packages ... Test title: GET all OnBoarded VNF Packages ... Test objective: The objective is to test the retrieval of all the available onboarded VNF packages information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -212,7 +212,7 @@ GET OnBoarded VNF Packages with attribute-based filter ... Test title: GET OnBoarded VNF Packages with attribute-based filter ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -226,7 +226,7 @@ GET OnBoarded VNF Packages with invalid attribute-based filter ... Test title: GET OnBoarded VNF Packages with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of OnBoarded VNF packages fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -239,7 +239,7 @@ GET OnBoarded VNF Packages with "all_fields" attribute selector ... Test title: GET OnBoarded VNF Packages with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -253,7 +253,7 @@ GET OnBoarded VNF Packages with "exclude_default" attribute selector ... Test title: GET OnBoarded VNF Packages with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -267,7 +267,7 @@ GET OnBoarded VNF Packages with "fields" attribute selector ... Test title: GET OnBoarded VNF Packages with fields attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -281,7 +281,7 @@ GET OnBoarded VNF Packages with "exclude_fields" attribute selector ... Test title: GET OnBoarded VNF Packages with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -295,7 +295,7 @@ GET all OnBoarded VNF Packages with invalid resource endpoint ... Test title: GET OnBoarded VNF Packages with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of OnBoarded VNF packages fails when using invalid resource endpoint ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -307,7 +307,7 @@ POST all OnBoarded VNF Packages - Method not implemented ... Test title: POST all OnBoarded VNF Packages - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new OnBoarded VNF Packages ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -319,7 +319,7 @@ PUT all OnBoarded VNF Packages - Method not implemented ... Test title: PUT all OnBoarded VNF Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing OnBoarded VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -331,7 +331,7 @@ PATCH all OnBoarded VNF Packages - Method not implemented ... Test title: PATCH all OnBoarded VNF Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing OnBoarded VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -343,7 +343,7 @@ DELETE all OnBoarded VNF Packages - Method not implemented ... Test title: DELETE all OnBoarded VNF Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete existing OnBoarded VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -355,7 +355,7 @@ GET all OnBoarded VNF Packages as a Paged Response ... Test title: GET all OnBoarded VNF Packages as a Paged Response ... Test objective: The objective is to test the retrieval of all the available OnBoarded VNF packages information as a Paged Response. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -368,7 +368,7 @@ GET OnBoarded VNF Packages - Bad Request Response too Big ... Test title: GET OnBoarded VNF Packages - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of OnBoarded VNF packages fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -381,7 +381,7 @@ GET VNF Packages with "fields" and "exclude_default" attribute selector ... Test title: GET VNF Packages with fields and exclude_default attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "fields" and "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -395,7 +395,7 @@ GET OnBoarded VNF Packages with "fields" and "exclude_default" attribute selecto ... Test title: GET OnBoarded VNF Packages with fields and exclude_default attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "fields" and "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none -- GitLab From 4a7520c4e85c0c20028a1f3424fd328db0e38c1f Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Fri, 5 Mar 2021 09:18:11 +0100 Subject: [PATCH 371/580] added TD for onboarded_vnf_packages --- .../VNFPackageArtifacts.robot | 13 +++++++++++++ .../VNFPackageManagementKeywords.robot | 8 ++++++++ 2 files changed, 21 insertions(+) diff --git a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot index 946193f63..2d8d1e99c 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -399,4 +399,17 @@ Get VNF Package Artifact with "include_external_artifacts" parameter ... Post-Conditions: none Get Artifact in VNF Package with include_external_artifacts parameter Check HTTP Response Status Code Is 200 + Check HTTP Response Header Content-Type Is application/zip + +Get OnBoarded VNF Package Artifact with "include_external_artifacts" parameter + [Documentation] Test ID: 7.3.3.11.17 + ... Test title: Get OnBoarded VNF Package Artifact with "include_external_artifacts" parameter + ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the external OnBoarded VNF Package Artifacts successfully when requested with "include_external_artifacts" parameter + ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Artifact in OnBoarded VNF Package with include_external_artifacts parameter + Check HTTP Response Status Code Is 200 Check HTTP Response Header Content-Type Is application/zip \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 398dc75cd..d8fff8432 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1454,6 +1454,14 @@ Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts parame ${output}= Output response Set Suite Variable ${response} ${output} +Get Artifact in OnBoarded VNF Package with include_external_artifacts parameter + Log Trying to get Artifact in OnBoarded VNF Package with include_external_artifacts + Set Headers {"Accept": "${ACCEPT_ZIP}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/include_external_artifacts + ${output}= Output response + Set Suite Variable ${response} ${output} + Get Artifact in OnBoarded VNF Package with select_non_mano_artifact_sets parameter Log Trying to get Artifact in OnBoarded VNF Package with security certificates Pass Execution If ${NFVO_non-MANO_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. -- GitLab From f481aa9a187d541a853c3eb66b9e9d0fcf520e15 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Fri, 5 Mar 2021 10:35:44 +0100 Subject: [PATCH 372/580] updated schema --- .../schemas/softwareImage.schema.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/SOL003/VNFPackageManagement-API/schemas/softwareImage.schema.json b/SOL003/VNFPackageManagement-API/schemas/softwareImage.schema.json index 809da850b..90610b4a1 100644 --- a/SOL003/VNFPackageManagement-API/schemas/softwareImage.schema.json +++ b/SOL003/VNFPackageManagement-API/schemas/softwareImage.schema.json @@ -71,6 +71,10 @@ "imagePath": { "description": "Path in the VNF package, which identifies the image artifact and also allows to access a copy of the image artifact.\n", "type": "string" + }, + "imageUri": { + "description": "URI of the image artifact as defined in the VNF package manifest.\n", + "type": "string" } } } -- GitLab From 868b9a32ad5df1ebaaa66bf76e9a8082cf871a7d Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 5 Mar 2021 18:00:41 +0500 Subject: [PATCH 373/580] updated importing of variables for descriptors --- .../VNFPackageManagementKeywords.robot | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index d8fff8432..6f275af21 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -9,8 +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 +#Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +#Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** Get all VNF Packages @@ -1578,6 +1578,7 @@ 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 + Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml ${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} @@ -1590,6 +1591,7 @@ Fetch Information from SOL001 descriptor file Set Global Variable ${Descriptor_Version} ${descriptor_version} Fetch Information from SOL006 descriptor file + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${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']} -- GitLab From 35e9a2572bd0076674fbd477784bacf6222551fd Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 5 Mar 2021 18:13:40 +0500 Subject: [PATCH 374/580] updated references --- .../VNFPackageManagement-API/ApiVersion.robot | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/ApiVersion.robot b/SOL003/VNFPackageManagement-API/ApiVersion.robot index 2f7e5495d..de85b4fee 100644 --- a/SOL003/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL003/VNFPackageManagement-API/ApiVersion.robot @@ -13,7 +13,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From b3e559495112e62ef44f26aa9fea687b514a6576 Mon Sep 17 00:00:00 2001 From: zafar Date: Mon, 30 Nov 2020 20:12:30 +0500 Subject: [PATCH 375/580] New Resource added in SOL011: Grants.robot --- .../Grants.robot | 165 ++++++++++++++++++ .../environment/variables.txt | 44 +++++ .../grantNSLifecycleOperationRequest.json | 6 + .../jsons/grantRejected.json | 6 + .../schemas/Grants.schema.json | 53 ++++++ .../schemas/ProblemDetails.schema.json | 34 ++++ 6 files changed, 308 insertions(+) create mode 100644 SOL011/NSLifecycleOperationGranting-API/Grants.robot create mode 100644 SOL011/NSLifecycleOperationGranting-API/environment/variables.txt create mode 100644 SOL011/NSLifecycleOperationGranting-API/jsons/grantNSLifecycleOperationRequest.json create mode 100644 SOL011/NSLifecycleOperationGranting-API/jsons/grantRejected.json create mode 100644 SOL011/NSLifecycleOperationGranting-API/schemas/Grants.schema.json create mode 100644 SOL011/NSLifecycleOperationGranting-API/schemas/ProblemDetails.schema.json diff --git a/SOL011/NSLifecycleOperationGranting-API/Grants.robot b/SOL011/NSLifecycleOperationGranting-API/Grants.robot new file mode 100644 index 000000000..65cd3d442 --- /dev/null +++ b/SOL011/NSLifecycleOperationGranting-API/Grants.robot @@ -0,0 +1,165 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +Requests a grant for a particular NS lifecycle operation + [Documentation] Test ID: 9.3.3.1.1 + ... Test title: Requests a grant for a particular NS lifecycle operation + ... Test objective: The objective is to request a grant for a particular NS lifecycle operation and perform a JSON schema validation on the returned grant data structure + ... Pre-conditions: + ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The NFVO can decide immediately what to respond to a grant request + ... Post-Conditions: The grant information is available to the NFVO. + Send Post Request for Grant + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is Grant + Check Operation Occurrence Id existence + +Requests a grant for a particular NS lifecycle operation - Forbidden + [Documentation] Test ID: 9.3.3.1.2 + ... Test title: Requests a grant for a particular NS lifecycle operation - Forbidden + ... Test objective: The objective is to request a grant for a particular NS lifecycle operation and the grant is rejected + ... Pre-conditions: none + ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Send Request for a new Grant Forbiden Operation + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Grants - Method not implemented + [Documentation] Test ID: 9.3.3.1.3 + ... Test title: GET Grants - Method not implemented + ... Test objective: The objective is to test that GET method is not allowed for Life cycle operation granting + ... Pre-conditions: none + ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get Grants + Check HTTP Response Status Code Is 405 + +PUT Grants - Method not implemented + [Documentation] Test ID: 9.3.3.1.4 + ... Test title: PUT Grants - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed for Life cycle operation granting + ... Pre-conditions: none + ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Put Grants + Check HTTP Response Status Code Is 405 + +PATCH Grants - Method not implemented + [Documentation] Test ID: 9.3.3.1.5 + ... Test title: PATCH Grants - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed for Life cycle operation granting + ... Pre-conditions: none + ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Patch Grants + Check HTTP Response Status Code Is 405 + +DELETE Grants - Method not implemented + [Documentation] Test ID: 9.3.3.1.6 + ... Test title: DELETE Grants - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed for Life cycle operation granting + ... Pre-conditions: none + ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: resources are not deleted + Delete Grants + Check HTTP Response Status Code Is 405 + Get an individual grant - Successful + +*** Keywords *** +Send Post Request for Grant + Log Request a new Grant for an NS LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body}= Get File jsons/grantNSLifecycleOperationRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Send Request for a new Grant Forbiden Operation + Log Request a new Grant for a NS LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants + Log The grant request should be rejected + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body}= Get File jsons/grantRejected.json + Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check Operation Occurrence Id existence + ${occId}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${occId} + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + +Get Grants + Log Trying to perform a GET. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/grants + ${body}= Output response + Set Suite Variable ${response} ${body} + +Put Grants + Log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/grants + ${body}= Output response + Set Suite Variable ${response} ${body} + +Patch Grants + Log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/grants + ${body}= Output response + Set Suite Variable ${response} ${body} + + +Delete Grants + Log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/grants + ${body}= Output response + Set Suite Variable ${response} ${body} + +Get an individual grant - Successful + log Trying to read an individual grant + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${response['headers']['Location']} + Log Validate Status code + Integer response status 200 \ No newline at end of file diff --git a/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt b/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt new file mode 100644 index 000000000..cfb446726 --- /dev/null +++ b/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt @@ -0,0 +1,44 @@ +*** Variables *** +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO +${NFVO_SCHEMA} https +${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${CONTENT_TYPE} application/json +${ACCEPT} application/json +${AUTH_USAGE} 1 +${grantId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d + +${apiRoot} / +${apiName} grant +${apiVersion} v1 + +${SYNC_MODE} 1 + + + + +${response} + + + +${VNFM_HOST} localhost # Hostname of the VNFM +${VNFM_PORT} 8080 # Listening port of the VNFM +${VNFM_SCHEMA} https +${CONTENT_TYPE_PATCH} application/merge-patch+json +${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX + +${vnfInstanceDescription} description vnf +${vnfInstanceDescription_Update} Updated description vnf +${SINGLE_FILE_VNFD} 1 # If VNFD is PLAIN TEXT +${ACCEPT_PLAIN} text/plain +${ACCEPT_ZIP} application/zip +${vnfPkgId_processing} 007c111c-38a1-42c0-a666-7475ecb1567c +${ARTIFACT_TYPE} application/octet-stream +${ARTIFACT_ID} artifactId +${WRONG_ACCEPT} application/json + +${sub_filter} filter +${sub_filter_invalid} filter_invalid +${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${notification_ep} notification +${VrQuotaAvailNotification} {} diff --git a/SOL011/NSLifecycleOperationGranting-API/jsons/grantNSLifecycleOperationRequest.json b/SOL011/NSLifecycleOperationGranting-API/jsons/grantNSLifecycleOperationRequest.json new file mode 100644 index 000000000..df3d7bb4d --- /dev/null +++ b/SOL011/NSLifecycleOperationGranting-API/jsons/grantNSLifecycleOperationRequest.json @@ -0,0 +1,6 @@ +{ + "nsInstanceId": "", + "nsdId": "", + "nsLcmOpOccId": "", + "lifecycleOperation": "SCALE" +} \ No newline at end of file diff --git a/SOL011/NSLifecycleOperationGranting-API/jsons/grantRejected.json b/SOL011/NSLifecycleOperationGranting-API/jsons/grantRejected.json new file mode 100644 index 000000000..df3d7bb4d --- /dev/null +++ b/SOL011/NSLifecycleOperationGranting-API/jsons/grantRejected.json @@ -0,0 +1,6 @@ +{ + "nsInstanceId": "", + "nsdId": "", + "nsLcmOpOccId": "", + "lifecycleOperation": "SCALE" +} \ No newline at end of file diff --git a/SOL011/NSLifecycleOperationGranting-API/schemas/Grants.schema.json b/SOL011/NSLifecycleOperationGranting-API/schemas/Grants.schema.json new file mode 100644 index 000000000..05e5dfe39 --- /dev/null +++ b/SOL011/NSLifecycleOperationGranting-API/schemas/Grants.schema.json @@ -0,0 +1,53 @@ +{ + "Grant": { + "description": "This type represents a grant. It shall comply with the provisions defined in table 7.6.2.3-1.", + "type": "object", + "required": [ + "id", + "nsInstanceId", + "nsLcmOpOccId", + "_links" + ], + "properties": { + "id": { + "description": "Identifier of the grant.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" + }, + "nsInstanceId": { + "description": "Identifier of the NS instance which this grant request relates to.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" + }, + "nsLcmOpOccId": { + "description": "Identifier of the NS lifecycle management operation occurrence associated to the GrantRequest.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" + }, + "additionalParams": { + "description": "Additional parameters passed by NFVO-N, specific to the NS and the lifecycle management operation.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/KeyValuePairs" + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self", + "nsLcmOpOcc", + "nsInstance" + ], + "properties": { + "self": { + "description": "URI of this resource", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link" + }, + "nsLcmOpOcc": { + "description": "Related NS lifecycle management operation occurrence", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link" + }, + "nsInstance": { + "description": "Related NS instance.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link" + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL011/NSLifecycleOperationGranting-API/schemas/ProblemDetails.schema.json b/SOL011/NSLifecycleOperationGranting-API/schemas/ProblemDetails.schema.json new file mode 100644 index 000000000..62f176127 --- /dev/null +++ b/SOL011/NSLifecycleOperationGranting-API/schemas/ProblemDetails.schema.json @@ -0,0 +1,34 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "properties": { + "type": { + "type": "string", + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "format": "URI" + }, + "title": { + "type": "string", + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n" + }, + "status": { + "type": "integer", + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n" + }, + "detail": { + "type": "string", + "description": "A human-readable explanation specific to this occurrence of the problem.\n" + }, + "instance": { + "type": "string", + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "format": "URI" + } + }, + "required": [ + "status", + "detail" + ] +} \ No newline at end of file -- GitLab From e52d714b6b79d7859233432a71187bcea60e7716 Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 1 Dec 2020 18:47:10 +0500 Subject: [PATCH 376/580] New Resource IndividualGrant added in SOL011 --- .../Grants.robot | 8 +- .../IndividualGrant.robot | 122 ++++++++++++++++++ .../environment/variables.txt | 2 +- .../schemas/Grant.schema.json | 51 ++++++++ .../schemas/Grants.schema.json | 53 -------- 5 files changed, 178 insertions(+), 58 deletions(-) create mode 100644 SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot create mode 100644 SOL011/NSLifecycleOperationGranting-API/schemas/Grant.schema.json delete mode 100644 SOL011/NSLifecycleOperationGranting-API/schemas/Grants.schema.json diff --git a/SOL011/NSLifecycleOperationGranting-API/Grants.robot b/SOL011/NSLifecycleOperationGranting-API/Grants.robot index 65cd3d442..172edd6dd 100644 --- a/SOL011/NSLifecycleOperationGranting-API/Grants.robot +++ b/SOL011/NSLifecycleOperationGranting-API/Grants.robot @@ -38,7 +38,7 @@ GET Grants - Method not implemented ... Test title: GET Grants - Method not implemented ... Test objective: The objective is to test that GET method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Grants - Method not implemented ... Test title: PUT Grants - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.3 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Grants - Method not implemented ... Test title: PATCH Grants - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.4 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Grants - Method not implemented ... Test title: DELETE Grants - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.5 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: resources are not deleted diff --git a/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot new file mode 100644 index 000000000..af8da8128 --- /dev/null +++ b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot @@ -0,0 +1,122 @@ +*** Settings *** +Resource environment/variables.txt +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +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. + +*** Test Cases *** +POST Individual Grant - Method not implemented + [Documentation] Test ID: 9.3.3.2.1 + ... Test title: POST Individual Grant - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed for Life cycle operation granting + ... Pre-conditions: none + ... Reference: Clause 7.5.4.3.1 - ETSI GS NFV-SOL 011 [1] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Post individual Grant + Check HTTP Response Status Code Is 405 + +GET an individual grant - Successful + [Documentation] Test ID: 9.3.3.2.2 + ... Test title: GET an individual grant - Successful + ... Test objective: The objective is to retrieve a grant for a particular NS Lifecycle Operation. + ... Pre-conditions: The grant information is available to the NFVO + ... Reference: Clause 7.5.4.3.2 - ETSI GS NFV-SOL 011 [1] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get individual grant + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Grant + +PUT an individual grant - Method not implemented + [Documentation] Test ID: 9.3.3.2.3 + ... Test title: PUT an individual grant - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to for Life cycle operation granting + ... Pre-conditions: none + ... Reference: Clause 7.5.4.3.3 - ETSI GS NFV-SOL 011 [1] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT individual Grant + Check HTTP Response Status Code Is 405 + +PATCH an individual grant - Method not implemented + [Documentation] Test ID: 9.3.3.2.4 + ... Test title: PATCH an individual grant - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to for Life cycle operation granting + ... Pre-conditions: none + ... Reference: Clause 7.5.4.3.4 - ETSI GS NFV-SOL 011 [1] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Patch individual Grant + Check HTTP Response Status Code Is 405 + +DELETE an individual grant - Method not implemented + [Documentation] Test ID: 9.3.3.2.5 + ... Test title: DELETE an individual grant - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to for Life cycle operation granting + ... Pre-conditions: none + ... Reference: Clause 7.5.4.3.5 - ETSI GS NFV-SOL 011 [1] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Delete individual Grant + Check HTTP Response Status Code Is 405 + +*** Keywords *** +Get individual grant + log Trying to read an individual grant + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Post individual Grant + log Trying to create an individual grant + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Put individual Grant + Log Trying to update an individual grant. This method should not be implemented. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Patch individual Grant + Log Trying to update an individual grant. This method should not be implemented. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Delete individual Grant + Log Trying to delete an individual grant. This method should not be implemented. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} diff --git a/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt b/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt index cfb446726..1895ddcb8 100644 --- a/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt @@ -14,7 +14,7 @@ ${apiVersion} v1 ${SYNC_MODE} 1 - +${grantId} ${response} diff --git a/SOL011/NSLifecycleOperationGranting-API/schemas/Grant.schema.json b/SOL011/NSLifecycleOperationGranting-API/schemas/Grant.schema.json new file mode 100644 index 000000000..021c90e68 --- /dev/null +++ b/SOL011/NSLifecycleOperationGranting-API/schemas/Grant.schema.json @@ -0,0 +1,51 @@ +{ + "description": "This type represents a grant. It shall comply with the provisions defined in table 7.6.2.3-1.", + "type": "object", + "required": [ + "id", + "nsInstanceId", + "nsLcmOpOccId", + "_links" + ], + "properties": { + "id": { + "description": "Identifier of the grant.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" + }, + "nsInstanceId": { + "description": "Identifier of the NS instance which this grant request relates to.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" + }, + "nsLcmOpOccId": { + "description": "Identifier of the NS lifecycle management operation occurrence associated to the GrantRequest.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" + }, + "additionalParams": { + "description": "Additional parameters passed by NFVO-N, specific to the NS and the lifecycle management operation.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/KeyValuePairs" + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self", + "nsLcmOpOcc", + "nsInstance" + ], + "properties": { + "self": { + "description": "URI of this resource", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link" + }, + "nsLcmOpOcc": { + "description": "Related NS lifecycle management operation occurrence", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link" + }, + "nsInstance": { + "description": "Related NS instance.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link" + } + } + } + } +} \ No newline at end of file diff --git a/SOL011/NSLifecycleOperationGranting-API/schemas/Grants.schema.json b/SOL011/NSLifecycleOperationGranting-API/schemas/Grants.schema.json deleted file mode 100644 index 05e5dfe39..000000000 --- a/SOL011/NSLifecycleOperationGranting-API/schemas/Grants.schema.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "Grant": { - "description": "This type represents a grant. It shall comply with the provisions defined in table 7.6.2.3-1.", - "type": "object", - "required": [ - "id", - "nsInstanceId", - "nsLcmOpOccId", - "_links" - ], - "properties": { - "id": { - "description": "Identifier of the grant.", - "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" - }, - "nsInstanceId": { - "description": "Identifier of the NS instance which this grant request relates to.", - "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" - }, - "nsLcmOpOccId": { - "description": "Identifier of the NS lifecycle management operation occurrence associated to the GrantRequest.", - "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" - }, - "additionalParams": { - "description": "Additional parameters passed by NFVO-N, specific to the NS and the lifecycle management operation.", - "$ref": "../components/SOL011_schemas.yaml#/components/schemas/KeyValuePairs" - }, - "_links": { - "description": "Links to resources related to this resource.", - "type": "object", - "required": [ - "self", - "nsLcmOpOcc", - "nsInstance" - ], - "properties": { - "self": { - "description": "URI of this resource", - "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link" - }, - "nsLcmOpOcc": { - "description": "Related NS lifecycle management operation occurrence", - "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link" - }, - "nsInstance": { - "description": "Related NS instance.", - "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link" - } - } - } - } - } -} \ No newline at end of file -- GitLab From f34f7996e5b648d2a69a5caef1fce54e80f4d776 Mon Sep 17 00:00:00 2001 From: zafar Date: Fri, 4 Dec 2020 21:42:22 +0500 Subject: [PATCH 377/580] New resource:Subscription.robot added in NSIUN-API --- .../Subscriptions.robot | 358 ++++++++++++++++++ .../environment/variables.txt | 42 ++ .../NsInstanceUsageSubscriptionRequest.json | 10 + .../schemas/ProblemDetails.schema.json | 34 ++ .../schemas/subscription.schema.json | 36 ++ .../schemas/subscriptions.schema.json | 39 ++ .../Grants.robot | 11 +- .../environment/variables.txt | 4 +- 8 files changed, 526 insertions(+), 8 deletions(-) create mode 100644 SOL011/NSInstanceUsageNotification-API/Subscriptions.robot create mode 100644 SOL011/NSInstanceUsageNotification-API/environment/variables.txt create mode 100644 SOL011/NSInstanceUsageNotification-API/jsons/NsInstanceUsageSubscriptionRequest.json create mode 100644 SOL011/NSInstanceUsageNotification-API/schemas/ProblemDetails.schema.json create mode 100644 SOL011/NSInstanceUsageNotification-API/schemas/subscription.schema.json create mode 100644 SOL011/NSInstanceUsageNotification-API/schemas/subscriptions.schema.json diff --git a/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot new file mode 100644 index 000000000..09442ac4b --- /dev/null +++ b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot @@ -0,0 +1,358 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST Create a new subscription + [Documentation] Test ID: 9.3.4.1.1 + ... Test title: POST Create a new subscription + ... Test objective: The objective is to test that POST method creates a subscription + ... Pre-conditions: none + ... Reference: Clause 8.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: Subscription is created in the NFVO + POST subscriptions + Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location + Check HTTP Response Body Json Schema Is subscription + Check Resource URI + +POST Create a new Subscription - DUPLICATION + [Documentation] Test ID: 9.3.4.1.2 + ... Test title: POST Create a new subscription - DUPLICATION + ... Test objective: The objective is to test that POST method creates a duplicate subscription + ... Pre-conditions: A subscription shall already exist + ... Reference: Clause 8.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: Duplication supported by NFVO-C + ... Post-Conditions: Duplicate subscription is created in the NFVO + Check Subscription Existence + POST subscriptions DUPLICATION + Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location + Check HTTP Response Body Json Schema Is subscription + +POST Create a new Subscription - NO-DUPLICATION + [Documentation] Test ID: 9.3.4.1.3 + ... Test title: POST Create a new subscription - NO-DUPLICATION + ... Test objective: The objective is to test that POST method cannot create a duplicate subscription + ... Pre-conditions: A subscription shall already exist + ... Reference: Clause 8.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: Duplication NOT supported by NFVO-C + ... Post-Conditions: Duplicate subscription is not created in the NFVO + Check Subscription Existence + POST subscriptions NO DUPLICATION + Check HTTP Response Status Code Is 303 + Check HTTP Response Header Contains Location + +GET Subscriptions + [Documentation] Test ID: 9.3.4.1.4 + ... Test title: GET Subscriptions + ... Test objective: The objective is to test that GET method retrieves the list of existing subscriptions + ... Pre-conditions: none + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions + +GET Subscription - Filter + [Documentation] Test ID: 9.3.4.1.5 + ... Test title: GET Subscription - Filter + ... Test objective: The objective is GET the list of active subscriptions using a filter + ... Pre-conditions: none + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Subscriptions with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions + +GET subscriptions - Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 9.3.4.1.6 + ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters + ... Test objective: The objective is GET the list of active subscriptions using an invalid filter + ... Pre-conditions: none + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Get subscriptions - invalid filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET subscriptions - Bad Request Response too Big + [Documentation] Test ID: 9.3.4.1.7 + ... Test title: GET subscriptions - Bad Request Response too Big + ... Test objective: The objective is test that the retrieval of active subscriptions list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Subscriptions + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET subscriptions with "all_fields" attribute selector + [Documentation] Test ID: 9.3.4.1.8 + ... Test title: GET subscriptions with "all_fields" attribute selector + ... Test objective: The objective is to retrieve the list of active subscriptions with "all_fields" attribute selector + ... Pre-conditions: + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: + ... Post-Conditions: + Get subscriptions with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions + +GET subscriptions with "exclude_default" attribute selector + [Documentation] Test ID: 9.3.4.1.9 + ... Test title: GET subscriptions with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_default"s attribute selector + ... Pre-conditions: + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: + ... Post-Conditions: + Get subscriptions with exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions + +GET subscriptions with "fields" attribute selector + [Documentation] Test ID: 9.3.4.1.10 + ... Test title: GET subscriptions with "fields" attribute selector + ... Test objective: The objective is to retrieve the list of active subscriptions with "fields" attribute selector + ... Pre-conditions: + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: + ... Post-Conditions: + Get subscriptions with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions + +GET subscriptions with "exclude_fields" attribute selector + [Documentation] Test ID: 9.3.4.1.11 + ... Test title: GET subscriptions with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_fields" attribute selector + ... Pre-conditions: + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: + ... Post-Conditions: + Get subscriptions with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions + +GET Subscriptions as Paged Response + [Documentation] Test ID: 9.3.4.1.12 + ... Test title: GET Subscriptions as Paged Response + ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions as paged response. + ... Pre-conditions: none + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Subscriptions + Check HTTP Response Status Code Is 200 + Check LINK in Header + +PUT subscriptions - Method not implemented + [Documentation] Test ID: 9.3.4.1.13 + ... Test title: PUT subscriptions - Method not implemented + ... Test objective: The objective is to test that PUT method cannot modify a NS instance usage subscription + ... Pre-conditions: none + ... Reference: Clause 8.5.3.3.3 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT subscriptions + Check HTTP Response Status Code Is 405 + +PATCH subscriptions - Method not implemented + [Documentation] Test ID: 9.3.4.1.14 + ... Test title: PATCH subscriptions - Method not implemented + ... Test objective: The objective is to test that PUT method cannot modify a NS instance usage subscription + ... Pre-conditions: none + ... Reference: Clause 8.5.3.3.4 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH subscriptions + Check HTTP Response Status Code Is 405 + +DELETE subscriptions - Method not implemented + [Documentation] Test ID: 9.3.4.1.15 + ... Test title: DELETE subscriptions - Method not implemented + ... Test objective: The objective is to test that DELETE method cannot delete a NS instance usage subscription + ... Pre-conditions: none + ... Reference: Clause 8.5.3.3.5 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: Subscription is not deleted + DELETE subscriptions + Check HTTP Response Status Code Is 405 + +*** Keywords *** +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +Check Resource URI + ${uri}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${uri} + Log URI is present + +Check subscription existence + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Integer response status 200 + #more robust functionaity needed + +#Check URI is Of Existing Resource +# ${uri}= Get Value From Json ${response['headers']} $..Location +# Should Be Equal As Strings ${uri} ${} + +Check LINK in Header + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + +POST subscriptions + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/NsInstanceUsageSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST subscriptions DUPLICATION + Log Trying to create a subscription with an already created content + Pass Execution If ${NFVO_DUPLICATION} == 1 NFVO is 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}"} + ${body}= Get File jsons/NsInstanceUsageSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST subscriptions NO DUPLICATION + Log Trying to create a subscription with an already created content + Pass Execution If ${NFVO_DUPLICATION} == 0 NFVO is not permitting duplication. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/NsInstanceUsageSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Subscriptions + Log Get the list of active subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Get subscriptions with all_fields attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?all_fields + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get subscriptions with exclude_default attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get subscriptions with fields attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get subscriptions with exclude_fields attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET subscriptions with filter + Log Get the list of active subscriptions using a filter + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Get subscriptions - invalid filter + Log Get the list of active subscriptions using an invalid filter + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT subscriptions + Log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH subscriptions + Log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE subscriptions + Log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL011/NSInstanceUsageNotification-API/environment/variables.txt b/SOL011/NSInstanceUsageNotification-API/environment/variables.txt new file mode 100644 index 000000000..fc5a4bc11 --- /dev/null +++ b/SOL011/NSInstanceUsageNotification-API/environment/variables.txt @@ -0,0 +1,42 @@ +*** Variables *** +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO +${NFVO_SCHEMA} https +${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${CONTENT_TYPE} application/json +${ACCEPT} application/json +${AUTH_USAGE} 1 +${ACCEPT_JSON} application/json +${apiRoot} / +${apiName} nsiun +${apiVersion} v1 + +${SYNC_MODE} 1 + + +${response} + +${NFVO_DUPLICATION} + +${VNFM_HOST} localhost # Hostname of the VNFM +${VNFM_PORT} 8080 # Listening port of the VNFM +${VNFM_SCHEMA} https +${CONTENT_TYPE_PATCH} application/merge-patch+json +${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX + +${vnfInstanceDescription} description vnf +${vnfInstanceDescription_Update} Updated description vnf +${SINGLE_FILE_VNFD} 1 # If VNFD is PLAIN TEXT +${ACCEPT_PLAIN} text/plain +${ACCEPT_ZIP} application/zip +${vnfPkgId_processing} 007c111c-38a1-42c0-a666-7475ecb1567c +${ARTIFACT_TYPE} application/octet-stream +${ARTIFACT_ID} artifactId +${WRONG_ACCEPT} application/json + +${sub_filter} filter +${sub_filter_invalid} filter_invalid +${fields} criteria,objectInstanceIds +${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${notification_ep} notification +${VrQuotaAvailNotification} {} diff --git a/SOL011/NSInstanceUsageNotification-API/jsons/NsInstanceUsageSubscriptionRequest.json b/SOL011/NSInstanceUsageNotification-API/jsons/NsInstanceUsageSubscriptionRequest.json new file mode 100644 index 000000000..b9203519e --- /dev/null +++ b/SOL011/NSInstanceUsageNotification-API/jsons/NsInstanceUsageSubscriptionRequest.json @@ -0,0 +1,10 @@ +{ + "filter": { + "nsInstanceUsageNotificationFilter": { + "nsInstanceId": "6fc3539c-e602-4afa-8e13-962fb5a7d81f", + "status": "START" + } + }, + "callbackUri": "http://127.0.0.1/subscribe", + "authentication": "" +} \ No newline at end of file diff --git a/SOL011/NSInstanceUsageNotification-API/schemas/ProblemDetails.schema.json b/SOL011/NSInstanceUsageNotification-API/schemas/ProblemDetails.schema.json new file mode 100644 index 000000000..62f176127 --- /dev/null +++ b/SOL011/NSInstanceUsageNotification-API/schemas/ProblemDetails.schema.json @@ -0,0 +1,34 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "properties": { + "type": { + "type": "string", + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "format": "URI" + }, + "title": { + "type": "string", + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n" + }, + "status": { + "type": "integer", + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n" + }, + "detail": { + "type": "string", + "description": "A human-readable explanation specific to this occurrence of the problem.\n" + }, + "instance": { + "type": "string", + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "format": "URI" + } + }, + "required": [ + "status", + "detail" + ] +} \ No newline at end of file diff --git a/SOL011/NSInstanceUsageNotification-API/schemas/subscription.schema.json b/SOL011/NSInstanceUsageNotification-API/schemas/subscription.schema.json new file mode 100644 index 000000000..a4154156a --- /dev/null +++ b/SOL011/NSInstanceUsageNotification-API/schemas/subscription.schema.json @@ -0,0 +1,36 @@ +{ + "description": "This type represents a subscription related to notifications about NS instance usage. It shall comply with the provisions defined in table 8.6.2.3-1.", + "type": "object", + "required": [ + "id", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "description": "Identifier that identifies the subscription.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" + }, + "filter": { + "description": "Filter settings for this subscription, to define the subset of all notifications this subscription relates to. A particular notification is sent to the subscriber if the filter matches, or if there is no filter.", + "$ref": "#/components/schemas/NsInstanceUsageNotificationsFilter" + }, + "callbackUri": { + "description": "The URI of the endpoint to send the notification to.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Uri" + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "URI of this resource.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link" + } + } + } + } +} \ No newline at end of file diff --git a/SOL011/NSInstanceUsageNotification-API/schemas/subscriptions.schema.json b/SOL011/NSInstanceUsageNotification-API/schemas/subscriptions.schema.json new file mode 100644 index 000000000..010b50b29 --- /dev/null +++ b/SOL011/NSInstanceUsageNotification-API/schemas/subscriptions.schema.json @@ -0,0 +1,39 @@ +{ + "type": "array", + "items": { + "description": "This type represents a subscription related to notifications about NS instance usage. It shall comply with the provisions defined in table 8.6.2.3-1.", + "type": "object", + "required": [ + "id", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "description": "Identifier that identifies the subscription.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" + }, + "filter": { + "description": "Filter settings for this subscription, to define the subset of all notifications this subscription relates to. A particular notification is sent to the subscriber if the filter matches, or if there is no filter.", + "$ref": "#/components/schemas/NsInstanceUsageNotificationsFilter" + }, + "callbackUri": { + "description": "The URI of the endpoint to send the notification to.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Uri" + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "URI of this resource.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Link" + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL011/NSLifecycleOperationGranting-API/Grants.robot b/SOL011/NSLifecycleOperationGranting-API/Grants.robot index 172edd6dd..4ef0f91eb 100644 --- a/SOL011/NSLifecycleOperationGranting-API/Grants.robot +++ b/SOL011/NSLifecycleOperationGranting-API/Grants.robot @@ -18,7 +18,8 @@ Requests a grant for a particular NS lifecycle operation Send Post Request for Grant Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is Grant - Check Operation Occurrence Id existence + Check HTTP Response Header Contains Location + Check Resource URI existence Requests a grant for a particular NS lifecycle operation - Forbidden [Documentation] Test ID: 9.3.3.1.2 @@ -109,15 +110,15 @@ Check HTTP Response Status Code Is Should Be Equal As Strings ${response['status']} ${expected_status} Log Status code validated -Check Operation Occurrence Id existence - ${occId}= Get Value From Json ${response['headers']} $..Location - Should Not Be Empty ${occId} - Check HTTP Response Header Contains [Arguments] ${CONTENT_TYPE} Should Contain ${response['headers']} ${CONTENT_TYPE} Log Header is present +Check Resource URI existence + ${uri}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${uri} + Check HTTP Response Body Json Schema Is [Arguments] ${input} ${schema} = Catenate ${input} .schema.json diff --git a/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt b/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt index 1895ddcb8..e69f12ee2 100644 --- a/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL011/NSLifecycleOperationGranting-API/environment/variables.txt @@ -9,13 +9,11 @@ ${AUTH_USAGE} 1 ${grantId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d ${apiRoot} / -${apiName} grant +${apiName} nslcog ${apiVersion} v1 ${SYNC_MODE} 1 -${grantId} - ${response} -- GitLab From 2f952ddf04f6e80e41e2a7bfa8895b59606c457c Mon Sep 17 00:00:00 2001 From: zafar Date: Mon, 7 Dec 2020 21:00:46 +0500 Subject: [PATCH 378/580] New resource: IndividualSubscription added in NSIUN-API --- .../IndividualSubscription.robot | 69 ++++++ .../NSInstanceUsageNotificationKeywords.robot | 198 ++++++++++++++++++ .../Subscriptions.robot | 161 +------------- .../Grants.robot | 85 +------- .../IndividualGrant.robot | 54 +---- .../NSLCOperationGrantingKeywords.robot | 128 +++++++++++ 6 files changed, 403 insertions(+), 292 deletions(-) create mode 100644 SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot create mode 100644 SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot create mode 100644 SOL011/NSLifecycleOperationGranting-API/NSLCOperationGrantingKeywords.robot diff --git a/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot b/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot new file mode 100644 index 000000000..255800825 --- /dev/null +++ b/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot @@ -0,0 +1,69 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSInstanceUsageNotificationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST Individual Subscription - Method not implemented + [Documentation] Test ID: 9.3.4.2.1 + ... Test title: POST Individual Subscription - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 8.5.4.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: The NS instance usage notification subscription is not created on the NFVO + POST Individual Subscription + Check HTTP Response Status Code Is 405 + +GET Information about an individual subscription + [Documentation] Test ID: 9.3.4.2.2 + ... Test title: GET Information about an individual subscription + ... Test objective: The objective is to test the retrieval of NS instance usage notification subscription and perform a JSON schema validation of the returned subscription data structure + ... Pre-conditions: none + ... Reference: Clause 8.5.4.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual subscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscription + +PUT an individual subscription - Method not implemented + [Documentation] Test ID: 9.3.4.2.3 + ... Test title: PUT an individual subscription - Method not implemented + ... Test objective: TThe objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 8.5.4.3.3 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: The NS instance usage notification subscription is not modified by the operation + PUT Individual Subscription + Check HTTP Response Status Code Is 405 + +PATCH an individual subscription - Method not implemented + [Documentation] Test ID: 9.3.4.2.4 + ... Test title: PATCH an individual subscription - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 8.5.4.3.4 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: The NS instance usage notification subscription is not modified by the operation + PATCH Individual Subscription + Check HTTP Response Status Code Is 405 + +DELETE an individual subscription + [Documentation] Test ID: 9.3.4.2.5 + ... Test title: DELETE an individual subscription + ... Test objective: The objective is to test that DELETE method deletes an individual subscription + ... Pre-conditions: At least one instance usage notification subscription is available in the NFVO + ... Reference: Clause 8.5.4.3.5 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: The NS instance usage notification subscription is not available anymore on NFVO + DELETE Individual Subscription + Check HTTP Response Status Code Is 204 \ No newline at end of file diff --git a/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot b/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot new file mode 100644 index 000000000..96aa0ed49 --- /dev/null +++ b/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot @@ -0,0 +1,198 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Keywords *** +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +Check Resource URI + ${uri}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${uri} + Log URI is present + +Check subscription existence + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Integer response status 200 + +Check LINK in Header + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + +POST subscriptions + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/NsInstanceUsageSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST subscriptions DUPLICATION + Log Trying to create a subscription with an already created content + Pass Execution If ${NFVO_DUPLICATION} == 1 NFVO is 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}"} + ${body}= Get File jsons/NsInstanceUsageSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST subscriptions NO DUPLICATION + Log Trying to create a subscription with an already created content + Pass Execution If ${NFVO_DUPLICATION} == 0 NFVO is not permitting duplication. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/NsInstanceUsageSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Subscriptions + Log Get the list of active subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Get subscriptions with all_fields attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?all_fields + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get subscriptions with exclude_default attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get subscriptions with fields attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get subscriptions with exclude_fields attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET subscriptions with filter + Log Get the list of active subscriptions using a filter + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Get subscriptions - invalid filter + Log Get the list of active subscriptions using an invalid filter + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT subscriptions + Log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH subscriptions + Log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE subscriptions + Log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Individual Subscription + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual subscription + log Trying to get information about an individual subscription + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Individual Subscription + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Individual Subscription + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Individual subscription + log Trying to delete an individual subscription + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot index 09442ac4b..94f20c513 100644 --- a/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot +++ b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot @@ -1,5 +1,6 @@ *** Settings *** Resource environment/variables.txt +Resource NSInstanceUsageNotificationKeywords.robot Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary @@ -30,8 +31,8 @@ POST Create a new Subscription - DUPLICATION ... Config ID: Config_prod_NFVO ... Applicability: Duplication supported by NFVO-C ... Post-Conditions: Duplicate subscription is created in the NFVO - Check Subscription Existence POST subscriptions DUPLICATION + Check Subscription Existence Check HTTP Response Status Code Is 201 Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is subscription @@ -45,8 +46,8 @@ POST Create a new Subscription - NO-DUPLICATION ... Config ID: Config_prod_NFVO ... Applicability: Duplication NOT supported by NFVO-C ... Post-Conditions: Duplicate subscription is not created in the NFVO - Check Subscription Existence POST subscriptions NO DUPLICATION + Check Subscription Existence Check HTTP Response Status Code Is 303 Check HTTP Response Header Contains Location @@ -201,158 +202,4 @@ DELETE subscriptions - Method not implemented ... Applicability: none ... Post-Conditions: Subscription is not deleted DELETE subscriptions - Check HTTP Response Status Code Is 405 - -*** Keywords *** -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Header Contains - [Arguments] ${CONTENT_TYPE} - Should Contain ${response['headers']} ${CONTENT_TYPE} - Log Header is present - -Check Resource URI - ${uri}= Get Value From Json ${response['headers']} $..Location - Should Not Be Empty ${uri} - Log URI is present - -Check subscription existence - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} - Integer response status 200 - #more robust functionaity needed - -#Check URI is Of Existing Resource -# ${uri}= Get Value From Json ${response['headers']} $..Location -# Should Be Equal As Strings ${uri} ${} - -Check LINK in Header - ${linkURL}= Get Value From Json ${response['headers']} $..Link - Should Not Be Empty ${linkURL} - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} - -POST subscriptions - Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/NsInstanceUsageSubscriptionRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST subscriptions DUPLICATION - Log Trying to create a subscription with an already created content - Pass Execution If ${NFVO_DUPLICATION} == 1 NFVO is 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}"} - ${body}= Get File jsons/NsInstanceUsageSubscriptionRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST subscriptions NO DUPLICATION - Log Trying to create a subscription with an already created content - Pass Execution If ${NFVO_DUPLICATION} == 0 NFVO is not permitting duplication. - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/NsInstanceUsageSubscriptionRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET Subscriptions - Log Get the list of active subscriptions - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Get subscriptions with all_fields attribute selector - Log Get the list of active subscriptions, using fields - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?all_fields - ${output}= Output response - Set Suite Variable ${response} ${output} - -Get subscriptions with exclude_default attribute selector - Log Get the list of active subscriptions, using fields - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default - ${output}= Output response - Set Suite Variable ${response} ${output} - -Get subscriptions with fields attribute selector - Log Get the list of active subscriptions, using fields - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Get subscriptions with exclude_fields attribute selector - Log Get the list of active subscriptions, using fields - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_fields=${fields} - ${output}= Output response - Set Suite Variable ${response} ${output} - -GET subscriptions with filter - Log Get the list of active subscriptions using a filter - Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Get subscriptions - invalid filter - Log Get the list of active subscriptions using an invalid filter - Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT subscriptions - Log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH subscriptions - Log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE subscriptions - Log Trying to perform a DELETE. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL011/NSLifecycleOperationGranting-API/Grants.robot b/SOL011/NSLifecycleOperationGranting-API/Grants.robot index 4ef0f91eb..3c6d92ec8 100644 --- a/SOL011/NSLifecycleOperationGranting-API/Grants.robot +++ b/SOL011/NSLifecycleOperationGranting-API/Grants.robot @@ -1,5 +1,6 @@ *** Settings *** Resource environment/variables.txt +Resource NSLCOperationGrantingKeywords.robot Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary @@ -81,86 +82,4 @@ DELETE Grants - Method not implemented ... Post-Conditions: resources are not deleted Delete Grants Check HTTP Response Status Code Is 405 - Get an individual grant - Successful - -*** Keywords *** -Send Post Request for Grant - Log Request a new Grant for an NS LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants - Set Headers {"Accept": "${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/grantNSLifecycleOperationRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Send Request for a new Grant Forbiden Operation - Log Request a new Grant for a NS LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants - Log The grant request should be rejected - Set Headers {"Accept": "${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/grantRejected.json - Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Header Contains - [Arguments] ${CONTENT_TYPE} - Should Contain ${response['headers']} ${CONTENT_TYPE} - Log Header is present - -Check Resource URI existence - ${uri}= Get Value From Json ${response['headers']} $..Location - Should Not Be Empty ${uri} - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} - -Get Grants - Log Trying to perform a GET. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/grants - ${body}= Output response - Set Suite Variable ${response} ${body} - -Put Grants - Log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/grants - ${body}= Output response - Set Suite Variable ${response} ${body} - -Patch Grants - Log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/grants - ${body}= Output response - Set Suite Variable ${response} ${body} - - -Delete Grants - Log Trying to perform a DELETE. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/grants - ${body}= Output response - Set Suite Variable ${response} ${body} - -Get an individual grant - Successful - log Trying to read an individual grant - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${response['headers']['Location']} - Log Validate Status code - Integer response status 200 \ No newline at end of file + Get an individual grant - Successful \ No newline at end of file diff --git a/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot index af8da8128..56c233e18 100644 --- a/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot @@ -1,5 +1,6 @@ *** Settings *** Resource environment/variables.txt +Resource NSLCOperationGrantingKeywords.robot Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ @@ -68,55 +69,4 @@ DELETE an individual grant - Method not implemented ... Applicability: none ... Post-Conditions: none Delete individual Grant - Check HTTP Response Status Code Is 405 - -*** Keywords *** -Get individual grant - log Trying to read an individual grant - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Post individual Grant - log Trying to create an individual grant - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Put individual Grant - Log Trying to update an individual grant. This method should not be implemented. - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Patch individual Grant - Log Trying to update an individual grant. This method should not be implemented. - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Delete individual Grant - Log Trying to delete an individual grant. This method should not be implemented. - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL011/NSLifecycleOperationGranting-API/NSLCOperationGrantingKeywords.robot b/SOL011/NSLifecycleOperationGranting-API/NSLCOperationGrantingKeywords.robot new file mode 100644 index 000000000..e3b363042 --- /dev/null +++ b/SOL011/NSLifecycleOperationGranting-API/NSLCOperationGrantingKeywords.robot @@ -0,0 +1,128 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Keywords *** +Send Post Request for Grant + Log Request a new Grant for an NS LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body}= Get File jsons/grantNSLifecycleOperationRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Send Request for a new Grant Forbiden Operation + Log Request a new Grant for a NS LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants + Log The grant request should be rejected + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body}= Get File jsons/grantRejected.json + Post ${apiRoot}/${apiName}/${apiVersion}/grants ${body} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +Check Resource URI existence + ${uri}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${uri} + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + +Get Grants + Log Trying to perform a GET. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/grants + ${body}= Output response + Set Suite Variable ${response} ${body} + +Put Grants + Log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/grants + ${body}= Output response + Set Suite Variable ${response} ${body} + +Patch Grants + Log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/grants + ${body}= Output response + Set Suite Variable ${response} ${body} + + +Delete Grants + Log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/grants + ${body}= Output response + Set Suite Variable ${response} ${body} + +Get an individual grant - Successful + log Trying to read an individual grant + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${response['headers']['Location']} + Log Validate Status code + Integer response status 200 + +Get individual grant + log Trying to read an individual grant + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Post individual Grant + log Trying to create an individual grant + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Put individual Grant + Log Trying to update an individual grant. This method should not be implemented. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Patch individual Grant + Log Trying to update an individual grant. This method should not be implemented. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Delete individual Grant + Log Trying to delete an individual grant. This method should not be implemented. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} \ No newline at end of file -- GitLab From 77e0ea048ac7f86bec2cd59ecca18427be22bbf5 Mon Sep 17 00:00:00 2001 From: zafar Date: Wed, 9 Dec 2020 11:58:13 +0500 Subject: [PATCH 379/580] NotificationEndpoint and NotificationConsumer resources added in NSIUN-API --- .../NSInstanceUsageNotificationKeywords.robot | 25 +++- .../NotificationConsumer.robot | 21 ++++ .../NotificationEndpoint.robot | 112 ++++++++++++++++++ .../environment/variables.txt | 22 +++- .../jsons/NsInstanceUsageNotification.json | 9 ++ .../NsInstanceUsageNotification.schema.json | 43 +++++++ 6 files changed, 228 insertions(+), 4 deletions(-) create mode 100644 SOL011/NSInstanceUsageNotification-API/NotificationConsumer.robot create mode 100644 SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot create mode 100644 SOL011/NSInstanceUsageNotification-API/jsons/NsInstanceUsageNotification.json create mode 100644 SOL011/NSInstanceUsageNotification-API/schemas/NsInstanceUsageNotification.schema.json diff --git a/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot b/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot index 96aa0ed49..199ad8c4b 100644 --- a/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot +++ b/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot @@ -4,6 +4,7 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=fals Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Library String *** Keywords *** Check HTTP Response Status Code Is @@ -195,4 +196,26 @@ DELETE Individual subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Set Global Variable ${response} ${outputResponse} + +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body subscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +POST NS Instance Usage Notification + log Trying to perform a POST to deliver notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/NSInstanceUsageNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + \ No newline at end of file diff --git a/SOL011/NSInstanceUsageNotification-API/NotificationConsumer.robot b/SOL011/NSInstanceUsageNotification-API/NotificationConsumer.robot new file mode 100644 index 000000000..00985877f --- /dev/null +++ b/SOL011/NSInstanceUsageNotification-API/NotificationConsumer.robot @@ -0,0 +1,21 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource NSInstanceUsageNotificationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +NS Instance Usage Notification + [Documentation] Test ID: 9.3.4.4.1 + ... Test title: NS Instance Usage Notification + ... Test objective: The objective is to test that NS Instance Usage Notification is delivered with success to the notification consumer + ... Pre-conditions: A subscription for instance usage notification is available in the NFVO. + ... Reference: Clause 8.5.5.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + POST NS Instance Usage Notification + Check HTTP Response Status Code Is 204 \ No newline at end of file diff --git a/SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot b/SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot new file mode 100644 index 000000000..311997a7d --- /dev/null +++ b/SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot @@ -0,0 +1,112 @@ +*** Settings *** +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true +Resource environment/variables.txt +Library MockServerLibrary +Library Process +Library OperatingSystem +Library Collections + +*** Test Cases *** +NS Instance Usage START Notification + [Documentation] Test ID: 9.3.4.3.1 + ... Test title: NS Instance Usage START Notification + ... Test objective: The objective is to test the dispatch of NS Instance Usage Start Notification when the usage of an NS instance is started, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A subscription for NS instance usage notification is available in the NFVO. + ... Reference: Clause 8.5.5.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Trigger a change in NS instance usage START (external action) + Check NS Instance Usage Start Notification Http POST Request Body Json Schema Is NsInstanceUsageNotification + Check NS Instance Usage Start Notification Http POST Request Body notificationType attribute Is NsInstanceUsageNotification + Check NS Instance Usage Start Notification Http POST Request Body notificationStatus attribute Is START + +NS Instance Usage END Notification + [Documentation] Test ID: 9.3.4.3.2 + ... Test title: NS Instance Usage END Notification + ... Test objective: The objective is to test the dispatch of NS Instance Usage End Notification when the usage of an NS instance is ended, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A subscription for NS instance usage notification is available in the NFVO. + ... Reference: Clause 8.5.5.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Trigger a change in NS instance usage END (external action) + Check NS Instance Usage End Notification Http POST Request Body Json Schema Is NsInstanceUsageNotification + Check NS Instance Usage End Notification Http POST Request Body notificationType attribute Is NsInstanceUsageNotification + Check NS Instance Usage End Notification Http POST Request Body notificationStatus attribute Is END + +*** Keywords *** +Create Sessions + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} + +Trigger a change in NS instance usage START (external action) + #do nothing + Log do nothing + +Trigger a change in NS instance usage END (external action) + #do nothing + Log do nothing + +Configure Notification Forward + [Arguments] ${schema} ${endpoint} ${endpoint_fwd} + Log Creating mock Http POST forward to handle ${schema} + &{notification_tmp}= Create Mock Request Matcher POST ${endpoint} body_type="JSON_SCHEMA" body=${schema} + &{notification_fwd}= Create Mock Http Forward ${endpoint_fwd} + Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} + +Configure Notification NS Instance Usage Start Handler + [Arguments] ${endpoint} ${type} ${status} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} changeType ${status} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Configure Notification NS Instance Usage End Handler + [Arguments] ${endpoint} ${type} ${status} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} changeType ${status} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Check NS Instance Usage Start Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + +Check NS Instance Usage Start Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification NS Instance Usage Start Handler ${callback_endpoint_fwd} ${type} START + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + +Check NS Instance Usage Start Notification Http POST Request Body notificationStatus attribute Is + [Arguments] ${type} + #do nothing + Log do nothing + +Check NS Instance Usage End Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + +Check NS Instance Usage End Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification NS Instance Usage End Handler ${callback_endpoint_fwd} ${type} START + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + +Check NS Instance Usage End Notification Http POST Request Body notificationStatus attribute Is + [Arguments] ${type} + #do nothing + Log do nothing \ No newline at end of file diff --git a/SOL011/NSInstanceUsageNotification-API/environment/variables.txt b/SOL011/NSInstanceUsageNotification-API/environment/variables.txt index fc5a4bc11..b9ab0f0f1 100644 --- a/SOL011/NSInstanceUsageNotification-API/environment/variables.txt +++ b/SOL011/NSInstanceUsageNotification-API/environment/variables.txt @@ -4,6 +4,7 @@ ${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https ${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== ${CONTENT_TYPE} application/json +${CONTENT_TYPE_JSON} application/json ${ACCEPT} application/json ${AUTH_USAGE} 1 ${ACCEPT_JSON} application/json @@ -13,10 +14,9 @@ ${apiVersion} v1 ${SYNC_MODE} 1 +${response} {} -${response} - -${NFVO_DUPLICATION} +${NFVO_DUPLICATION} 1 ${VNFM_HOST} localhost # Hostname of the VNFM ${VNFM_PORT} 8080 # Listening port of the VNFM @@ -40,3 +40,19 @@ ${fields} criteria,objectInstanceIds ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${notification_ep} notification ${VrQuotaAvailNotification} {} + +${callback_uri} http://localhost +${callback_port} 9091 +${callback_endpoint} /endpoint +${callback_endpoint_fwd} /endpoint/check +${callback_endpoint_error} /endpoint_404 +${sleep_interval} 20s +${total_polling_time} 2 min +${polling_interval} 10 sec + +${notification_request} [] +${notification_response} [] + +${callbackResp} 127.0.0.1 + +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar diff --git a/SOL011/NSInstanceUsageNotification-API/jsons/NsInstanceUsageNotification.json b/SOL011/NSInstanceUsageNotification-API/jsons/NsInstanceUsageNotification.json new file mode 100644 index 000000000..984f3ddd9 --- /dev/null +++ b/SOL011/NSInstanceUsageNotification-API/jsons/NsInstanceUsageNotification.json @@ -0,0 +1,9 @@ +{{ + "id": "", + "notificationType": "NSInstanceUsageNotification", + "subscriptionId": "{subscriptionId}", + "timeStamp": "", + "nsInstanceId": "", + "status": "START", + "_links": "" +}} \ No newline at end of file diff --git a/SOL011/NSInstanceUsageNotification-API/schemas/NsInstanceUsageNotification.schema.json b/SOL011/NSInstanceUsageNotification-API/schemas/NsInstanceUsageNotification.schema.json new file mode 100644 index 000000000..4e4df8609 --- /dev/null +++ b/SOL011/NSInstanceUsageNotification-API/schemas/NsInstanceUsageNotification.schema.json @@ -0,0 +1,43 @@ +{ + "description": "This type represents an NS instance usage notification, which indicates the start or end of usage of an NS instance as a part of a composite NS managed by the NFVO-C. It shall comply with the provisions defined in table 8.6.2.4-1.", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "nsInstanceId", + "status", + "_links" + ], + "properties": { + "id": { + "description": "Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"id\" attribute of all these notifications shall have the same value.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"NsInstanceUsageNotification\" for this notification type.", + "type": "string" + }, + "subscriptionId": { + "description": "Identifier of the subscription that this notification relates to.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" + }, + "timeStamp": { + "description": "Date and time of the generation of the notification.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/DateTime" + }, + "nsInstanceId": { + "description": "Identifier of the NS instance affected.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/Identifier" + }, + "status": { + "description": "Indicates whether this notification reports about the start of the usage of an NS instance or about the end of the usage of an NS instance.", + "$ref": "#/components/schemas/NsInstanceUsageStatusType" + }, + "_links": { + "description": "Links to resources related to this notification.", + "$ref": "../components/SOL011_schemas.yaml#/components/schemas/NotificationLink" + } + } +} \ No newline at end of file -- GitLab From e490aec370c253e5c1ee3b2b8a7b9464c867fef9 Mon Sep 17 00:00:00 2001 From: zafar Date: Fri, 11 Dec 2020 18:22:02 +0500 Subject: [PATCH 380/580] New test cases added --- .../IndividualSubscription.robot | 29 ++++++++---- .../NSInstanceUsageNotificationKeywords.robot | 12 +++-- .../Subscriptions.robot | 45 ++++++++++++------- .../Grants.robot | 2 +- .../IndividualGrant.robot | 17 ++++++- 5 files changed, 75 insertions(+), 30 deletions(-) diff --git a/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot b/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot index 255800825..c742db50a 100644 --- a/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot +++ b/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot @@ -15,15 +15,15 @@ POST Individual Subscription - Method not implemented ... Reference: Clause 8.5.4.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance usage notification subscription is not created on the NFVO + ... Post-Conditions: none POST Individual Subscription Check HTTP Response Status Code Is 405 -GET Information about an individual subscription +GET Information about an individual subscription - Successful [Documentation] Test ID: 9.3.4.2.2 - ... Test title: GET Information about an individual subscription + ... Test title: GET Information about an individual subscription - Successful ... Test objective: The objective is to test the retrieval of NS instance usage notification subscription and perform a JSON schema validation of the returned subscription data structure - ... Pre-conditions: none + ... Pre-conditions: An NS instance is instantiated. At least one NS instance usage notification subscription is available in the NFVO. ... Reference: Clause 8.5.4.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none @@ -35,12 +35,12 @@ GET Information about an individual subscription PUT an individual subscription - Method not implemented [Documentation] Test ID: 9.3.4.2.3 ... Test title: PUT an individual subscription - Method not implemented - ... Test objective: TThe objective is to test that PUT method is not implemented + ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none ... Reference: Clause 8.5.4.3.3 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance usage notification subscription is not modified by the operation + ... Post-Conditions: none PUT Individual Subscription Check HTTP Response Status Code Is 405 @@ -52,7 +52,7 @@ PATCH an individual subscription - Method not implemented ... Reference: Clause 8.5.4.3.4 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS instance usage notification subscription is not modified by the operation + ... Post-Conditions: none PATCH Individual Subscription Check HTTP Response Status Code Is 405 @@ -66,4 +66,17 @@ DELETE an individual subscription ... Applicability: none ... Post-Conditions: The NS instance usage notification subscription is not available anymore on NFVO DELETE Individual Subscription - Check HTTP Response Status Code Is 204 \ No newline at end of file + Check HTTP Response Status Code Is 204 + +GET Information about an individual subscription - NOT FOUND + [Documentation] Test ID: 9.3.4.2.6 + ... Test title: GET Information about an individual subscription - NOT FOUND + ... Test objective: The objective is to test that the retrieval of individual NS instance usage notification subscription fails when using an invalid resource identifier. + ... Pre-conditions: An NS instance is instantiated. At least one NS instance usage notification subscription is available in the NFVO. + ... Reference: Clause 8.5.4.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual subscription + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot b/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot index 199ad8c4b..0a71abbbc 100644 --- a/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot +++ b/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot @@ -17,7 +17,7 @@ Check HTTP Response Header Contains Should Contain ${response['headers']} ${CONTENT_TYPE} Log Header is present -Check Resource URI +Check HTTP Response Header Contains Resource URI ${uri}= Get Value From Json ${response['headers']} $..Location Should Not Be Empty ${uri} Log URI is present @@ -29,7 +29,7 @@ Check subscription existence Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} Integer response status 200 -Check LINK in Header +Check HTTP Response Header Contains Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} @@ -218,4 +218,10 @@ POST NS Instance Usage Notification ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - \ No newline at end of file +Get subscriptions with exclude_default and fields attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} diff --git a/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot index 94f20c513..dd9d259e1 100644 --- a/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot +++ b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot @@ -20,7 +20,7 @@ POST Create a new subscription Check HTTP Response Status Code Is 201 Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is subscription - Check Resource URI + Check HTTP Response Header Contains Resource URI POST Create a new Subscription - DUPLICATION [Documentation] Test ID: 9.3.4.1.2 @@ -107,11 +107,11 @@ GET subscriptions with "all_fields" attribute selector [Documentation] Test ID: 9.3.4.1.8 ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "all_fields" attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is subscriptions @@ -120,11 +120,11 @@ GET subscriptions with "exclude_default" attribute selector [Documentation] Test ID: 9.3.4.1.9 ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_default"s attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with exclude_default attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is subscriptions @@ -133,11 +133,11 @@ GET subscriptions with "fields" attribute selector [Documentation] Test ID: 9.3.4.1.10 ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "fields" attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is subscriptions @@ -146,11 +146,11 @@ GET subscriptions with "exclude_fields" attribute selector [Documentation] Test ID: 9.3.4.1.11 ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_fields" attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with exclude_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is subscriptions @@ -166,7 +166,7 @@ GET Subscriptions as Paged Response ... Post-Conditions: none GET Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Link PUT subscriptions - Method not implemented [Documentation] Test ID: 9.3.4.1.13 @@ -200,6 +200,19 @@ DELETE subscriptions - Method not implemented ... Reference: Clause 8.5.3.3.5 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: Subscription is not deleted + ... Post-Conditions: Subscriptions are not deleted DELETE subscriptions - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +GET subscriptions with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 9.3.4.1.16 + ... Test title: GET subscriptions with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_default" and "fields" attribute selector + ... Pre-conditions: + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: + ... Post-Conditions: + Get subscriptions with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions \ No newline at end of file diff --git a/SOL011/NSLifecycleOperationGranting-API/Grants.robot b/SOL011/NSLifecycleOperationGranting-API/Grants.robot index 3c6d92ec8..8b5cd238c 100644 --- a/SOL011/NSLifecycleOperationGranting-API/Grants.robot +++ b/SOL011/NSLifecycleOperationGranting-API/Grants.robot @@ -79,7 +79,7 @@ DELETE Grants - Method not implemented ... Reference: Clause 7.5.3.3.5 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: resources are not deleted + ... Post-Conditions: Resources are not deleted Delete Grants Check HTTP Response Status Code Is 405 Get an individual grant - Successful \ No newline at end of file diff --git a/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot index 56c233e18..e85fd0dff 100644 --- a/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot @@ -67,6 +67,19 @@ DELETE an individual grant - Method not implemented ... Reference: Clause 7.5.4.3.5 - ETSI GS NFV-SOL 011 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: none + ... Post-Conditions: Grant is not deleted Delete individual Grant - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +GET an individual grant - NOT FOUND + [Documentation] Test ID: 9.3.3.2.6 + ... Test title: GET an individual grant - NOT FOUND + ... Test objective: The objective is to test that the retrieval of individual grant for a particular Lifecycle operation fails when using an invalid resource identifier + ... Pre-conditions: The grant information is available to the NFVO + ... Reference: Clause 7.5.4.3.2 - ETSI GS NFV-SOL 011 [1] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: Invalid resource identifier is used + ... Post-Conditions: none + Get individual grant + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file -- GitLab From 6c270925e3d1ab640cdf0fddda86bee9e3ca498f Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 13 Jan 2021 12:01:19 +0100 Subject: [PATCH 381/580] added API Version tests --- .../ApiVersion.robot | 213 ++++++++++++++++++ .../ApiVersion.robot | 213 ++++++++++++++++++ 2 files changed, 426 insertions(+) create mode 100644 SOL011/NSInstanceUsageNotification-API/ApiVersion.robot create mode 100644 SOL011/NSLifecycleOperationGranting-API/ApiVersion.robot diff --git a/SOL011/NSInstanceUsageNotification-API/ApiVersion.robot b/SOL011/NSInstanceUsageNotification-API/ApiVersion.robot new file mode 100644 index 000000000..35b99e089 --- /dev/null +++ b/SOL011/NSInstanceUsageNotification-API/ApiVersion.robot @@ -0,0 +1,213 @@ +*** Settings *** + +Resource environment/variables.txt + +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 9.3.4.5.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 9.3.4.5.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 9.3.4.5.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 9.3.4.5.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 9.3.4.5.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 9.3.4.5.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 9.3.4.5.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 9.3.4.5.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 9.3.4.5.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 9.3.4.5.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/v1/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/v1/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/v1/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/v1/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/v1/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL011/NSLifecycleOperationGranting-API/ApiVersion.robot b/SOL011/NSLifecycleOperationGranting-API/ApiVersion.robot new file mode 100644 index 000000000..6bfc8a1a9 --- /dev/null +++ b/SOL011/NSLifecycleOperationGranting-API/ApiVersion.robot @@ -0,0 +1,213 @@ +*** Settings *** + +Resource environment/variables.txt + +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 9.3.3.2.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 9.3.3.2.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 9.3.3.2.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 9.3.3.2.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 9.3.3.2.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 9.3.3.2.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 9.3.3.2.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 9.3.3.2.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 9.3.3.2.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 9.3.3.2.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/v1/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/v1/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/v1/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/v1/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/v1/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK \ No newline at end of file -- GitLab From 40eb3a885893603374d73f664fc1c142aa0473b8 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 13 Jan 2021 12:01:45 +0100 Subject: [PATCH 382/580] fixes to NSInstanceUsageNotification-API --- .../IndividualSubscription.robot | 1 + .../NSInstanceUsageNotificationKeywords.robot | 35 +++++++++++++++++++ .../Subscriptions.robot | 8 +++-- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot b/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot index c742db50a..5f8fa000b 100644 --- a/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot +++ b/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot @@ -67,6 +67,7 @@ DELETE an individual subscription ... Post-Conditions: The NS instance usage notification subscription is not available anymore on NFVO DELETE Individual Subscription Check HTTP Response Status Code Is 204 + Check Postcondition Individual Subscription is Deleted GET Information about an individual subscription - NOT FOUND [Documentation] Test ID: 9.3.4.2.6 diff --git a/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot b/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot index 0a71abbbc..dd6194450 100644 --- a/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot +++ b/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot @@ -225,3 +225,38 @@ Get subscriptions with exclude_default and fields attribute selector GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} + +Check Postcondition Individual Subscription is Deleted + Log Check Postcondition Subscription is deleted + GET individual Subscription + Check HTTP Response Status Code Is 404 + +Check Postcondition Subscription Is Set + Log Check Postcondition subscription exist + Log Trying to get the subscription + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 200 + +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']} + Integer response status 200 + Log Received a 200 OK as expected + ${contentType}= Output response headers Content-Type + Should Contain ${contentType} application/json + ${result}= Output response body + Validate Json NsdmSubscription.schema.json ${result} + Log Validated NsdmSubscription schema + ${body}= Get File jsons/subscriptions.json + ${subscription}= evaluate json.loads('''${body}''') json + Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} + Log Validated Issued subscription is same as original + +Check Postcondition Subscriptions Exist + Log Checking that subscriptions exists + Get Subscriptions \ No newline at end of file diff --git a/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot index dd9d259e1..efde683fa 100644 --- a/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot +++ b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot @@ -21,6 +21,7 @@ POST Create a new subscription Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is subscription Check HTTP Response Header Contains Resource URI + Check Postcondition Subscription Is Set POST Create a new Subscription - DUPLICATION [Documentation] Test ID: 9.3.4.1.2 @@ -36,6 +37,7 @@ POST Create a new Subscription - DUPLICATION Check HTTP Response Status Code Is 201 Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is subscription + Check Postcondition Subscription Resource Returned in Location Header Is Available POST Create a new Subscription - NO-DUPLICATION [Documentation] Test ID: 9.3.4.1.3 @@ -50,6 +52,7 @@ POST Create a new Subscription - NO-DUPLICATION Check Subscription Existence Check HTTP Response Status Code Is 303 Check HTTP Response Header Contains Location + Check Postcondition Subscription Is Set GET Subscriptions [Documentation] Test ID: 9.3.4.1.4 @@ -203,6 +206,7 @@ DELETE subscriptions - Method not implemented ... Post-Conditions: Subscriptions are not deleted DELETE subscriptions Check HTTP Response Status Code Is 405 + Check Postcondition Subscriptions Exist GET subscriptions with "exclude_default" and "fields" attribute selector [Documentation] Test ID: 9.3.4.1.16 @@ -211,8 +215,8 @@ GET subscriptions with "exclude_default" and "fields" attribute selector ... Pre-conditions: ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with exclude_default and fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is subscriptions \ No newline at end of file -- GitLab From c0a1eacddc89d957bfaa84daea9c0d11688e89a3 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 13 Jan 2021 12:02:00 +0100 Subject: [PATCH 383/580] fixes to NSLifecycleOperationGranting-API --- .../Grants.robot | 12 ++++++------ .../IndividualGrant.robot | 10 +++++----- .../NSLCOperationGrantingKeywords.robot | 16 +++++++++++++++- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/SOL011/NSLifecycleOperationGranting-API/Grants.robot b/SOL011/NSLifecycleOperationGranting-API/Grants.robot index 8b5cd238c..55efdec90 100644 --- a/SOL011/NSLifecycleOperationGranting-API/Grants.robot +++ b/SOL011/NSLifecycleOperationGranting-API/Grants.robot @@ -20,7 +20,7 @@ Requests a grant for a particular NS lifecycle operation Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is Grant Check HTTP Response Header Contains Location - Check Resource URI existence + Check Postcondition Grant Is Set Requests a grant for a particular NS lifecycle operation - Forbidden [Documentation] Test ID: 9.3.3.1.2 @@ -38,7 +38,7 @@ Requests a grant for a particular NS lifecycle operation - Forbidden GET Grants - Method not implemented [Documentation] Test ID: 9.3.3.1.3 ... Test title: GET Grants - Method not implemented - ... Test objective: The objective is to test that GET method is not allowed for Life cycle operation granting + ... Test objective: The objective is to test that GET method is not allowed for Lifecycle operation granting ... Pre-conditions: none ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO @@ -50,7 +50,7 @@ GET Grants - Method not implemented PUT Grants - Method not implemented [Documentation] Test ID: 9.3.3.1.4 ... Test title: PUT Grants - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed for Life cycle operation granting + ... Test objective: The objective is to test that PUT method is not allowed for Lifecycle operation granting ... Pre-conditions: none ... Reference: Clause 7.5.3.3.3 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO @@ -62,7 +62,7 @@ PUT Grants - Method not implemented PATCH Grants - Method not implemented [Documentation] Test ID: 9.3.3.1.5 ... Test title: PATCH Grants - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed for Life cycle operation granting + ... Test objective: The objective is to test that PATCH method is not allowed for Lifecycle operation granting ... Pre-conditions: none ... Reference: Clause 7.5.3.3.4 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO @@ -74,7 +74,7 @@ PATCH Grants - Method not implemented DELETE Grants - Method not implemented [Documentation] Test ID: 9.3.3.1.6 ... Test title: DELETE Grants - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed for Life cycle operation granting + ... Test objective: The objective is to test that DELETE method is not allowed for Lifecycle operation granting ... Pre-conditions: none ... Reference: Clause 7.5.3.3.5 - ETSI GS NFV-SOL 011 [6] v3.3.1 ... Config ID: Config_prod_NFVO @@ -82,4 +82,4 @@ DELETE Grants - Method not implemented ... Post-Conditions: Resources are not deleted Delete Grants Check HTTP Response Status Code Is 405 - Get an individual grant - Successful \ No newline at end of file + Check Postcondition Grants Exist \ No newline at end of file diff --git a/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot index e85fd0dff..3b05958c4 100644 --- a/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot @@ -13,7 +13,7 @@ Documentation This resource represents an individual grant. The client can us POST Individual Grant - Method not implemented [Documentation] Test ID: 9.3.3.2.1 ... Test title: POST Individual Grant - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed for Life cycle operation granting + ... Test objective: The objective is to test that POST method is not allowed for Lifecycle operation granting ... Pre-conditions: none ... Reference: Clause 7.5.4.3.1 - ETSI GS NFV-SOL 011 [1] v3.3.1 ... Config ID: Config_prod_NFVO @@ -38,7 +38,7 @@ GET an individual grant - Successful PUT an individual grant - Method not implemented [Documentation] Test ID: 9.3.3.2.3 ... Test title: PUT an individual grant - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to for Life cycle operation granting + ... Test objective: The objective is to test that PUT method is not allowed to for Lifecycle operation granting ... Pre-conditions: none ... Reference: Clause 7.5.4.3.3 - ETSI GS NFV-SOL 011 [1] v3.3.1 ... Config ID: Config_prod_NFVO @@ -50,7 +50,7 @@ PUT an individual grant - Method not implemented PATCH an individual grant - Method not implemented [Documentation] Test ID: 9.3.3.2.4 ... Test title: PATCH an individual grant - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to for Life cycle operation granting + ... Test objective: The objective is to test that PATCH method is not allowed to for Lifecycle operation granting ... Pre-conditions: none ... Reference: Clause 7.5.4.3.4 - ETSI GS NFV-SOL 011 [1] v3.3.1 ... Config ID: Config_prod_NFVO @@ -62,12 +62,12 @@ PATCH an individual grant - Method not implemented DELETE an individual grant - Method not implemented [Documentation] Test ID: 9.3.3.2.5 ... Test title: DELETE an individual grant - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to for Life cycle operation granting + ... Test objective: The objective is to test that DELETE method is not allowed to for Lifecycle operation granting ... Pre-conditions: none ... Reference: Clause 7.5.4.3.5 - ETSI GS NFV-SOL 011 [1] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: Grant is not deleted + ... Post-Conditions: none Delete individual Grant Check HTTP Response Status Code Is 405 diff --git a/SOL011/NSLifecycleOperationGranting-API/NSLCOperationGrantingKeywords.robot b/SOL011/NSLifecycleOperationGranting-API/NSLCOperationGrantingKeywords.robot index e3b363042..9d29ab9d9 100644 --- a/SOL011/NSLifecycleOperationGranting-API/NSLCOperationGrantingKeywords.robot +++ b/SOL011/NSLifecycleOperationGranting-API/NSLCOperationGrantingKeywords.robot @@ -125,4 +125,18 @@ Delete individual Grant Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Delete ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} ${body}= Output response - Set Suite Variable ${response} ${body} \ No newline at end of file + Set Suite Variable ${response} ${body} + +Check Postcondition Grants Exist + Log Checking that grants exists + Get Grants + +Check Postcondition Grant Is Set + Log Check Postcondition subscription exist + Log Trying to get the subscription + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/grants/${response['body']['id']} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 200 \ No newline at end of file -- GitLab From 14606a75868b868857f52b6cda06f3fbd2b72e2d Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 13 Jan 2021 12:44:49 +0100 Subject: [PATCH 384/580] fixed test ids --- .../ApiVersion.robot | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/SOL011/NSLifecycleOperationGranting-API/ApiVersion.robot b/SOL011/NSLifecycleOperationGranting-API/ApiVersion.robot index 6bfc8a1a9..501c850e3 100644 --- a/SOL011/NSLifecycleOperationGranting-API/ApiVersion.robot +++ b/SOL011/NSLifecycleOperationGranting-API/ApiVersion.robot @@ -9,7 +9,7 @@ Library JSONSchemaLibrary schemas/ *** Test Cases *** POST API Version - Method not implemented - [Documentation] Test ID: 9.3.3.2.1 + [Documentation] Test ID: 9.3.3.3.1 ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -21,7 +21,7 @@ POST API Version - Method not implemented Check HTTP Response Status Code Is 405 GET API Version - [Documentation] Test ID: 9.3.3.2.2 + [Documentation] Test ID: 9.3.3.3.2 ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none @@ -34,7 +34,7 @@ GET API Version Check HTTP Response Body Json Schema Is ApiVersionInformation PUT API Version - Method not implemented - [Documentation] Test ID: 9.3.3.2.3 + [Documentation] Test ID: 9.3.3.3.3 ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -46,7 +46,7 @@ PUT API Version - Method not implemented Check HTTP Response Status Code Is 405 PATCH API Version - Method not implemented - [Documentation] Test ID: 9.3.3.2.4 + [Documentation] Test ID: 9.3.3.3.4 ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -58,7 +58,7 @@ PATCH API Version - Method not implemented Check HTTP Response Status Code Is 405 DELETE API Version - Method not implemented - [Documentation] Test ID: 9.3.3.2.5 + [Documentation] Test ID: 9.3.3.3.5 ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none @@ -70,7 +70,7 @@ DELETE API Version - Method not implemented Check HTTP Response Status Code Is 405 POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 9.3.3.2.6 + [Documentation] Test ID: 9.3.3.3.6 ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -82,7 +82,7 @@ POST API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 GET API Version with apiMajorVerion - [Documentation] Test ID: 9.3.3.2.7 + [Documentation] Test ID: 9.3.3.3.7 ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none @@ -95,7 +95,7 @@ GET API Version with apiMajorVerion Check HTTP Response Body Json Schema Is ApiVersionInformation PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 9.3.3.2.8 + [Documentation] Test ID: 9.3.3.3.8 ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -107,7 +107,7 @@ PUT API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 9.3.3.2.9 + [Documentation] Test ID: 9.3.3.3.9 ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -119,7 +119,7 @@ PATCH API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 9.3.3.2.10 + [Documentation] Test ID: 9.3.3.3.10 ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none -- GitLab From 2cea6039b6abd3bc0ba3ea3e01973ae42962f97f Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 13 Jan 2021 12:45:03 +0100 Subject: [PATCH 385/580] added SOL011 index file --- indexes/sol_011_index.csv | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 indexes/sol_011_index.csv diff --git a/indexes/sol_011_index.csv b/indexes/sol_011_index.csv new file mode 100644 index 000000000..c9cc67aea --- /dev/null +++ b/indexes/sol_011_index.csv @@ -0,0 +1,11 @@ +9, Or-Or Reference Point, SOL011 +9.3.3,NS Lifecycle Operation Granting interface +9.3.3.1,Grants Endpoint, Grants.robot +9.3.3.2,Individual Grant Endpoint, IndividualGrant.robot +9.3.3.3,API Version Endpoint, ApiVersion.robot +9.3.4,NS Instance Usage Notification interface +9.3.4.1,Subscriptions Endpoint, Subscriptions.robot +9.3.4.2,Individual Subscription Endpoint, IndividualSubscription.robot +9.3.4.3,Notifications Endpoint, NotificationEndpoint.robot +9.3.4.4,Notification Consumer Endpoint, NotificationConsumer.robot +9.3.4.5,API Version Endpoint, ApiVersion.robot -- GitLab From a146161bd2484576cebe3e628baf435e3aeaeac3 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 14 Jan 2021 15:49:22 +0100 Subject: [PATCH 386/580] updated readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9c14d262b..0bd6f6097 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ More information and download is available at [DGS/NFV-TST010ed331](https://port **{- Disclaimer: The content of this repository is related to a DRAFT, i.e. a working document, of ETSI ISG NFV.-}** -{-It is provided for information only and is still under development. The content may be updated, replaced, or removed at any time. Do not use as reference material.-} +**{-It is provided for information only and is still under development. The content may be updated, replaced, or removed at any time. Do not use as reference material.-} The latest draft may be downloaded at the [ISG NFV open area](https://docbox.etsi.org/isg/nfv/open/Drafts/). -- GitLab From 0e9aa55fa7ba0317900711ce746ad96bad8affd2 Mon Sep 17 00:00:00 2001 From: zafar Date: Mon, 1 Feb 2021 16:31:05 +0500 Subject: [PATCH 387/580] APIVersion.robot resource added in SOL012 --- SOL012/PolicyManagement-API/ApiVersion.robot | 131 ++++++++++++++++++ .../PolicyManagementKeywords.robot | 89 ++++++++++++ .../environment/variables.txt | 58 ++++++++ 3 files changed, 278 insertions(+) create mode 100644 SOL012/PolicyManagement-API/ApiVersion.robot create mode 100644 SOL012/PolicyManagement-API/PolicyManagementKeywords.robot create mode 100644 SOL012/PolicyManagement-API/environment/variables.txt diff --git a/SOL012/PolicyManagement-API/ApiVersion.robot b/SOL012/PolicyManagement-API/ApiVersion.robot new file mode 100644 index 000000000..eec5ed167 --- /dev/null +++ b/SOL012/PolicyManagement-API/ApiVersion.robot @@ -0,0 +1,131 @@ +*** Settings *** + +Resource environment/variables.txt + +#Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 10.3.1.1.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 10.3.1.1.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 10.3.1.1.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 10.3.1.1.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 10.3.1.1.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 10.3.1.1.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] 10.3.1.1.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 10.3.1.1.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 10.3.1.1.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 10.3.1.1.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot new file mode 100644 index 000000000..87400be8c --- /dev/null +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -0,0 +1,89 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library String + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/environment/variables.txt b/SOL012/PolicyManagement-API/environment/variables.txt new file mode 100644 index 000000000..b9ab0f0f1 --- /dev/null +++ b/SOL012/PolicyManagement-API/environment/variables.txt @@ -0,0 +1,58 @@ +*** Variables *** +${NFVO_HOST} localhost # Hostname of the NFVO +${NFVO_PORT} 8081 # Listening port of the NFVO +${NFVO_SCHEMA} https +${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${CONTENT_TYPE} application/json +${CONTENT_TYPE_JSON} application/json +${ACCEPT} application/json +${AUTH_USAGE} 1 +${ACCEPT_JSON} application/json +${apiRoot} / +${apiName} nsiun +${apiVersion} v1 + +${SYNC_MODE} 1 + +${response} {} + +${NFVO_DUPLICATION} 1 + +${VNFM_HOST} localhost # Hostname of the VNFM +${VNFM_PORT} 8080 # Listening port of the VNFM +${VNFM_SCHEMA} https +${CONTENT_TYPE_PATCH} application/merge-patch+json +${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX + +${vnfInstanceDescription} description vnf +${vnfInstanceDescription_Update} Updated description vnf +${SINGLE_FILE_VNFD} 1 # If VNFD is PLAIN TEXT +${ACCEPT_PLAIN} text/plain +${ACCEPT_ZIP} application/zip +${vnfPkgId_processing} 007c111c-38a1-42c0-a666-7475ecb1567c +${ARTIFACT_TYPE} application/octet-stream +${ARTIFACT_ID} artifactId +${WRONG_ACCEPT} application/json + +${sub_filter} filter +${sub_filter_invalid} filter_invalid +${fields} criteria,objectInstanceIds +${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${notification_ep} notification +${VrQuotaAvailNotification} {} + +${callback_uri} http://localhost +${callback_port} 9091 +${callback_endpoint} /endpoint +${callback_endpoint_fwd} /endpoint/check +${callback_endpoint_error} /endpoint_404 +${sleep_interval} 20s +${total_polling_time} 2 min +${polling_interval} 10 sec + +${notification_request} [] +${notification_response} [] + +${callbackResp} 127.0.0.1 + +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -- GitLab From ea0d3a3b897ee13eb39d54d569e5964a8f747ffb Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Tue, 2 Feb 2021 14:47:10 +0500 Subject: [PATCH 388/580] APIVersion.robot resource added in SOL012 PM-API --- SOL012/PolicyManagement-API/ApiVersion.robot | 1 + 1 file changed, 1 insertion(+) diff --git a/SOL012/PolicyManagement-API/ApiVersion.robot b/SOL012/PolicyManagement-API/ApiVersion.robot index eec5ed167..3dbce790d 100644 --- a/SOL012/PolicyManagement-API/ApiVersion.robot +++ b/SOL012/PolicyManagement-API/ApiVersion.robot @@ -6,6 +6,7 @@ Resource environment/variables.txt Library DependencyLibrary Library JSONLibrary Library JSONSchemaLibrary schemas/ +Resource PolicyManagementKeywords.robot *** Test Cases *** POST API Version - Method not implemented -- GitLab From e95d3b85e4e4fcbceadaaad4cae929d3e1bd9d1d Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Thu, 4 Feb 2021 03:21:37 +0500 Subject: [PATCH 389/580] Subscriptions resource added in SOL012-PM-API --- SOL012/PolicyManagement-API/ApiVersion.robot | 25 +- .../PolicyManagementKeywords.robot | 167 +++++++++++++- .../PolicyManagement-API/Subscriptions.robot | 214 ++++++++++++++++++ .../environment/variables.txt | 21 +- .../jsons/PolicySubscriptionRequest.json | 9 + .../schemas/PolicySubscription.schema.json | 80 +++++++ .../PolicySubscriptionRequest.schema.json | 104 +++++++++ .../schemas/ProblemDetails.schema.json | 34 +++ .../schemas/subscriptions.schema.json | 109 +++++++++ 9 files changed, 734 insertions(+), 29 deletions(-) create mode 100644 SOL012/PolicyManagement-API/Subscriptions.robot create mode 100644 SOL012/PolicyManagement-API/jsons/PolicySubscriptionRequest.json create mode 100644 SOL012/PolicyManagement-API/schemas/PolicySubscription.schema.json create mode 100644 SOL012/PolicyManagement-API/schemas/PolicySubscriptionRequest.schema.json create mode 100644 SOL012/PolicyManagement-API/schemas/ProblemDetails.schema.json create mode 100644 SOL012/PolicyManagement-API/schemas/subscriptions.schema.json diff --git a/SOL012/PolicyManagement-API/ApiVersion.robot b/SOL012/PolicyManagement-API/ApiVersion.robot index 3dbce790d..a52617498 100644 --- a/SOL012/PolicyManagement-API/ApiVersion.robot +++ b/SOL012/PolicyManagement-API/ApiVersion.robot @@ -1,11 +1,6 @@ *** Settings *** - Resource environment/variables.txt - -#Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ +Library DependencyLibrary Resource PolicyManagementKeywords.robot *** Test Cases *** @@ -15,7 +10,7 @@ POST API Version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_NFVO + ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none POST API Version @@ -27,7 +22,7 @@ GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_NFVO + ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none GET API Version @@ -52,7 +47,7 @@ PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_NFVO + ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none PATCH API Version @@ -64,7 +59,7 @@ DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_NFVO + ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none DELETE API Version @@ -76,7 +71,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_NFVO + ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none POST API Version @@ -88,7 +83,7 @@ GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_NFVO + ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none GET API Version @@ -101,7 +96,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_NFVO + ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none PUT API Version @@ -113,7 +108,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_NFVO + ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none PATCH API Version @@ -125,7 +120,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 - ... Config ID: Config_prod_NFVO + ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none DELETE API Version diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index 87400be8c..72afd150d 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -1,6 +1,6 @@ *** Settings *** Resource environment/variables.txt -Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT}" Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ @@ -86,4 +86,167 @@ Check HTTP Response Body Json Schema Is [Arguments] ${input} ${schema} = Catenate ${input} .schema.json Validate Json ${schema} ${response['body']} - Log Json Schema Validation OK \ No newline at end of file + Log Json Schema Validation OK + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +Check subscription existence + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Integer response status 200 + +Check Postcondition Individual 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']} + Integer response status 200 + Log Received a 200 OK as expected + ${contentType}= Output response headers Content-Type + Should Contain ${contentType} application/json + ${result}= Output response body + Validate Json PolicySubscription.schema.json ${result} + Log Validated PolicySubscription schema + ${body}= Get File jsons/PolicySubscriptionRequest.json + ${subscription}= evaluate json.loads('''${body}''') json + Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} + Log Validated Issued subscription is same as original + +Check HTTP Response Header Contains Link + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + +Check Postcondition Subscriptions Exist + Log Checking that subscriptions exists + Get Subscriptions + +POST subscriptions + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/PolicySubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST subscriptions NO DUPLICATION + Log Trying to create a subscription with an already created content + #Skip this test if NFVMANO allows creation of duplicate/redundant subscriptions + Pass Execution If ${NFVMANO_DUPLICATION} == 1 NFVMANO allows creation of redundant subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/PolicySubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST subscriptions with Invalid Request + Log Trying to create a subscription with invalid request body + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/InvalidPolicySubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Subscriptions + Log Get the list of active subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Get subscriptions with all_fields attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?all_fields + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get subscriptions with exclude_default attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get subscriptions with fields attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get subscriptions with exclude_fields attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET subscriptions with filter + Log Get the list of active subscriptions using a filter + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Get subscriptions - invalid filter + Log Get the list of active subscriptions using an invalid filter + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Get subscriptions with exclude_default and fields attribute selector + Log Get the list of active subscriptions, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + + +PUT subscriptions + Log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH subscriptions + Log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE subscriptions + Log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + diff --git a/SOL012/PolicyManagement-API/Subscriptions.robot b/SOL012/PolicyManagement-API/Subscriptions.robot new file mode 100644 index 000000000..b13fff0a6 --- /dev/null +++ b/SOL012/PolicyManagement-API/Subscriptions.robot @@ -0,0 +1,214 @@ +*** Settings *** +Resource environment/variables.txt +Resource PolicyManagementKeywords.robot + +*** Test Cases *** +POST Create a new subscription + [Documentation] Test ID: 10.3.1.2.1 + ... Test title: POST Create a new subscription + ... Test objective: The objective is to test that POST method creates a subscription. + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: Policy subscription is created. + POST subscriptions + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PolicySubscription + Check HTTP Response Header Contains Location + +POST Create a new Subscription - DUPLICATION NOT ALLOWED + [Documentation] Test ID: 10.3.1.2.2 + ... Test title: POST Create a new subscription - DUPLICATION NOT ALLOWED + ... Test objective: The objective is to test that POST method cannot create a duplicate subscription. + ... Pre-conditions: A subscription shall already exist. + ... Reference: Clause 5.5.7.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: Duplication is not supported by NFVMANO. + ... Post-Conditions: Individual subscription resource returned in the location header is available. + POST subscriptions NO DUPLICATION + Check Subscription Existence + Check HTTP Response Status Code Is 303 + Check HTTP Response Header Contains Location + Check Postcondition Individual Subscription Resource Returned in Location Header Is Available + + +POST Create a new Subscription - UNPROCESSABLE ENTITY + [Documentation] Test ID: 10.3.1.2.3 + ... Test title: POST Create a new Subscription - UNPROCESSABLE ENTITY + ... Test objective: The objective is to test that correct error code is generated when data in the request body cannot be processed. + ... Pre-conditions: Request body contains invalid schema. + ... Reference: Clause 5.5.7.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST subscriptions with Invalid Request + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Subscriptions + [Documentation] Test ID: 10.3.1.2.4 + ... Test title: GET Subscriptions + ... Test objective: The objective is to test that GET method retrieves the list of existing subscriptions + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions + +GET Subscription - Filter + [Documentation] Test ID: 10.3.1.2.5 + ... Test title: GET Subscription - Filter + ... Test objective: The objective is GET the list of active subscriptions using a filter + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Subscriptions with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions + +GET subscriptions - Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 10.3.1.2.6 + ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters + ... Test objective: The objective is GET the list of active subscriptions using an invalid filter + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get subscriptions - invalid filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET subscriptions - Bad Request Response too Big + [Documentation] Test ID: 10.3.1.2.7 + ... Test title: GET subscriptions - Bad Request Response too Big + ... Test objective: The objective is test that the retrieval of active subscriptions list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Subscriptions + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET subscriptions with "all_fields" attribute selector + [Documentation] Test ID: 10.3.1.2.8 + ... Test title: GET subscriptions with "all_fields" attribute selector + ... Test objective: The objective is to retrieve the list of active subscriptions with "all_fields" attribute selector + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get subscriptions with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions + +GET subscriptions with "exclude_default" attribute selector + [Documentation] Test ID: 10.3.1.2.9 + ... Test title: GET subscriptions with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_default"s attribute selector + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get subscriptions with exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions + +GET subscriptions with "fields" attribute selector + [Documentation] Test ID: 10.3.1.2.10 + ... Test title: GET subscriptions with "fields" attribute selector + ... Test objective: The objective is to retrieve the list of active subscriptions with "fields" attribute selector + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get subscriptions with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions + +GET subscriptions with "exclude_fields" attribute selector + [Documentation] Test ID: 10.3.1.2.11 + ... Test title: GET subscriptions with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_fields" attribute selector + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get subscriptions with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions + +GET Subscriptions as Paged Response + [Documentation] Test ID: 10.3.1.2.12 + ... Test title: GET Subscriptions as Paged Response + ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions as paged response. + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: NFV-MANO supports paged response + ... Post-Conditions: none + GET Subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +PUT subscriptions - Method not implemented + [Documentation] Test ID: 10.3.1.2.13 + ... Test title: PUT subscriptions - Method not implemented + ... Test objective: The objective is to test that PUT method cannot modify a NS instance usage subscription + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.3 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT subscriptions + Check HTTP Response Status Code Is 405 + +PATCH subscriptions - Method not implemented + [Documentation] Test ID: 10.3.1.2.14 + ... Test title: PATCH subscriptions - Method not implemented + ... Test objective: The objective is to test that PUT method cannot modify a NS instance usage subscription + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH subscriptions + Check HTTP Response Status Code Is 405 + +DELETE subscriptions - Method not implemented + [Documentation] Test ID: 10.3.1.2.15 + ... Test title: DELETE subscriptions - Method not implemented + ... Test objective: The objective is to test that DELETE method cannot delete a NS instance usage subscription + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.5 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: Subscriptions are not deleted + DELETE subscriptions + Check HTTP Response Status Code Is 405 + Check Postcondition Subscriptions Exist + +GET subscriptions with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 10.3.1.2.16 + ... Test title: GET subscriptions with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_default" and "fields" attribute selector + ... Pre-conditions: + ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get subscriptions with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/environment/variables.txt b/SOL012/PolicyManagement-API/environment/variables.txt index b9ab0f0f1..bb751852f 100644 --- a/SOL012/PolicyManagement-API/environment/variables.txt +++ b/SOL012/PolicyManagement-API/environment/variables.txt @@ -1,28 +1,25 @@ *** Variables *** -${NFVO_HOST} localhost # Hostname of the NFVO -${NFVO_PORT} 8081 # Listening port of the NFVO -${NFVO_SCHEMA} https +${NFVMANO_HOST} localhost # Hostname of the NFVO +${NFVMANO_PORT} 8081 # Listening port of the NFVO +${NFVMANO_SCHEMA} https ${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX ${CONTENT_TYPE} application/json ${CONTENT_TYPE_JSON} application/json +${CONTENT_TYPE_PATCH} application/merge-patch+json ${ACCEPT} application/json -${AUTH_USAGE} 1 ${ACCEPT_JSON} application/json +${AUTH_USAGE} 1 + ${apiRoot} / -${apiName} nsiun +${apiName} nfvpolicy ${apiVersion} v1 ${SYNC_MODE} 1 ${response} {} -${NFVO_DUPLICATION} 1 - -${VNFM_HOST} localhost # Hostname of the VNFM -${VNFM_PORT} 8080 # Listening port of the VNFM -${VNFM_SCHEMA} https -${CONTENT_TYPE_PATCH} application/merge-patch+json -${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX +${NFVMANO_DUPLICATION} 1 ${vnfInstanceDescription} description vnf ${vnfInstanceDescription_Update} Updated description vnf diff --git a/SOL012/PolicyManagement-API/jsons/PolicySubscriptionRequest.json b/SOL012/PolicyManagement-API/jsons/PolicySubscriptionRequest.json new file mode 100644 index 000000000..77348deb0 --- /dev/null +++ b/SOL012/PolicyManagement-API/jsons/PolicySubscriptionRequest.json @@ -0,0 +1,9 @@ +{ + "filter": { + "notificationTypes": "PolicyChangeNotification", + "policyIds": "", + "changeTypes": "CREATE_POLICY" + }, + "callbackUri": "http://127.0.0.1/subscribe", + "authentication": "" +} \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/schemas/PolicySubscription.schema.json b/SOL012/PolicyManagement-API/schemas/PolicySubscription.schema.json new file mode 100644 index 000000000..388e5f92c --- /dev/null +++ b/SOL012/PolicyManagement-API/schemas/PolicySubscription.schema.json @@ -0,0 +1,80 @@ +{ + "description": "This type represents a subscription related to notifications about policy changes and policy conflicts. It shall comply with the provisions defined in table 5.6.2.6-1.\n", + "type": "object", + "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 policy changes and policy conflicts. It shall comply with the provisions defined in table 5.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: -\tPolicyChangeNotification -\tPolicyConflictNotification 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": [ + "PolicyChangeNotification", + "PolicyConflictNotification" + ] + } + }, + "policyIds": { + "description": "Match particular policy identifiers. For \"PolicyConflictNotification\", the notification is sent if any of the policies specified in the subscription is impacted by the conflict, as defined in clause 5.6.2.8.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "changeTypes": { + "description": "Match particular policy management operation types that cause the change of the policy.\n", + "type": "array", + "items": { + "description": "The enumeration PolicyOperationType shall comply with the provisions defined in table 5.6.4.4-1. It indicates the type of the policy change. Permitted values: * CREATE_POLICY:\tThe policy is created. * TRANSFER_POLICY:\tThe policy is transferred. * DELETE_POLICY:\tThe policy is deleted. * MODIFY_POLICY:\tThe policy is modified.\n", + "type": "string", + "enum": [ + "CREATE_POLICY", + "TRANSFER_POLICY", + "DELETE_POLICY", + "MODIFY_POLICY" + ] + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + }, + "required": [ + "self" + ] + } + }, + "required": [ + "id", + "callbackUri", + "_links" + ] +} \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/schemas/PolicySubscriptionRequest.schema.json b/SOL012/PolicyManagement-API/schemas/PolicySubscriptionRequest.schema.json new file mode 100644 index 000000000..48e0587c9 --- /dev/null +++ b/SOL012/PolicyManagement-API/schemas/PolicySubscriptionRequest.schema.json @@ -0,0 +1,104 @@ +{ + "description": "This type represents a subscription request related to notifications about policy changes and policy conflicts. It shall comply with the provisions defined in table 5.6.2.5-1.\n", + "type": "object", + "properties": { + "filter": { + "description": "This type represents a subscription filter related to notifications about policy changes and policy conflicts. It shall comply with the provisions defined in table 5.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: -\tPolicyChangeNotification -\tPolicyConflictNotification 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": [ + "PolicyChangeNotification", + "PolicyConflictNotification" + ] + } + }, + "policyIds": { + "description": "Match particular policy identifiers. For \"PolicyConflictNotification\", the notification is sent if any of the policies specified in the subscription is impacted by the conflict, as defined in clause 5.6.2.8.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "changeTypes": { + "description": "Match particular policy management operation types that cause the change of the policy.\n", + "type": "array", + "items": { + "description": "The enumeration PolicyOperationType shall comply with the provisions defined in table 5.6.4.4-1. It indicates the type of the policy change. Permitted values: * CREATE_POLICY:\tThe policy is created. * TRANSFER_POLICY:\tThe policy is transferred. * DELETE_POLICY:\tThe policy is deleted. * MODIFY_POLICY:\tThe policy is modified.\n", + "type": "string", + "enum": [ + "CREATE_POLICY", + "TRANSFER_POLICY", + "DELETE_POLICY", + "MODIFY_POLICY" + ] + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "authentication": { + "type": "object", + "required": [ + "authType" + ], + "properties": { + "authType": { + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials.\n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS", + "TLS_CERT" + ] + } + }, + "paramsBasic": { + "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "userName": { + "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + }, + "password": { + "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + } + } + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + }, + "required": [ + "callbackUri" + ] +} \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/schemas/ProblemDetails.schema.json b/SOL012/PolicyManagement-API/schemas/ProblemDetails.schema.json new file mode 100644 index 000000000..62f176127 --- /dev/null +++ b/SOL012/PolicyManagement-API/schemas/ProblemDetails.schema.json @@ -0,0 +1,34 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "properties": { + "type": { + "type": "string", + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "format": "URI" + }, + "title": { + "type": "string", + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n" + }, + "status": { + "type": "integer", + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n" + }, + "detail": { + "type": "string", + "description": "A human-readable explanation specific to this occurrence of the problem.\n" + }, + "instance": { + "type": "string", + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "format": "URI" + } + }, + "required": [ + "status", + "detail" + ] +} \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/schemas/subscriptions.schema.json b/SOL012/PolicyManagement-API/schemas/subscriptions.schema.json new file mode 100644 index 000000000..6cae848c3 --- /dev/null +++ b/SOL012/PolicyManagement-API/schemas/subscriptions.schema.json @@ -0,0 +1,109 @@ +{ + "type": "array", + "items": + { + "description": "This type represents a subscription request related to notifications about policy changes and policy conflicts. It shall comply with the provisions defined in table 5.6.2.5-1.\n", + "type": "object", + "properties": { + "filter": { + "description": "This type represents a subscription filter related to notifications about policy changes and policy conflicts. It shall comply with the provisions defined in table 5.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: -\tPolicyChangeNotification -\tPolicyConflictNotification 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": [ + "PolicyChangeNotification", + "PolicyConflictNotification" + ] + } + }, + "policyIds": { + "description": "Match particular policy identifiers. For \"PolicyConflictNotification\", the notification is sent if any of the policies specified in the subscription is impacted by the conflict, as defined in clause 5.6.2.8.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "changeTypes": { + "description": "Match particular policy management operation types that cause the change of the policy.\n", + "type": "array", + "items": { + "description": "The enumeration PolicyOperationType shall comply with the provisions defined in table 5.6.4.4-1. It indicates the type of the policy change. Permitted values: * CREATE_POLICY:\tThe policy is created. * TRANSFER_POLICY:\tThe policy is transferred. * DELETE_POLICY:\tThe policy is deleted. * MODIFY_POLICY:\tThe policy is modified.\n", + "type": "string", + "enum": [ + "CREATE_POLICY", + "TRANSFER_POLICY", + "DELETE_POLICY", + "MODIFY_POLICY" + ] + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "authentication": { + "type": "object", + "required": [ + "authType" + ], + "properties": { + "authType": { + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials.\n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS", + "TLS_CERT" + ] + } + }, + "paramsBasic": { + "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "userName": { + "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + }, + "password": { + "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + } + } + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + }, + "required": [ + "callbackUri" + ] +} + +} \ No newline at end of file -- GitLab From 25b7b4ba6956ab257c76cfbe96668725eb6d15ad Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Thu, 4 Feb 2021 19:37:21 +0500 Subject: [PATCH 390/580] Individual Subscription resource added in SOL012 PM-API --- .../IndividualSubscription.robot | 79 +++++++++++++++++++ .../PolicyManagementKeywords.robot | 49 +++++++++++- .../PolicyManagement-API/Subscriptions.robot | 32 ++++---- .../InvalidPolicySubscriptionRequest.json | 7 ++ .../jsons/PolicySubscriptionRequest.json | 3 +- 5 files changed, 151 insertions(+), 19 deletions(-) create mode 100644 SOL012/PolicyManagement-API/IndividualSubscription.robot create mode 100644 SOL012/PolicyManagement-API/jsons/InvalidPolicySubscriptionRequest.json diff --git a/SOL012/PolicyManagement-API/IndividualSubscription.robot b/SOL012/PolicyManagement-API/IndividualSubscription.robot new file mode 100644 index 000000000..a21e06d6e --- /dev/null +++ b/SOL012/PolicyManagement-API/IndividualSubscription.robot @@ -0,0 +1,79 @@ +*** Settings *** +Resource environment/variables.txt +Resource PolicyManagementKeywords.robot + +*** Test Cases *** +POST Individual Subscription - Method not implemented + [Documentation] Test ID: 10.3.1.7.1 + ... Test title: POST Individual Subscription - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.5.8.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST Individual Subscription + Check HTTP Response Status Code Is 405 + +GET Information about an individual subscription - Successful + [Documentation] Test ID: 10.3.1.7.2 + ... Test title: GET Information about an individual subscription - Successful + ... Test objective: The objective is to test the retrieval of Policy Management subscription and perform a JSON schema validation of the returned subscription data structure + ... Pre-conditions: At least one policy management subscription is available in the NFV-MANO. + ... Reference: Clause 5.5.8.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual subscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PolicySubscription + +PUT an individual subscription - Method not implemented + [Documentation] Test ID: 10.3.1.7.3 + ... Test title: PUT an individual subscription - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.5.8.3.3 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT Individual Subscription + Check HTTP Response Status Code Is 405 + +PATCH an individual subscription - Method not implemented + [Documentation] Test ID: 10.3.1.7.4 + ... Test title: PATCH an individual subscription - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.5.8.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH Individual Subscription + Check HTTP Response Status Code Is 405 + +DELETE an individual subscription + [Documentation] Test ID: 10.3.1.7.5 + ... Test title: DELETE an individual subscription + ... Test objective: The objective is to test that DELETE method deletes an individual subscription + ... Pre-conditions: At least one policy management subscription is available in the NFV-MANO. + ... Reference: Clause 5.5.8.3.5 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Policy Management subscription is not available anymore in the NFV-MANO. + DELETE Individual Subscription + Check HTTP Response Status Code Is 204 + Check Postcondition Individual Subscription is Deleted + +GET Information about an individual subscription - NOT FOUND + [Documentation] Test ID: 10.3.1.7.6 + ... Test title: GET Information about an individual subscription - NOT FOUND + ... Test objective: The objective is to test that the retrieval of individual Policy Management subscription fails when using an invalid resource identifier. + ... Pre-conditions: At least one Policy Management subscription is available in the NFV-MANO. + ... Reference: Clause 5.5.8.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual subscription + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index 72afd150d..e62111a29 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -221,7 +221,6 @@ Get subscriptions with exclude_default and fields attribute selector GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} - PUT subscriptions Log Trying to perform a PUT. This method should not be implemented @@ -250,3 +249,51 @@ DELETE subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Individual Subscription + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual subscription + log Trying to get information about an individual subscription + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Individual Subscription + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Individual Subscription + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Individual subscription + log Trying to delete an individual subscription + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check Postcondition Individual Subscription is Deleted + Log Check Postcondition Subscription is deleted + GET individual Subscription + Check HTTP Response Status Code Is 404 + diff --git a/SOL012/PolicyManagement-API/Subscriptions.robot b/SOL012/PolicyManagement-API/Subscriptions.robot index b13fff0a6..ff7583b4c 100644 --- a/SOL012/PolicyManagement-API/Subscriptions.robot +++ b/SOL012/PolicyManagement-API/Subscriptions.robot @@ -4,7 +4,7 @@ Resource PolicyManagementKeywords.robot *** Test Cases *** POST Create a new subscription - [Documentation] Test ID: 10.3.1.2.1 + [Documentation] Test ID: 10.3.1.6.1 ... Test title: POST Create a new subscription ... Test objective: The objective is to test that POST method creates a subscription. ... Pre-conditions: none @@ -18,7 +18,7 @@ POST Create a new subscription Check HTTP Response Header Contains Location POST Create a new Subscription - DUPLICATION NOT ALLOWED - [Documentation] Test ID: 10.3.1.2.2 + [Documentation] Test ID: 10.3.1.6.2 ... Test title: POST Create a new subscription - DUPLICATION NOT ALLOWED ... Test objective: The objective is to test that POST method cannot create a duplicate subscription. ... Pre-conditions: A subscription shall already exist. @@ -34,7 +34,7 @@ POST Create a new Subscription - DUPLICATION NOT ALLOWED POST Create a new Subscription - UNPROCESSABLE ENTITY - [Documentation] Test ID: 10.3.1.2.3 + [Documentation] Test ID: 10.3.1.6.3 ... Test title: POST Create a new Subscription - UNPROCESSABLE ENTITY ... Test objective: The objective is to test that correct error code is generated when data in the request body cannot be processed. ... Pre-conditions: Request body contains invalid schema. @@ -47,7 +47,7 @@ POST Create a new Subscription - UNPROCESSABLE ENTITY Check HTTP Response Body Json Schema Is ProblemDetails GET Subscriptions - [Documentation] Test ID: 10.3.1.2.4 + [Documentation] Test ID: 10.3.1.6.4 ... Test title: GET Subscriptions ... Test objective: The objective is to test that GET method retrieves the list of existing subscriptions ... Pre-conditions: none @@ -60,7 +60,7 @@ GET Subscriptions Check HTTP Response Body Json Schema Is subscriptions GET Subscription - Filter - [Documentation] Test ID: 10.3.1.2.5 + [Documentation] Test ID: 10.3.1.6.5 ... Test title: GET Subscription - Filter ... Test objective: The objective is GET the list of active subscriptions using a filter ... Pre-conditions: none @@ -73,7 +73,7 @@ GET Subscription - Filter Check HTTP Response Body Json Schema Is subscriptions GET subscriptions - Bad Request Invalid attribute-based filtering parameters - [Documentation] Test ID: 10.3.1.2.6 + [Documentation] Test ID: 10.3.1.6.6 ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is GET the list of active subscriptions using an invalid filter ... Pre-conditions: none @@ -86,7 +86,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters Check HTTP Response Body Json Schema Is ProblemDetails GET subscriptions - Bad Request Response too Big - [Documentation] Test ID: 10.3.1.2.7 + [Documentation] Test ID: 10.3.1.6.7 ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of active subscriptions list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none @@ -99,7 +99,7 @@ GET subscriptions - Bad Request Response too Big Check HTTP Response Body Json Schema Is ProblemDetails GET subscriptions with "all_fields" attribute selector - [Documentation] Test ID: 10.3.1.2.8 + [Documentation] Test ID: 10.3.1.6.8 ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "all_fields" attribute selector ... Pre-conditions: none @@ -112,7 +112,7 @@ GET subscriptions with "all_fields" attribute selector Check HTTP Response Body Json Schema Is subscriptions GET subscriptions with "exclude_default" attribute selector - [Documentation] Test ID: 10.3.1.2.9 + [Documentation] Test ID: 10.3.1.6.9 ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_default"s attribute selector ... Pre-conditions: none @@ -125,7 +125,7 @@ GET subscriptions with "exclude_default" attribute selector Check HTTP Response Body Json Schema Is subscriptions GET subscriptions with "fields" attribute selector - [Documentation] Test ID: 10.3.1.2.10 + [Documentation] Test ID: 10.3.1.6.10 ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "fields" attribute selector ... Pre-conditions: none @@ -138,7 +138,7 @@ GET subscriptions with "fields" attribute selector Check HTTP Response Body Json Schema Is subscriptions GET subscriptions with "exclude_fields" attribute selector - [Documentation] Test ID: 10.3.1.2.11 + [Documentation] Test ID: 10.3.1.6.11 ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_fields" attribute selector ... Pre-conditions: none @@ -151,7 +151,7 @@ GET subscriptions with "exclude_fields" attribute selector Check HTTP Response Body Json Schema Is subscriptions GET Subscriptions as Paged Response - [Documentation] Test ID: 10.3.1.2.12 + [Documentation] Test ID: 10.3.1.6.12 ... Test title: GET Subscriptions as Paged Response ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions as paged response. ... Pre-conditions: none @@ -164,7 +164,7 @@ GET Subscriptions as Paged Response Check HTTP Response Header Contains Link PUT subscriptions - Method not implemented - [Documentation] Test ID: 10.3.1.2.13 + [Documentation] Test ID: 10.3.1.6.13 ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a NS instance usage subscription ... Pre-conditions: none @@ -176,7 +176,7 @@ PUT subscriptions - Method not implemented Check HTTP Response Status Code Is 405 PATCH subscriptions - Method not implemented - [Documentation] Test ID: 10.3.1.2.14 + [Documentation] Test ID: 10.3.1.6.14 ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a NS instance usage subscription ... Pre-conditions: none @@ -188,7 +188,7 @@ PATCH subscriptions - Method not implemented Check HTTP Response Status Code Is 405 DELETE subscriptions - Method not implemented - [Documentation] Test ID: 10.3.1.2.15 + [Documentation] Test ID: 10.3.1.6.15 ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method cannot delete a NS instance usage subscription ... Pre-conditions: none @@ -201,7 +201,7 @@ DELETE subscriptions - Method not implemented Check Postcondition Subscriptions Exist GET subscriptions with "exclude_default" and "fields" attribute selector - [Documentation] Test ID: 10.3.1.2.16 + [Documentation] Test ID: 10.3.1.6.16 ... Test title: GET subscriptions with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_default" and "fields" attribute selector ... Pre-conditions: diff --git a/SOL012/PolicyManagement-API/jsons/InvalidPolicySubscriptionRequest.json b/SOL012/PolicyManagement-API/jsons/InvalidPolicySubscriptionRequest.json new file mode 100644 index 000000000..c4f1a5b73 --- /dev/null +++ b/SOL012/PolicyManagement-API/jsons/InvalidPolicySubscriptionRequest.json @@ -0,0 +1,7 @@ +{ + "id": "", + "timeStamp": "", + "status": "START", + "callbackUri": "http://127.0.0.1/subscribe", + "_links": "" +} \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/jsons/PolicySubscriptionRequest.json b/SOL012/PolicyManagement-API/jsons/PolicySubscriptionRequest.json index 77348deb0..c6e6b6967 100644 --- a/SOL012/PolicyManagement-API/jsons/PolicySubscriptionRequest.json +++ b/SOL012/PolicyManagement-API/jsons/PolicySubscriptionRequest.json @@ -4,6 +4,5 @@ "policyIds": "", "changeTypes": "CREATE_POLICY" }, - "callbackUri": "http://127.0.0.1/subscribe", - "authentication": "" + "callbackUri": "http://127.0.0.1/subscribe" } \ No newline at end of file -- GitLab From f72b9fa2c2a726a00da1b2da573bee246ee9c00c Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Thu, 4 Feb 2021 23:37:02 +0500 Subject: [PATCH 391/580] Notification Endpoint resource added in SOL012 PM-API --- .../NotificationEndpoint.robot | 79 +++++++++++ .../PolicyChangeNotification.schema.json | 127 ++++++++++++++++++ .../PolicyConflictNotification.schema.json | 96 +++++++++++++ 3 files changed, 302 insertions(+) create mode 100644 SOL012/PolicyManagement-API/NotificationEndpoint.robot create mode 100644 SOL012/PolicyManagement-API/schemas/PolicyChangeNotification.schema.json create mode 100644 SOL012/PolicyManagement-API/schemas/PolicyConflictNotification.schema.json diff --git a/SOL012/PolicyManagement-API/NotificationEndpoint.robot b/SOL012/PolicyManagement-API/NotificationEndpoint.robot new file mode 100644 index 000000000..faa5def16 --- /dev/null +++ b/SOL012/PolicyManagement-API/NotificationEndpoint.robot @@ -0,0 +1,79 @@ +*** Settings *** +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true +Resource environment/variables.txt +Library MockServerLibrary +Library Process +Library OperatingSystem +Library Collections + +*** Test Cases *** +Policy Change Notification + [Documentation] Test ID: 10.3.1.8.1 + ... Test title: Policy Change Notification + ... Test objective: The objective is to test the dispatch of Policy Change Notification when the policy is changed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A subscription for policy change notification is available in the NFV-MANO. + ... Reference: Clause 5.5.9.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Trigger a change in Policy (external action) + Check Policy Management Notification Http POST Request Body Json Schema Is PolicyChangeNotification + Check Policy Management Notification Http POST Request Body notificationType attribute Is PolicyChangeNotification + +Policy Conflict Notification + [Documentation] Test ID: 10.3.1.8.2 + ... Test title: Policy Conflict Notification + ... Test objective: The objective is to test the dispatch of Policy Conflict Notification when a conflict in policy is detected, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A subscription for policy conflict notification is available in the NFV-MANO. + ... Reference: Clause 5.5.9.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Trigger a conflict in Policy (external action) + Check Policy Management Notification Http POST Request Body Json Schema Is PolicyConflictNotification + Check Policy Management Notification Http POST Request Body notificationType attribute Is PolicyConflictNotification + +*** Keywords *** +Create Sessions + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} + +Trigger a change in Policy (external action) + #do nothing + Log do nothing + +Trigger a conflict in Policy (external action) + #do nothing + Log do nothing + +Configure Notification Forward + [Arguments] ${schema} ${endpoint} ${endpoint_fwd} + Log Creating mock Http POST forward to handle ${schema} + &{notification_tmp}= Create Mock Request Matcher POST ${endpoint} body_type="JSON_SCHEMA" body=${schema} + &{notification_fwd}= Create Mock Http Forward ${endpoint_fwd} + Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} + +Configure Policy Management Notification Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Check Policy Management Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + +Check Policy Management Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Policy Management Notification Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/schemas/PolicyChangeNotification.schema.json b/SOL012/PolicyManagement-API/schemas/PolicyChangeNotification.schema.json new file mode 100644 index 000000000..83c997950 --- /dev/null +++ b/SOL012/PolicyManagement-API/schemas/PolicyChangeNotification.schema.json @@ -0,0 +1,127 @@ +{ + "description": "This type represents a notification about policy change. It shall comply with the provisions defined in table 5.6.2.7-1. This notification shall be triggered by the API producer when a policy has been changed as the result of an operation of creating, transferring, deleting or modifying a policy.\n", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "policyId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "affectedVersion": { + "description": "A version.\n", + "type": "string" + }, + "previousSelectedVersion": { + "description": "A version.\n", + "type": "string" + }, + "policyModifications": { + "description": "This type represents the parameters for modifying a policy. It shall comply with the provisions defined in table 5.6.2.4-1\n", + "type": "object", + "properties": { + "activationStatus": { + "description": "The enumeration ActivationStatus shall comply with the provisions defined in table 5.6.4.3-1. It indicates the activation status of a policy.\n", + "type": "string", + "enum": [ + "ACTIVATED", + "DEACTIVATED" + ] + }, + "selectedVersion": { + "description": "A version.\n", + "type": "string" + }, + "addAssociations": { + "description": "Identifiers of entities to be added to the “associations” attribute in the “Policy” data structure which represents the policy. The API producer shall ignore the identifiers that already exist in the \"associations\" attribute in the “Policy” data structure. Shall be absent when the association feature is not applicable for the PF.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "removeAssociations": { + "description": "Identifiers of entities to be removed from the “associations” attribute in the “Policy” data structure which represents the policy. The API producer shall ignore the identifiers that do not exist in the \"associations\" attribute in the “Policy” data structure. Shall be absent when the association feature is not applicable for the PF.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "removeAllAssociations": { + "description": "Shall be set to TRUE if the policy is no longer associated to any specific entities managed by the PF. Shall be absent when the association feature is not applicable for the PF. If \"removeAllAssociations\" is set to TRUE, neither \"addAssociations\" nor “removeAssociations” attributes shall be present. Once all associations have been removed, how the PF determines the scope of applicability of the policy is outside the scope of the present document.\n", + "type": "boolean" + } + } + }, + "changeType": { + "description": "The enumeration PolicyOperationType shall comply with the provisions defined in table 5.6.4.4-1. It indicates the type of the policy change. Permitted values: * CREATE_POLICY:\tThe policy is created. * TRANSFER_POLICY:\tThe policy is transferred. * DELETE_POLICY:\tThe policy is deleted. * MODIFY_POLICY:\tThe policy is modified.\n", + "type": "string", + "enum": [ + "CREATE_POLICY", + "TRANSFER_POLICY", + "DELETE_POLICY", + "MODIFY_POLICY" + ] + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "type": "object", + "properties": { + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objectInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + }, + "required": [ + "subscription" + ] + } + }, + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "policyId", + "changeType", + "_links" + ] +} \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/schemas/PolicyConflictNotification.schema.json b/SOL012/PolicyManagement-API/schemas/PolicyConflictNotification.schema.json new file mode 100644 index 000000000..38809bf97 --- /dev/null +++ b/SOL012/PolicyManagement-API/schemas/PolicyConflictNotification.schema.json @@ -0,0 +1,96 @@ +{ + "description": "This type represents a notification about policy conflict. It shall comply with the provisions defined in table 5.6.2.8-1. This notification shall be triggered by the API producer when a policy conflict is detected, and any of the policies specified in an associated notification subscription is impacted by the conflict.\n", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "policyIds": { + "description": "Identifiers of the conflicting policies. The policy identifier and the corresponding selected version are mapped by the order in the array.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "minItems": 2 + }, + "selectedVersions": { + "description": "Selected versions of the conflicting policies. The policy identifier and the corresponding selected version are mapped by the order in the array.\n", + "type": "array", + "items": { + "description": "A version.\n", + "type": "string" + }, + "minItems": 2 + }, + "conflictDescription": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "type": "object", + "properties": { + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objectInstances": { + "description": "Link to the resources representing the policies to which the notified conflict applies.\n", + "type": "array", + "items": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "minItems": 2 + } + }, + "required": [ + "subscription", + "objectInstances" + ] + } + }, + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "policyIds", + "selectedVersions", + "conflictDescription", + "_links" + ] +} \ No newline at end of file -- GitLab From ef03dcc00815137b70a9195929e385b6215f0b35 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Fri, 5 Feb 2021 01:16:30 +0500 Subject: [PATCH 392/580] Notification Consumer resource added in PolicyManagement-API --- .../NotificationConsumer.robot | 29 ++++++++++++++++++ .../PolicyManagementKeywords.robot | 30 +++++++++++++++++++ .../environment/variables.txt | 5 ++-- .../jsons/PolicyChangeNotification.json | 10 +++++++ .../jsons/PolicyConflictNotification.json | 13 ++++++++ 5 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 SOL012/PolicyManagement-API/NotificationConsumer.robot create mode 100644 SOL012/PolicyManagement-API/jsons/PolicyChangeNotification.json create mode 100644 SOL012/PolicyManagement-API/jsons/PolicyConflictNotification.json diff --git a/SOL012/PolicyManagement-API/NotificationConsumer.robot b/SOL012/PolicyManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..77a0136ee --- /dev/null +++ b/SOL012/PolicyManagement-API/NotificationConsumer.robot @@ -0,0 +1,29 @@ +*** Settings *** +Resource environment/variables.txt +Resource PolicyManagementKeywords.robot +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +Policy Change Notification + [Documentation] Test ID: 10.3.1.9.1 + ... Test title: Policy Change Notification + ... Test objective: The objective is to test that Policy Change Notification is delivered with success to the notification consumer. + ... Pre-conditions: A subscription for policy change notification is available in the NFV-MANO. + ... Reference: Clause 5.5.9.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + POST Policy Change Notification + Check HTTP Response Status Code Is 204 + +Policy Conflict Notification + [Documentation] Test ID: 10.3.1.9.2 + ... Test title: Policy Conflict Notification + ... Test objective: The objective is to test that Policy Conflict Notification is delivered with success to the notification consumer. + ... Pre-conditions: A subscription for policy conflict notification is available in the NFV-MANO. + ... Reference: Clause 5.5.9.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + POST Policy Conflict Notification + Check HTTP Response Status Code Is 204 \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index e62111a29..7207987d6 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -297,3 +297,33 @@ Check Postcondition Individual Subscription is Deleted GET individual Subscription Check HTTP Response Status Code Is 404 +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body PolicySubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +POST Policy Change Notification + log Trying to perform a POST to deliver notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/PolicyChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Policy Conflict Notification + log Trying to perform a POST to deliver notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/PolicyConflictNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} policyId1=${policyId1} policyId2=${policyId2} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL012/PolicyManagement-API/environment/variables.txt b/SOL012/PolicyManagement-API/environment/variables.txt index bb751852f..04326e924 100644 --- a/SOL012/PolicyManagement-API/environment/variables.txt +++ b/SOL012/PolicyManagement-API/environment/variables.txt @@ -21,8 +21,6 @@ ${response} {} ${NFVMANO_DUPLICATION} 1 -${vnfInstanceDescription} description vnf -${vnfInstanceDescription_Update} Updated description vnf ${SINGLE_FILE_VNFD} 1 # If VNFD is PLAIN TEXT ${ACCEPT_PLAIN} text/plain ${ACCEPT_ZIP} application/zip @@ -50,6 +48,9 @@ ${polling_interval} 10 sec ${notification_request} [] ${notification_response} [] +${policyId1} +${policyId2} + ${callbackResp} 127.0.0.1 ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar diff --git a/SOL012/PolicyManagement-API/jsons/PolicyChangeNotification.json b/SOL012/PolicyManagement-API/jsons/PolicyChangeNotification.json new file mode 100644 index 000000000..8c1d6417e --- /dev/null +++ b/SOL012/PolicyManagement-API/jsons/PolicyChangeNotification.json @@ -0,0 +1,10 @@ +{{ + "id": "", + "notificationType": "PolicyChangeNotification", + "subscriptionId": "{subscriptionId}", + "timeStamp": "", + "changeType": "", + "_links": {{ + "subscription": "" + }} +}} \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/jsons/PolicyConflictNotification.json b/SOL012/PolicyManagement-API/jsons/PolicyConflictNotification.json new file mode 100644 index 000000000..f9ae3c61d --- /dev/null +++ b/SOL012/PolicyManagement-API/jsons/PolicyConflictNotification.json @@ -0,0 +1,13 @@ +{{ + "id": "", + "notificationType": "PolicyConflictNotification", + "subscriptionId": "{subscriptionId}", + "timeStamp": "", + "policyIds": ["{policyId1}","{policyId2}"], + "selectedVersions": ["v1","v1"], + "conflictDescription": "", + "_links": {{ + "subscription": "", + "objectInstances": [] + }} +}} \ No newline at end of file -- GitLab From 0b550e1ba3f6498136d92625c2f455753b7cc316 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Sat, 6 Feb 2021 02:59:54 +0500 Subject: [PATCH 393/580] Policies resource added in PolicyManagement-API --- SOL012/PolicyManagement-API/Policies.robot | 185 ++++++++++++++++++ .../PolicyManagementKeywords.robot | 107 ++++++++++ .../PolicyManagement-API/Subscriptions.robot | 6 +- .../jsons/CreatePolicyRequest.json | 6 + .../schemas/Policies.schema.json | 121 ++++++++++++ .../schemas/Policy.schema.json | 118 +++++++++++ 6 files changed, 540 insertions(+), 3 deletions(-) create mode 100644 SOL012/PolicyManagement-API/Policies.robot create mode 100644 SOL012/PolicyManagement-API/jsons/CreatePolicyRequest.json create mode 100644 SOL012/PolicyManagement-API/schemas/Policies.schema.json create mode 100644 SOL012/PolicyManagement-API/schemas/Policy.schema.json diff --git a/SOL012/PolicyManagement-API/Policies.robot b/SOL012/PolicyManagement-API/Policies.robot new file mode 100644 index 000000000..525036721 --- /dev/null +++ b/SOL012/PolicyManagement-API/Policies.robot @@ -0,0 +1,185 @@ +*** Settings *** +Resource environment/variables.txt +Resource PolicyManagementKeywords.robot + +*** Test Cases *** +POST Create a new Policy + [Documentation] Test ID: 10.3.1.2.1 + ... Test title: POST Create a new Policy + ... Test objective: The objective is to test that POST method creates a policy. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: Policy is created. + POST Policies + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is Policy + Check HTTP Response Header Contains Location + +GET Policies + [Documentation] Test ID: 10.3.1.2.2 + ... Test title: GET Policies + ... Test objective: The objective is to test that GET method retrieves the list of existing policies. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Policies + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Policies + +GET Policies - Filter + [Documentation] Test ID: 10.3.1.2.3 + ... Test title: GET Policies - Filter + ... Test objective: The objective is GET the list of existing policies using a filter. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Policies with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Policies + +GET Policies - Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 10.3.1.2.4 + ... Test title: GET Policies - Bad Request Invalid attribute-based filtering parameters + ... Test objective: The objective is GET the list of existing policies using an invalid filter. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Policies - invalid filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Policies - Bad Request Response too Big + [Documentation] Test ID: 10.3.1.2.5 + ... Test title: GET Policies - Bad Request Response too Big + ... Test objective: The objective is test that the retrieval of existing policies list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Policies + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Policies with "all_fields" attribute selector + [Documentation] Test ID: 10.3.1.2.6 + ... Test title: GET Policies with "all_fields" attribute selector + ... Test objective: The objective is to retrieve the list of existing policies with "all_fields" attribute selector. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Policies with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Policies + +GET Policies with "exclude_default" attribute selector + [Documentation] Test ID: 10.3.1.2.7 + ... Test title: GET policies with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve the list of existing policies with "exclude_default"s attribute selector. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Policies with exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Policies + +GET Policies with "fields" attribute selector + [Documentation] Test ID: 10.3.1.2.8 + ... Test title: GET Policies with "fields" attribute selector + ... Test objective: The objective is to retrieve the list of existing policies with "fields" attribute selector. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Policies with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Policies + +GET Policies with "exclude_fields" attribute selector + [Documentation] Test ID: 10.3.1.2.9 + ... Test title: GET Policies with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve the list of existing policies with "exclude_fields" attribute selector. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Policies with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Policies + +GET Policies with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 10.3.1.2.10 + ... Test title: GET Policies with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to retrieve the list of existing policies with "exclude_default" and "fields" attribute selector + ... Pre-conditions: + ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Policies with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Policies + +GET Policies as Paged Response + [Documentation] Test ID: 10.3.1.2.11 + ... Test title: GET Policies as Paged Response + ... Test objective: The objective is to test that GET method retrieve the list of existing policies as paged response. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: NFV-MANO supports paged response + ... Post-Conditions: none + GET Policies + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +PUT Policies - Method not implemented + [Documentation] Test ID: 10.3.1.2.12 + ... Test title: PUT Policies - Method not implemented + ... Test objective: The objective is to test that PUT method cannot modify policies. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.3 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT Policies + Check HTTP Response Status Code Is 405 + +PATCH Policies - Method not implemented + [Documentation] Test ID: 10.3.1.2.13 + ... Test title: PATCH Policies - Method not implemented + ... Test objective: The objective is to test that PATCH method cannot modify policies. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH Policies + Check HTTP Response Status Code Is 405 + +DELETE Policies - Method not implemented + [Documentation] Test ID: 10.3.1.2.14 + ... Test title: DELETE Policies - Method not implemented + ... Test objective: The objective is to test that DELETE method cannot delete policies. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.5 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: Policies are not deleted + DELETE Policies + Check HTTP Response Status Code Is 405 + Check Postcondition Policies Exist diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index 7207987d6..235d5f124 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -327,3 +327,110 @@ POST Policy Conflict Notification Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Policies + Log Create policy instance by POST to ${apiRoot}/${apiName}/${apiVersion}/policies + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/CreatePolicyRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/policies ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Policies + Log Get the list of existing policies + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiVersion}/policies + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Policies with filter + Log Get the list of existing policies using a filter + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/policies?${sub_filter} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Get Policies - invalid filter + Log Get the list of existing policies using an invalid filter + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/policies?${sub_filter_invalid} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Get Policies with all_fields attribute selector + Log Get the list of existing policies, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/policies?all_fields + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Policies with exclude_default attribute selector + Log Get the list of existing policies, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/policies?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Policies with fields attribute selector + Log Get the list of existing policies, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/policies?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Policies with exclude_fields attribute selector + Log Get the list of existing policies, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/policies?exclude_fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Policies with exclude_default and fields attribute selector + Log Get the list of existing policies, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/policies?fields=${fields}&exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +PUT Policies + Log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/policies + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Policies + Log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/policies + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Policies + Log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/policies + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check Postcondition Policies Exist + Log Checking that Policies exist + Get Policies \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/Subscriptions.robot b/SOL012/PolicyManagement-API/Subscriptions.robot index ff7583b4c..978d94b88 100644 --- a/SOL012/PolicyManagement-API/Subscriptions.robot +++ b/SOL012/PolicyManagement-API/Subscriptions.robot @@ -166,7 +166,7 @@ GET Subscriptions as Paged Response PUT subscriptions - Method not implemented [Documentation] Test ID: 10.3.1.6.13 ... Test title: PUT subscriptions - Method not implemented - ... Test objective: The objective is to test that PUT method cannot modify a NS instance usage subscription + ... Test objective: The objective is to test that PUT method cannot modify a policy management subscription. ... Pre-conditions: none ... Reference: Clause 5.5.7.3.3 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO @@ -178,7 +178,7 @@ PUT subscriptions - Method not implemented PATCH subscriptions - Method not implemented [Documentation] Test ID: 10.3.1.6.14 ... Test title: PATCH subscriptions - Method not implemented - ... Test objective: The objective is to test that PUT method cannot modify a NS instance usage subscription + ... Test objective: The objective is to test that PATCH method cannot modify a policy management subscription. ... Pre-conditions: none ... Reference: Clause 5.5.7.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO @@ -190,7 +190,7 @@ PATCH subscriptions - Method not implemented DELETE subscriptions - Method not implemented [Documentation] Test ID: 10.3.1.6.15 ... Test title: DELETE subscriptions - Method not implemented - ... Test objective: The objective is to test that DELETE method cannot delete a NS instance usage subscription + ... Test objective: The objective is to test that DELETE method cannot delete a policy management subscription. ... Pre-conditions: none ... Reference: Clause 5.5.7.3.5 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO diff --git a/SOL012/PolicyManagement-API/jsons/CreatePolicyRequest.json b/SOL012/PolicyManagement-API/jsons/CreatePolicyRequest.json new file mode 100644 index 000000000..4c0882406 --- /dev/null +++ b/SOL012/PolicyManagement-API/jsons/CreatePolicyRequest.json @@ -0,0 +1,6 @@ +{ + "designer": "", + "name": "", + "pfId": "", + "associations": [] +} \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/schemas/Policies.schema.json b/SOL012/PolicyManagement-API/schemas/Policies.schema.json new file mode 100644 index 000000000..3e095ed9b --- /dev/null +++ b/SOL012/PolicyManagement-API/schemas/Policies.schema.json @@ -0,0 +1,121 @@ +{ "type": "array", + "items": + { + "description": "This type represents an individual policy. It shall comply with the provisions defined in table 5.6.2.3-1.", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "designer": { + "description": "Human readable name of the designer of the policy.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the policy.\n", + "type": "string" + }, + "pfId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "versions": { + "description": "Versions of the policy. Shall be present if at least one version of the policy has been transferred.\n", + "type": "array", + "items": { + "description": "A version.\n", + "type": "string" + } + }, + "selectedVersion": { + "description": "A version.\n", + "type": "string" + }, + "activationStatus": { + "description": "The enumeration ActivationStatus shall comply with the provisions defined in table 5.6.4.3-1. It indicates the activation status of a policy.\n", + "type": "string", + "enum": [ + "ACTIVATED", + "DEACTIVATED" + ] + }, + "transferStatus": { + "description": "The enumeration TransferStatus shall comply with the provisions defined in table 5.6.4.4-1. It indicates the transfer status of a policy\n", + "type": "string", + "enum": [ + "CREATED", + "TRANSFERRED" + ] + }, + "associations": { + "description": "Identifiers of the entities that the PF manages and to which the policy associates to. Shall be absent when the association feature is not applicable for the PF. The associations refer to identifiers of entities that the PF manages. E.g., if the PF is a VNFM, the policy can associate to VNF instances; if the PF is NFVO, the policy can associate to an NS instances. How the PF determines the scope of applicability of the policy when this attribute is absent is outside the scope of the present document.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "_links": { + "description": "Links for this resource\n", + "type": "object", + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "selected": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "versions": { + "description": "URIs of all the transferred versions of this policy, if exists.\n", + "type": "array", + "items": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + }, + "required": [ + "self" + ] + } + }, + "required": [ + "id", + "designer", + "name", + "activationStatus", + "transferStatus", + "_links" + ] + } +} \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/schemas/Policy.schema.json b/SOL012/PolicyManagement-API/schemas/Policy.schema.json new file mode 100644 index 000000000..fdcdea95a --- /dev/null +++ b/SOL012/PolicyManagement-API/schemas/Policy.schema.json @@ -0,0 +1,118 @@ +{ + "description": "This type represents an individual policy. It shall comply with the provisions defined in table 5.6.2.3-1.", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "designer": { + "description": "Human readable name of the designer of the policy.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the policy.\n", + "type": "string" + }, + "pfId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "versions": { + "description": "Versions of the policy. Shall be present if at least one version of the policy has been transferred.\n", + "type": "array", + "items": { + "description": "A version.\n", + "type": "string" + } + }, + "selectedVersion": { + "description": "A version.\n", + "type": "string" + }, + "activationStatus": { + "description": "The enumeration ActivationStatus shall comply with the provisions defined in table 5.6.4.3-1. It indicates the activation status of a policy.\n", + "type": "string", + "enum": [ + "ACTIVATED", + "DEACTIVATED" + ] + }, + "transferStatus": { + "description": "The enumeration TransferStatus shall comply with the provisions defined in table 5.6.4.4-1. It indicates the transfer status of a policy\n", + "type": "string", + "enum": [ + "CREATED", + "TRANSFERRED" + ] + }, + "associations": { + "description": "Identifiers of the entities that the PF manages and to which the policy associates to. Shall be absent when the association feature is not applicable for the PF. The associations refer to identifiers of entities that the PF manages. E.g., if the PF is a VNFM, the policy can associate to VNF instances; if the PF is NFVO, the policy can associate to an NS instances. How the PF determines the scope of applicability of the policy when this attribute is absent is outside the scope of the present document.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "_links": { + "description": "Links for this resource\n", + "type": "object", + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "selected": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "versions": { + "description": "URIs of all the transferred versions of this policy, if exists.\n", + "type": "array", + "items": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + }, + "required": [ + "self" + ] + } + }, + "required": [ + "id", + "designer", + "name", + "activationStatus", + "transferStatus", + "_links" + ] +} \ No newline at end of file -- GitLab From 269ee11597edd03f8b082ef099ae479c156102fe Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Sun, 7 Feb 2021 03:25:43 +0500 Subject: [PATCH 394/580] IndividualPolicy resource added in PolicyManagement-API --- .../IndividualPolicy.robot | 109 ++++++++++++++++++ .../PolicyManagementKeywords.robot | 62 +++++++++- .../environment/variables.txt | 1 + 3 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 SOL012/PolicyManagement-API/IndividualPolicy.robot diff --git a/SOL012/PolicyManagement-API/IndividualPolicy.robot b/SOL012/PolicyManagement-API/IndividualPolicy.robot new file mode 100644 index 000000000..e523e8b1b --- /dev/null +++ b/SOL012/PolicyManagement-API/IndividualPolicy.robot @@ -0,0 +1,109 @@ +*** Settings *** +Resource environment/variables.txt +Resource PolicyManagementKeywords.robot + +*** Test Cases *** +POST Individual Policy - Method not implemented + [Documentation] Test ID: 10.3.1.3.1 + ... Test title: POST Individual Policy - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented. + ... Pre-conditions: none + ... Reference: Clause 5.5.4.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST Individual Policy + Check HTTP Response Status Code Is 405 + +GET Information about an individual policy - Successful + [Documentation] Test ID: 10.3.1.3.2 + ... Test title: GET Information about an individual policy - Successful + ... Test objective: The objective is to test the retrieval of Individual Policy and perform a JSON schema validation of the returned Policy data structure. + ... Pre-conditions: At least one policy is available in the NFV-MANO. + ... Reference: Clause 5.5.4.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual Policy + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Policy + +PUT an individual policy - Method not implemented + [Documentation] Test ID: 10.3.1.3.3 + ... Test title: PUT an individual policy - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented. + ... Pre-conditions: none + ... Reference: Clause 5.5.4.3.3 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT Individual Policy + Check HTTP Response Status Code Is 405 + +PATCH an individual ploicy - Successful + [Documentation] Test ID: 10.3.1.3.4 + ... Test title: PATCH an individual ploicy - Successful + ... Test objective: The objective is to test that an individual policy is modified successfully when there is no conflict using PATCH method. + ... Pre-conditions: There should not exist a conflict as described in Reference. + ... Reference: Clause 5.5.4.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH Individual Policy + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PolicyModifications + +PATCH an individual ploicy - Conflict + [Documentation] Test ID: 10.3.1.3.5 + ... Test title: PATCH an individual ploicy - Conflict + ... Test objective: The objective is to test that an individual policy is not modified when there is a conflict using PATCH method. + ... Pre-conditions: There exists a conflict as described in Reference. + ... Reference: Clause 5.5.4.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH Individual Subscription + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + + +DELETE an individual policy - Successful + [Documentation] Test ID: 10.3.1.3.6 + ... Test title: DELETE an individual policy - Successful + ... Test objective: The objective is to test that DELETE method deletes a deactivated individual policy. + ... Pre-conditions: The activation status of individual policy to be deleted is not set to ACTIVATED. + ... Reference: Clause 5.5.8.3.5 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The individual policy is not available anymore in the NFV-MANO. + DELETE Individual Policy + Check HTTP Response Status Code Is 204 + Check Postcondition Individual Policy is Deleted + +DELETE an individual policy - CONFLICT + [Documentation] Test ID: 10.3.1.3.7 + ... Test title: DELETE an individual policy - CONFLICT + ... Test objective: The objective is to test that DELETE method does not delete an activated individual policy. + ... Pre-conditions: The activation status of individual policy to be deleted is set to ACTIVATED. + ... Reference: Clause 5.5.8.3.5 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The individual policy is not deleted. + Check Activation Status of Policy Is ACTIVATED + DELETE Individual Policy + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + Check Postcondition Individual Policy is Not Deleted + +GET Information about an individual policy - NOT FOUND + [Documentation] Test ID: 10.3.1.3.8 + ... Test title: GET Information about an individual policy - NOT FOUND + ... Test objective: The objective is to test that the retrieval of individual policy fails when using an invalid resource identifier. + ... Pre-conditions: At least one individual policy is available in the NFV-MANO. + ... Reference: Clause 5.5.8.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual Policy + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index 235d5f124..6b256811b 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -433,4 +433,64 @@ DELETE Policies Check Postcondition Policies Exist Log Checking that Policies exist - Get Policies \ No newline at end of file + Get Policies + +POST Individual Policy + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual Policy + log Trying to get information about an individual policy + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Individual Policy + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Individual Policy + Log Modify individual policy instance by PATCH to ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/PolicyModifications.json + Patch ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Individual Policy + log Trying to delete an individual policy, no conflict + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check Postcondition Individual Policy is Deleted + Log Check Postcondition individual policy is deleted + GET individual Policy + Check HTTP Response Status Code Is 404 + +Check Activation Status of Policy Is + [Arguments] ${status} + Get Individual Policy + Check HTTP Response Body Json Schema Is Policy + Should be equal as strings ${response['body']['activationStatus']} ${status} + +Check Postcondition Individual Policy is Not Deleted + Log Check Postcondition individual policy is not deleted + GET individual Policy + Check HTTP Response Status Code Is 200 \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/environment/variables.txt b/SOL012/PolicyManagement-API/environment/variables.txt index 04326e924..0c972cc6f 100644 --- a/SOL012/PolicyManagement-API/environment/variables.txt +++ b/SOL012/PolicyManagement-API/environment/variables.txt @@ -48,6 +48,7 @@ ${polling_interval} 10 sec ${notification_request} [] ${notification_response} [] +${policyId} ${policyId1} ${policyId2} -- GitLab From d74570064aa79c8829c95389812046eb1b5e9b37 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Sun, 7 Feb 2021 03:36:23 +0500 Subject: [PATCH 395/580] added json body template and schema for PolicyModifications data type --- .../jsons/PolicyModifications.json | 7 +++ .../schemas/PolicyModifications.schema.json | 45 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 SOL012/PolicyManagement-API/jsons/PolicyModifications.json create mode 100644 SOL012/PolicyManagement-API/schemas/PolicyModifications.schema.json diff --git a/SOL012/PolicyManagement-API/jsons/PolicyModifications.json b/SOL012/PolicyManagement-API/jsons/PolicyModifications.json new file mode 100644 index 000000000..b04b57364 --- /dev/null +++ b/SOL012/PolicyManagement-API/jsons/PolicyModifications.json @@ -0,0 +1,7 @@ +{ + "activationStatus": "ACTIVATED", + "selectedVersion": "", + "addAssociations": [], + "removeAssociations": [], + "removeAllAssociations": "FALSE" +} \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/schemas/PolicyModifications.schema.json b/SOL012/PolicyManagement-API/schemas/PolicyModifications.schema.json new file mode 100644 index 000000000..163171af8 --- /dev/null +++ b/SOL012/PolicyManagement-API/schemas/PolicyModifications.schema.json @@ -0,0 +1,45 @@ +{ + "description": "The parameter for the policy modifications, as defined in clause 5.6.2.4.\n", + "content": { + "application/json": { + "schema": { + "description": "This type represents the parameters for modifying a policy. It shall comply with the provisions defined in table 5.6.2.4-1\n", + "type": "object", + "properties": { + "activationStatus": { + "description": "The enumeration ActivationStatus shall comply with the provisions defined in table 5.6.4.3-1. It indicates the activation status of a policy.\n", + "type": "string", + "enum": [ + "ACTIVATED", + "DEACTIVATED" + ] + }, + "selectedVersion": { + "description": "A version.\n", + "type": "string" + }, + "addAssociations": { + "description": "Identifiers of entities to be added to the “associations” attribute in the “Policy” data structure which represents the policy. The API producer shall ignore the identifiers that already exist in the \"associations\" attribute in the “Policy” data structure. Shall be absent when the association feature is not applicable for the PF.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "removeAssociations": { + "description": "Identifiers of entities to be removed from the “associations” attribute in the “Policy” data structure which represents the policy. The API producer shall ignore the identifiers that do not exist in the \"associations\" attribute in the “Policy” data structure. Shall be absent when the association feature is not applicable for the PF.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "removeAllAssociations": { + "description": "Shall be set to TRUE if the policy is no longer associated to any specific entities managed by the PF. Shall be absent when the association feature is not applicable for the PF. If \"removeAllAssociations\" is set to TRUE, neither \"addAssociations\" nor “removeAssociations” attributes shall be present. Once all associations have been removed, how the PF determines the scope of applicability of the policy is outside the scope of the present document.\n", + "type": "boolean" + } + } + } + } + } +} \ No newline at end of file -- GitLab From f769b0e930f9cae59c05550092868119e07d1abd Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Mon, 8 Feb 2021 14:56:59 +0500 Subject: [PATCH 396/580] New resource added in PolicyManagement-API --- .../PolicyManagementKeywords.robot | 54 ++++++++++- .../SelectedVersionOfAnIndividualPolicy.robot | 91 +++++++++++++++++++ 2 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index 6b256811b..f73859f76 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -493,4 +493,56 @@ Check Activation Status of Policy Is Check Postcondition Individual Policy is Not Deleted Log Check Postcondition individual policy is not deleted GET individual Policy - Check HTTP Response Status Code Is 200 \ No newline at end of file + Check HTTP Response Status Code Is 200 + +POST Selected Version of an Individual Policy + Log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/selected_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Selected Version of an Individual Policy + log Trying to get information about the selected version of an individual policy + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/selected_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Selected Version of an Individual Policy + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/selected_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Selected Version of an Individual Policy + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/selected_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Selected Version of an Individual Policy + log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/selected_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Content-Type Is Set + Log Checking that the Content-Type HTTP header is set according to the type of policy content. + GET individual Policy + ${PolicyContentType}= Get Value From Json ${response['headers']} $..Content-Type + GET Selected Version of an Individual Policy + ${HTTPContentType}= Get Value From Json ${response['headers']} $..Content-Type + Should be equal as strings ${HTTPContentType} ${PolicyContentType} \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot b/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot new file mode 100644 index 000000000..9c9ae831b --- /dev/null +++ b/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot @@ -0,0 +1,91 @@ +*** Settings *** +Resource environment/variables.txt +Resource PolicyManagementKeywords.robot + +*** Test Cases *** +POST Selected Version of an Individual Policy - Method not implemented + [Documentation] Test ID: 10.3.1.4.1 + ... Test title: POST Selected Version of an Individual Policy - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented for this resource. + ... Pre-conditions: none + ... Reference: Clause 5.5.5.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST Selected Version of an Individual Policy + Check HTTP Response Status Code Is 405 + +GET Information about the Selected Version of an Individual Policy - Successful + [Documentation] Test ID: 10.3.1.4.2 + ... Test title: GET Information about the Selected Version of an Individual Policy - Successful + ... Test objective: The objective is to test The GET method fetches the content of the selected version of an individual policy. + ... Pre-conditions: Individual policy is available in the NFV-MANO. + ... Reference: Clause 5.5.4.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Selected Version of an Individual Policy + Check HTTP Response Status Code Is 200 + Check HTTP Content-Type Is Set + +GET Information about the Selected Version of an Individual Policy - NOT FOUND + [Documentation] Test ID: 10.3.1.4.3 + ... Test title: GET Information about the Selected Version of an Individual Policy - NOT FOUND + ... Test objective: The objective is to test that the information about the selected version of an individual policy fails when using an invalid resource identifier. + ... Pre-conditions: The API producer did not find the current representation for the target resource. + ... Reference: Clause 5.5.4.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Selected Version of an Individual Policy + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Information about the Selected Version of an Individual Policy - CREATED STATE + [Documentation] Test ID: 10.3.1.4.4 + ... Test title: GET Information about the Selected Version of an Individual Policy - NOT FOUND + ... Test objective: The objective is to test that the information about the selected version of an individual policy is not retrieved when it is in CREATED state. + ... Pre-conditions: The individual policy is in CREATED state. + ... Reference: Clause 5.5.4.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Selected Version of an Individual Policy + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Selected Version of an individual policy - Method not implemented + [Documentation] Test ID: 10.3.1.4.5 + ... Test title: PUT Selected Version of an individual policy - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented for this resource. + ... Pre-conditions: none + ... Reference: Clause 5.5.4.3.3 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT Selected Version of an Individual Policy + Check HTTP Response Status Code Is 405 + +PATCH Selected Version of an individual policy - Method not implemented + [Documentation] Test ID: 10.3.1.4.6 + ... Test title: PATCH Selected Version of an individual policy - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented for this resource. + ... Pre-conditions: none + ... Reference: Clause 5.5.4.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH Selected Version of an Individual Policy + Check HTTP Response Status Code Is 405 + +DELETE Selected Version of an individual policy - Method not implemented + [Documentation] Test ID: 10.3.1.4.7 + ... Test title: DELETE Selected Version of an individual policy - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented for this resource. + ... Pre-conditions: none + ... Reference: Clause 5.5.4.3.5 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE Selected Version of an Individual Policy + Check HTTP Response Status Code Is 405 -- GitLab From a953aa7f51be376dab1477a22b4bbcf959a94306 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Mon, 8 Feb 2021 20:33:36 +0500 Subject: [PATCH 397/580] New resource added in SOL012 PolicyManagement-API --- ...articularVersionOfAnIndividualPolicy.robot | 103 ++++++++++++++++++ .../PolicyManagementKeywords.robot | 59 ++++++++-- .../SelectedVersionOfAnIndividualPolicy.robot | 13 +-- .../environment/variables.txt | 15 +-- .../jsons/PolicyContent/policyContent.json | 10 ++ .../jsons/PolicyContent/policyContent.yaml | 10 ++ 6 files changed, 185 insertions(+), 25 deletions(-) create mode 100644 SOL012/PolicyManagement-API/ParticularVersionOfAnIndividualPolicy.robot create mode 100644 SOL012/PolicyManagement-API/jsons/PolicyContent/policyContent.json create mode 100644 SOL012/PolicyManagement-API/jsons/PolicyContent/policyContent.yaml diff --git a/SOL012/PolicyManagement-API/ParticularVersionOfAnIndividualPolicy.robot b/SOL012/PolicyManagement-API/ParticularVersionOfAnIndividualPolicy.robot new file mode 100644 index 000000000..2c094c95f --- /dev/null +++ b/SOL012/PolicyManagement-API/ParticularVersionOfAnIndividualPolicy.robot @@ -0,0 +1,103 @@ +*** Settings *** +Resource environment/variables.txt +Resource PolicyManagementKeywords.robot + +*** Test Cases *** +POST Particular Version of an Individual Policy - Method not implemented + [Documentation] Test ID: 10.3.1.5.1 + ... Test title: POST Particular Version of an Individual Policy - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented for this resource. + ... Pre-conditions: none + ... Reference: Clause 5.5.6.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST Particular Version of an Individual Policy + Check HTTP Response Status Code Is 405 + +GET Information about the Particular Version of an Individual Policy - Successful + [Documentation] Test ID: 10.3.1.5.2 + ... Test title: GET Information about the Particular Version of an Individual Policy - Successful + ... Test objective: The objective is to test The GET method fetches the content of the Particular version of an individual policy. + ... Pre-conditions: Individual policy is available in the NFV-MANO. + ... Reference: Clause 5.5.6.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Particular Version of an Individual Policy + Check HTTP Response Status Code Is 200 + +GET Information about the Particular Version of an Individual Policy - NOT FOUND + [Documentation] Test ID: 10.3.1.5.3 + ... Test title: GET Information about the Particular Version of an Individual Policy - NOT FOUND + ... Test objective: The objective is to test that the information about the Particular version of an individual policy fails when using an invalid resource identifier. + ... Pre-conditions: The API producer did not find the current representation for the target resource. + ... Reference: Clause 5.5.6.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Particular Version of an Individual Policy + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Particular Version of an individual policy - Successful + [Documentation] Test ID: 10.3.1.5.4 + ... Test title: PUT Particular Version of an individual policy - Successful + ... Test objective: The objective is to test that the PUT method transfers the content of a particular version of an individual policy. + ... Pre-conditions: none + ... Reference: Clause 5.5.6.3.3 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The policy content type is either JSON, YAML or ZIP. + ... Post-Conditions: none + PUT Particular Version of an Individual Policy + Check HTTP Response Status Code Is 201 + +PUT Particular Version of an individual policy - CONFLICT + [Documentation] Test ID: 10.3.1.5.5 + ... Test title: PUT Particular Version of an individual policy - CONFLICT + ... Test objective: The objective is to test that the PUT method does not transfer the content of a particular version in case of a conflict. + ... Pre-conditions: The particular version has already been transferred to the API producer. + ... Reference: Clause 5.5.6.3.3 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The policy content type is either JSON, YAML or ZIP. + ... Post-Conditions: none + PUT Particular Version of an Individual Policy + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +PATCH Particular Version of an individual policy - Method not implemented + [Documentation] Test ID: 10.3.1.5.6 + ... Test title: PATCH Particular Version of an individual policy - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented for this resource. + ... Pre-conditions: none + ... Reference: Clause 5.5.6.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH Particular Version of an Individual Policy + Check HTTP Response Status Code Is 405 + +DELETE Particular Version of an individual policy - Successful + [Documentation] Test ID: 10.3.1.5.7 + ... Test title: DELETE Particular Version of an individual policy - Successful + ... Test objective: The objective is to test that the DELETE method deletes a particular version of an individual policy. + ... Pre-conditions: none + ... Reference: Clause 5.5.6.3.5 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE Particular Version of an Individual Policy + Check HTTP Response Status Code Is 204 + +DELETE Particular Version of an individual policy - CONFLICT + [Documentation] Test ID: 10.3.1.5.8 + ... Test title: DELETE Particular Version of an individual policy - CONFLICT + ... Test objective: The objective is to test that the DELETE method does not delete a particular version of an individual policy in case of a conflict. + ... Pre-conditions: The requested version of the individual policy is the selected version. + ... Reference: Clause 5.5.6.3.5 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE Particular Version of an Individual Policy + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index f73859f76..f261f073d 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -538,11 +538,56 @@ DELETE Selected Version of an Individual Policy Delete ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/selected_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Particular Version of an Individual Policy + Log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/versions/${policyVersion} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} -Check HTTP Content-Type Is Set - Log Checking that the Content-Type HTTP header is set according to the type of policy content. - GET individual Policy - ${PolicyContentType}= Get Value From Json ${response['headers']} $..Content-Type - GET Selected Version of an Individual Policy - ${HTTPContentType}= Get Value From Json ${response['headers']} $..Content-Type - Should be equal as strings ${HTTPContentType} ${PolicyContentType} \ No newline at end of file +GET Particular Version of an Individual Policy + log Trying to get information about a particular version of an individual policy + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/versions/${policyVersion} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Particular Version of an Individual Policy + Log Using PUT method to transfer the content of a particular version of an individual policy. + Set Headers {"Accept":"${ACCEPT}"} + Determine Policy Content Type + Set Headers {"Content-Type": "${POLICY_CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File ${POLICY_CONTENT_FILENAME} + Put ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/versions/${policyVersion} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Particular Version of an Individual Policy + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/versions/${policyVersion} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Particular Version of an Individual Policy + Log Trying to DELETE a particular version of an individual policy. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/versions/${policyVersion} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Determine Policy Content Type + ${json}= Run keyword and return status Should end with ${POLICY_CONTENT_FILENAME} .json + ${yaml}= Run keyword and return status Should end with ${POLICY_CONTENT_FILENAME} .yaml + ${zip}= Run keyword and return status Should end with ${POLICY_CONTENT_FILENAME} .zip + Run Keyword If ${json} Set Global Variable ${POLICY_CONTENT_TYPE} application/json + Run Keyword If ${yaml} Set Global Variable ${POLICY_CONTENT_TYPE} application/yaml + Run Keyword If ${zip} Set Global Variable ${POLICY_CONTENT_TYPE} application/zip + \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot b/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot index 9c9ae831b..a795fe5de 100644 --- a/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot +++ b/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot @@ -20,20 +20,19 @@ GET Information about the Selected Version of an Individual Policy - Successful ... Test title: GET Information about the Selected Version of an Individual Policy - Successful ... Test objective: The objective is to test The GET method fetches the content of the selected version of an individual policy. ... Pre-conditions: Individual policy is available in the NFV-MANO. - ... Reference: Clause 5.5.4.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Reference: Clause 5.5.5.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none GET Selected Version of an Individual Policy Check HTTP Response Status Code Is 200 - Check HTTP Content-Type Is Set GET Information about the Selected Version of an Individual Policy - NOT FOUND [Documentation] Test ID: 10.3.1.4.3 ... Test title: GET Information about the Selected Version of an Individual Policy - NOT FOUND ... Test objective: The objective is to test that the information about the selected version of an individual policy fails when using an invalid resource identifier. ... Pre-conditions: The API producer did not find the current representation for the target resource. - ... Reference: Clause 5.5.4.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Reference: Clause 5.5.5.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -46,7 +45,7 @@ GET Information about the Selected Version of an Individual Policy - CREATED STA ... Test title: GET Information about the Selected Version of an Individual Policy - NOT FOUND ... Test objective: The objective is to test that the information about the selected version of an individual policy is not retrieved when it is in CREATED state. ... Pre-conditions: The individual policy is in CREATED state. - ... Reference: Clause 5.5.4.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Reference: Clause 5.5.5.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -59,7 +58,7 @@ PUT Selected Version of an individual policy - Method not implemented ... Test title: PUT Selected Version of an individual policy - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented for this resource. ... Pre-conditions: none - ... Reference: Clause 5.5.4.3.3 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Reference: Clause 5.5.5.3.3 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -71,7 +70,7 @@ PATCH Selected Version of an individual policy - Method not implemented ... Test title: PATCH Selected Version of an individual policy - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented for this resource. ... Pre-conditions: none - ... Reference: Clause 5.5.4.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Reference: Clause 5.5.5.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -83,7 +82,7 @@ DELETE Selected Version of an individual policy - Method not implemented ... Test title: DELETE Selected Version of an individual policy - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented for this resource. ... Pre-conditions: none - ... Reference: Clause 5.5.4.3.5 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Reference: Clause 5.5.5.3.5 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL012/PolicyManagement-API/environment/variables.txt b/SOL012/PolicyManagement-API/environment/variables.txt index 0c972cc6f..dfbea0cf4 100644 --- a/SOL012/PolicyManagement-API/environment/variables.txt +++ b/SOL012/PolicyManagement-API/environment/variables.txt @@ -3,10 +3,8 @@ ${NFVMANO_HOST} localhost # Hostname of the NFVO ${NFVMANO_PORT} 8081 # Listening port of the NFVO ${NFVMANO_SCHEMA} https ${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== -${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX ${CONTENT_TYPE} application/json ${CONTENT_TYPE_JSON} application/json -${CONTENT_TYPE_PATCH} application/merge-patch+json ${ACCEPT} application/json ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 @@ -15,20 +13,14 @@ ${apiRoot} / ${apiName} nfvpolicy ${apiVersion} v1 -${SYNC_MODE} 1 +#Add file name along with the full path containing policy contents +${POLICY_CONTENT_FILENAME} jsons/PolicyContent/policyContent.json +${POLICY_CONTENT_TYPE} application/json ${response} {} ${NFVMANO_DUPLICATION} 1 -${SINGLE_FILE_VNFD} 1 # If VNFD is PLAIN TEXT -${ACCEPT_PLAIN} text/plain -${ACCEPT_ZIP} application/zip -${vnfPkgId_processing} 007c111c-38a1-42c0-a666-7475ecb1567c -${ARTIFACT_TYPE} application/octet-stream -${ARTIFACT_ID} artifactId -${WRONG_ACCEPT} application/json - ${sub_filter} filter ${sub_filter_invalid} filter_invalid ${fields} criteria,objectInstanceIds @@ -51,6 +43,7 @@ ${notification_response} [] ${policyId} ${policyId1} ${policyId2} +${policyVersion} ${callbackResp} 127.0.0.1 diff --git a/SOL012/PolicyManagement-API/jsons/PolicyContent/policyContent.json b/SOL012/PolicyManagement-API/jsons/PolicyContent/policyContent.json new file mode 100644 index 000000000..825e64360 --- /dev/null +++ b/SOL012/PolicyManagement-API/jsons/PolicyContent/policyContent.json @@ -0,0 +1,10 @@ +{ + "description": "This is a JSON example template for Policy content. Replace with your specific policy content.", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } +} \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/jsons/PolicyContent/policyContent.yaml b/SOL012/PolicyManagement-API/jsons/PolicyContent/policyContent.yaml new file mode 100644 index 000000000..07bb74b2e --- /dev/null +++ b/SOL012/PolicyManagement-API/jsons/PolicyContent/policyContent.yaml @@ -0,0 +1,10 @@ +--- + name: "use you own yaml policy content" + designer: "just replace this YAML structure with your policy content" + policy-id: 12345 + some-flag: true + some-paramter: 3 + associations: + - a1 + - a2 + - a3 \ No newline at end of file -- GitLab From e14cd3db673e910b6beb449b5c98016eb9283e54 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Tue, 9 Feb 2021 16:18:03 +0500 Subject: [PATCH 398/580] minor fixes and additional test cases added for PolicyManagement-API --- .../IndividualPolicy.robot | 38 +++++------ .../IndividualSubscription.robot | 34 +++++----- .../NotificationConsumer.robot | 63 ++++++++++++++++++- ...articularVersionOfAnIndividualPolicy.robot | 5 +- SOL012/PolicyManagement-API/Policies.robot | 19 +++++- .../PolicyManagementKeywords.robot | 44 ++++++++++++- .../SelectedVersionOfAnIndividualPolicy.robot | 5 +- .../PolicyManagement-API/Subscriptions.robot | 50 +++++++++------ 8 files changed, 192 insertions(+), 66 deletions(-) diff --git a/SOL012/PolicyManagement-API/IndividualPolicy.robot b/SOL012/PolicyManagement-API/IndividualPolicy.robot index e523e8b1b..fe814c8c2 100644 --- a/SOL012/PolicyManagement-API/IndividualPolicy.robot +++ b/SOL012/PolicyManagement-API/IndividualPolicy.robot @@ -28,8 +28,21 @@ GET Information about an individual policy - Successful Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is Policy -PUT an individual policy - Method not implemented +GET Information about an individual policy - NOT FOUND [Documentation] Test ID: 10.3.1.3.3 + ... Test title: GET Information about an individual policy - NOT FOUND + ... Test objective: The objective is to test that the retrieval of individual policy fails when using an invalid resource identifier. + ... Pre-conditions: At least one individual policy is available in the NFV-MANO. + ... Reference: Clause 5.5.8.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual Policy + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT an individual policy - Method not implemented + [Documentation] Test ID: 10.3.1.3.4 ... Test title: PUT an individual policy - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented. ... Pre-conditions: none @@ -41,7 +54,7 @@ PUT an individual policy - Method not implemented Check HTTP Response Status Code Is 405 PATCH an individual ploicy - Successful - [Documentation] Test ID: 10.3.1.3.4 + [Documentation] Test ID: 10.3.1.3.5 ... Test title: PATCH an individual ploicy - Successful ... Test objective: The objective is to test that an individual policy is modified successfully when there is no conflict using PATCH method. ... Pre-conditions: There should not exist a conflict as described in Reference. @@ -54,7 +67,7 @@ PATCH an individual ploicy - Successful Check HTTP Response Body Json Schema Is PolicyModifications PATCH an individual ploicy - Conflict - [Documentation] Test ID: 10.3.1.3.5 + [Documentation] Test ID: 10.3.1.3.6 ... Test title: PATCH an individual ploicy - Conflict ... Test objective: The objective is to test that an individual policy is not modified when there is a conflict using PATCH method. ... Pre-conditions: There exists a conflict as described in Reference. @@ -68,7 +81,7 @@ PATCH an individual ploicy - Conflict DELETE an individual policy - Successful - [Documentation] Test ID: 10.3.1.3.6 + [Documentation] Test ID: 10.3.1.3.7 ... Test title: DELETE an individual policy - Successful ... Test objective: The objective is to test that DELETE method deletes a deactivated individual policy. ... Pre-conditions: The activation status of individual policy to be deleted is not set to ACTIVATED. @@ -81,7 +94,7 @@ DELETE an individual policy - Successful Check Postcondition Individual Policy is Deleted DELETE an individual policy - CONFLICT - [Documentation] Test ID: 10.3.1.3.7 + [Documentation] Test ID: 10.3.1.3.8 ... Test title: DELETE an individual policy - CONFLICT ... Test objective: The objective is to test that DELETE method does not delete an activated individual policy. ... Pre-conditions: The activation status of individual policy to be deleted is set to ACTIVATED. @@ -93,17 +106,4 @@ DELETE an individual policy - CONFLICT DELETE Individual Policy Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - Check Postcondition Individual Policy is Not Deleted - -GET Information about an individual policy - NOT FOUND - [Documentation] Test ID: 10.3.1.3.8 - ... Test title: GET Information about an individual policy - NOT FOUND - ... Test objective: The objective is to test that the retrieval of individual policy fails when using an invalid resource identifier. - ... Pre-conditions: At least one individual policy is available in the NFV-MANO. - ... Reference: Clause 5.5.8.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Individual Policy - Check HTTP Response Status Code Is 404 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check Postcondition Individual Policy is Not Deleted \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/IndividualSubscription.robot b/SOL012/PolicyManagement-API/IndividualSubscription.robot index a21e06d6e..177c5c6a3 100644 --- a/SOL012/PolicyManagement-API/IndividualSubscription.robot +++ b/SOL012/PolicyManagement-API/IndividualSubscription.robot @@ -27,9 +27,22 @@ GET Information about an individual subscription - Successful GET Individual subscription Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PolicySubscription + +GET Information about an individual subscription - NOT FOUND + [Documentation] Test ID: 10.3.1.7.3 + ... Test title: GET Information about an individual subscription - NOT FOUND + ... Test objective: The objective is to test that the retrieval of individual Policy Management subscription fails when using an invalid resource identifier. + ... Pre-conditions: At least one Policy Management subscription is available in the NFV-MANO. + ... Reference: Clause 5.5.8.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual subscription + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails PUT an individual subscription - Method not implemented - [Documentation] Test ID: 10.3.1.7.3 + [Documentation] Test ID: 10.3.1.7.4 ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -41,7 +54,7 @@ PUT an individual subscription - Method not implemented Check HTTP Response Status Code Is 405 PATCH an individual subscription - Method not implemented - [Documentation] Test ID: 10.3.1.7.4 + [Documentation] Test ID: 10.3.1.7.5 ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -53,7 +66,7 @@ PATCH an individual subscription - Method not implemented Check HTTP Response Status Code Is 405 DELETE an individual subscription - [Documentation] Test ID: 10.3.1.7.5 + [Documentation] Test ID: 10.3.1.7.6 ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that DELETE method deletes an individual subscription ... Pre-conditions: At least one policy management subscription is available in the NFV-MANO. @@ -63,17 +76,4 @@ DELETE an individual subscription ... Post-Conditions: The Policy Management subscription is not available anymore in the NFV-MANO. DELETE Individual Subscription Check HTTP Response Status Code Is 204 - Check Postcondition Individual Subscription is Deleted - -GET Information about an individual subscription - NOT FOUND - [Documentation] Test ID: 10.3.1.7.6 - ... Test title: GET Information about an individual subscription - NOT FOUND - ... Test objective: The objective is to test that the retrieval of individual Policy Management subscription fails when using an invalid resource identifier. - ... Pre-conditions: At least one Policy Management subscription is available in the NFV-MANO. - ... Reference: Clause 5.5.8.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Individual subscription - Check HTTP Response Status Code Is 404 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check Postcondition Individual Subscription is Deleted \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/NotificationConsumer.robot b/SOL012/PolicyManagement-API/NotificationConsumer.robot index 77a0136ee..55050f1a4 100644 --- a/SOL012/PolicyManagement-API/NotificationConsumer.robot +++ b/SOL012/PolicyManagement-API/NotificationConsumer.robot @@ -26,4 +26,65 @@ Policy Conflict Notification ... Applicability: none ... Post-Conditions: none POST Policy Conflict Notification - Check HTTP Response Status Code Is 204 \ No newline at end of file + Check HTTP Response Status Code Is 204 + +Test the Notification Endpoint - Successful + [Documentation] Test ID: 10.3.1.9.3 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.5.9.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 + +Test the Notification Endpoint - UNREACHABLE + [Documentation] Test ID: 10.3.1.9.4 + ... Test title: Test the Notification Endpoint - UNREACHABLE + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.5.7.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: The notification endpoint is unreachable by the API producer. + ... Post-Conditions: none + GET reach the notification endpoint + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 10.3.1.9.5 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.5.9.3.3 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 + +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 10.3.1.9.6 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.5.9.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 + +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 10.3.1.9.7 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.5.9.3.5 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/ParticularVersionOfAnIndividualPolicy.robot b/SOL012/PolicyManagement-API/ParticularVersionOfAnIndividualPolicy.robot index 2c094c95f..9894f0274 100644 --- a/SOL012/PolicyManagement-API/ParticularVersionOfAnIndividualPolicy.robot +++ b/SOL012/PolicyManagement-API/ParticularVersionOfAnIndividualPolicy.robot @@ -19,13 +19,14 @@ GET Information about the Particular Version of an Individual Policy - Successfu [Documentation] Test ID: 10.3.1.5.2 ... Test title: GET Information about the Particular Version of an Individual Policy - Successful ... Test objective: The objective is to test The GET method fetches the content of the Particular version of an individual policy. - ... Pre-conditions: Individual policy is available in the NFV-MANO. + ... Pre-conditions: Individual policy is available in the NFV-MANO. Policy contents are provided in the json/PolicyContent folder. ... Reference: Clause 5.5.6.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: none + ... Applicability: The policy content type is either JSON, YAML or ZIP. ... Post-Conditions: none GET Particular Version of an Individual Policy Check HTTP Response Status Code Is 200 + Check that the Content-Type Header Is Set GET Information about the Particular Version of an Individual Policy - NOT FOUND [Documentation] Test ID: 10.3.1.5.3 diff --git a/SOL012/PolicyManagement-API/Policies.robot b/SOL012/PolicyManagement-API/Policies.robot index 525036721..9c3c13f63 100644 --- a/SOL012/PolicyManagement-API/Policies.robot +++ b/SOL012/PolicyManagement-API/Policies.robot @@ -146,9 +146,22 @@ GET Policies as Paged Response GET Policies Check HTTP Response Status Code Is 200 Check HTTP Response Header Contains Link + +GET Policies - NOT FOUND + [Documentation] Test ID: 10.3.1.2.12 + ... Test title: GET Policies - NOT FOUND + ... Test objective: The objective is to test that the retrieval of list of policies fails when using an invalid resource identifier. + ... Pre-conditions: none + ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Policies + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails PUT Policies - Method not implemented - [Documentation] Test ID: 10.3.1.2.12 + [Documentation] Test ID: 10.3.1.2.13 ... Test title: PUT Policies - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify policies. ... Pre-conditions: none @@ -160,7 +173,7 @@ PUT Policies - Method not implemented Check HTTP Response Status Code Is 405 PATCH Policies - Method not implemented - [Documentation] Test ID: 10.3.1.2.13 + [Documentation] Test ID: 10.3.1.2.14 ... Test title: PATCH Policies - Method not implemented ... Test objective: The objective is to test that PATCH method cannot modify policies. ... Pre-conditions: none @@ -172,7 +185,7 @@ PATCH Policies - Method not implemented Check HTTP Response Status Code Is 405 DELETE Policies - Method not implemented - [Documentation] Test ID: 10.3.1.2.14 + [Documentation] Test ID: 10.3.1.2.15 ... Test title: DELETE Policies - Method not implemented ... Test objective: The objective is to test that DELETE method cannot delete policies. ... Pre-conditions: none diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index f261f073d..92ff97890 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -307,7 +307,7 @@ Check resource existence and get CallbackUri Set Global Variable ${callbackResp} response body callbackUri POST Policy Change Notification - log Trying to perform a POST to deliver notification + log Trying to perform a POST to deliver notification. Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -318,7 +318,7 @@ POST Policy Change Notification Set Global Variable ${response} ${outputResponse} POST Policy Conflict Notification - log Trying to perform a POST to deliver notification + log Trying to perform a POST to deliver notification. Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -328,6 +328,39 @@ POST Policy Conflict Notification ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT notification endpoint + Log Trying to perform a PUT. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH notification endpoint + Log Trying to perform a PATCH. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + Log Trying to perform a DELETE. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + POST Policies Log Create policy instance by POST to ${apiRoot}/${apiName}/${apiVersion}/policies Set Headers {"Accept":"${ACCEPT}"} @@ -590,4 +623,9 @@ Determine Policy Content Type Run Keyword If ${json} Set Global Variable ${POLICY_CONTENT_TYPE} application/json Run Keyword If ${yaml} Set Global Variable ${POLICY_CONTENT_TYPE} application/yaml Run Keyword If ${zip} Set Global Variable ${POLICY_CONTENT_TYPE} application/zip - \ No newline at end of file + +Check that the Content-Type Header Is Set + Determine Policy Content Type + Log Validating content type + Should Be Equal ${response['headers']['Content-Type']} ${POLICY_CONTENT_TYPE} + Log Content Type validated \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot b/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot index a795fe5de..8e2603f4d 100644 --- a/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot +++ b/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot @@ -19,13 +19,14 @@ GET Information about the Selected Version of an Individual Policy - Successful [Documentation] Test ID: 10.3.1.4.2 ... Test title: GET Information about the Selected Version of an Individual Policy - Successful ... Test objective: The objective is to test The GET method fetches the content of the selected version of an individual policy. - ... Pre-conditions: Individual policy is available in the NFV-MANO. + ... Pre-conditions: Individual policy is available in the NFV-MANO. Policy contents are provided in the json/PolicyContent folder. ... Reference: Clause 5.5.5.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: none + ... Applicability: The policy content type is either JSON, YAML or ZIP. ... Post-Conditions: none GET Selected Version of an Individual Policy Check HTTP Response Status Code Is 200 + Check that the Content-Type Header Is Set GET Information about the Selected Version of an Individual Policy - NOT FOUND [Documentation] Test ID: 10.3.1.4.3 diff --git a/SOL012/PolicyManagement-API/Subscriptions.robot b/SOL012/PolicyManagement-API/Subscriptions.robot index 978d94b88..7345df8c5 100644 --- a/SOL012/PolicyManagement-API/Subscriptions.robot +++ b/SOL012/PolicyManagement-API/Subscriptions.robot @@ -31,7 +31,6 @@ POST Create a new Subscription - DUPLICATION NOT ALLOWED Check HTTP Response Status Code Is 303 Check HTTP Response Header Contains Location Check Postcondition Individual Subscription Resource Returned in Location Header Is Available - POST Create a new Subscription - UNPROCESSABLE ENTITY [Documentation] Test ID: 10.3.1.6.3 @@ -162,9 +161,35 @@ GET Subscriptions as Paged Response GET Subscriptions Check HTTP Response Status Code Is 200 Check HTTP Response Header Contains Link - + +GET subscriptions with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 10.3.1.6.13 + ... Test title: GET subscriptions with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_default" and "fields" attribute selector + ... Pre-conditions: + ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get subscriptions with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions + +GET subscriptions - NOT FOUND + [Documentation] Test ID: 10.3.1.6.14 + ... Test title: GET subscriptions - NOT FOUND + ... Test objective: The objective is to test that the retrieval of list of subscriptions fails when using an invalid resource identifier. + ... Pre-conditions: none + ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Subscriptions + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + PUT subscriptions - Method not implemented - [Documentation] Test ID: 10.3.1.6.13 + [Documentation] Test ID: 10.3.1.6.15 ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a policy management subscription. ... Pre-conditions: none @@ -176,7 +201,7 @@ PUT subscriptions - Method not implemented Check HTTP Response Status Code Is 405 PATCH subscriptions - Method not implemented - [Documentation] Test ID: 10.3.1.6.14 + [Documentation] Test ID: 10.3.1.6.16 ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method cannot modify a policy management subscription. ... Pre-conditions: none @@ -188,7 +213,7 @@ PATCH subscriptions - Method not implemented Check HTTP Response Status Code Is 405 DELETE subscriptions - Method not implemented - [Documentation] Test ID: 10.3.1.6.15 + [Documentation] Test ID: 10.3.1.6.17 ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method cannot delete a policy management subscription. ... Pre-conditions: none @@ -198,17 +223,4 @@ DELETE subscriptions - Method not implemented ... Post-Conditions: Subscriptions are not deleted DELETE subscriptions Check HTTP Response Status Code Is 405 - Check Postcondition Subscriptions Exist - -GET subscriptions with "exclude_default" and "fields" attribute selector - [Documentation] Test ID: 10.3.1.6.16 - ... Test title: GET subscriptions with "exclude_default" and "fields" attribute selector - ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_default" and "fields" attribute selector - ... Pre-conditions: - ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get subscriptions with exclude_default and fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is subscriptions \ No newline at end of file + Check Postcondition Subscriptions Exist \ No newline at end of file -- GitLab From 0fd124ff23ad65ca1ab456c3449649b77ecf76de Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Tue, 9 Feb 2021 15:26:26 +0100 Subject: [PATCH 399/580] fixed typo --- SOL012/PolicyManagement-API/IndividualPolicy.robot | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL012/PolicyManagement-API/IndividualPolicy.robot b/SOL012/PolicyManagement-API/IndividualPolicy.robot index fe814c8c2..af7f59525 100644 --- a/SOL012/PolicyManagement-API/IndividualPolicy.robot +++ b/SOL012/PolicyManagement-API/IndividualPolicy.robot @@ -53,9 +53,9 @@ PUT an individual policy - Method not implemented PUT Individual Policy Check HTTP Response Status Code Is 405 -PATCH an individual ploicy - Successful +PATCH an individual policy - Successful [Documentation] Test ID: 10.3.1.3.5 - ... Test title: PATCH an individual ploicy - Successful + ... Test title: PATCH an individual policy - Successful ... Test objective: The objective is to test that an individual policy is modified successfully when there is no conflict using PATCH method. ... Pre-conditions: There should not exist a conflict as described in Reference. ... Reference: Clause 5.5.4.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 @@ -66,9 +66,9 @@ PATCH an individual ploicy - Successful Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PolicyModifications -PATCH an individual ploicy - Conflict +PATCH an individual policy - Conflict [Documentation] Test ID: 10.3.1.3.6 - ... Test title: PATCH an individual ploicy - Conflict + ... Test title: PATCH an individual policy - Conflict ... Test objective: The objective is to test that an individual policy is not modified when there is a conflict using PATCH method. ... Pre-conditions: There exists a conflict as described in Reference. ... Reference: Clause 5.5.4.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 -- GitLab From 511cd51f13c293cfec5684e83ec7596340397d22 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Tue, 9 Feb 2021 15:56:28 +0100 Subject: [PATCH 400/580] updated policy related tests (subscriptions, ..) --- .../IndividualPolicy.robot | 5 +- .../PolicyManagementKeywords.robot | 56 +++++++++++++++++-- .../PolicyManagement-API/Subscriptions.robot | 4 ++ .../environment/variables.txt | 1 + .../InvalidPolicySubscriptionRequest.json | 11 ++-- .../jsons/PolicySubscriptionRequest.json | 2 +- 6 files changed, 66 insertions(+), 13 deletions(-) diff --git a/SOL012/PolicyManagement-API/IndividualPolicy.robot b/SOL012/PolicyManagement-API/IndividualPolicy.robot index af7f59525..193b9464a 100644 --- a/SOL012/PolicyManagement-API/IndividualPolicy.robot +++ b/SOL012/PolicyManagement-API/IndividualPolicy.robot @@ -75,7 +75,7 @@ PATCH an individual policy - Conflict ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - PATCH Individual Subscription + PATCH Individual Policy Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -102,8 +102,7 @@ DELETE an individual policy - CONFLICT ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The individual policy is not deleted. - Check Activation Status of Policy Is ACTIVATED - DELETE Individual Policy + DELETE Individual Policy in status ACTIVATED Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails Check Postcondition Individual Policy is Not Deleted \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index 92ff97890..50d69ad24 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -5,8 +5,15 @@ Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ Library String +Library MockServerLibrary +Library Process *** Keywords *** +Create Sessions + Start Process java -jar ../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} + POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -116,6 +123,13 @@ Check Postcondition Individual Subscription Resource Returned in Location Header Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} Log Validated Issued subscription is same as original +Check Postcondition Policy subscription is created + Log Going to check postcondition + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']} + Integer response status 200 + Log Received a 200 OK as expected + Check HTTP Response Header Contains Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} @@ -130,9 +144,19 @@ POST subscriptions Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/PolicySubscriptionRequest.json + ${body}= Replace String ${body} \${callback_uri} ${callback_uri} + ${body}= Replace String ${body} \${callback_port} ${callback_port} + ${body}= Replace String ${body} \${callback_endpoint} ${callback_endpoint} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} + POST subscriptions NO DUPLICATION Log Trying to create a subscription with an already created content @@ -140,11 +164,19 @@ POST subscriptions NO DUPLICATION Pass Execution If ${NFVMANO_DUPLICATION} == 1 NFVMANO allows creation of redundant subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/PolicySubscriptionRequest.json + ${body}= Replace String ${body} \${callback_uri} ${callback_uri} + ${body}= Replace String ${body} \${callback_port} ${callback_port} + ${body}= Replace String ${body} \${callback_endpoint} ${callback_endpoint} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + Clear Requests ${callback_endpoint} POST subscriptions with Invalid Request Log Trying to create a subscription with invalid request body @@ -467,7 +499,7 @@ DELETE Policies Check Postcondition Policies Exist Log Checking that Policies exist Get Policies - + POST Individual Policy log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -511,7 +543,17 @@ DELETE Individual Policy Delete ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + +DELETE Individual Policy in status ACTIVATED + Check Activation Status of Policy Is ACTIVATED + log Trying to delete an individual policy, no conflict + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + Check Postcondition Individual Policy is Deleted Log Check Postcondition individual policy is deleted GET individual Policy @@ -519,7 +561,13 @@ Check Postcondition Individual Policy is Deleted Check Activation Status of Policy Is [Arguments] ${status} - Get Individual Policy + Log Check Activation Status + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/policies/${policyIdInActivatedStatus} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is Policy Should be equal as strings ${response['body']['activationStatus']} ${status} diff --git a/SOL012/PolicyManagement-API/Subscriptions.robot b/SOL012/PolicyManagement-API/Subscriptions.robot index 7345df8c5..19636e128 100644 --- a/SOL012/PolicyManagement-API/Subscriptions.robot +++ b/SOL012/PolicyManagement-API/Subscriptions.robot @@ -1,4 +1,7 @@ *** Settings *** +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true +Library Process Resource environment/variables.txt Resource PolicyManagementKeywords.robot @@ -16,6 +19,7 @@ POST Create a new subscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is PolicySubscription Check HTTP Response Header Contains Location + Check Postcondition Policy subscription is created POST Create a new Subscription - DUPLICATION NOT ALLOWED [Documentation] Test ID: 10.3.1.6.2 diff --git a/SOL012/PolicyManagement-API/environment/variables.txt b/SOL012/PolicyManagement-API/environment/variables.txt index dfbea0cf4..28310dd86 100644 --- a/SOL012/PolicyManagement-API/environment/variables.txt +++ b/SOL012/PolicyManagement-API/environment/variables.txt @@ -44,6 +44,7 @@ ${policyId} ${policyId1} ${policyId2} ${policyVersion} +${policyIdInActivatedStatus} ${callbackResp} 127.0.0.1 diff --git a/SOL012/PolicyManagement-API/jsons/InvalidPolicySubscriptionRequest.json b/SOL012/PolicyManagement-API/jsons/InvalidPolicySubscriptionRequest.json index c4f1a5b73..56d3a51dd 100644 --- a/SOL012/PolicyManagement-API/jsons/InvalidPolicySubscriptionRequest.json +++ b/SOL012/PolicyManagement-API/jsons/InvalidPolicySubscriptionRequest.json @@ -1,7 +1,8 @@ { - "id": "", - "timeStamp": "", - "status": "START", - "callbackUri": "http://127.0.0.1/subscribe", - "_links": "" + "filter": { + "notificationTypes": "PolicyChangeNotification", + "policyIds": "", + "changeTypes": "CREATE_POLICY" + }, + "callbackUri": "http://not-reachable-uri" } \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/jsons/PolicySubscriptionRequest.json b/SOL012/PolicyManagement-API/jsons/PolicySubscriptionRequest.json index c6e6b6967..a743a5540 100644 --- a/SOL012/PolicyManagement-API/jsons/PolicySubscriptionRequest.json +++ b/SOL012/PolicyManagement-API/jsons/PolicySubscriptionRequest.json @@ -4,5 +4,5 @@ "policyIds": "", "changeTypes": "CREATE_POLICY" }, - "callbackUri": "http://127.0.0.1/subscribe" + "callbackUri": "${callback_uri}:${callback_port$}{callback_endpoint}" } \ No newline at end of file -- GitLab From 65bfd90b62bf1f4325f4af08b517f4756a945b14 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Tue, 9 Feb 2021 16:04:08 +0100 Subject: [PATCH 401/580] updated config and usage of auth header --- .../PolicyManagementKeywords.robot | 94 +++++++++---------- .../environment/variables.txt | 3 +- 2 files changed, 49 insertions(+), 48 deletions(-) diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index 50d69ad24..5307989f8 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -16,70 +16,70 @@ Create Sessions POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -103,7 +103,7 @@ Check HTTP Response Header Contains Check subscription existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} Integer response status 200 @@ -142,7 +142,7 @@ POST subscriptions Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/PolicySubscriptionRequest.json ${body}= Replace String ${body} \${callback_uri} ${callback_uri} ${body}= Replace String ${body} \${callback_port} ${callback_port} @@ -182,7 +182,7 @@ POST subscriptions with Invalid Request Log Trying to create a subscription with invalid request body Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/InvalidPolicySubscriptionRequest.json Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${outputResponse}= Output response @@ -192,7 +192,7 @@ GET Subscriptions Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${outputResponse}= Output response @@ -258,7 +258,7 @@ PUT subscriptions Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -267,7 +267,7 @@ PATCH subscriptions Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -276,7 +276,7 @@ DELETE subscriptions Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -285,7 +285,7 @@ POST Individual Subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -293,7 +293,7 @@ POST Individual Subscription GET Individual subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -302,7 +302,7 @@ PUT Individual Subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -311,7 +311,7 @@ PATCH Individual Subscription log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -319,7 +319,7 @@ PATCH Individual Subscription DELETE Individual subscription log Trying to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -332,7 +332,7 @@ Check Postcondition Individual Subscription is Deleted Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} Integer response status 200 Validate Json response body PolicySubscription.schema.json @@ -342,7 +342,7 @@ POST Policy Change Notification log Trying to perform a POST to deliver notification. Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/PolicyChangeNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} Post ${callbackResp} ${body} @@ -353,7 +353,7 @@ POST Policy Conflict Notification log Trying to perform a POST to deliver notification. Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/PolicyConflictNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} policyId1=${policyId1} policyId2=${policyId2} Post ${callbackResp} ${body} @@ -397,7 +397,7 @@ POST Policies Log Create policy instance by POST to ${apiRoot}/${apiName}/${apiVersion}/policies Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/CreatePolicyRequest.json Post ${apiRoot}/${apiName}/${apiVersion}/policies ${body} ${outputResponse}= Output response @@ -407,7 +407,7 @@ GET Policies Log Get the list of existing policies Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiVersion}/policies ${outputResponse}= Output response @@ -473,7 +473,7 @@ PUT Policies Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiVersion}/policies ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -482,7 +482,7 @@ PATCH Policies Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiVersion}/policies ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -491,7 +491,7 @@ DELETE Policies Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiVersion}/policies ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -504,7 +504,7 @@ POST Individual Policy log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -512,7 +512,7 @@ POST Individual Policy GET Individual Policy log Trying to get information about an individual policy Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -521,7 +521,7 @@ PUT Individual Policy log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -530,7 +530,7 @@ PATCH Individual Policy Log Modify individual policy instance by PATCH to ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/PolicyModifications.json Patch ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} ${body} ${outputResponse}= Output response @@ -539,7 +539,7 @@ PATCH Individual Policy DELETE Individual Policy log Trying to delete an individual policy, no conflict Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -548,7 +548,7 @@ DELETE Individual Policy in status ACTIVATED Check Activation Status of Policy Is ACTIVATED log Trying to delete an individual policy, no conflict Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -563,7 +563,7 @@ Check Activation Status of Policy Is [Arguments] ${status} Log Check Activation Status Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/policies/${policyIdInActivatedStatus} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -580,7 +580,7 @@ POST Selected Version of an Individual Policy Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/selected_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -588,7 +588,7 @@ POST Selected Version of an Individual Policy GET Selected Version of an Individual Policy log Trying to get information about the selected version of an individual policy Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/selected_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -597,7 +597,7 @@ PUT Selected Version of an Individual Policy log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/selected_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -606,7 +606,7 @@ PATCH Selected Version of an Individual Policy log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/selected_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -615,7 +615,7 @@ DELETE Selected Version of an Individual Policy log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/selected_version ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -624,7 +624,7 @@ POST Particular Version of an Individual Policy Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/versions/${policyVersion} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -632,7 +632,7 @@ POST Particular Version of an Individual Policy GET Particular Version of an Individual Policy log Trying to get information about a particular version of an individual policy Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/versions/${policyVersion} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -642,7 +642,7 @@ PUT Particular Version of an Individual Policy Set Headers {"Accept":"${ACCEPT}"} Determine Policy Content Type Set Headers {"Content-Type": "${POLICY_CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File ${POLICY_CONTENT_FILENAME} Put ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/versions/${policyVersion} ${body} ${outputResponse}= Output response @@ -651,7 +651,7 @@ PUT Particular Version of an Individual Policy PATCH Particular Version of an Individual Policy log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/versions/${policyVersion} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -659,7 +659,7 @@ PATCH Particular Version of an Individual Policy DELETE Particular Version of an Individual Policy Log Trying to DELETE a particular version of an individual policy. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiVersion}/policies/${policyId}/versions/${policyVersion} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL012/PolicyManagement-API/environment/variables.txt b/SOL012/PolicyManagement-API/environment/variables.txt index 28310dd86..0ed28acac 100644 --- a/SOL012/PolicyManagement-API/environment/variables.txt +++ b/SOL012/PolicyManagement-API/environment/variables.txt @@ -2,7 +2,8 @@ ${NFVMANO_HOST} localhost # Hostname of the NFVO ${NFVMANO_PORT} 8081 # Listening port of the NFVO ${NFVMANO_SCHEMA} https -${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== ${CONTENT_TYPE} application/json ${CONTENT_TYPE_JSON} application/json ${ACCEPT} application/json -- GitLab From 37182d4d0ef7322c30a8ae38de9f71eb4ed24987 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Feb 2021 12:49:36 +0500 Subject: [PATCH 402/580] updated usage of auth header --- .../PolicyManagementKeywords.robot | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index 5307989f8..8dcd82f0f 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -109,7 +109,7 @@ Check subscription existence Check Postcondition Individual Subscription Resource Returned in Location Header Is Available Log Going to check postcondition - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${response['headers']['Location']} Integer response status 200 Log Received a 200 OK as expected @@ -125,7 +125,7 @@ Check Postcondition Individual Subscription Resource Returned in Location Header Check Postcondition Policy subscription is created Log Going to check postcondition - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']} Integer response status 200 Log Received a 200 OK as expected @@ -201,7 +201,7 @@ GET Subscriptions Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -209,7 +209,7 @@ Get subscriptions with all_fields attribute selector Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -217,7 +217,7 @@ Get subscriptions with exclude_default attribute selector Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -225,7 +225,7 @@ Get subscriptions with fields attribute selector Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -233,7 +233,7 @@ Get subscriptions with exclude_fields attribute selector GET subscriptions with filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -241,7 +241,7 @@ GET subscriptions with filter Get subscriptions - invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -249,7 +249,7 @@ Get subscriptions - invalid filter Get subscriptions with exclude_default and fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -363,7 +363,7 @@ POST Policy Conflict Notification GET reach the notification endpoint Log Trying to reach the notification endpoint using GET method. Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${callbackResp} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -371,7 +371,7 @@ GET reach the notification endpoint PUT notification endpoint Log Trying to perform a PUT. This method should not be implemented. Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${callbackResp} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -379,7 +379,7 @@ PUT notification endpoint PATCH notification endpoint Log Trying to perform a PATCH. This method should not be implemented. Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${callbackResp} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -387,7 +387,7 @@ PATCH notification endpoint DELETE notification endpoint Log Trying to perform a DELETE. This method should not be implemented. Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${callbackResp} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -416,7 +416,7 @@ GET Policies GET Policies with filter Log Get the list of existing policies using a filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/policies?${sub_filter} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -424,7 +424,7 @@ GET Policies with filter Get Policies - invalid filter Log Get the list of existing policies using an invalid filter Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/policies?${sub_filter_invalid} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -432,7 +432,7 @@ Get Policies - invalid filter Get Policies with all_fields attribute selector Log Get the list of existing policies, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/policies?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -440,7 +440,7 @@ Get Policies with all_fields attribute selector Get Policies with exclude_default attribute selector Log Get the list of existing policies, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/policies?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -448,7 +448,7 @@ Get Policies with exclude_default attribute selector Get Policies with fields attribute selector Log Get the list of existing policies, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/policies?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -456,7 +456,7 @@ Get Policies with fields attribute selector Get Policies with exclude_fields attribute selector Log Get the list of existing policies, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/policies?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -464,7 +464,7 @@ Get Policies with exclude_fields attribute selector Get Policies with exclude_default and fields attribute selector Log Get the list of existing policies, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/policies?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} -- GitLab From ddd7b0448159e9adee50563af7119d792c8641ec Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Feb 2021 14:16:57 +0500 Subject: [PATCH 403/580] updated paged response test cases for Policies and Subscriptions resources --- .../IndividualPolicy.robot | 2 +- .../IndividualSubscription.robot | 2 +- SOL012/PolicyManagement-API/Policies.robot | 27 +++++------------- .../PolicyManagementKeywords.robot | 28 +++++++++++++++++++ .../PolicyManagement-API/Subscriptions.robot | 27 +++++------------- .../environment/variables.txt | 4 +++ 6 files changed, 48 insertions(+), 42 deletions(-) diff --git a/SOL012/PolicyManagement-API/IndividualPolicy.robot b/SOL012/PolicyManagement-API/IndividualPolicy.robot index 193b9464a..7deca87f0 100644 --- a/SOL012/PolicyManagement-API/IndividualPolicy.robot +++ b/SOL012/PolicyManagement-API/IndividualPolicy.robot @@ -37,7 +37,7 @@ GET Information about an individual policy - NOT FOUND ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - GET Individual Policy + GET Individual Policy with Invalid URI Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL012/PolicyManagement-API/IndividualSubscription.robot b/SOL012/PolicyManagement-API/IndividualSubscription.robot index 177c5c6a3..234802422 100644 --- a/SOL012/PolicyManagement-API/IndividualSubscription.robot +++ b/SOL012/PolicyManagement-API/IndividualSubscription.robot @@ -37,7 +37,7 @@ GET Information about an individual subscription - NOT FOUND ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - GET Individual subscription + GET Individual subscription with Invalid URI Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL012/PolicyManagement-API/Policies.robot b/SOL012/PolicyManagement-API/Policies.robot index 9c3c13f63..88678f31c 100644 --- a/SOL012/PolicyManagement-API/Policies.robot +++ b/SOL012/PolicyManagement-API/Policies.robot @@ -63,9 +63,9 @@ GET Policies - Bad Request Response too Big ... Pre-conditions: none ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: none + ... Applicability: NFV-MANO does not support paged response. ... Post-Conditions: none - GET Policies + GET Policies without Paging support Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -141,27 +141,14 @@ GET Policies as Paged Response ... Pre-conditions: none ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: NFV-MANO supports paged response + ... Applicability: NFV-MANO supports paged response. ... Post-Conditions: none - GET Policies + GET Policies with Paging support Check HTTP Response Status Code Is 200 Check HTTP Response Header Contains Link -GET Policies - NOT FOUND - [Documentation] Test ID: 10.3.1.2.12 - ... Test title: GET Policies - NOT FOUND - ... Test objective: The objective is to test that the retrieval of list of policies fails when using an invalid resource identifier. - ... Pre-conditions: none - ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Policies - Check HTTP Response Status Code Is 404 - Check HTTP Response Body Json Schema Is ProblemDetails - PUT Policies - Method not implemented - [Documentation] Test ID: 10.3.1.2.13 + [Documentation] Test ID: 10.3.1.2.12 ... Test title: PUT Policies - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify policies. ... Pre-conditions: none @@ -173,7 +160,7 @@ PUT Policies - Method not implemented Check HTTP Response Status Code Is 405 PATCH Policies - Method not implemented - [Documentation] Test ID: 10.3.1.2.14 + [Documentation] Test ID: 10.3.1.2.13 ... Test title: PATCH Policies - Method not implemented ... Test objective: The objective is to test that PATCH method cannot modify policies. ... Pre-conditions: none @@ -185,7 +172,7 @@ PATCH Policies - Method not implemented Check HTTP Response Status Code Is 405 DELETE Policies - Method not implemented - [Documentation] Test ID: 10.3.1.2.15 + [Documentation] Test ID: 10.3.1.2.14 ... Test title: DELETE Policies - Method not implemented ... Test objective: The objective is to test that DELETE method cannot delete policies. ... Pre-conditions: none diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index 8dcd82f0f..3a14187ef 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -254,6 +254,12 @@ Get subscriptions with exclude_default and fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} +Get subscriptions without Paging support + Run Keyword If ${PAGING_SUPPORTED} == 0 Get subscriptions + +Get subscriptions with Paging support + Run Keyword If ${PAGING_SUPPORTED} == 1 Get subscriptions + PUT subscriptions Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -298,6 +304,14 @@ GET Individual subscription ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +GET Individual subscription with Invalid URI + log Trying to get information about an individual subscription with invalid subscription ID + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${invalidSubscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + PUT Individual Subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -468,6 +482,12 @@ Get Policies with exclude_default and fields attribute selector GET ${apiRoot}/${apiName}/${apiVersion}/policies?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} + +GET Policies without Paging support + Run Keyword If ${PAGING_SUPPORTED} == 0 Get Policies + +GET Policies with Paging support + Run Keyword If ${PAGING_SUPPORTED} == 1 Get Policies PUT Policies Log Trying to perform a PUT. This method should not be implemented @@ -517,6 +537,14 @@ GET Individual Policy ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +GET Individual Policy with Invalid URI + log Trying to get information about an individual policy with invalid policy ID + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/policies/${invalidPolicyId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + PUT Individual Policy log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL012/PolicyManagement-API/Subscriptions.robot b/SOL012/PolicyManagement-API/Subscriptions.robot index 19636e128..ccbaa5620 100644 --- a/SOL012/PolicyManagement-API/Subscriptions.robot +++ b/SOL012/PolicyManagement-API/Subscriptions.robot @@ -95,9 +95,9 @@ GET subscriptions - Bad Request Response too Big ... Pre-conditions: none ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: none + ... Applicability: NFV-MANO does not support paged response. ... Post-Conditions: none - GET Subscriptions + GET Subscriptions without Paging support Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -160,9 +160,9 @@ GET Subscriptions as Paged Response ... Pre-conditions: none ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: NFV-MANO supports paged response + ... Applicability: NFV-MANO supports paged response. ... Post-Conditions: none - GET Subscriptions + GET Subscriptions with Paging support Check HTTP Response Status Code Is 200 Check HTTP Response Header Contains Link @@ -178,22 +178,9 @@ GET subscriptions with "exclude_default" and "fields" attribute selector Get subscriptions with exclude_default and fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is subscriptions - -GET subscriptions - NOT FOUND - [Documentation] Test ID: 10.3.1.6.14 - ... Test title: GET subscriptions - NOT FOUND - ... Test objective: The objective is to test that the retrieval of list of subscriptions fails when using an invalid resource identifier. - ... Pre-conditions: none - ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Subscriptions - Check HTTP Response Status Code Is 404 - Check HTTP Response Body Json Schema Is ProblemDetails PUT subscriptions - Method not implemented - [Documentation] Test ID: 10.3.1.6.15 + [Documentation] Test ID: 10.3.1.6.14 ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a policy management subscription. ... Pre-conditions: none @@ -205,7 +192,7 @@ PUT subscriptions - Method not implemented Check HTTP Response Status Code Is 405 PATCH subscriptions - Method not implemented - [Documentation] Test ID: 10.3.1.6.16 + [Documentation] Test ID: 10.3.1.6.15 ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method cannot modify a policy management subscription. ... Pre-conditions: none @@ -217,7 +204,7 @@ PATCH subscriptions - Method not implemented Check HTTP Response Status Code Is 405 DELETE subscriptions - Method not implemented - [Documentation] Test ID: 10.3.1.6.17 + [Documentation] Test ID: 10.3.1.6.16 ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method cannot delete a policy management subscription. ... Pre-conditions: none diff --git a/SOL012/PolicyManagement-API/environment/variables.txt b/SOL012/PolicyManagement-API/environment/variables.txt index 0ed28acac..6665d6f96 100644 --- a/SOL012/PolicyManagement-API/environment/variables.txt +++ b/SOL012/PolicyManagement-API/environment/variables.txt @@ -21,11 +21,14 @@ ${POLICY_CONTENT_TYPE} application/json ${response} {} ${NFVMANO_DUPLICATION} 1 +${PAGING_SUPPORTED} 1 ${sub_filter} filter ${sub_filter_invalid} filter_invalid ${fields} criteria,objectInstanceIds ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${invalidSubscriptionId} invalid-subscription-id + ${notification_ep} notification ${VrQuotaAvailNotification} {} @@ -46,6 +49,7 @@ ${policyId1} ${policyId2} ${policyVersion} ${policyIdInActivatedStatus} +${invalidPolicyId} invalid-policy-id ${callbackResp} 127.0.0.1 -- GitLab From 79ec3255ea89f0d974f01e87d85a9736031169be Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 10 Feb 2021 18:29:54 +0500 Subject: [PATCH 404/580] minor typo and bug fixes --- SOL012/PolicyManagement-API/ApiVersion.robot | 38 +++++++++---------- .../IndividualSubscription.robot | 10 ++--- .../NotificationConsumer.robot | 2 +- ...articularVersionOfAnIndividualPolicy.robot | 18 ++++----- SOL012/PolicyManagement-API/Policies.robot | 6 +-- .../PolicyManagementKeywords.robot | 35 +++++++++++++++++ .../SelectedVersionOfAnIndividualPolicy.robot | 6 +-- .../PolicyManagement-API/Subscriptions.robot | 12 +++--- .../environment/variables.txt | 3 ++ 9 files changed, 84 insertions(+), 46 deletions(-) diff --git a/SOL012/PolicyManagement-API/ApiVersion.robot b/SOL012/PolicyManagement-API/ApiVersion.robot index a52617498..142232e7c 100644 --- a/SOL012/PolicyManagement-API/ApiVersion.robot +++ b/SOL012/PolicyManagement-API/ApiVersion.robot @@ -7,7 +7,7 @@ Resource PolicyManagementKeywords.robot POST API Version - Method not implemented [Documentation] Test ID: 10.3.1.1.1 ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented + ... Test objective: The objective is to test that POST method is not implemented for this resource. ... Pre-conditions: none ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -19,7 +19,7 @@ POST API Version - Method not implemented GET API Version [Documentation] Test ID: 10.3.1.1.2 ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Test objective: The objective is to test that GET method successfully returns ApiVersionInformation. ... Pre-conditions: none ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -32,7 +32,7 @@ GET API Version PUT API Version - Method not implemented [Documentation] Test ID: 10.3.1.1.3 ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented + ... Test objective: The objective is to test that PUT method is not implemented for this resource. ... Pre-conditions: none ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_NFVO @@ -56,7 +56,7 @@ PATCH API Version - Method not implemented DELETE API Version - Method not implemented [Documentation] Test ID: 10.3.1.1.5 ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented + ... Test objective: The objective is to test that DELETE method is not implemented for this resource. ... Pre-conditions: none ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -65,10 +65,10 @@ DELETE API Version - Method not implemented DELETE API Version Check HTTP Response Status Code Is 405 -POST API Version with apiMajorVerion - Method not implemented +POST API Version with apiMajorVersion - Method not implemented [Documentation] Test ID: 10.3.1.1.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented + ... Test title: POST API version with apiMajorVersion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented. ... Pre-conditions: none ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -77,10 +77,10 @@ POST API Version with apiMajorVerion - Method not implemented POST API Version Check HTTP Response Status Code Is 405 -GET API Version with apiMajorVerion +GET API Version with apiMajorVersion [Documentation] 10.3.1.1.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Test title: GET API Version with apiMajorVersion + ... Test objective: The objective is to test that GET method successfully returns ApiVersionInformation. ... Pre-conditions: none ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -90,10 +90,10 @@ GET API Version with apiMajorVerion Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ApiVersionInformation -PUT API Version with apiMajorVerion - Method not implemented +PUT API Version with apiMajorVersion - Method not implemented [Documentation] Test ID: 10.3.1.1.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented + ... Test title: PUT API Version with apiMajorVersion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented. ... Pre-conditions: none ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -102,10 +102,10 @@ PUT API Version with apiMajorVerion - Method not implemented PUT API Version Check HTTP Response Status Code Is 405 -PATCH API Version with apiMajorVerion - Method not implemented +PATCH API Version with apiMajorVersion - Method not implemented [Documentation] Test ID: 10.3.1.1.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented + ... Test title: PATCH API Version with apiMajorVersion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented. ... Pre-conditions: none ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -114,10 +114,10 @@ PATCH API Version with apiMajorVerion - Method not implemented PATCH API Version Check HTTP Response Status Code Is 405 -DELETE API Version with apiMajorVerion - Method not implemented +DELETE API Version with apiMajorVersion - Method not implemented [Documentation] Test ID: 10.3.1.1.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented + ... Test title: DELETE API Version with apiMajorVersion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented. ... Pre-conditions: none ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v3.3.1 ... Config ID: Config_prod_NFV-MANO diff --git a/SOL012/PolicyManagement-API/IndividualSubscription.robot b/SOL012/PolicyManagement-API/IndividualSubscription.robot index 234802422..e7e3da0f7 100644 --- a/SOL012/PolicyManagement-API/IndividualSubscription.robot +++ b/SOL012/PolicyManagement-API/IndividualSubscription.robot @@ -6,7 +6,7 @@ Resource PolicyManagementKeywords.robot POST Individual Subscription - Method not implemented [Documentation] Test ID: 10.3.1.7.1 ... Test title: POST Individual Subscription - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented + ... Test objective: The objective is to test that POST method is not implemented for this resource. ... Pre-conditions: none ... Reference: Clause 5.5.8.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO @@ -18,7 +18,7 @@ POST Individual Subscription - Method not implemented GET Information about an individual subscription - Successful [Documentation] Test ID: 10.3.1.7.2 ... Test title: GET Information about an individual subscription - Successful - ... Test objective: The objective is to test the retrieval of Policy Management subscription and perform a JSON schema validation of the returned subscription data structure + ... Test objective: The objective is to test the retrieval of Policy Management subscription and perform a JSON schema validation of the returned PolicySubscription data structure ... Pre-conditions: At least one policy management subscription is available in the NFV-MANO. ... Reference: Clause 5.5.8.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO @@ -44,7 +44,7 @@ GET Information about an individual subscription - NOT FOUND PUT an individual subscription - Method not implemented [Documentation] Test ID: 10.3.1.7.4 ... Test title: PUT an individual subscription - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented + ... Test objective: The objective is to test that PUT method is not implemented for this resource. ... Pre-conditions: none ... Reference: Clause 5.5.8.3.3 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO @@ -56,7 +56,7 @@ PUT an individual subscription - Method not implemented PATCH an individual subscription - Method not implemented [Documentation] Test ID: 10.3.1.7.5 ... Test title: PATCH an individual subscription - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented + ... Test objective: The objective is to test that PATCH method is not implemented for this resource. ... Pre-conditions: none ... Reference: Clause 5.5.8.3.4 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO @@ -73,7 +73,7 @@ DELETE an individual subscription ... Reference: Clause 5.5.8.3.5 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The Policy Management subscription is not available anymore in the NFV-MANO. + ... Post-Conditions: The Policy Management subscription is no longer available in the NFV-MANO. DELETE Individual Subscription Check HTTP Response Status Code Is 204 Check Postcondition Individual Subscription is Deleted \ No newline at end of file diff --git a/SOL012/PolicyManagement-API/NotificationConsumer.robot b/SOL012/PolicyManagement-API/NotificationConsumer.robot index 55050f1a4..80097e51a 100644 --- a/SOL012/PolicyManagement-API/NotificationConsumer.robot +++ b/SOL012/PolicyManagement-API/NotificationConsumer.robot @@ -49,7 +49,7 @@ Test the Notification Endpoint - UNREACHABLE ... Config ID: Config_prod_Notif_Endpoint ... Applicability: The notification endpoint is unreachable by the API producer. ... Post-Conditions: none - GET reach the notification endpoint + GET reach an unreachable notification endpoint Check HTTP Response Status Code Is 422 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL012/PolicyManagement-API/ParticularVersionOfAnIndividualPolicy.robot b/SOL012/PolicyManagement-API/ParticularVersionOfAnIndividualPolicy.robot index 9894f0274..5c97dad14 100644 --- a/SOL012/PolicyManagement-API/ParticularVersionOfAnIndividualPolicy.robot +++ b/SOL012/PolicyManagement-API/ParticularVersionOfAnIndividualPolicy.robot @@ -15,10 +15,10 @@ POST Particular Version of an Individual Policy - Method not implemented POST Particular Version of an Individual Policy Check HTTP Response Status Code Is 405 -GET Information about the Particular Version of an Individual Policy - Successful +GET Information about a Particular Version of an Individual Policy - Successful [Documentation] Test ID: 10.3.1.5.2 - ... Test title: GET Information about the Particular Version of an Individual Policy - Successful - ... Test objective: The objective is to test The GET method fetches the content of the Particular version of an individual policy. + ... Test title: GET Information about a Particular Version of an Individual Policy - Successful + ... Test objective: The objective is to test that GET method fetches the content of a particular version of an individual policy. ... Pre-conditions: Individual policy is available in the NFV-MANO. Policy contents are provided in the json/PolicyContent folder. ... Reference: Clause 5.5.6.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO @@ -28,16 +28,16 @@ GET Information about the Particular Version of an Individual Policy - Successfu Check HTTP Response Status Code Is 200 Check that the Content-Type Header Is Set -GET Information about the Particular Version of an Individual Policy - NOT FOUND +GET Information about a Particular Version of an Individual Policy - NOT FOUND [Documentation] Test ID: 10.3.1.5.3 - ... Test title: GET Information about the Particular Version of an Individual Policy - NOT FOUND - ... Test objective: The objective is to test that the information about the Particular version of an individual policy fails when using an invalid resource identifier. - ... Pre-conditions: The API producer did not find the current representation for the target resource. + ... Test title: GET Information about a Particular Version of an Individual Policy - NOT FOUND + ... Test objective: The objective is to test that the information about a particular version of an individual policy fails when using an invalid resource identifier. + ... Pre-conditions: none ... Reference: Clause 5.5.6.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - GET Particular Version of an Individual Policy + GET Particular Version of an Individual Policy with Invalid URI Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails @@ -62,7 +62,7 @@ PUT Particular Version of an individual policy - CONFLICT ... Config ID: Config_prod_NFV-MANO ... Applicability: The policy content type is either JSON, YAML or ZIP. ... Post-Conditions: none - PUT Particular Version of an Individual Policy + PUT Particular Version of an Individual Policy CONFLICT Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL012/PolicyManagement-API/Policies.robot b/SOL012/PolicyManagement-API/Policies.robot index 88678f31c..6e76d17b4 100644 --- a/SOL012/PolicyManagement-API/Policies.robot +++ b/SOL012/PolicyManagement-API/Policies.robot @@ -33,7 +33,7 @@ GET Policies GET Policies - Filter [Documentation] Test ID: 10.3.1.2.3 ... Test title: GET Policies - Filter - ... Test objective: The objective is GET the list of existing policies using a filter. + ... Test objective: The objective is to GET the list of existing policies using a filter. ... Pre-conditions: none ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO @@ -46,7 +46,7 @@ GET Policies - Filter GET Policies - Bad Request Invalid attribute-based filtering parameters [Documentation] Test ID: 10.3.1.2.4 ... Test title: GET Policies - Bad Request Invalid attribute-based filtering parameters - ... Test objective: The objective is GET the list of existing policies using an invalid filter. + ... Test objective: The objective is to GET the list of existing policies using an invalid filter. ... Pre-conditions: none ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO @@ -137,7 +137,7 @@ GET Policies with "exclude_default" and "fields" attribute selector GET Policies as Paged Response [Documentation] Test ID: 10.3.1.2.11 ... Test title: GET Policies as Paged Response - ... Test objective: The objective is to test that GET method retrieve the list of existing policies as paged response. + ... Test objective: The objective is to test that GET method retrieves the list of existing policies as paged response. ... Pre-conditions: none ... Reference: Clause 5.5.3.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index 3a14187ef..2de04c799 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -382,6 +382,14 @@ GET reach the notification endpoint ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +GET reach an unreachable notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${unreachable_uri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + PUT notification endpoint Log Trying to perform a PUT. This method should not be implemented. Set Headers {"Accept": "${ACCEPT}"} @@ -621,6 +629,14 @@ GET Selected Version of an Individual Policy ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +GET Selected Version of an Individual Policy in CREATED state + log Trying to get information about the selected version of an individual policy which is in CREATED state + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/policies/${policyIdInCreatedState}/selected_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + PUT Selected Version of an Individual Policy log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -665,6 +681,14 @@ GET Particular Version of an Individual Policy ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +GET Particular Version of an Individual Policy with Invalid URI + log Trying to get information about a particular version of an individual policy with invalid policyId + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/policies/${invalidPolicyId}/versions/${policyVersion} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + PUT Particular Version of an Individual Policy Log Using PUT method to transfer the content of a particular version of an individual policy. Set Headers {"Accept":"${ACCEPT}"} @@ -676,6 +700,17 @@ PUT Particular Version of an Individual Policy ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +PUT Particular Version of an Individual Policy CONFLICT + Log Using PUT method to transfer the content of a particular version of an already transferred policy. + Set Headers {"Accept":"${ACCEPT}"} + Determine Policy Content Type + Set Headers {"Content-Type": "${POLICY_CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get File ${POLICY_CONTENT_FILENAME} + Put ${apiRoot}/${apiName}/${apiVersion}/policies/${policyIdAlreadyTransferred}/versions/${policyVersion} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + PATCH Particular Version of an Individual Policy log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot b/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot index 8e2603f4d..8a3c163ab 100644 --- a/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot +++ b/SOL012/PolicyManagement-API/SelectedVersionOfAnIndividualPolicy.robot @@ -18,7 +18,7 @@ POST Selected Version of an Individual Policy - Method not implemented GET Information about the Selected Version of an Individual Policy - Successful [Documentation] Test ID: 10.3.1.4.2 ... Test title: GET Information about the Selected Version of an Individual Policy - Successful - ... Test objective: The objective is to test The GET method fetches the content of the selected version of an individual policy. + ... Test objective: The objective is to test The GET method fetches contents of the selected version of an individual policy and check that the HTTP Content-Type header is set according to the type of content. ... Pre-conditions: Individual policy is available in the NFV-MANO. Policy contents are provided in the json/PolicyContent folder. ... Reference: Clause 5.5.5.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO @@ -45,12 +45,12 @@ GET Information about the Selected Version of an Individual Policy - CREATED STA [Documentation] Test ID: 10.3.1.4.4 ... Test title: GET Information about the Selected Version of an Individual Policy - NOT FOUND ... Test objective: The objective is to test that the information about the selected version of an individual policy is not retrieved when it is in CREATED state. - ... Pre-conditions: The individual policy is in CREATED state. + ... Pre-conditions: none ... Reference: Clause 5.5.5.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - GET Selected Version of an Individual Policy + GET Selected Version of an Individual Policy in CREATED STATE Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL012/PolicyManagement-API/Subscriptions.robot b/SOL012/PolicyManagement-API/Subscriptions.robot index ccbaa5620..2e10d4b89 100644 --- a/SOL012/PolicyManagement-API/Subscriptions.robot +++ b/SOL012/PolicyManagement-API/Subscriptions.robot @@ -40,10 +40,10 @@ POST Create a new Subscription - UNPROCESSABLE ENTITY [Documentation] Test ID: 10.3.1.6.3 ... Test title: POST Create a new Subscription - UNPROCESSABLE ENTITY ... Test objective: The objective is to test that correct error code is generated when data in the request body cannot be processed. - ... Pre-conditions: Request body contains invalid schema. + ... Pre-conditions: none ... Reference: Clause 5.5.7.3.1 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: none + ... Applicability: Callback URI is not reachable by the API producer. ... Post-Conditions: none POST subscriptions with Invalid Request Check HTTP Response Status Code Is 422 @@ -52,7 +52,7 @@ POST Create a new Subscription - UNPROCESSABLE ENTITY GET Subscriptions [Documentation] Test ID: 10.3.1.6.4 ... Test title: GET Subscriptions - ... Test objective: The objective is to test that GET method retrieves the list of existing subscriptions + ... Test objective: The objective is to test that GET method retrieves the list of existing subscriptions. ... Pre-conditions: none ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO @@ -65,7 +65,7 @@ GET Subscriptions GET Subscription - Filter [Documentation] Test ID: 10.3.1.6.5 ... Test title: GET Subscription - Filter - ... Test objective: The objective is GET the list of active subscriptions using a filter + ... Test objective: The objective is to GET the list of active subscriptions using a filter. ... Pre-conditions: none ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO @@ -78,7 +78,7 @@ GET Subscription - Filter GET subscriptions - Bad Request Invalid attribute-based filtering parameters [Documentation] Test ID: 10.3.1.6.6 ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters - ... Test objective: The objective is GET the list of active subscriptions using an invalid filter + ... Test objective: The objective is to GET the list of active subscriptions using an invalid filter. ... Pre-conditions: none ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO @@ -156,7 +156,7 @@ GET subscriptions with "exclude_fields" attribute selector GET Subscriptions as Paged Response [Documentation] Test ID: 10.3.1.6.12 ... Test title: GET Subscriptions as Paged Response - ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions as paged response. + ... Test objective: The objective is to test that GET method retrieves the list of existing subscriptions as paged response. ... Pre-conditions: none ... Reference: Clause 5.5.7.3.2 - ETSI GS NFV-SOL 012 [7] v3.4.1 ... Config ID: Config_prod_NFV-MANO diff --git a/SOL012/PolicyManagement-API/environment/variables.txt b/SOL012/PolicyManagement-API/environment/variables.txt index 6665d6f96..edba991e9 100644 --- a/SOL012/PolicyManagement-API/environment/variables.txt +++ b/SOL012/PolicyManagement-API/environment/variables.txt @@ -41,6 +41,7 @@ ${sleep_interval} 20s ${total_polling_time} 2 min ${polling_interval} 10 sec +${unreachable_uri} http://not-reachable-uri ${notification_request} [] ${notification_response} [] @@ -49,6 +50,8 @@ ${policyId1} ${policyId2} ${policyVersion} ${policyIdInActivatedStatus} +${policyIdInCreatedState} +${policyIdAlreadyTransferred} ${invalidPolicyId} invalid-policy-id ${callbackResp} 127.0.0.1 -- GitLab From 497b6489a1593030001ef88c2f45cc647339ff00 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 2 Jul 2020 10:16:57 +0200 Subject: [PATCH 405/580] added SOL009 folder --- SOL009/README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 SOL009/README.md diff --git a/SOL009/README.md b/SOL009/README.md new file mode 100644 index 000000000..8554b3f0e --- /dev/null +++ b/SOL009/README.md @@ -0,0 +1,13 @@ +# NFV API Tests + +This folder includes the NFV API conformance test descriptions for NFV SOL009 APIs. + +The reference spec version is v3.3.1: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/009/03.03.01_60/gs_NFV-SOL009v030301p.pdf + +## License + +Any software in this repository is released under the ETSI Software License. +Licensing information is available in the attached LICENSE file. + + +Copyright (c) ETSI 2018 -- GitLab From fb10c6bf1569fb6adda3c221e06a82ff53497425 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 7 Jul 2020 10:40:27 +0500 Subject: [PATCH 406/580] variables added --- .../environment/variables.txt | 17 ++++++++++ .../schemas/ProblemDetails.schema.json | 34 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 SOL009/NFVMANOFaultManagement-API/environment/variables.txt create mode 100644 SOL009/NFVMANOFaultManagement-API/schemas/ProblemDetails.schema.json diff --git a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt new file mode 100644 index 000000000..71a0f5511 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt @@ -0,0 +1,17 @@ +*** Variables *** +${NFVMANO_HOST} localhost # Hostname of the NFV-MANO +${NFVMANO_PORT} 8080 # Listening port of the NFV-MANO +${NFVMANO_SCHEMA} https +${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== +${CONTENT_TYPE} application/json +${ACCEPT} application/json +${ACCEPT_JSON} application/json +${AUTH_USAGE} 1 + +${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX +${apiRoot} / +${apiName} nfvmanofm +${apiVersion} v1 + + + diff --git a/SOL009/NFVMANOFaultManagement-API/schemas/ProblemDetails.schema.json b/SOL009/NFVMANOFaultManagement-API/schemas/ProblemDetails.schema.json new file mode 100644 index 000000000..62f176127 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/schemas/ProblemDetails.schema.json @@ -0,0 +1,34 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "properties": { + "type": { + "type": "string", + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "format": "URI" + }, + "title": { + "type": "string", + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n" + }, + "status": { + "type": "integer", + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n" + }, + "detail": { + "type": "string", + "description": "A human-readable explanation specific to this occurrence of the problem.\n" + }, + "instance": { + "type": "string", + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "format": "URI" + } + }, + "required": [ + "status", + "detail" + ] +} \ No newline at end of file -- GitLab From 6eed89f9e896e64b3dc3366fcbbcafb1666bbb6f Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 8 Jul 2020 07:19:24 +0500 Subject: [PATCH 407/580] Added Test Case for Alarms.robot --- .../NFVMANOFaultManagement-API/Alarms.robot | 125 ++++++++++++++++++ .../FaultManagement-APIKeyword.robot | 95 +++++++++++++ .../environment/variables.txt | 8 +- 3 files changed, 227 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVMANOFaultManagement-API/Alarms.robot create mode 100644 SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot diff --git a/SOL009/NFVMANOFaultManagement-API/Alarms.robot b/SOL009/NFVMANOFaultManagement-API/Alarms.robot new file mode 100644 index 000000000..85e1dc22a --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/Alarms.robot @@ -0,0 +1,125 @@ +*** Settings *** +Resource environment/variables.txt +Resource FaultManagement-APIKeyword.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library OperatingSystem + + +*** Test Cases *** +POST Alarms - Method not implemented + [Documentation] Test ID: 8.3.3.1.1 + ... Test title: POST Alarms - Method not implemented + ... Test objective: The objective is to test that Post method is not allowed to create Fault management alarms on NFV-MANO + ... Pre-conditions: none + ... Reference: clause 7.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send POST request for fault management Alarms + Check HTTP Response Status Code Is 405 + +Get information about multiple alarms + [Documentation] Test ID: 8.3.3.1.2 + ... Test title: Get information about multiple alarms + ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure + ... Pre-conditions: none + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Fault Management Alarms + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Alarms + +Get information about multiple alarms with filter + [Documentation] Test ID: 8.3.3.1.3 + ... Test title: Get information about multiple alarms with filter + ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters + ... Pre-conditions: none + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Fault Management Alarms With Filters + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Alarms + +Get information about multiple alarms Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 8.3.3.1.4 + ... Test title: Get information about multiple alarms Bad Request Invalid attribute-based filtering parameters + ... Test objective: The objective is to try to retrieve information about the alarm list with invalid filters and perform a JSON schema and content validation of the returned problem details data structure + ... Pre-conditions: none + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Fault Management Alarms With Invalid Filters + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + + +Get information about multiple alarms as a Paged Response + [Documentation] Test ID: 8.3.3.1.5 + ... Test title: Get information about multiple alarms as a Paged Response + ... Test objective: The objective is to retrieve information about the alarm list as a Paged Response + ... Pre-conditions: none + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Fault Management Alarms + Check HTTP Response Status Code Is 200 + Check LINK in Header + +Get information about multiple alarms - Bad Request Response too Big + [Documentation] Test ID: 8.3.3.1.6 + ... Test title: Get information about multiple alarms - Bad Request Response too Big + ... Test objective: The objective is to try to retrieve information about the alarm list because response is too big and perform a JSON schema and content validation of the returned problem details data structure + ... Pre-conditions: none + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Fault Management Alarms + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Alarms - Method not implemented + [Documentation] Test ID: 8.3.3.1.7 + ... Test title: PUT Alarms - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to for Fault management alarms on NFV-MANO + ... Pre-conditions: none + ... Reference: clause 7.5.3.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT Fault management Alarms + Check HTTP Response Status Code Is 405 + +PATCH Alarms - Method not implemented + [Documentation] Test ID: 8.3.3.1.8 + ... Test title: PATCH Alarms - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to for Fault management alarms on NFV-MANO + ... Pre-conditions: none + ... Reference: clause 7.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH Fault management Alarms + Check HTTP Response Status Code Is 405 + +DELETE Alarms - Method not implemented + [Documentation] Test ID: 8.3.3.1.9 + ... Test title: POST Alarms - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed for Fault management alarms on NFV-MANO + ... Pre-conditions: none + ... Reference: clause 7.5.3.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE Fault management Alarms + Check HTTP Response Status Code Is 405 + Check Postcondition NFV-MANO fault management alarms Exists + \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot new file mode 100644 index 000000000..f2e0d5bfa --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -0,0 +1,95 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library OperatingSystem + + +Library Process + +*** Variables *** + + +*** Keywords *** + +Send POST request for fault management Alarms + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Log Validate Status code + Should Be Equal ${response[0]['status']} ${expected_status} + Log Status code validated + +GET Fault Management Alarms + Log Query NFVO The GET method queries information about multiple alarms. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response[0]['body']} + Log Json Schema Validation OK + +GET Fault Management Alarms With Filters + Log Query NFVO The GET method queries information about multiple alarms with filters. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${alarm_filter}=${managedObjectId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +GET Fault Management Alarms With Invalid Filters + Log Query NFVO The GET method queries information about multiple alarms with filters. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${invalid_alarm_filter}=${managedObjectId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Check LINK in Header + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + +PATCH Fault management Alarms + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms + ${outputResponse} = Output response + Set Global Variable @{response} ${outputResponse} + +PUT Fault management Alarms + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +DELETE Fault management Alarms + log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Check Postcondition NFV-MANO fault management alarms Exists + Log Checking that alarms exists + GET Fault Management Alarms + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Alarms \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt index 71a0f5511..83f640338 100644 --- a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt @@ -11,7 +11,13 @@ ${AUTH_USAGE} 1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX ${apiRoot} / ${apiName} nfvmanofm -${apiVersion} v1 +${apiMajorVersion} v1 + +${response} {} + +${alarm_filter} managedObjectId +${managedObjectId} 007c111c-38a1-42c0-a666-7475ecb1567c +${invalid_alarm_filter} badFilter -- GitLab From 7afb3303f2dd9f9f12cedfc910c663fdb399afa0 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 8 Jul 2020 12:10:37 +0500 Subject: [PATCH 408/580] Added Test Cases for IndiviualAlarm.robot --- .../FaultManagement-APIKeyword.robot | 78 ++++++++++++- .../IndividualAlarm.robot | 104 ++++++++++++++++++ .../environment/variables.txt | 8 ++ 3 files changed, 188 insertions(+), 2 deletions(-) create mode 100644 SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot index f2e0d5bfa..9633d085f 100644 --- a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -9,7 +9,7 @@ Library OperatingSystem Library Process *** Variables *** - +${original_etag} 1234 *** Keywords *** @@ -92,4 +92,78 @@ Check Postcondition NFV-MANO fault management alarms Exists Log Checking that alarms exists GET Fault Management Alarms Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is Alarms \ No newline at end of file + Check HTTP Response Body Json Schema Is Alarms + +Send POST request for fault management Individual Alarm + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +GET Fault Management Individual Alarm + Log Query VNF The GET method queries information about an alarm. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} + ${etag} Output response headers ETag + Set Suite Variable &{original_etag} ${etag} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +PUT Fault Management Individual Alarm + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Check Postcondition fault management individual alarm Exists + Log Checking that individual alarm exists + GET Fault Management Individual Alarm + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is alarm + +PATCH Fault Management Individual Alarm + log Trying to perform a PATCH. This method modifies an individual alarm resource + 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/alarmModifications.json + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +PATCH Fault Management Individual Alarm - precondition failed + log Trying to perform a PATCH. This method modifies an individual alarm resource + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"If-Match": "${original_etag[0]}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/alarmModifications.json + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +PATCH Fault Management Individual Alarm Conflict + log Trying to perform a PATCH. This method modifies an individual alarm resource + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"If-Match": "${Etag}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/alarmModifications.json + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +DELETE Fault Management Individual Alarm + log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot new file mode 100644 index 000000000..bd96fbc20 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot @@ -0,0 +1,104 @@ +*** Settings *** +Resource environment/variables.txt +Resource FaultManagement-APIKeyword.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library DependencyLibrary + + + +*** Test Cases *** +POST Alarm - Method not implemented + [Documentation] Test ID: 8.3.3.2.1 + ... Test title: POST Alarm - Method not implemented + ... Test objective: The objective is to test that Post method is not allowed to create Fault management individual alarm on NFV-MANO + ... Pre-conditions: none + ... Reference: clause 7.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send POST request for fault management Individual Alarm + Check HTTP Response Status Code Is 405 + +Get information about an fault management individual alarm + [Documentation] Test ID: 8.3.3.2.2 + ... Test title: Get information about an fault management individual alarm + ... Test objective: The objective is to retrieve information about an individual alarm and perform a JSON schema and content validation of the returned alarm data structure + ... Pre-conditions: The related alarm exists + ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Fault Management Individual Alarm + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is alarm + +PUT Alarm - Method not implemented + [Documentation] Test ID: 8.3.3.2.3 + ... Test title: PUT Alarm - Method not implemented + ... Test objective: he objective is to test that PUT method is not allowed to for Fault management individual alarm on NFV-MANO + ... Pre-conditions: The related alarm exists + ... Reference: clause 7.5.4.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT Fault Management Individual Alarm + Check HTTP Response Status Code Is 405 + +PATCH Fault Management Individual Alarm + [Documentation] Test ID: 8.3.3.2.4 + ... Test title: PATCH Fault Management Individual Alarm + ... Test objective: The objective is to Modify an individual alarm resource and perform a JSON schema and content validation of the returned alarm data structure + ... Pre-conditions: The related alarm exists + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Check Postcondition fault management individual alarm Exists + PATCH Fault Management Individual Alarm + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is alarmModification + +Modify an individual alarm resource - Precondition failed + [Documentation] Test ID: 8.3.3.2.5 + ... Test title: Modify an individual alarm resource - Precondition failed + ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set + ... Pre-conditions: The related alarm exists + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Check Postcondition fault management individual alarm Exists + PATCH Fault Management Individual Alarm - precondition failed + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +Modify an individual alarm resource - Conflict + [Documentation] Test ID: 8.3.3.2.6 + ... Test title: Modify an individual alarm resource - Conflict + ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the resource was modified by another entity + ... Pre-conditions: The related alarm exists + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Depends On Test PATCH Fault Management Individual Alarm + Check Postcondition fault management individual alarm Exists + PATCH Fault Management Individual Alarm Conflict + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails + +DELETE Alarm - Method not implemented + [Documentation] Test ID: 8.3.3.2.7 + ... Test title: DELETE Alarm - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management individual alarm on NFV-MANO + ... Pre-conditions: nona + ... Reference: clause 7.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The individual alarm still exists + DELETE Fault Management Individual Alarm + Check HTTP Response Status Code Is 405 + Check Postcondition fault management individual alarm Exists \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt index 83f640338..f06277a9a 100644 --- a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt @@ -14,10 +14,18 @@ ${apiName} nfvmanofm ${apiMajorVersion} v1 ${response} {} +${CONTENT_TYPE_PATCH} application/merge-patch+json ${alarm_filter} managedObjectId ${managedObjectId} 007c111c-38a1-42c0-a666-7475ecb1567c ${invalid_alarm_filter} badFilter +${alarmId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d + +${Etag}= an etag +${Etag_modified}= a modified etag + + + -- GitLab From 5fc21a37e567da1f6ee3836c761df7fe918d9bff Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 9 Jul 2020 07:08:45 +0500 Subject: [PATCH 409/580] Added Schemas --- .../IndividualAlarm.robot | 2 +- .../schemas/AlarmModification.schema.json | 16 ++ .../schemas/Alarms.schema.json | 171 ++++++++++++++++++ .../schemas/alarm.schema.json | 168 +++++++++++++++++ 4 files changed, 356 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVMANOFaultManagement-API/schemas/AlarmModification.schema.json create mode 100644 SOL009/NFVMANOFaultManagement-API/schemas/Alarms.schema.json create mode 100644 SOL009/NFVMANOFaultManagement-API/schemas/alarm.schema.json diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot index bd96fbc20..ab533b017 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot @@ -59,7 +59,7 @@ PATCH Fault Management Individual Alarm Check Postcondition fault management individual alarm Exists PATCH Fault Management Individual Alarm Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is alarmModification + Check HTTP Response Body Json Schema Is AlarmModification Modify an individual alarm resource - Precondition failed [Documentation] Test ID: 8.3.3.2.5 diff --git a/SOL009/NFVMANOFaultManagement-API/schemas/AlarmModification.schema.json b/SOL009/NFVMANOFaultManagement-API/schemas/AlarmModification.schema.json new file mode 100644 index 000000000..8075efd71 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/schemas/AlarmModification.schema.json @@ -0,0 +1,16 @@ +{ + "description": "This type represents attribute modifications for an \"Individual alarm\" resource, i.e. modifications to a resource representation based on the \"Alarm\" data type. The attributes of \"Alarm\" that can be modified are included in the \"AlarmModifications\" data type.\n", + "type": "object", + "required": [ + "ackState" + ], + "properties": { + "ackState": { + "description": "New value of the \"ackState\" attribute in \"Alarm\". Permitted values: * ACKNOWLEDGED\n", + "type": "string", + "enum": [ + "ACKNOWLEDGED" + ] + } + } + } \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/schemas/Alarms.schema.json b/SOL009/NFVMANOFaultManagement-API/schemas/Alarms.schema.json new file mode 100644 index 000000000..612a328d2 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/schemas/Alarms.schema.json @@ -0,0 +1,171 @@ +{ + "type": "array", + "items": { + "description": "The alarm data type encapsulates information about an alarm.\n", + "type": "object", + "required": [ + "id", + "managedObjectId", + "alarmRaisedTime", + "ackState", + "perceivedSeverity", + "eventTime", + "eventType", + "probableCause", + "isRootCause", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "managedObjectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedFaultyInstanceId": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + }, + "alarmRaisedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmChangedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmClearedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "ackState": { + "description": "Acknowledgement state of the alarm. Permitted values: * UNACKNOWLEDGED * ACKNOWLEDGED.\n", + "type": "string", + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] + }, + "perceivedSeverity": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + }, + "eventTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "eventType": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + }, + "faultType": { + "description": "Additional information to clarify the type of the fault.\n", + "type": "string" + }, + "probableCause": { + "description": "Information about the probable cause of the fault.\n", + "type": "string" + }, + "isRootCause": { + "description": "Attribute indicating if this fault is the root for other correlated alarms. If true, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", + "type": "boolean" + }, + "correlatedAlarmIds": { + "description": "List of identifiers of other alarms correlated to this fault.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "faultDetails": { + "description": "Provides additional information about the fault.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objectInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/schemas/alarm.schema.json b/SOL009/NFVMANOFaultManagement-API/schemas/alarm.schema.json new file mode 100644 index 000000000..51a3853d1 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/schemas/alarm.schema.json @@ -0,0 +1,168 @@ +{ + "description": "The alarm data type encapsulates information about an alarm.\n", + "type": "object", + "required": [ + "id", + "managedObjectId", + "alarmRaisedTime", + "ackState", + "perceivedSeverity", + "eventTime", + "eventType", + "probableCause", + "isRootCause", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "managedObjectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedFaultyInstanceId": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + }, + "alarmRaisedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmChangedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmClearedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "ackState": { + "description": "Acknowledgement state of the alarm. Permitted values: * UNACKNOWLEDGED * ACKNOWLEDGED.\n", + "type": "string", + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] + }, + "perceivedSeverity": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + }, + "eventTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "eventType": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + }, + "faultType": { + "description": "Additional information to clarify the type of the fault.\n", + "type": "string" + }, + "probableCause": { + "description": "Information about the probable cause of the fault.\n", + "type": "string" + }, + "isRootCause": { + "description": "Attribute indicating if this fault is the root for other correlated alarms. If true, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", + "type": "boolean" + }, + "correlatedAlarmIds": { + "description": "List of identifiers of other alarms correlated to this fault.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "faultDetails": { + "description": "Provides additional information about the fault.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objectInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } \ No newline at end of file -- GitLab From 1934db57566703bb2f769f451aadf576ec69af13 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 9 Jul 2020 11:32:22 +0500 Subject: [PATCH 410/580] Fault Management API added --- .../SOL009-NFVMANOFaultManagement-API.json | 8388 +++++++++++ .../SOL009-NFVMANOFaultManagement-API.yaml | 12122 ++++++++++++++++ 2 files changed, 20510 insertions(+) create mode 100644 SOL009/NFVMANOFaultManagement-API/SOL009-NFVMANOFaultManagement-API.json create mode 100644 SOL009/NFVMANOFaultManagement-API/SOL009-NFVMANOFaultManagement-API.yaml diff --git a/SOL009/NFVMANOFaultManagement-API/SOL009-NFVMANOFaultManagement-API.json b/SOL009/NFVMANOFaultManagement-API/SOL009-NFVMANOFaultManagement-API.json new file mode 100644 index 000000000..cc8839c02 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/SOL009-NFVMANOFaultManagement-API.json @@ -0,0 +1,8388 @@ +{ + "openapi": "3.0.2", + "info": { + "version": "1.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1", + "title": "SOL009 - NFV-MANO Fault Management interface", + "description": "SOL009 - NFV-MANO Fault Management interface\nIMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it refers to. In case of discrepancies the published ETSI Group Specification takes precedence.\nPlease report bugs to https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis&list_id=61&product=NFV&resolution=\n", + "license": { + "name": "ETSI Forge copyright notice", + "url": "https://forge.etsi.org/etsi-forge-copyright-notice.txt" + } + }, + "externalDocs": { + "description": "ETSI GS NFV-SOL 009 V3.3.1", + "url": "https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/009/03.03.01_60/gs_NFV-SOL009v030301p.pdf" + }, + "servers": [ + { + "url": "http://127.0.0.1/nfvmanofm/v1" + }, + { + "url": "https://127.0.0.1/nfvmanofm/v1" + } + ], + "paths": { + "/api_versions": { + "parameters": [ + { + "name": "Version", + "description": "Version of the API requested to use when responding to this request.\n", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Authorization", + "description": "The authorization token for the request. Reference: IETF RFC 7235", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + } + ], + "get": { + "summary": "Retrieve API version information", + "description": "The GET method reads API version information. This method shall follow the provisions specified in table 4.6.3.3.3.2-1 for request and response data structures, and response codes. URI query parameters are not supported.\n", + "responses": { + "200": { + "description": "200 OK\nAPI version information was read successfully. The response body shall contain 4.4 API version information, as defined in clause 4.4.1.13.\n", + "content": { + "application/json": { + "schema": { + "description": "This type represents API version information.\n", + "type": "object", + "required": [ + "uriPrefix", + "apiVersions" + ], + "properties": { + "uriPrefix": { + "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", + "type": "string" + }, + "apiVersions": { + "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", + "type": "string" + }, + "isDeprecated": { + "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", + "type": "boolean" + }, + "retirementDate": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + } + } + } + } + } + } + } + }, + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "The used API version.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + } + }, + "400": { + "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "401": { + "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "403": { + "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "404": { + "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "405": { + "description": "405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "406": { + "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "413": { + "description": "413 PAYLOAD TOO LARGE\nIf the payload body of a request is larger than the amount of data the API producer is willing or able to process, it shall respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for closing the connection. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "414": { + "description": "414 URI TOO LONG\nIf the request URI of a request is longer than the API producer is willing or able to process, it shall respond with this response code. This condition can e.g. be caused by passing long queries in the request URI of a GET request. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "416": { + "description": "416 Range Not Satisfiable\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "422": { + "description": "422 UNPROCESSABLE ENTITY\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nThis error response code is only applicable for methods that have a request body.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "429": { + "description": "429 TOO MANY REQUESTS\nIf the API consumer has sent too many requests in a defined period of time and the API producer is able to detect that condition (\"rate limiting\"), the API producer shall respond with this response code, following the provisions in IETF RFC 6585 [17] for the use of the \"Retry-After\" HTTP header. The \"ProblemDetails\" structure shall be provided and shall include in the \"detail\" attribute more information about the source of the problem.\nThe period of time and allowed number of requests are configured within the API producer by means outside the scope of the present document.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "500": { + "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "503": { + "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "504": { + "description": "504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + } + } + } + }, + "/alarms": { + "get": { + "description": "Get Alarm List. The client can use this method to retrieve information about the alarm list. This method shall follow the provisions specified in the tables 7.5.3.3.2-1 and 7.5.3.3.2-2 for URI query parameters, request and response data structures, and response codes.\n", + "parameters": [ + { + "name": "Version", + "description": "Version of the API requested to use when responding to this request.\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Accept", + "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231.\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Authorization", + "description": "The authorization token for the request. Reference: IETF RFC 7235.\n", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "description": "Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support receiving this parameter as part of the URI query string. The API consumer may supply this parameter. All attribute names that appear in the FmSubscription and in data types referenced from it shall be supported by the NFV-MANO functional entity in the filter expression.\n", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "nextpage_opaque_marker", + "description": "Marker to obtain the next page of a paged response. Shall be supported by the NFV-MANO functional entity if the entity supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource.\n", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "200 OK\nShall be returned when information about zero or more alarms has been queried successfully. The response body shall contain in an array the representations of zero or more alarms as defined in clause 7.6.2.4. If the \"filter\" URI parameter was supplied in the request, the data in the response body shall have been transformed according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013. If the NFV-MANO functional entity supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, inclusion of the Link HTTP header in this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "Link": { + "description": "Reference to other resources. Used for paging in the present document.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "The alarm data type encapsulates information about an alarm.\n", + "type": "object", + "required": [ + "id", + "managedObjectId", + "alarmRaisedTime", + "ackState", + "perceivedSeverity", + "eventTime", + "eventType", + "probableCause", + "isRootCause", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "managedObjectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedFaultyInstanceId": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + }, + "alarmRaisedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmChangedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmClearedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "ackState": { + "description": "Acknowledgement state of the alarm. Permitted values: * UNACKNOWLEDGED * ACKNOWLEDGED.\n", + "type": "string", + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] + }, + "perceivedSeverity": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + }, + "eventTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "eventType": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + }, + "faultType": { + "description": "Additional information to clarify the type of the fault.\n", + "type": "string" + }, + "probableCause": { + "description": "Information about the probable cause of the fault.\n", + "type": "string" + }, + "isRootCause": { + "description": "Attribute indicating if this fault is the root for other correlated alarms. If true, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", + "type": "boolean" + }, + "correlatedAlarmIds": { + "description": "List of identifiers of other alarms correlated to this fault.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "faultDetails": { + "description": "Provides additional information about the fault.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objectInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "401": { + "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "403": { + "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "404": { + "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "405": { + "description": "405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "406": { + "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "422": { + "description": "422 UNPROCESSABLE ENTITY\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nThis error response code is only applicable for methods that have a request body.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "500": { + "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "503": { + "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "504": { + "description": "504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + } + } + } + }, + "/alarms/{alarmId}": { + "parameters": [ + { + "name": "alarmId", + "description": "Identifier of the alarm. This identifier can be retrieved from the \"id\" attribute of the \"alarm\" attribute in the AlarmNotification or AlarmClearedNotification. It can also be retrieved from the \"id\" attribute of the applicable array element in the payload body of the response to a GET request to the \"Alarms\" resource.\n", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "description": "The client can use this method to read an individual alarm. This method shall follow the provisions specified in the tables 7.5.4.3.2-1 and 7.5.4.3.2-2 for URI query parameters, request and response data structures, and response codes.\n", + "parameters": [ + { + "name": "Version", + "description": "Version of the API requested to use when responding to this request.\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Accept", + "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231.\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Authorization", + "description": "The authorization token for the request. Reference: IETF RFC 7235.\n", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "200 OK\nShall be returned when information about an individual alarm has been read successfully. The response body shall contain a representation of the individual alarm\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The alarm data type encapsulates information about an alarm.\n", + "type": "object", + "required": [ + "id", + "managedObjectId", + "alarmRaisedTime", + "ackState", + "perceivedSeverity", + "eventTime", + "eventType", + "probableCause", + "isRootCause", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "managedObjectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedFaultyInstanceId": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + }, + "alarmRaisedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmChangedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmClearedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "ackState": { + "description": "Acknowledgement state of the alarm. Permitted values: * UNACKNOWLEDGED * ACKNOWLEDGED.\n", + "type": "string", + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] + }, + "perceivedSeverity": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + }, + "eventTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "eventType": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + }, + "faultType": { + "description": "Additional information to clarify the type of the fault.\n", + "type": "string" + }, + "probableCause": { + "description": "Information about the probable cause of the fault.\n", + "type": "string" + }, + "isRootCause": { + "description": "Attribute indicating if this fault is the root for other correlated alarms. If true, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", + "type": "boolean" + }, + "correlatedAlarmIds": { + "description": "List of identifiers of other alarms correlated to this fault.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "faultDetails": { + "description": "Provides additional information about the fault.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objectInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "401": { + "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "403": { + "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "404": { + "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "405": { + "description": "405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "406": { + "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "422": { + "description": "422 UNPROCESSABLE ENTITY\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nThis error response code is only applicable for methods that have a request body.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "500": { + "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "503": { + "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "504": { + "description": "504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + } + } + }, + "patch": { + "description": "This method modifies an \"Individual alarm\" resource. This method shall follow the provisions specified in the tables 7.5.4.3.4-1 and 7.5.4.3.4-2 for URI query parameters, request and response data structures, and response codes.\n", + "parameters": [ + { + "name": "Version", + "description": "Version of the API requested to use when responding to this request.\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Accept", + "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231.\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Authorization", + "description": "The authorization token for the request. Reference: IETF RFC 7235.\n", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Content-Type", + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "The parameter for the alarm modification, as defined in clause 7.6.2.8. The Content-Type header shall be set to \"application/merge-patch+json\" according to IETF RFC 7396.\n", + "content": { + "application/json": { + "schema": { + "description": "This type represents attribute modifications for an \"Individual alarm\" resource, i.e. modifications to a resource representation based on the \"Alarm\" data type. The attributes of \"Alarm\" that can be modified are included in the \"AlarmModifications\" data type.\n", + "type": "object", + "required": [ + "ackState" + ], + "properties": { + "ackState": { + "description": "New value of the \"ackState\" attribute in \"Alarm\". Permitted values: * ACKNOWLEDGED\n", + "type": "string", + "enum": [ + "ACKNOWLEDGED" + ] + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "200 OK\nShall be returned when the request has been accepted and completed. ì The response body shall contain attribute modifications for an \"Individual alarm\" resource (see clause 7.6.2.4).\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "This type represents attribute modifications for an \"Individual alarm\" resource, i.e. modifications to a resource representation based on the \"Alarm\" data type. The attributes of \"Alarm\" that can be modified are included in the \"AlarmModifications\" data type.\n", + "type": "object", + "required": [ + "ackState" + ], + "properties": { + "ackState": { + "description": "New value of the \"ackState\" attribute in \"Alarm\". Permitted values: * ACKNOWLEDGED\n", + "type": "string", + "enum": [ + "ACKNOWLEDGED" + ] + } + } + } + } + } + }, + "400": { + "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "401": { + "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "403": { + "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "404": { + "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "405": { + "description": "405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "406": { + "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "409": { + "description": "409 CONFLICT\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "412": { + "description": "412 PRECONDITION FAILED\nError: A precondition given in an HTTP request header is not fulfilled. Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. The response body should contain a ProblemDetails structure, in which the \"detail\" attribute should convey more information about the error.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "422": { + "description": "422 UNPROCESSABLE ENTITY\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nThis error response code is only applicable for methods that have a request body.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "500": { + "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "503": { + "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "504": { + "description": "504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + } + } + } + }, + "/subscriptions": { + "post": { + "description": "Subscribe. The POST method creates a new subscription. This method shall follow the provisions specified in the tables 7.5.5.3.1-1 and 7.5.5.3.1-2 for URI query parameters, request and response data structures, and response codes. As the result of successfully executing this method, a new \"Individual subscription\" resource as defined in clause 7.5.6 shall have been created. This method shall not trigger any notification. Creation of two \"Individual subscription\" resources with the same callbackURI and the same filter can result in performance degradation and will provide duplicates of notifications to the API consumer, and might make sense only in very rare use cases. Consequently, the NFV-MANO functional entity may either allow creating a new \"Individual subscription\" resource if another \"Individual subscription\" resource with the same filter and callbackUri already exists (in which case it shall return the \"201 Created\" response code), or may decide to not create a duplicate \"Individual subscription\" resource (in which case it shall return a \"303 See Other\" response code referencing the existing \"Individual subscription\" resource with the same filter and callbackUri).\n", + "parameters": [ + { + "name": "Version", + "description": "Version of the API requested to use when responding to this request.\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Accept", + "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231.\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Authorization", + "description": "The authorization token for the request. Reference: IETF RFC 7235.\n", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "Content-Type", + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Details of the subscription to be created, as defined in clause 7.6.2.2.\n", + "content": { + "application/json": { + "schema": { + "description": "This type represents a subscription request related to notifications about NFV-MANO faults.\n", + "type": "object", + "required": [ + "callbackUri" + ], + "properties": { + "filter": { + "description": "This type represents a subscription filter related to notifications about NFV-MANO functional entity faults. It shall comply with the provisions defined in table 7.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * AlarmNotification * AlarmClearedNotification * AlarmListRebuiltNotification 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": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "authentication": { + "type": "object", + "required": [ + "authType" + ], + "properties": { + "authType": { + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials.\n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS", + "TLS_CERT" + ] + } + }, + "paramsBasic": { + "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "userName": { + "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + }, + "password": { + "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + } + } + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "201 CREATED\nShall be returned when the subscription has been created successfully. The response body shall contain a representation of the created \"Individual subscription\" resource. The HTTP response shall include a \"Location:\"\" HTTP header that points to the created \"Individual subscription\" resource.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "Location": { + "description": "The resource URI of the created subscription resource.\n", + "schema": { + "type": "string", + "format": "url", + "minimum": 1, + "maximum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "This type represents a subscription related to notifications about VNF faults.\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 NFV-MANO functional entity faults. It shall comply with the provisions defined in table 7.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * AlarmNotification * AlarmClearedNotification * AlarmListRebuiltNotification 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": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "303": { + "description": "303 See Other\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + } + }, + "400": { + "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "401": { + "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "403": { + "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "404": { + "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "405": { + "description": "405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "406": { + "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "422": { + "description": "422 UNPROCESSABLE ENTITY\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nThis error response code is only applicable for methods that have a request body.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "500": { + "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "503": { + "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "504": { + "description": "504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + } + } + }, + "get": { + "description": "Query Subscription Information\nThe client can use this method to retrieve the list of active subscriptions for NFV-MANO functional entity alarms subscribed by the client. It can be used e.g. for resynchronization after error situations. This method shall follow the provisions specified in the tables 7.5.5.3.2-1 and 7.5.5.3.2-2 for URI query parameters, request and response data structures, and response codes.\n", + "parameters": [ + { + "name": "Version", + "description": "Version of the API requested to use when responding to this request.\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Accept", + "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231.\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Authorization", + "description": "The authorization token for the request. Reference: IETF RFC 7235.\n", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "description": "Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support receiving this parameter as part of the URI query string. The API consumer may supply this parameter. All attribute names that appear in the FmSubscription and in data types referenced from it shall be supported by the NFV-MANO functional entity in the filter expression.\n", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "nextpage_opaque_marker", + "description": "Marker to obtain the next page of a paged response. Shall be supported by the NFV-MANO functional entity if the entity supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource.\n", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "200 OK\nShall be returned when the list of subscriptions has been queried successfully. The response body shall contain in an array the representations of all active subscriptions of the functional block that invokes the method, i.e. zero or more representations of FM subscriptions as defined in clause 7.6.2.3. If the \"filter\" URI parameter was supplied in the request, the data in the response body shall have been transformed according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013. If the NFV-MANO functional entity supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, inclusion of the Link HTTP header in this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "Link": { + "description": "Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "This type represents a subscription related to notifications about VNF faults.\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 NFV-MANO functional entity faults. It shall comply with the provisions defined in table 7.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * AlarmNotification * AlarmClearedNotification * AlarmListRebuiltNotification 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": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "401": { + "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "403": { + "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "404": { + "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "405": { + "description": "405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "406": { + "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "422": { + "description": "422 UNPROCESSABLE ENTITY\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nThis error response code is only applicable for methods that have a request body.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "500": { + "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "503": { + "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "504": { + "description": "504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + } + } + } + }, + "/subscriptions/{subscriptionId}": { + "parameters": [ + { + "name": "subscriptionId", + "description": "Identifier of this subscription. This identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a POST request creating a new \"Individual subscription\" resource. It can also be retrieved from the \"id\" attribute in the payload body of that response.\n", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "description": "Query Subscription Information. The client can use this method for reading an individual subscription for NFV-MANO functional entity alarms subscribed by the client. This method shall follow the provisions specified in the tables 7.5.6.3.2-1 and 7.5.6.3.2-2 for URI query parameters, request and response data structures, and response codes.\n", + "parameters": [ + { + "name": "Version", + "description": "Version of the API requested to use when responding to this request.\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Accept", + "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231.\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Authorization", + "description": "The authorization token for the request. Reference: IETF RFC 7235.\n", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "200 OK\nThe operation has completed successfully. The response body shall contain a representation of the subscription resource.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "This type represents a subscription related to notifications about VNF faults.\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 NFV-MANO functional entity faults. It shall comply with the provisions defined in table 7.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * AlarmNotification * AlarmClearedNotification * AlarmListRebuiltNotification 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": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "401": { + "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "403": { + "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "404": { + "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "405": { + "description": "405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "406": { + "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "422": { + "description": "422 UNPROCESSABLE ENTITY\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nThis error response code is only applicable for methods that have a request body.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "500": { + "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "503": { + "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "504": { + "description": "504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + } + } + }, + "delete": { + "description": "Terminate Subscription. This method terminates an individual subscription. This method shall follow the provisions specified in the tables 7.5.6.3.5-1 and 7.5.6.3.5-2 for URI query parameters, request and response data structures, and response codes. As the result of successfully executing this method, the \"Individual subscription\" resource shall not exist any longer. This means that no notifications for that subscription shall be sent to the formerly-subscribed API consumer. NOTE:\tDue to race conditions, some notifications might still be received by the formerly-subscribed API consumer for a certain time period after the deletion.\n", + "parameters": [ + { + "name": "Version", + "description": "Version of the API requested to use when responding to this request.\n", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Authorization", + "description": "The authorization token for the request. Reference: IETF RFC 7235.\n", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "204 NO CONTENT\nShall be returned when the \"Individual subscription\" resource has been deleted successfully. The response body shall be empty.\n", + "headers": { + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + } + } + }, + "400": { + "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "401": { + "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "403": { + "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "404": { + "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "405": { + "description": "405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "406": { + "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "422": { + "description": "422 UNPROCESSABLE ENTITY\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nThis error response code is only applicable for methods that have a request body.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "500": { + "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "503": { + "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + }, + "504": { + "description": "504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the response.", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 0 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "maximum": 1, + "minimum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + } + } + } + } + } + } + } + }, + "components": { + "parameters": { + "alarmId": { + "name": "alarmId", + "description": "Identifier of the alarm. This identifier can be retrieved from the \"id\" attribute of the \"alarm\" attribute in the AlarmNotification or AlarmClearedNotification. It can also be retrieved from the \"id\" attribute of the applicable array element in the payload body of the response to a GET request to the \"Alarms\" resource.\n", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + "subscriptionId": { + "name": "subscriptionId", + "description": "Identifier of this subscription. This identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a POST request creating a new \"Individual subscription\" resource. It can also be retrieved from the \"id\" attribute in the payload body of that response.\n", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + }, + "schemas": { + "FmSubscriptionRequest": { + "description": "This type represents a subscription request related to notifications about NFV-MANO faults.\n", + "type": "object", + "required": [ + "callbackUri" + ], + "properties": { + "filter": { + "description": "This type represents a subscription filter related to notifications about NFV-MANO functional entity faults. It shall comply with the provisions defined in table 7.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * AlarmNotification * AlarmClearedNotification * AlarmListRebuiltNotification 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": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "authentication": { + "type": "object", + "required": [ + "authType" + ], + "properties": { + "authType": { + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials.\n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS", + "TLS_CERT" + ] + } + }, + "paramsBasic": { + "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "userName": { + "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + }, + "password": { + "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + } + } + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + }, + "FmSubscription": { + "description": "This type represents a subscription related to notifications about VNF faults.\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 NFV-MANO functional entity faults. It shall comply with the provisions defined in table 7.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * AlarmNotification * AlarmClearedNotification * AlarmListRebuiltNotification 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": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + }, + "AlarmModifications": { + "description": "This type represents attribute modifications for an \"Individual alarm\" resource, i.e. modifications to a resource representation based on the \"Alarm\" data type. The attributes of \"Alarm\" that can be modified are included in the \"AlarmModifications\" data type.\n", + "type": "object", + "required": [ + "ackState" + ], + "properties": { + "ackState": { + "description": "New value of the \"ackState\" attribute in \"Alarm\". Permitted values: * ACKNOWLEDGED\n", + "type": "string", + "enum": [ + "ACKNOWLEDGED" + ] + } + } + }, + "FmNotificationsFilter": { + "description": "This type represents a subscription filter related to notifications about NFV-MANO functional entity faults. It shall comply with the provisions defined in table 7.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * AlarmNotification * AlarmClearedNotification * AlarmListRebuiltNotification 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": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "requestBodies": { + "AlarmModifications": { + "description": "The parameter for the alarm modification, as defined in clause 7.6.2.8. The Content-Type header shall be set to \"application/merge-patch+json\" according to IETF RFC 7396.\n", + "content": { + "application/json": { + "schema": { + "description": "This type represents attribute modifications for an \"Individual alarm\" resource, i.e. modifications to a resource representation based on the \"Alarm\" data type. The attributes of \"Alarm\" that can be modified are included in the \"AlarmModifications\" data type.\n", + "type": "object", + "required": [ + "ackState" + ], + "properties": { + "ackState": { + "description": "New value of the \"ackState\" attribute in \"Alarm\". Permitted values: * ACKNOWLEDGED\n", + "type": "string", + "enum": [ + "ACKNOWLEDGED" + ] + } + } + } + } + }, + "required": true + }, + "FmSubscriptionRequest": { + "description": "Details of the subscription to be created, as defined in clause 7.6.2.2.\n", + "content": { + "application/json": { + "schema": { + "description": "This type represents a subscription request related to notifications about NFV-MANO faults.\n", + "type": "object", + "required": [ + "callbackUri" + ], + "properties": { + "filter": { + "description": "This type represents a subscription filter related to notifications about NFV-MANO functional entity faults. It shall comply with the provisions defined in table 7.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * AlarmNotification * AlarmClearedNotification * AlarmListRebuiltNotification 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": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "authentication": { + "type": "object", + "required": [ + "authType" + ], + "properties": { + "authType": { + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials.\n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS", + "TLS_CERT" + ] + } + }, + "paramsBasic": { + "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "userName": { + "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + }, + "password": { + "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + } + } + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } + }, + "required": true + } + }, + "responses": { + "Alarms.Get": { + "description": "200 OK\nShall be returned when information about zero or more alarms has been queried successfully. The response body shall contain in an array the representations of zero or more alarms as defined in clause 7.6.2.4. If the \"filter\" URI parameter was supplied in the request, the data in the response body shall have been transformed according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013. If the NFV-MANO functional entity supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, inclusion of the Link HTTP header in this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "Link": { + "description": "Reference to other resources. Used for paging in the present document.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "The alarm data type encapsulates information about an alarm.\n", + "type": "object", + "required": [ + "id", + "managedObjectId", + "alarmRaisedTime", + "ackState", + "perceivedSeverity", + "eventTime", + "eventType", + "probableCause", + "isRootCause", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "managedObjectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedFaultyInstanceId": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + }, + "alarmRaisedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmChangedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmClearedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "ackState": { + "description": "Acknowledgement state of the alarm. Permitted values: * UNACKNOWLEDGED * ACKNOWLEDGED.\n", + "type": "string", + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] + }, + "perceivedSeverity": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + }, + "eventTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "eventType": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + }, + "faultType": { + "description": "Additional information to clarify the type of the fault.\n", + "type": "string" + }, + "probableCause": { + "description": "Information about the probable cause of the fault.\n", + "type": "string" + }, + "isRootCause": { + "description": "Attribute indicating if this fault is the root for other correlated alarms. If true, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", + "type": "boolean" + }, + "correlatedAlarmIds": { + "description": "List of identifiers of other alarms correlated to this fault.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "faultDetails": { + "description": "Provides additional information about the fault.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objectInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "Alarm.Get": { + "description": "200 OK\nShall be returned when information about an individual alarm has been read successfully. The response body shall contain a representation of the individual alarm\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "The alarm data type encapsulates information about an alarm.\n", + "type": "object", + "required": [ + "id", + "managedObjectId", + "alarmRaisedTime", + "ackState", + "perceivedSeverity", + "eventTime", + "eventType", + "probableCause", + "isRootCause", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "managedObjectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "associatedFaultyInstanceId": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + }, + "alarmRaisedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmChangedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmClearedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "ackState": { + "description": "Acknowledgement state of the alarm. Permitted values: * UNACKNOWLEDGED * ACKNOWLEDGED.\n", + "type": "string", + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] + }, + "perceivedSeverity": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + }, + "eventTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "eventType": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + }, + "faultType": { + "description": "Additional information to clarify the type of the fault.\n", + "type": "string" + }, + "probableCause": { + "description": "Information about the probable cause of the fault.\n", + "type": "string" + }, + "isRootCause": { + "description": "Attribute indicating if this fault is the root for other correlated alarms. If true, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", + "type": "boolean" + }, + "correlatedAlarmIds": { + "description": "List of identifiers of other alarms correlated to this fault.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "faultDetails": { + "description": "Provides additional information about the fault.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objectInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "Alarm.Patch": { + "description": "200 OK\nShall be returned when the request has been accepted and completed. ì The response body shall contain attribute modifications for an \"Individual alarm\" resource (see clause 7.6.2.4).\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "This type represents attribute modifications for an \"Individual alarm\" resource, i.e. modifications to a resource representation based on the \"Alarm\" data type. The attributes of \"Alarm\" that can be modified are included in the \"AlarmModifications\" data type.\n", + "type": "object", + "required": [ + "ackState" + ], + "properties": { + "ackState": { + "description": "New value of the \"ackState\" attribute in \"Alarm\". Permitted values: * ACKNOWLEDGED\n", + "type": "string", + "enum": [ + "ACKNOWLEDGED" + ] + } + } + } + } + } + }, + "subscriptions.post.201": { + "description": "201 CREATED\nShall be returned when the subscription has been created successfully. The response body shall contain a representation of the created \"Individual subscription\" resource. The HTTP response shall include a \"Location:\"\" HTTP header that points to the created \"Individual subscription\" resource.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "Location": { + "description": "The resource URI of the created subscription resource.\n", + "schema": { + "type": "string", + "format": "url", + "minimum": 1, + "maximum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "This type represents a subscription related to notifications about VNF faults.\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 NFV-MANO functional entity faults. It shall comply with the provisions defined in table 7.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * AlarmNotification * AlarmClearedNotification * AlarmListRebuiltNotification 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": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "subscriptions.get.200": { + "description": "200 OK\nShall be returned when the list of subscriptions has been queried successfully. The response body shall contain in an array the representations of all active subscriptions of the functional block that invokes the method, i.e. zero or more representations of FM subscriptions as defined in clause 7.6.2.3. If the \"filter\" URI parameter was supplied in the request, the data in the response body shall have been transformed according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013. If the NFV-MANO functional entity supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, inclusion of the Link HTTP header in this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "Link": { + "description": "Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "This type represents a subscription related to notifications about VNF faults.\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 NFV-MANO functional entity faults. It shall comply with the provisions defined in table 7.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * AlarmNotification * AlarmClearedNotification * AlarmListRebuiltNotification 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": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "subscription.get.200": { + "description": "200 OK\nThe operation has completed successfully. The response body shall contain a representation of the subscription resource.\n", + "headers": { + "Content-Type": { + "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + }, + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + } + }, + "content": { + "application/json": { + "schema": { + "description": "This type represents a subscription related to notifications about VNF faults.\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 NFV-MANO functional entity faults. It shall comply with the provisions defined in table 7.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * AlarmNotification * AlarmClearedNotification * AlarmListRebuiltNotification 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": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "subscription.delete.204": { + "description": "204 NO CONTENT\nShall be returned when the \"Individual subscription\" resource has been deleted successfully. The response body shall be empty.\n", + "headers": { + "WWW-Authenticate": { + "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n", + "schema": { + "type": "string", + "minimum": 0, + "maximum": 1 + } + }, + "Version": { + "description": "Version of the API used in the response.\n", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 1 + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/SOL009-NFVMANOFaultManagement-API.yaml b/SOL009/NFVMANOFaultManagement-API/SOL009-NFVMANOFaultManagement-API.yaml new file mode 100644 index 000000000..5f0cf5240 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/SOL009-NFVMANOFaultManagement-API.yaml @@ -0,0 +1,12122 @@ +openapi: 3.0.2 +info: + version: '1.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1' + title: SOL009 - NFV-MANO Fault Management interface + description: > + SOL009 - NFV-MANO Fault Management interface + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + + Please report bugs to + https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis&list_id=61&product=NFV&resolution= + license: + name: ETSI Forge copyright notice + url: 'https://forge.etsi.org/etsi-forge-copyright-notice.txt' +externalDocs: + description: ETSI GS NFV-SOL 009 V3.3.1 + url: >- + https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/009/03.03.01_60/gs_NFV-SOL009v030301p.pdf +servers: + - url: 'http://127.0.0.1/nfvmanofm/v1' + - url: 'https://127.0.0.1/nfvmanofm/v1' +paths: + /api_versions: + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: false + schema: + type: string + - name: Authorization + description: 'The authorization token for the request. Reference: IETF RFC 7235' + in: header + required: false + schema: + type: string + get: + summary: Retrieve API version information + description: > + The GET method reads API version information. This method shall follow + the provisions specified in table 4.6.3.3.3.2-1 for request and response + data structures, and response codes. URI query parameters are not + supported. + responses: + '200': + description: > + 200 OK + + API version information was read successfully. The response body + shall contain 4.4 API version information, as defined in clause + 4.4.1.13. + content: + application/json: + schema: + description: | + This type represents API version information. + type: object + required: + - uriPrefix + - apiVersions + properties: + uriPrefix: + description: > + Specifies the URI prefix for the API, in the following + form {apiRoot}/{apiName}/{apiMajorVersion}/. + type: string + apiVersions: + description: > + Version(s) supported for the API signaled by the uriPrefix + attribute. + type: array + items: + type: object + required: + - version + properties: + version: + description: > + Identifies a supported version. The value of the + version attribute shall be a version identifier as + specified in clause 9.1 (SOL013). + type: string + isDeprecated: + description: > + If such information is available, this attribute + indicates whether use of the version signaled by the + version attribute is deprecated (true) or not + (false). + + A deprecated version is still supported by the API + producer but is recommended not to be used any + longer. When a version is no longer supported, it + does not appear in the response body. + type: boolean + retirementDate: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: The used API version. + schema: + type: string + maximum: 1 + minimum: 1 + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '413': + description: > + 413 PAYLOAD TOO LARGE + + If the payload body of a request is larger than the amount of data + the API producer is willing or able to process, it shall respond + with this response code, following the provisions in IETF RFC 7231 + for the use of the "Retry-After" HTTP header and for closing the + connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '414': + description: > + 414 URI TOO LONG + + If the request URI of a request is longer than the API producer is + willing or able to process, it shall respond with this response + code. This condition can e.g. be caused by passing long queries in + the request URI of a GET request. The "ProblemDetails" structure may + be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '416': + description: | + 416 Range Not Satisfiable + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '429': + description: > + 429 TOO MANY REQUESTS + + If the API consumer has sent too many requests in a defined period + of time and the API producer is able to detect that condition ("rate + limiting"), the API producer shall respond with this response code, + following the provisions in IETF RFC 6585 [17] for the use of the + "Retry-After" HTTP header. The "ProblemDetails" structure shall be + provided and shall include in the "detail" attribute more + information about the source of the problem. + + The period of time and allowed number of requests are configured + within the API producer by means outside the scope of the present + document. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + /alarms: + get: + description: > + Get Alarm List. The client can use this method to retrieve information + about the alarm list. This method shall follow the provisions specified + in the tables 7.5.3.3.2-1 and 7.5.3.3.2-2 for URI query parameters, + request and response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + - name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of ETSI + GS NFV-SOL 013. The NFV-MANO functional entity shall support + receiving this parameter as part of the URI query string. The API + consumer may supply this parameter. All attribute names that appear + in the FmSubscription and in data types referenced from it shall be + supported by the NFV-MANO functional entity in the filter + expression. + in: query + required: false + schema: + type: string + - name: nextpage_opaque_marker + description: > + Marker to obtain the next page of a paged response. Shall be + supported by the NFV-MANO functional entity if the entity supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS + NFV-SOL 013 for this resource. + in: query + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when information about zero or more alarms has + been queried successfully. The response body shall contain in an + array the representations of zero or more alarms as defined in + clause 7.6.2.4. If the "filter" URI parameter was supplied in the + request, the data in the response body shall have been transformed + according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL + 013. If the NFV-MANO functional entity supports alternative 2 + (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this + resource, inclusion of the Link HTTP header in this response shall + follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + Content-Type: + description: > + The MIME type of the body of the request. Reference: IETF RFC + 7231 + schema: + type: string + minimum: 1 + maximum: 1 + Version: + description: | + Version of the API used in the response. + schema: + type: string + minimum: 1 + maximum: 1 + Link: + description: > + Reference to other resources. Used for paging in the present + document. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: | + The alarm data type encapsulates information about an alarm. + type: object + required: + - id + - managedObjectId + - alarmRaisedTime + - ackState + - perceivedSeverity + - eventTime + - eventType + - probableCause + - isRootCause + - _links + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + managedObjectId: + description: > + An identifier with the intention of being globally + unique. + type: string + associatedFaultyInstanceId: + description: > + This type represents the identifier to reference a + managed object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + required: + - type + - objectId + alarmRaisedTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + alarmChangedTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + alarmClearedTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + ackState: + description: > + Acknowledgement state of the alarm. Permitted values: * + UNACKNOWLEDGED * ACKNOWLEDGED. + type: string + enum: + - UNACKNOWLEDGED + - ACKNOWLEDGED + perceivedSeverity: + description: > + Indicates the relative level of urgency for operator + attention. * CRITICAL: The Critical severity level + indicates that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a + service affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the + existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the + detection of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level + indicates that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the + clearing of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + eventType: + description: > + The enumeration EventType represents those types of + events that trigger an alarm. * COMMUNICATIONS_ALARM: An + alarm of this type is associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is + associated with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is + associated with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated with + degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is associated + with an equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + faultType: + description: | + Additional information to clarify the type of the fault. + type: string + probableCause: + description: | + Information about the probable cause of the fault. + type: string + isRootCause: + description: > + Attribute indicating if this fault is the root for other + correlated alarms. If true, then the alarms listed in + the attribute CorrelatedAlarmId are caused by this + fault. + type: boolean + correlatedAlarmIds: + description: > + List of identifiers of other alarms correlated to this + fault. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + faultDetails: + description: | + Provides additional information about the fault. + type: array + items: + type: string + _links: + description: | + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objectInstance: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/alarms/{alarmId}': + parameters: + - name: alarmId + description: > + Identifier of the alarm. This identifier can be retrieved from the + "id" attribute of the "alarm" attribute in the AlarmNotification or + AlarmClearedNotification. It can also be retrieved from the "id" + attribute of the applicable array element in the payload body of the + response to a GET request to the "Alarms" resource. + in: path + required: true + schema: + type: string + get: + description: > + The client can use this method to read an individual alarm. This method + shall follow the provisions specified in the tables 7.5.4.3.2-1 and + 7.5.4.3.2-2 for URI query parameters, request and response data + structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when information about an individual alarm has + been read successfully. The response body shall contain a + representation of the individual alarm + headers: + Content-Type: + description: > + The MIME type of the body of the request. Reference: IETF RFC + 7231 + schema: + type: string + minimum: 1 + maximum: 1 + content: + application/json: + schema: + description: | + The alarm data type encapsulates information about an alarm. + type: object + required: + - id + - managedObjectId + - alarmRaisedTime + - ackState + - perceivedSeverity + - eventTime + - eventType + - probableCause + - isRootCause + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + managedObjectId: + description: | + An identifier with the intention of being globally unique. + type: string + associatedFaultyInstanceId: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + alarmRaisedTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + alarmChangedTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + alarmClearedTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + ackState: + description: > + Acknowledgement state of the alarm. Permitted values: * + UNACKNOWLEDGED * ACKNOWLEDGED. + type: string + enum: + - UNACKNOWLEDGED + - ACKNOWLEDGED + perceivedSeverity: + description: > + Indicates the relative level of urgency for operator + attention. * CRITICAL: The Critical severity level + indicates that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a service + affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the existence + of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the + detection of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level + indicates that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the + clearing of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + eventType: + description: > + The enumeration EventType represents those types of events + that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of + this type is associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is + associated with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is associated + with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated with + degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is associated + with an equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + faultType: + description: | + Additional information to clarify the type of the fault. + type: string + probableCause: + description: | + Information about the probable cause of the fault. + type: string + isRootCause: + description: > + Attribute indicating if this fault is the root for other + correlated alarms. If true, then the alarms listed in the + attribute CorrelatedAlarmId are caused by this fault. + type: boolean + correlatedAlarmIds: + description: > + List of identifiers of other alarms correlated to this + fault. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + faultDetails: + description: | + Provides additional information about the fault. + type: array + items: + type: string + _links: + description: | + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objectInstance: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + patch: + description: > + This method modifies an "Individual alarm" resource. This method shall + follow the provisions specified in the tables 7.5.4.3.4-1 and + 7.5.4.3.4-2 for URI query parameters, request and response data + structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + - name: Content-Type + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + in: header + required: true + schema: + type: string + requestBody: + description: > + The parameter for the alarm modification, as defined in clause + 7.6.2.8. The Content-Type header shall be set to + "application/merge-patch+json" according to IETF RFC 7396. + content: + application/json: + schema: + description: > + This type represents attribute modifications for an "Individual + alarm" resource, i.e. modifications to a resource representation + based on the "Alarm" data type. The attributes of "Alarm" that + can be modified are included in the "AlarmModifications" data + type. + type: object + required: + - ackState + properties: + ackState: + description: > + New value of the "ackState" attribute in "Alarm". Permitted + values: * ACKNOWLEDGED + type: string + enum: + - ACKNOWLEDGED + required: true + responses: + '200': + description: > + 200 OK + + Shall be returned when the request has been accepted and completed. + ì The response body shall contain attribute modifications for an + "Individual alarm" resource (see clause 7.6.2.4). + headers: + Content-Type: + description: > + The MIME type of the body of the request. Reference: IETF RFC + 7231 + schema: + type: string + minimum: 1 + maximum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + description: > + This type represents attribute modifications for an + "Individual alarm" resource, i.e. modifications to a resource + representation based on the "Alarm" data type. The attributes + of "Alarm" that can be modified are included in the + "AlarmModifications" data type. + type: object + required: + - ackState + properties: + ackState: + description: > + New value of the "ackState" attribute in "Alarm". + Permitted values: * ACKNOWLEDGED + type: string + enum: + - ACKNOWLEDGED + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '409': + description: | + 409 CONFLICT + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '412': + description: > + 412 PRECONDITION FAILED + + Error: A precondition given in an HTTP request header is not + fulfilled. Typically, this is due to an ETag mismatch, indicating + that the resource was modified by another entity. The response body + should contain a ProblemDetails structure, in which the "detail" + attribute should convey more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + /subscriptions: + post: + description: > + Subscribe. The POST method creates a new subscription. This method shall + follow the provisions specified in the tables 7.5.5.3.1-1 and + 7.5.5.3.1-2 for URI query parameters, request and response data + structures, and response codes. As the result of successfully executing + this method, a new "Individual subscription" resource as defined in + clause 7.5.6 shall have been created. This method shall not trigger any + notification. Creation of two "Individual subscription" resources with + the same callbackURI and the same filter can result in performance + degradation and will provide duplicates of notifications to the API + consumer, and might make sense only in very rare use cases. + Consequently, the NFV-MANO functional entity may either allow creating a + new "Individual subscription" resource if another "Individual + subscription" resource with the same filter and callbackUri already + exists (in which case it shall return the "201 Created" response code), + or may decide to not create a duplicate "Individual subscription" + resource (in which case it shall return a "303 See Other" response code + referencing the existing "Individual subscription" resource with the + same filter and callbackUri). + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + - name: Content-Type + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + in: header + required: true + schema: + type: string + requestBody: + description: > + Details of the subscription to be created, as defined in clause + 7.6.2.2. + content: + application/json: + schema: + description: > + This type represents a subscription request related to + notifications about NFV-MANO faults. + type: object + required: + - callbackUri + properties: + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO functional entity faults. It + shall comply with the provisions defined in table 7.6.3.2-1. + 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). + type: object + properties: + notificationTypes: + description: > + Match particular notification types. Permitted values: * + AlarmNotification * AlarmClearedNotification * + AlarmListRebuiltNotification The permitted values of the + "notificationTypes" attribute are spelled exactly as the + names of the notification types to facilitate automated + code generation systems. + type: array + items: + type: string + enum: + - AlarmNotification + - AlarmClearedNotification + - AlarmListRebuiltNotification + perceivedSeverities: + description: > + Match VNF alarms with a perceived severity listed in + this attribute. + type: array + items: + description: > + Indicates the relative level of urgency for operator + attention. * CRITICAL: The Critical severity level + indicates that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a + service affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the + existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the + detection of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level + indicates that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the + clearing of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTypes: + description: > + Match VNF alarms with an event type listed in this + attribute. + type: array + items: + description: > + The enumeration EventType represents those types of + events that trigger an alarm. * COMMUNICATIONS_ALARM: + An alarm of this type is associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is + associated with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is + associated with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated with + degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is associated + with an equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + probableCauses: + description: > + Match VNF alarms with a probable cause listed in this + attribute. + type: array + items: + type: string + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + authentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization + which the API consumer is willing to accept when + receiving a notification. Permitted values: * BASIC: In + every HTTP request to the notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to + the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification + endpoint is sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + description: > + Parameters for authentication/authorization using BASIC. + Shall be present if authType is "BASIC" and the + contained information has not been provisioned out of + band. Shall be absent otherwise. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out + of band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out + of band. + type: string + paramsOauth2ClientCredentials: + description: > + Parameters for authentication/authorization using + OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType + is "OAUTH2_CLIENT_CREDENTIALS" and the contained + information has not been provisioned out of band. Shall + be absent otherwise. + type: object + properties: + clientId: + description: > + Client identifier to be used in the access token + request of the OAuth 2.0 client credentials grant + type. Shall be present if it has not been + provisioned out of band. The clientId and + clientPassword passed in a subscription shall not be + the same as the clientId and clientPassword that are + used to obtain authorization for API requests. + Client credentials may differ between subscriptions. + The value of clientPassword should be generated by a + random process. + type: string + clientPassword: + description: > + Client password to be used in the access token + request of the OAuth 2.0 client credentials grant + type. Shall be present if it has not been + provisioned out of band. The clientId and + clientPassword passed in a subscription shall not be + the same as the clientId and clientPassword that are + used to obtain authorization for API requests. + Client credentials may differ between subscriptions. + The value of clientPassword should be generated by a + random process. + type: string + tokenEndpoint: + description: | + String formatted according to IETF RFC 3986. + type: string + required: true + responses: + '201': + description: > + 201 CREATED + + Shall be returned when the subscription has been created + successfully. The response body shall contain a representation of + the created "Individual subscription" resource. The HTTP response + shall include a "Location:"" HTTP header that points to the created + "Individual subscription" resource. + headers: + Content-Type: + description: > + The MIME type of the body of the request. Reference: IETF RFC + 7231 + schema: + type: string + minimum: 1 + maximum: 1 + Location: + description: | + The resource URI of the created subscription resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + description: > + This type represents a subscription related to notifications + about VNF faults. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO functional entity faults. It + shall comply with the provisions defined in table + 7.6.3.2-1. 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). + type: object + properties: + notificationTypes: + description: > + Match particular notification types. Permitted values: + * AlarmNotification * AlarmClearedNotification * + AlarmListRebuiltNotification The permitted values of + the "notificationTypes" attribute are spelled exactly + as the names of the notification types to facilitate + automated code generation systems. + type: array + items: + type: string + enum: + - AlarmNotification + - AlarmClearedNotification + - AlarmListRebuiltNotification + perceivedSeverities: + description: > + Match VNF alarms with a perceived severity listed in + this attribute. + type: array + items: + description: > + Indicates the relative level of urgency for operator + attention. * CRITICAL: The Critical severity level + indicates that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a + service affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the + existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the + detection of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level + indicates that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the + clearing of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTypes: + description: > + Match VNF alarms with an event type listed in this + attribute. + type: array + items: + description: > + The enumeration EventType represents those types of + events that trigger an alarm. * + COMMUNICATIONS_ALARM: An alarm of this type is + associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is + associated with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is + associated with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated + with degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is + associated with an equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + probableCauses: + description: > + Match VNF alarms with a probable cause listed in this + attribute. + type: array + items: + type: string + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '303': + description: | + 303 See Other + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + get: + description: > + Query Subscription Information + + The client can use this method to retrieve the list of active + subscriptions for NFV-MANO functional entity alarms subscribed by the + client. It can be used e.g. for resynchronization after error + situations. This method shall follow the provisions specified in the + tables 7.5.5.3.2-1 and 7.5.5.3.2-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + - name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of ETSI + GS NFV-SOL 013. The NFV-MANO functional entity shall support + receiving this parameter as part of the URI query string. The API + consumer may supply this parameter. All attribute names that appear + in the FmSubscription and in data types referenced from it shall be + supported by the NFV-MANO functional entity in the filter + expression. + in: query + required: false + schema: + type: string + - name: nextpage_opaque_marker + description: > + Marker to obtain the next page of a paged response. Shall be + supported by the NFV-MANO functional entity if the entity supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS + NFV-SOL 013 for this resource. + in: query + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when the list of subscriptions has been queried + successfully. The response body shall contain in an array the + representations of all active subscriptions of the functional block + that invokes the method, i.e. zero or more representations of FM + subscriptions as defined in clause 7.6.2.3. If the "filter" URI + parameter was supplied in the request, the data in the response body + shall have been transformed according to the rules specified in + clause 5.2.2 of ETSI GS NFV-SOL 013. If the NFV-MANO functional + entity supports alternative 2 (paging) according to clause 5.4.2.1 + of ETSI GS NFV-SOL 013 for this resource, inclusion of the Link HTTP + header in this response shall follow the provisions in clause + 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + Content-Type: + description: > + The MIME type of the body of the request. Reference: IETF RFC + 7231 + schema: + type: string + minimum: 1 + maximum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + minimum: 0 + maximum: 1 + Version: + description: | + Version of the API used in the response. + schema: + type: string + minimum: 1 + maximum: 1 + Link: + description: > + Reference to other resources. Used for paging in the present + document, see clause 4.7.2.1. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: > + This type represents a subscription related to notifications + about VNF faults. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO functional entity faults. + It shall comply with the provisions defined in table + 7.6.3.2-1. 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). + type: object + properties: + notificationTypes: + description: > + Match particular notification types. Permitted + values: * AlarmNotification * + AlarmClearedNotification * + AlarmListRebuiltNotification The permitted values of + the "notificationTypes" attribute are spelled + exactly as the names of the notification types to + facilitate automated code generation systems. + type: array + items: + type: string + enum: + - AlarmNotification + - AlarmClearedNotification + - AlarmListRebuiltNotification + perceivedSeverities: + description: > + Match VNF alarms with a perceived severity listed in + this attribute. + type: array + items: + description: > + Indicates the relative level of urgency for + operator attention. * CRITICAL: The Critical + severity level indicates that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a + service affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the + existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates + the detection of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level + indicates that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates + the clearing of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTypes: + description: > + Match VNF alarms with an event type listed in this + attribute. + type: array + items: + description: > + The enumeration EventType represents those types + of events that trigger an alarm. * + COMMUNICATIONS_ALARM: An alarm of this type is + associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is + associated with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is + associated with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated + with degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is + associated with an equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + probableCauses: + description: > + Match VNF alarms with a probable cause listed in + this attribute. + type: array + items: + type: string + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/subscriptions/{subscriptionId}': + parameters: + - name: subscriptionId + description: > + Identifier of this subscription. This identifier can be retrieved from + the resource referenced by the "Location" HTTP header in the response + to a POST request creating a new "Individual subscription" resource. + It can also be retrieved from the "id" attribute in the payload body + of that response. + in: path + required: true + schema: + type: string + get: + description: > + Query Subscription Information. The client can use this method for + reading an individual subscription for NFV-MANO functional entity alarms + subscribed by the client. This method shall follow the provisions + specified in the tables 7.5.6.3.2-1 and 7.5.6.3.2-2 for URI query + parameters, request and response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + The operation has completed successfully. The response body shall + contain a representation of the subscription resource. + headers: + Content-Type: + description: > + The MIME type of the body of the request. Reference: IETF RFC + 7231 + schema: + type: string + minimum: 1 + maximum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + minimum: 0 + maximum: 1 + Version: + description: | + Version of the API used in the response. + schema: + type: string + minimum: 1 + maximum: 1 + content: + application/json: + schema: + description: > + This type represents a subscription related to notifications + about VNF faults. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO functional entity faults. It + shall comply with the provisions defined in table + 7.6.3.2-1. 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). + type: object + properties: + notificationTypes: + description: > + Match particular notification types. Permitted values: + * AlarmNotification * AlarmClearedNotification * + AlarmListRebuiltNotification The permitted values of + the "notificationTypes" attribute are spelled exactly + as the names of the notification types to facilitate + automated code generation systems. + type: array + items: + type: string + enum: + - AlarmNotification + - AlarmClearedNotification + - AlarmListRebuiltNotification + perceivedSeverities: + description: > + Match VNF alarms with a perceived severity listed in + this attribute. + type: array + items: + description: > + Indicates the relative level of urgency for operator + attention. * CRITICAL: The Critical severity level + indicates that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a + service affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the + existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the + detection of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level + indicates that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the + clearing of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTypes: + description: > + Match VNF alarms with an event type listed in this + attribute. + type: array + items: + description: > + The enumeration EventType represents those types of + events that trigger an alarm. * + COMMUNICATIONS_ALARM: An alarm of this type is + associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is + associated with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is + associated with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated + with degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is + associated with an equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + probableCauses: + description: > + Match VNF alarms with a probable cause listed in this + attribute. + type: array + items: + type: string + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + delete: + description: "Terminate Subscription. This method terminates an individual subscription. This method shall follow the provisions specified in the tables 7.5.6.3.5-1 and 7.5.6.3.5-2 for URI query parameters, request and response data structures, and response codes. As the result of successfully executing this method, the \"Individual subscription\" resource shall not exist any longer. This means that no notifications for that subscription shall be sent to the formerly-subscribed API consumer. NOTE:\tDue to race conditions, some notifications might still be received by the formerly-subscribed API consumer for a certain time period after the deletion.\n" + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '204': + description: > + 204 NO CONTENT + + Shall be returned when the "Individual subscription" resource has + been deleted successfully. The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + minimum: 0 + maximum: 1 + Version: + description: | + Version of the API used in the response. + schema: + type: string + minimum: 1 + maximum: 1 + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI +components: + parameters: + alarmId: + name: alarmId + description: > + Identifier of the alarm. This identifier can be retrieved from the "id" + attribute of the "alarm" attribute in the AlarmNotification or + AlarmClearedNotification. It can also be retrieved from the "id" + attribute of the applicable array element in the payload body of the + response to a GET request to the "Alarms" resource. + in: path + required: true + schema: + type: string + subscriptionId: + name: subscriptionId + description: > + Identifier of this subscription. This identifier can be retrieved from + the resource referenced by the "Location" HTTP header in the response to + a POST request creating a new "Individual subscription" resource. It can + also be retrieved from the "id" attribute in the payload body of that + response. + in: path + required: true + schema: + type: string + schemas: + FmSubscriptionRequest: + description: > + This type represents a subscription request related to notifications + about NFV-MANO faults. + type: object + required: + - callbackUri + properties: + filter: + description: > + This type represents a subscription filter related to notifications + about NFV-MANO functional entity faults. It shall comply with the + provisions defined in table 7.6.3.2-1. 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). + type: object + properties: + notificationTypes: + description: > + Match particular notification types. Permitted values: * + AlarmNotification * AlarmClearedNotification * + AlarmListRebuiltNotification The permitted values of the + "notificationTypes" attribute are spelled exactly as the names + of the notification types to facilitate automated code + generation systems. + type: array + items: + type: string + enum: + - AlarmNotification + - AlarmClearedNotification + - AlarmListRebuiltNotification + perceivedSeverities: + description: > + Match VNF alarms with a perceived severity listed in this + attribute. + type: array + items: + description: > + Indicates the relative level of urgency for operator + attention. * CRITICAL: The Critical severity level indicates + that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a service + affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the detection + of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level indicates + that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the clearing + of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTypes: + description: | + Match VNF alarms with an event type listed in this attribute. + type: array + items: + description: > + The enumeration EventType represents those types of events + that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of + this type is associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is associated + with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is associated + with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated with + degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is associated with an + equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + probableCauses: + description: | + Match VNF alarms with a probable cause listed in this attribute. + type: array + items: + type: string + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + authentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization which the + API consumer is willing to accept when receiving a notification. + Permitted values: * BASIC: In every HTTP request to the + notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification endpoint is + sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + description: > + Parameters for authentication/authorization using BASIC. Shall + be present if authType is "BASIC" and the contained information + has not been provisioned out of band. Shall be absent otherwise. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + paramsOauth2ClientCredentials: + description: > + Parameters for authentication/authorization using + OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is + "OAUTH2_CLIENT_CREDENTIALS" and the contained information has + not been provisioned out of band. Shall be absent otherwise. + type: object + properties: + clientId: + description: > + Client identifier to be used in the access token request of + the OAuth 2.0 client credentials grant type. Shall be + present if it has not been provisioned out of band. The + clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are + used to obtain authorization for API requests. Client + credentials may differ between subscriptions. The value of + clientPassword should be generated by a random process. + type: string + clientPassword: + description: > + Client password to be used in the access token request of + the OAuth 2.0 client credentials grant type. Shall be + present if it has not been provisioned out of band. The + clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are + used to obtain authorization for API requests. Client + credentials may differ between subscriptions. The value of + clientPassword should be generated by a random process. + type: string + tokenEndpoint: + description: | + String formatted according to IETF RFC 3986. + type: string + FmSubscription: + description: > + This type represents a subscription related to notifications about VNF + faults. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a subscription filter related to notifications + about NFV-MANO functional entity faults. It shall comply with the + provisions defined in table 7.6.3.2-1. 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). + type: object + properties: + notificationTypes: + description: > + Match particular notification types. Permitted values: * + AlarmNotification * AlarmClearedNotification * + AlarmListRebuiltNotification The permitted values of the + "notificationTypes" attribute are spelled exactly as the names + of the notification types to facilitate automated code + generation systems. + type: array + items: + type: string + enum: + - AlarmNotification + - AlarmClearedNotification + - AlarmListRebuiltNotification + perceivedSeverities: + description: > + Match VNF alarms with a perceived severity listed in this + attribute. + type: array + items: + description: > + Indicates the relative level of urgency for operator + attention. * CRITICAL: The Critical severity level indicates + that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a service + affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the detection + of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level indicates + that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the clearing + of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTypes: + description: | + Match VNF alarms with an event type listed in this attribute. + type: array + items: + description: > + The enumeration EventType represents those types of events + that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of + this type is associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is associated + with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is associated + with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated with + degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is associated with an + equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + probableCauses: + description: | + Match VNF alarms with a probable cause listed in this attribute. + type: array + items: + type: string + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links for this resource. + type: object + required: + - self + properties: + self: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + AlarmModifications: + description: > + This type represents attribute modifications for an "Individual alarm" + resource, i.e. modifications to a resource representation based on the + "Alarm" data type. The attributes of "Alarm" that can be modified are + included in the "AlarmModifications" data type. + type: object + required: + - ackState + properties: + ackState: + description: > + New value of the "ackState" attribute in "Alarm". Permitted values: + * ACKNOWLEDGED + type: string + enum: + - ACKNOWLEDGED + FmNotificationsFilter: + description: > + This type represents a subscription filter related to notifications + about NFV-MANO functional entity faults. It shall comply with the + provisions defined in table 7.6.3.2-1. 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). + type: object + properties: + notificationTypes: + description: > + Match particular notification types. Permitted values: * + AlarmNotification * AlarmClearedNotification * + AlarmListRebuiltNotification The permitted values of the + "notificationTypes" attribute are spelled exactly as the names of + the notification types to facilitate automated code generation + systems. + type: array + items: + type: string + enum: + - AlarmNotification + - AlarmClearedNotification + - AlarmListRebuiltNotification + perceivedSeverities: + description: | + Match VNF alarms with a perceived severity listed in this attribute. + type: array + items: + description: > + Indicates the relative level of urgency for operator attention. * + CRITICAL: The Critical severity level indicates that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a service + affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the detection of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level indicates that + the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the clearing of + one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTypes: + description: | + Match VNF alarms with an event type listed in this attribute. + type: array + items: + description: > + The enumeration EventType represents those types of events that + trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is + associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is associated with + a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is associated with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated with degradation + in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is associated with an + equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + probableCauses: + description: | + Match VNF alarms with a probable cause listed in this attribute. + type: array + items: + type: string + requestBodies: + AlarmModifications: + description: > + The parameter for the alarm modification, as defined in clause 7.6.2.8. + The Content-Type header shall be set to "application/merge-patch+json" + according to IETF RFC 7396. + content: + application/json: + schema: + description: > + This type represents attribute modifications for an "Individual + alarm" resource, i.e. modifications to a resource representation + based on the "Alarm" data type. The attributes of "Alarm" that can + be modified are included in the "AlarmModifications" data type. + type: object + required: + - ackState + properties: + ackState: + description: > + New value of the "ackState" attribute in "Alarm". Permitted + values: * ACKNOWLEDGED + type: string + enum: + - ACKNOWLEDGED + required: true + FmSubscriptionRequest: + description: | + Details of the subscription to be created, as defined in clause 7.6.2.2. + content: + application/json: + schema: + description: > + This type represents a subscription request related to + notifications about NFV-MANO faults. + type: object + required: + - callbackUri + properties: + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO functional entity faults. It + shall comply with the provisions defined in table 7.6.3.2-1. + 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). + type: object + properties: + notificationTypes: + description: > + Match particular notification types. Permitted values: * + AlarmNotification * AlarmClearedNotification * + AlarmListRebuiltNotification The permitted values of the + "notificationTypes" attribute are spelled exactly as the + names of the notification types to facilitate automated + code generation systems. + type: array + items: + type: string + enum: + - AlarmNotification + - AlarmClearedNotification + - AlarmListRebuiltNotification + perceivedSeverities: + description: > + Match VNF alarms with a perceived severity listed in this + attribute. + type: array + items: + description: > + Indicates the relative level of urgency for operator + attention. * CRITICAL: The Critical severity level + indicates that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a + service affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the + existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the + detection of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level + indicates that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the + clearing of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTypes: + description: > + Match VNF alarms with an event type listed in this + attribute. + type: array + items: + description: > + The enumeration EventType represents those types of + events that trigger an alarm. * COMMUNICATIONS_ALARM: An + alarm of this type is associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is + associated with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is + associated with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated with + degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is associated + with an equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + probableCauses: + description: > + Match VNF alarms with a probable cause listed in this + attribute. + type: array + items: + type: string + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + authentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization which + the API consumer is willing to accept when receiving a + notification. Permitted values: * BASIC: In every HTTP + request to the notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification + endpoint is sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + description: > + Parameters for authentication/authorization using BASIC. + Shall be present if authType is "BASIC" and the contained + information has not been provisioned out of band. Shall be + absent otherwise. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out of + band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out of + band. + type: string + paramsOauth2ClientCredentials: + description: > + Parameters for authentication/authorization using + OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is + "OAUTH2_CLIENT_CREDENTIALS" and the contained information + has not been provisioned out of band. Shall be absent + otherwise. + type: object + properties: + clientId: + description: > + Client identifier to be used in the access token + request of the OAuth 2.0 client credentials grant + type. Shall be present if it has not been provisioned + out of band. The clientId and clientPassword passed in + a subscription shall not be the same as the clientId + and clientPassword that are used to obtain + authorization for API requests. Client credentials may + differ between subscriptions. The value of + clientPassword should be generated by a random + process. + type: string + clientPassword: + description: > + Client password to be used in the access token request + of the OAuth 2.0 client credentials grant type. Shall + be present if it has not been provisioned out of band. + The clientId and clientPassword passed in a + subscription shall not be the same as the clientId and + clientPassword that are used to obtain authorization + for API requests. Client credentials may differ + between subscriptions. The value of clientPassword + should be generated by a random process. + type: string + tokenEndpoint: + description: | + String formatted according to IETF RFC 3986. + type: string + required: true + responses: + Alarms.Get: + description: > + 200 OK + + Shall be returned when information about zero or more alarms has been + queried successfully. The response body shall contain in an array the + representations of zero or more alarms as defined in clause 7.6.2.4. If + the "filter" URI parameter was supplied in the request, the data in the + response body shall have been transformed according to the rules + specified in clause 5.2.2 of ETSI GS NFV-SOL 013. If the NFV-MANO + functional entity supports alternative 2 (paging) according to clause + 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, inclusion of the Link + HTTP header in this response shall follow the provisions in clause + 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + schema: + type: string + minimum: 1 + maximum: 1 + Version: + description: | + Version of the API used in the response. + schema: + type: string + minimum: 1 + maximum: 1 + Link: + description: > + Reference to other resources. Used for paging in the present + document. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: | + The alarm data type encapsulates information about an alarm. + type: object + required: + - id + - managedObjectId + - alarmRaisedTime + - ackState + - perceivedSeverity + - eventTime + - eventType + - probableCause + - isRootCause + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + managedObjectId: + description: | + An identifier with the intention of being globally unique. + type: string + associatedFaultyInstanceId: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + alarmRaisedTime: + description: > + Date-time stamp. Representation: String formatted according + to IETF RFC 3339. + type: string + format: date-time + alarmChangedTime: + description: > + Date-time stamp. Representation: String formatted according + to IETF RFC 3339. + type: string + format: date-time + alarmClearedTime: + description: > + Date-time stamp. Representation: String formatted according + to IETF RFC 3339. + type: string + format: date-time + ackState: + description: > + Acknowledgement state of the alarm. Permitted values: * + UNACKNOWLEDGED * ACKNOWLEDGED. + type: string + enum: + - UNACKNOWLEDGED + - ACKNOWLEDGED + perceivedSeverity: + description: > + Indicates the relative level of urgency for operator + attention. * CRITICAL: The Critical severity level indicates + that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a service + affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the existence of + a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the + detection of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level indicates + that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the clearing + of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTime: + description: > + Date-time stamp. Representation: String formatted according + to IETF RFC 3339. + type: string + format: date-time + eventType: + description: > + The enumeration EventType represents those types of events + that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of + this type is associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is + associated with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is associated + with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated with + degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is associated with + an equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + faultType: + description: | + Additional information to clarify the type of the fault. + type: string + probableCause: + description: | + Information about the probable cause of the fault. + type: string + isRootCause: + description: > + Attribute indicating if this fault is the root for other + correlated alarms. If true, then the alarms listed in the + attribute CorrelatedAlarmId are caused by this fault. + type: boolean + correlatedAlarmIds: + description: > + List of identifiers of other alarms correlated to this + fault. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + faultDetails: + description: | + Provides additional information about the fault. + type: array + items: + type: string + _links: + description: | + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objectInstance: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + Alarm.Get: + description: > + 200 OK + + Shall be returned when information about an individual alarm has been + read successfully. The response body shall contain a representation of + the individual alarm + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + schema: + type: string + minimum: 1 + maximum: 1 + content: + application/json: + schema: + description: | + The alarm data type encapsulates information about an alarm. + type: object + required: + - id + - managedObjectId + - alarmRaisedTime + - ackState + - perceivedSeverity + - eventTime + - eventType + - probableCause + - isRootCause + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + managedObjectId: + description: | + An identifier with the intention of being globally unique. + type: string + associatedFaultyInstanceId: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: | + An identifier with the intention of being globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + alarmRaisedTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + alarmChangedTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + alarmClearedTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + ackState: + description: > + Acknowledgement state of the alarm. Permitted values: * + UNACKNOWLEDGED * ACKNOWLEDGED. + type: string + enum: + - UNACKNOWLEDGED + - ACKNOWLEDGED + perceivedSeverity: + description: > + Indicates the relative level of urgency for operator + attention. * CRITICAL: The Critical severity level indicates + that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a service + affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the detection + of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level indicates + that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the clearing + of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + eventType: + description: > + The enumeration EventType represents those types of events + that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of + this type is associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is associated + with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is associated + with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated with + degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is associated with an + equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + faultType: + description: | + Additional information to clarify the type of the fault. + type: string + probableCause: + description: | + Information about the probable cause of the fault. + type: string + isRootCause: + description: > + Attribute indicating if this fault is the root for other + correlated alarms. If true, then the alarms listed in the + attribute CorrelatedAlarmId are caused by this fault. + type: boolean + correlatedAlarmIds: + description: | + List of identifiers of other alarms correlated to this fault. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + faultDetails: + description: | + Provides additional information about the fault. + type: array + items: + type: string + _links: + description: | + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objectInstance: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + Alarm.Patch: + description: > + 200 OK + + Shall be returned when the request has been accepted and completed. ì + The response body shall contain attribute modifications for an + "Individual alarm" resource (see clause 7.6.2.4). + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + schema: + type: string + minimum: 1 + maximum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + description: > + This type represents attribute modifications for an "Individual + alarm" resource, i.e. modifications to a resource representation + based on the "Alarm" data type. The attributes of "Alarm" that can + be modified are included in the "AlarmModifications" data type. + type: object + required: + - ackState + properties: + ackState: + description: > + New value of the "ackState" attribute in "Alarm". Permitted + values: * ACKNOWLEDGED + type: string + enum: + - ACKNOWLEDGED + subscriptions.post.201: + description: > + 201 CREATED + + Shall be returned when the subscription has been created successfully. + The response body shall contain a representation of the created + "Individual subscription" resource. The HTTP response shall include a + "Location:"" HTTP header that points to the created "Individual + subscription" resource. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + schema: + type: string + minimum: 1 + maximum: 1 + Location: + description: | + The resource URI of the created subscription resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + description: > + This type represents a subscription related to notifications about + VNF faults. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO functional entity faults. It + shall comply with the provisions defined in table 7.6.3.2-1. + 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). + type: object + properties: + notificationTypes: + description: > + Match particular notification types. Permitted values: * + AlarmNotification * AlarmClearedNotification * + AlarmListRebuiltNotification The permitted values of the + "notificationTypes" attribute are spelled exactly as the + names of the notification types to facilitate automated + code generation systems. + type: array + items: + type: string + enum: + - AlarmNotification + - AlarmClearedNotification + - AlarmListRebuiltNotification + perceivedSeverities: + description: > + Match VNF alarms with a perceived severity listed in this + attribute. + type: array + items: + description: > + Indicates the relative level of urgency for operator + attention. * CRITICAL: The Critical severity level + indicates that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a + service affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the + existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the + detection of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level + indicates that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the + clearing of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTypes: + description: > + Match VNF alarms with an event type listed in this + attribute. + type: array + items: + description: > + The enumeration EventType represents those types of + events that trigger an alarm. * COMMUNICATIONS_ALARM: An + alarm of this type is associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is + associated with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is + associated with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated with + degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is associated + with an equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + probableCauses: + description: > + Match VNF alarms with a probable cause listed in this + attribute. + type: array + items: + type: string + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + subscriptions.get.200: + description: > + 200 OK + + Shall be returned when the list of subscriptions has been queried + successfully. The response body shall contain in an array the + representations of all active subscriptions of the functional block that + invokes the method, i.e. zero or more representations of FM + subscriptions as defined in clause 7.6.2.3. If the "filter" URI + parameter was supplied in the request, the data in the response body + shall have been transformed according to the rules specified in clause + 5.2.2 of ETSI GS NFV-SOL 013. If the NFV-MANO functional entity supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL + 013 for this resource, inclusion of the Link HTTP header in this + response shall follow the provisions in clause 5.4.2.3 of ETSI GS + NFV-SOL 013. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + schema: + type: string + minimum: 1 + maximum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + minimum: 0 + maximum: 1 + Version: + description: | + Version of the API used in the response. + schema: + type: string + minimum: 1 + maximum: 1 + Link: + description: > + Reference to other resources. Used for paging in the present + document, see clause 4.7.2.1. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: > + This type represents a subscription related to notifications + about VNF faults. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO functional entity faults. It + shall comply with the provisions defined in table 7.6.3.2-1. + 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). + type: object + properties: + notificationTypes: + description: > + Match particular notification types. Permitted values: * + AlarmNotification * AlarmClearedNotification * + AlarmListRebuiltNotification The permitted values of the + "notificationTypes" attribute are spelled exactly as the + names of the notification types to facilitate automated + code generation systems. + type: array + items: + type: string + enum: + - AlarmNotification + - AlarmClearedNotification + - AlarmListRebuiltNotification + perceivedSeverities: + description: > + Match VNF alarms with a perceived severity listed in + this attribute. + type: array + items: + description: > + Indicates the relative level of urgency for operator + attention. * CRITICAL: The Critical severity level + indicates that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a + service affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the + existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the + detection of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level + indicates that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the + clearing of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTypes: + description: > + Match VNF alarms with an event type listed in this + attribute. + type: array + items: + description: > + The enumeration EventType represents those types of + events that trigger an alarm. * COMMUNICATIONS_ALARM: + An alarm of this type is associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is + associated with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is + associated with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated with + degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is associated + with an equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + probableCauses: + description: > + Match VNF alarms with a probable cause listed in this + attribute. + type: array + items: + type: string + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + subscription.get.200: + description: > + 200 OK + + The operation has completed successfully. The response body shall + contain a representation of the subscription resource. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + schema: + type: string + minimum: 1 + maximum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + minimum: 0 + maximum: 1 + Version: + description: | + Version of the API used in the response. + schema: + type: string + minimum: 1 + maximum: 1 + content: + application/json: + schema: + description: > + This type represents a subscription related to notifications about + VNF faults. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO functional entity faults. It + shall comply with the provisions defined in table 7.6.3.2-1. + 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). + type: object + properties: + notificationTypes: + description: > + Match particular notification types. Permitted values: * + AlarmNotification * AlarmClearedNotification * + AlarmListRebuiltNotification The permitted values of the + "notificationTypes" attribute are spelled exactly as the + names of the notification types to facilitate automated + code generation systems. + type: array + items: + type: string + enum: + - AlarmNotification + - AlarmClearedNotification + - AlarmListRebuiltNotification + perceivedSeverities: + description: > + Match VNF alarms with a perceived severity listed in this + attribute. + type: array + items: + description: > + Indicates the relative level of urgency for operator + attention. * CRITICAL: The Critical severity level + indicates that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a + service affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the + existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the + detection of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level + indicates that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the + clearing of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + eventTypes: + description: > + Match VNF alarms with an event type listed in this + attribute. + type: array + items: + description: > + The enumeration EventType represents those types of + events that trigger an alarm. * COMMUNICATIONS_ALARM: An + alarm of this type is associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is + associated with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is + associated with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated with + degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is associated + with an equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + probableCauses: + description: > + Match VNF alarms with a probable cause listed in this + attribute. + type: array + items: + type: string + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + subscription.delete.204: + description: > + 204 NO CONTENT + + Shall be returned when the "Individual subscription" resource has been + deleted successfully. The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + minimum: 0 + maximum: 1 + Version: + description: | + Version of the API used in the response. + schema: + type: string + minimum: 1 + maximum: 1 \ No newline at end of file -- GitLab From 55a57f62bd1419d1732420f5d048586c77f48e76 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 9 Jul 2020 11:59:17 +0500 Subject: [PATCH 411/580] Added Test Cases for Subscriptions.robot --- .../FaultManagement-APIKeyword.robot | 84 ++++++++++ .../Subscriptions.robot | 154 ++++++++++++++++++ .../environment/variables.txt | 4 + .../jsons/alarmModifications.json | 3 + .../jsons/fmSubscriptionRequest.json | 3 + .../schemas/FmSubscription.schema.json | 97 +++++++++++ .../schemas/FmSubscriptions.schema.json | 100 ++++++++++++ 7 files changed, 445 insertions(+) create mode 100644 SOL009/NFVMANOFaultManagement-API/Subscriptions.robot create mode 100644 SOL009/NFVMANOFaultManagement-API/jsons/alarmModifications.json create mode 100644 SOL009/NFVMANOFaultManagement-API/jsons/fmSubscriptionRequest.json create mode 100644 SOL009/NFVMANOFaultManagement-API/schemas/FmSubscription.schema.json create mode 100644 SOL009/NFVMANOFaultManagement-API/schemas/FmSubscriptions.schema.json diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot index 9633d085f..b063a059b 100644 --- a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -166,4 +166,88 @@ DELETE Fault Management Individual Alarm Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +POST Subscription + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/fmSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Check Operation Occurrence Id + ${opOccId}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${opOccId} + +POST Subscription Duplication permitted + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + Pass Execution If ${NFVMANO_DUPLICATION} == 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}"} + ${body}= Get File jsons/fmSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +POST Subscription Duplication not permitted + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + Pass Execution If ${NFVMANO_DUPLICATION} == 1 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}"} + ${body}= Get File jsons/fmSubscriptionRequest.json + 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}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +GET Subscriptions with filter + Log Get the list of active subscriptions using a filter + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +GET Subscriptions with Invalid filter + Log Get the list of active subscriptions using an invalid filter + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +PUT Subscriptions + log Trying to perform a PUT Subscriptions. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +PATCH Subscriptions + log Trying to perform a PATCH Subscriptions. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +DELETE Subscriptions + log Trying to perform a DELETE Subscriptions. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot new file mode 100644 index 000000000..2f4a25ac1 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot @@ -0,0 +1,154 @@ +*** Settings *** +Resource environment/variables.txt +Resource FaultManagement-APIKeyword.robot +Library DependencyLibrary +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +Create a new Fault Management alarm subscription + [Documentation] Test ID:8.3.3.3.1 + ... Test title: Create a new Fault Management alarm subscription + ... Test objective: The objective is to create a new Fault management alarm subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure + ... Pre-conditions: No subscription with the same filter and callbackUri exists + ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: subscription is created + POST Subscription + Check HTTP Response Status Code Is 201 + Check Operation Occurrence Id + Check HTTP Response Body Json Schema Is FmSubscription + + +Create a new alarm subscription - DUPLICATION + [Documentation] Test ID: 8.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-MANO 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 7.5.5.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: the NFV-MANO allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists + ... Post-Conditions: duplicated subscription is created + POST Subscription Duplication permitted + 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: 8.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-MANO 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 7.5.5.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: the NFV-MANO decides to not create a duplicate subscription resource + ... Post-Conditions: duplicated subscription is not created + POST Subscription Duplication not permitted + Check HTTP Response Status Code Is 303 + Check Operation Occurrence Id + Check HTTP Response Body Json Schema Is FmSubscription + +Retrieve a list of alarm subscriptions + [Documentation] Test ID: 8.3.3.3.4 + ... Test title: Retrieve a list of alarm subscriptions + ... Test objective: The objective is to retrieve the list of active subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. + ... Pre-conditions: none + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: noe + GET Subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is FmSubscriptions + +Retrieve a list of alarm subscriptions with filter + [Documentation] Test ID: 8.3.3.3.5 + ... Test title: Retrieve a list of alarm subscriptions with filter + ... Test objective: The objective is to retrieve the list of active subscriptions with filter and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. + ... Pre-conditions: none + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Subscriptions with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is FmSubscriptions + +Get information about multiple alarms as a Paged Response + [Documentation] Test ID: 8.3.3.3.6 + ... Test title: Get information about multiple alarms as a Paged Response + ... Test objective: The objective is to retrieve information about active list subscriptions as a Paged Response + ... Pre-conditions: none + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Subscriptions + Check HTTP Response Status Code Is 200 + Check LINK in Header + +GET subscriptions - Bad Request Invalid attribute-based filtering parameters + [Documentation] Test ID: 8.3.3.3.7 + ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters + ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters and perform a JSON schema and content validation of the returned problem details data structure. + ... Pre-conditions: none + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Subscriptions with Invalid filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + + +Get information about multiple alarms - Bad Request Response too Big + [Documentation] Test ID: 8.3.3.3.8 + ... Test title: Get information about multiple alarms - Bad Request Response too Big + ... Test objective: The objective is to try to retrieve information about active list subscription to check that response is too big and perform a JSON schema and content validation of the returned problem details data structure + ... Pre-conditions: none + ... Reference: Clause clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Subscriptions + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT subscriptions - Method not implemented + [Documentation] Test ID: 8.3.3.3.9 + ... Test title:PUT subscriptions - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to for Fault management subscriptions on VNF + ... Pre-conditions: none + ... RReference: clause 7.5.5.3.3 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Put Subscriptions + Check HTTP Response Status Code Is 405 + +PATCH subscriptions - Method not implemented + [Documentation] Test ID: 8.3.3.3.10 + ... Test title: PATCH subscriptions - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to for Fault management subscriptions on VNF + ... Pre-conditions: none + ... Reference: clause 7.5.5.3.4 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH Subscriptions + Check HTTP Response Status Code Is 405 + +DELETE subscriptions - Method not implemented + [Documentation] Test ID: 8.3.3.3.11 + ... Test title: DELETE subscriptions - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management subscriptions on VNF + ... Pre-conditions: none + ... Reference: clause 7.5.5.3.5 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: subscription is not deleted + DELETE Subscriptions + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt index f06277a9a..0e19218af 100644 --- a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt @@ -25,6 +25,10 @@ ${alarmId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d ${Etag}= an etag ${Etag_modified}= a modified etag +${NFVMANO_DUPLICATION} 1 +${sub_filter} filter +${sub_filter_invalid} filter_invalid + diff --git a/SOL009/NFVMANOFaultManagement-API/jsons/alarmModifications.json b/SOL009/NFVMANOFaultManagement-API/jsons/alarmModifications.json new file mode 100644 index 000000000..53121e5b7 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/jsons/alarmModifications.json @@ -0,0 +1,3 @@ +{ + "ackState": "ACKNOWLEDGED" +} \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/jsons/fmSubscriptionRequest.json b/SOL009/NFVMANOFaultManagement-API/jsons/fmSubscriptionRequest.json new file mode 100644 index 000000000..8d91c2b81 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/jsons/fmSubscriptionRequest.json @@ -0,0 +1,3 @@ +{ + "callbackUri": "http://127.0.0.1/subscribe" +} \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/schemas/FmSubscription.schema.json b/SOL009/NFVMANOFaultManagement-API/schemas/FmSubscription.schema.json new file mode 100644 index 000000000..f0d8052b1 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/schemas/FmSubscription.schema.json @@ -0,0 +1,97 @@ +{ + "description": "This type represents a subscription related to notifications about VNF faults.\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 NFV-MANO functional entity faults. It shall comply with the provisions defined in table 7.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * AlarmNotification * AlarmClearedNotification * AlarmListRebuiltNotification 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": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/schemas/FmSubscriptions.schema.json b/SOL009/NFVMANOFaultManagement-API/schemas/FmSubscriptions.schema.json new file mode 100644 index 000000000..56a8441cc --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/schemas/FmSubscriptions.schema.json @@ -0,0 +1,100 @@ +{ + "type": "array", + "items": { + "description": "This type represents a subscription related to notifications about VNF faults.\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 NFV-MANO functional entity faults. It shall comply with the provisions defined in table 7.6.3.2-1. 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": { + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * AlarmNotification * AlarmClearedNotification * AlarmListRebuiltNotification 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": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} +} -- GitLab From b1af86fe061950d965cc86975634ce168e956132 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 9 Jul 2020 13:16:36 +0500 Subject: [PATCH 412/580] Added Test Cases for IndiviualSubscription.robot --- .../FaultManagement-APIKeyword.robot | 48 ++++++++++++- .../IndividualSubscription.robot | 69 +++++++++++++++++++ .../environment/variables.txt | 2 +- 3 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot index b063a059b..26a08bedc 100644 --- a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -250,4 +250,50 @@ DELETE Subscriptions Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response - Set Global Variable @{response} ${outputResponse} \ No newline at end of file + Set Global Variable @{response} ${outputResponse} + +POST Individual Subscription + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +GET Individual Subscription + log Trying to get information about an individual subscription + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +PUT Individual Subscription + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +PATCH Individual Subscription + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +DELETE Individual Subscription + log Trying to perform a DELETE. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Check Individual Subscription deleted + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 404 \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot new file mode 100644 index 000000000..8d0b713b0 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot @@ -0,0 +1,69 @@ +*** Settings *** +Resource environment/variables.txt +Resource FaultManagement-APIKeyword.robot +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} + +*** Test Cases *** +Post Individual Subscription - Method not implemented + [Documentation] Test ID: 8.3.3.4.1 + ... Test title: Post Individual Subscription - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed for Fault management subscription on NFV-MANO + ... Pre-conditions: none + ... Reference: clause 7.5.6.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: subscription is not created + POST Individual Subscription + Check HTTP Response Status Code Is 405 + +Get Information about an individual subscription + [Documentation] Test ID: 8.3.3.4.2 + ... Test title: Get Information about an individual subscription + ... Test objective: The objective is to read an individual subscription for NFV-MANO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure + ... Pre-conditions: The subscription with the given id exists + ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual Subscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is FmSubscription + +PUT an individual subscription - Method not implemented + [Documentation] Test ID: 8.3.3.4.3 + ... Test title:PUT an individual subscription - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed for Fault management individual subscription on VNF + ... Pre-conditions: none + ... Reference: clause 7.5.6.3.3 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT Individual Subscription + Check HTTP Response Status Code Is 405 + +PATCH an individual subscription - Method not implemented + [Documentation] Test ID: 8.3.3.4.4 + ... Test title:PATCH an individual subscription - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed for Fault management individual subscription on VNF + ... Pre-conditions: none + ... Reference: clause 7.5.6.3.4 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH Individual Subscription + Check HTTP Response Status Code Is 405 + +DELETE an individual subscription + [Documentation] Test ID: 8.3.3.4.5 + ... Test title:DELETE an individual subscription + ... Test objective: The objective is to test that DELETE method removes individual subscription on VNF + ... Pre-conditions: The Subsbcription already exists + ... Reference: clause 7.5.6.3.5 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: subscription is not deleted + DELETE Individual Subscription + Check HTTP Response Status Code Is 204 + Check Individual Subscription deleted diff --git a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt index 0e19218af..a71c20af5 100644 --- a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt @@ -29,7 +29,7 @@ ${NFVMANO_DUPLICATION} 1 ${sub_filter} filter ${sub_filter_invalid} filter_invalid - +${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -- GitLab From c9a8557f624eeef84a3ccccc355fffca676fd1b0 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 13 Jul 2020 11:19:10 +0500 Subject: [PATCH 413/580] Added Test Cases for NotificationEndpoint.robot --- .../IndividualSubscription.robot | 2 +- .../NotificationEndpoint.robot | 149 +++++++++++ .../environment/variables.txt | 15 +- .../alarmClearedNotification.schema.json | 80 ++++++ .../alarmListRebuiltNotification.schema.json | 71 +++++ .../schemas/alarmNotification.schema.json | 250 ++++++++++++++++++ 6 files changed, 564 insertions(+), 3 deletions(-) create mode 100644 SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot create mode 100644 SOL009/NFVMANOFaultManagement-API/schemas/alarmClearedNotification.schema.json create mode 100644 SOL009/NFVMANOFaultManagement-API/schemas/alarmListRebuiltNotification.schema.json create mode 100644 SOL009/NFVMANOFaultManagement-API/schemas/alarmNotification.schema.json diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot index 8d0b713b0..d1aa2c198 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot @@ -3,7 +3,7 @@ Resource environment/variables.txt Resource FaultManagement-APIKeyword.robot Library JSONLibrary Library JSONSchemaLibrary schemas/ -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} *** Test Cases *** Post Individual Subscription - Method not implemented diff --git a/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot new file mode 100644 index 000000000..3d7cfc802 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot @@ -0,0 +1,149 @@ +*** Settings *** +Resource environment/variables.txt +Library MockServerLibrary +Library Process +Library OperatingSystem +Library Collections + +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true + +*** Test Cases *** +NFV-MANO Fault Alarm Notification + [Documentation] Test ID: 8.3.3.5.1 + ... Test title: NFV-MANO Fault Alarm Notification + ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm Notification when a virtualised resource within an NFV-MANO instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A NFV-MANO instance is instantiated, and a subscription for fault alarm notifications is available. + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Trigger the fault of a virtualised resource in the NFV-MANO instance (external action) + Check Alarm Notification Http POST Request Body Json Schema Is alarmNotification + Check Alarm Notification Http POST Request Body notificationType attribute Is alarmNotification + +NFV-MANO Fault Alarm Cleared Notification + [Documentation] Test ID: 8.3.3.5.2 + ... Test title: NFV-MANO Fault Alarm Cleared Notification + ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm Cleared Notification when a faulty virtualised resource within an NFV-MANO instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A NFV-MANO instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available. + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Trigger the clear of a faulty virtualised resource in the NFV-MANO instance (external action) + Check Alarm cleared Notification Http POST Request Body Json Schema Is alarmClearedNotification + Check Alarm cleared Notification Http POST Request Body notificationType attribute Is alarmClearedNotification + +NFV-MANO Fault Alarm List Rebuilt Notification + [Documentation] Test ID: 8.3.3.5.3 + ... Test title: NFV-MANO Fault Alarm List Rebuilt Notification + ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm List Rebuilt Notification when the NFV-MANO decides to rebuild the list of its NFV-MANO alarms, e.g. due to a corruption in the alarm storage, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A NFV-MANO instance is instantiated, one or more virtualised resource are in faulty state, and a subscription for fault alarm list rebuilt notifications is available. + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Trigger the NFV-MANO fault alarm list rebuild in the NFVO (external action) + Check Alarm list rebuilt Notification Http POST Request Body Json Schema Is alarmListRebuiltNotification + Check Alarm list rebuilt Notification Http POST Request Body notificationType attribute Is alarmListRebuiltNotification + + +*** Keywords *** +Trigger the fault of a virtualised resource in the NFV-MANO instance (external action) + #do nothing + Log do nothing + +Trigger the clear of a faulty virtualised resource in the NFV-MANO instance (external action) + #do nothing + Log do nothing + +Trigger the NFV-MANO fault alarm list rebuild in the NFVO (external action) + #do nothing + Log do nothing + +Check Alarm List Rebuilt Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + +Check Alarm List Rebuilt Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification Alarm List Rebuilt Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + +Check Alarm Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + +Check Alarm Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification Alarm Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + +Check Alarm cleared Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + + +Check Alarm cleared Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification Alarm Cleareance Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + + +Check Alarm Clerance Notification Http POST Request Body changeType attribute Is + [Arguments] ${type} + #do nothing + Log do nothing + + +Configure Notification Alarm List Rebuilt Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Configure Notification Alarm Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Configure Notification Alarm Cleareance Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Configure Notification Forward + [Arguments] ${schema} ${endpoint} ${endpoint_fwd} + Log Creating mock Http POST forward to handle ${schema} + &{notification_tmp}= Create Mock Request Matcher POST ${endpoint} body_type="JSON_SCHEMA" body=${schema} + &{notification_fwd}= Create Mock Http Forward ${endpoint_fwd} + Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} + +Create Sessions + Start Process java -jar ../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} diff --git a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt index a71c20af5..eee387083 100644 --- a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt @@ -31,5 +31,16 @@ ${sub_filter_invalid} filter_invalid ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f - - +${callback_uri} http://localhost +${callback_port} 9091 +${callback_endpoint} /endpoint +${callback_endpoint_fwd} /endpoint/check +${callback_endpoint_error} /endpoint_404 +${sleep_interval} 20s +${total_polling_time} 2 min +${polling_interval} 10 sec + +${notification_request} [] +${notification_response} [] + +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/schemas/alarmClearedNotification.schema.json b/SOL009/NFVMANOFaultManagement-API/schemas/alarmClearedNotification.schema.json new file mode 100644 index 000000000..08131723d --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/schemas/alarmClearedNotification.schema.json @@ -0,0 +1,80 @@ +{ + "description": "This type represents an alarm cleared notification about VNF faults. The notification shall be triggered by the VNFM when an alarm has been cleared.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "alarmId", + "alarmClearedTime", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"AlarmClearedNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "AlarmClearedNotification" + ] + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "alarmClearedTime": { + "description": "The time stamp indicating when the alarm was cleared.\n" + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "type": "object", + "required": [ + "subscription", + "alarm" + ], + "properties": { + "subscription": { + "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" + } + } + }, + "alarm": { + "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 diff --git a/SOL009/NFVMANOFaultManagement-API/schemas/alarmListRebuiltNotification.schema.json b/SOL009/NFVMANOFaultManagement-API/schemas/alarmListRebuiltNotification.schema.json new file mode 100644 index 000000000..bfe018df8 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/schemas/alarmListRebuiltNotification.schema.json @@ -0,0 +1,71 @@ +{ + "description": "This type represents a notification that the alarm list has been rebuilt, e.g. if the VNFM detects its storage holding the alarm list is corrupted. The notification shall be triggered by the VNFM when the alarm list has been rebuilt.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"AlarmListRebuiltNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "AlarmListRebuiltNotification" + ] + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "type": "object", + "required": [ + "subscription", + "alarms" + ], + "properties": { + "subscription": { + "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" + } + } + }, + "alarms": { + "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 diff --git a/SOL009/NFVMANOFaultManagement-API/schemas/alarmNotification.schema.json b/SOL009/NFVMANOFaultManagement-API/schemas/alarmNotification.schema.json new file mode 100644 index 000000000..1d31e7e34 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/schemas/alarmNotification.schema.json @@ -0,0 +1,250 @@ +{ + "name": "AlarmNotification", + "description": "Information of a VNF alarm.\n", + "in": "body", + "required": true, + "schema": { + "description": "This type represents an alarm notification about VNF faults. This notification shall be triggered by the VNFM when: * An alarm has been created. * An alarm has been updated, e.g. if the severity of the alarm has changed.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "alarm", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"AlarmNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "AlarmNotification" + ] + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarm": { + "description": "The alarm data type encapsulates information about an alarm.\n", + "type": "object", + "required": [ + "id", + "managedObjectId", + "rootCauseFaultyResource", + "alarmRaisedTime", + "ackState", + "perceivedSeverity", + "eventTime", + "eventType", + "probableCause", + "isRootCause", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "managedObjectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "rootCauseFaultyResource": { + "description": "This type represents the faulty virtual resources that have a negative impact on a VNF.\n", + "type": "object", + "required": [ + "faultyResource", + "faultyResourceType" + ], + "properties": { + "faultyResource": { + "required": [ + "vimConnectionId", + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the resource provider.\n", + "type": "string" + } + } + }, + "faultyResourceType": { + "description": "The enumeration FaultyResourceType represents those types of faulty resource.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] + } + } + }, + "alarmRaisedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmChangedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmClearedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "ackState": { + "description": "Acknowledgement state of the alarm. Permitted values: * UNACKNOWLEDGED * ACKNOWLEDGED.\n", + "type": "string", + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] + }, + "perceivedSeverity": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + }, + "eventTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "eventType": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. * COMMUNICATIONS_ALARM: An alarm of this type is associated with the procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a software or processing fault (ITU-T Recommendation X.733).\n* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n* QOS_ALARM: An alarm of this type is associated with degradation in the quality of a service (ITU-T Recommendation X.733).\n* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + }, + "faultType": { + "description": "Additional information to clarify the type of the fault.\n", + "type": "string" + }, + "probableCause": { + "description": "Information about the probable cause of the fault.\n", + "type": "string" + }, + "isRootCause": { + "description": "Attribute indicating if this fault is the root for other correlated alarms. If TRUE, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", + "type": "boolean" + }, + "correlatedAlarmIds": { + "description": "List of identifiers of other alarms correlated to this fault.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "faultDetails": { + "description": "Provides additional information about the fault.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links for 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" + } + } + }, + "objectInstance": { + "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" + } + } + } + } + } + } + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "type": "object", + "required": [ + "subscription" + ], + "properties": { + "subscription": { + "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 -- GitLab From c4acca6e3d4c8dd35383ff09038fdb6ad7289112 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 17 Aug 2020 12:25:22 +0500 Subject: [PATCH 414/580] Added Test Cases for ApiVersion.robot --- .../ApiVersion.robot | 211 ++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 SOL009/NFVMANOFaultManagement-API/ApiVersion.robot diff --git a/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot b/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot new file mode 100644 index 000000000..a02570f36 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot @@ -0,0 +1,211 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 8.3.3.6.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 8.3.3.6.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 8.3.3.6.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 8.3.3.6.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 8.3.3.6.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.3.6.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 8.3.3.6.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.3.6.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.3.6.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.3.6.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK -- GitLab From 274d83168769ee528b2e843629a86f8a175be988 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 19 Aug 2020 14:15:57 +0500 Subject: [PATCH 415/580] fixed issues --- .../NFVMANOFaultManagement-API/Alarms.robot | 10 ++++----- .../FaultManagement-APIKeyword.robot | 22 +++++++++++++------ .../IndividualAlarm.robot | 22 +++++++++---------- .../IndividualSubscription.robot | 8 +++---- .../NotificationEndpoint.robot | 4 ++-- .../Subscriptions.robot | 12 +++++----- 6 files changed, 42 insertions(+), 36 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/Alarms.robot b/SOL009/NFVMANOFaultManagement-API/Alarms.robot index 85e1dc22a..f9ee94c8a 100644 --- a/SOL009/NFVMANOFaultManagement-API/Alarms.robot +++ b/SOL009/NFVMANOFaultManagement-API/Alarms.robot @@ -11,7 +11,7 @@ Library OperatingSystem POST Alarms - Method not implemented [Documentation] Test ID: 8.3.3.1.1 ... Test title: POST Alarms - Method not implemented - ... Test objective: The objective is to test that Post method is not allowed to create Fault management alarms on NFV-MANO + ... Test objective: The objective is to test that Post method is not allowed to create fault management alarms on NFV-MANO ... Pre-conditions: none ... Reference: clause 7.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -63,7 +63,7 @@ Get information about multiple alarms Bad Request Invalid attribute-based filter Get information about multiple alarms as a Paged Response [Documentation] Test ID: 8.3.3.1.5 ... Test title: Get information about multiple alarms as a Paged Response - ... Test objective: The objective is to retrieve information about the alarm list as a Paged Response + ... Test objective: The objective is to retrieve information about the alarm list as a Paged Response. ... Pre-conditions: none ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -89,7 +89,7 @@ Get information about multiple alarms - Bad Request Response too Big PUT Alarms - Method not implemented [Documentation] Test ID: 8.3.3.1.7 ... Test title: PUT Alarms - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to for Fault management alarms on NFV-MANO + ... Test objective: The objective is to test that PUT method is not allowed to modify fault management alarms on NFV-MANO. ... Pre-conditions: none ... Reference: clause 7.5.3.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -101,7 +101,7 @@ PUT Alarms - Method not implemented PATCH Alarms - Method not implemented [Documentation] Test ID: 8.3.3.1.8 ... Test title: PATCH Alarms - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to for Fault management alarms on NFV-MANO + ... Test objective: The objective is to test that PATCH method is not allowed to modify fault management alarms on NFV-MANO. ... Pre-conditions: none ... Reference: clause 7.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -113,7 +113,7 @@ PATCH Alarms - Method not implemented DELETE Alarms - Method not implemented [Documentation] Test ID: 8.3.3.1.9 ... Test title: POST Alarms - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed for Fault management alarms on NFV-MANO + ... Test objective: The objective is to test that DELETE method is not allowed for fault management alarms on NFV-MANO ... Pre-conditions: none ... Reference: clause 7.5.3.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot index 26a08bedc..75b547369 100644 --- a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -28,7 +28,7 @@ Check HTTP Response Status Code Is Log Status code validated GET Fault Management Alarms - Log Query NFVO The GET method queries information about multiple alarms. + Log Query NFV-MANO The GET method queries information about multiple alarms. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query @@ -43,7 +43,7 @@ Check HTTP Response Body Json Schema Is Log Json Schema Validation OK GET Fault Management Alarms With Filters - Log Query NFVO The GET method queries information about multiple alarms with filters. + Log Query NFV-MANO The GET method queries information about multiple alarms with filters. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query @@ -52,7 +52,7 @@ GET Fault Management Alarms With Filters Set Global Variable @{response} ${outputResponse} GET Fault Management Alarms With Invalid Filters - Log Query NFVO The GET method queries information about multiple alarms with filters. + Log Query NFV-MANO The GET method queries information about multiple alarms with filters. Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query @@ -103,7 +103,7 @@ Send POST request for fault management Individual Alarm Set Global Variable @{response} ${outputResponse} GET Fault Management Individual Alarm - Log Query VNF The GET method queries information about an alarm. + Log Query NFV-MANO The GET method queries information about an alarm. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -122,7 +122,7 @@ PUT Fault Management Individual Alarm ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Check Postcondition fault management individual alarm Exists +Check Postcondition fault management individual alarm exists Log Checking that individual alarm exists GET Fault Management Individual Alarm Check HTTP Response Status Code Is 200 @@ -139,7 +139,7 @@ PATCH Fault Management Individual Alarm Set Global Variable @{response} ${outputResponse} PATCH Fault Management Individual Alarm - precondition failed - log Trying to perform a PATCH. This method modifies an individual alarm resource + log Trying to perform a PATCH. This method fail to modifies an individual alarm resource Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Set Headers {"If-Match": "${original_etag[0]}"} @@ -150,7 +150,7 @@ PATCH Fault Management Individual Alarm - precondition failed Set Global Variable @{response} ${outputResponse} PATCH Fault Management Individual Alarm Conflict - log Trying to perform a PATCH. This method modifies an individual alarm resource + log Trying to perform a PATCH. This method fail to modifies an individual alarm resource Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Set Headers {"If-Match": "${Etag}"} @@ -182,6 +182,14 @@ Check Operation Occurrence Id ${opOccId}= Get Value From Json ${response['headers']} $..Location Should Not Be Empty ${opOccId} +Check PostCondition Subscription is created + log Trying to get information about an individual subscription + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + POST Subscription Duplication permitted Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Pass Execution If ${NFVMANO_DUPLICATION} == 0 NVFO is not permitting duplication. Skipping the test diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot index ab533b017..23e3d369e 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot @@ -13,7 +13,7 @@ Library DependencyLibrary POST Alarm - Method not implemented [Documentation] Test ID: 8.3.3.2.1 ... Test title: POST Alarm - Method not implemented - ... Test objective: The objective is to test that Post method is not allowed to create Fault management individual alarm on NFV-MANO + ... Test objective: The objective is to test that Post method is not allowed to create fault management individual alarm on NFV-MANO ... Pre-conditions: none ... Reference: clause 7.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -38,7 +38,7 @@ Get information about an fault management individual alarm PUT Alarm - Method not implemented [Documentation] Test ID: 8.3.3.2.3 ... Test title: PUT Alarm - Method not implemented - ... Test objective: he objective is to test that PUT method is not allowed to for Fault management individual alarm on NFV-MANO + ... Test objective: he objective is to test that PUT method is not allowed to for fault management individual alarm on NFV-MANO ... Pre-conditions: The related alarm exists ... Reference: clause 7.5.4.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -55,8 +55,7 @@ PATCH Fault Management Individual Alarm ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: none - Check Postcondition fault management individual alarm Exists + ... Post-Conditions: Alarm is modified. PATCH Fault Management Individual Alarm Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is AlarmModification @@ -69,11 +68,11 @@ Modify an individual alarm resource - Precondition failed ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: none - Check Postcondition fault management individual alarm Exists + ... Post-Conditions: Alarm is not modified. PATCH Fault Management Individual Alarm - precondition failed Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails + Check Postcondition fault management individual alarm exists Modify an individual alarm resource - Conflict [Documentation] Test ID: 8.3.3.2.6 @@ -83,22 +82,21 @@ Modify an individual alarm resource - Conflict ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: none - Depends On Test PATCH Fault Management Individual Alarm - Check Postcondition fault management individual alarm Exists + ... Post-Conditions: Alarm is not modified. PATCH Fault Management Individual Alarm Conflict Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails + Check Postcondition fault management individual alarm exists DELETE Alarm - Method not implemented [Documentation] Test ID: 8.3.3.2.7 ... Test title: DELETE Alarm - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management individual alarm on NFV-MANO - ... Pre-conditions: nona + ... Test objective: The objective is to test that DELETE method is not allowed to delete fault management individual alarm on NFV-MANO. + ... Pre-conditions: none ... Reference: clause 7.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The individual alarm still exists DELETE Fault Management Individual Alarm Check HTTP Response Status Code Is 405 - Check Postcondition fault management individual alarm Exists \ No newline at end of file + Check Postcondition fault management individual alarm exists \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot index d1aa2c198..470d86a23 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot @@ -9,7 +9,7 @@ Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} Post Individual Subscription - Method not implemented [Documentation] Test ID: 8.3.3.4.1 ... Test title: Post Individual Subscription - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed for Fault management subscription on NFV-MANO + ... Test objective: The objective is to test that POST method is not allowed for fault management subscription on NFV-MANO ... Pre-conditions: none ... Reference: clause 7.5.6.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -21,7 +21,7 @@ Post Individual Subscription - Method not implemented Get Information about an individual subscription [Documentation] Test ID: 8.3.3.4.2 ... Test title: Get Information about an individual subscription - ... Test objective: The objective is to read an individual subscription for NFV-MANO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure + ... Test objective: The objective is to read an individual subscription from NFV-MANO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure ... Pre-conditions: The subscription with the given id exists ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -34,7 +34,7 @@ Get Information about an individual subscription PUT an individual subscription - Method not implemented [Documentation] Test ID: 8.3.3.4.3 ... Test title:PUT an individual subscription - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed for Fault management individual subscription on VNF + ... Test objective: The objective is to test that PUT method is not allowed for fault management individual subscription on VNF ... Pre-conditions: none ... Reference: clause 7.5.6.3.3 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -46,7 +46,7 @@ PUT an individual subscription - Method not implemented PATCH an individual subscription - Method not implemented [Documentation] Test ID: 8.3.3.4.4 ... Test title:PATCH an individual subscription - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed for Fault management individual subscription on VNF + ... Test objective: The objective is to test that PATCH method is not allowed for fault management individual subscription on VNF ... Pre-conditions: none ... Reference: clause 7.5.6.3.4 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO diff --git a/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot index 3d7cfc802..ed61029e8 100644 --- a/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot @@ -12,7 +12,7 @@ Suite Teardown Terminate All Processes kill=true NFV-MANO Fault Alarm Notification [Documentation] Test ID: 8.3.3.5.1 ... Test title: NFV-MANO Fault Alarm Notification - ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm Notification when a virtualised resource within an NFV-MANO instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm Notification when a resource within an NFV-MANO instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NFV-MANO instance is instantiated, and a subscription for fault alarm notifications is available. ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -25,7 +25,7 @@ NFV-MANO Fault Alarm Notification NFV-MANO Fault Alarm Cleared Notification [Documentation] Test ID: 8.3.3.5.2 ... Test title: NFV-MANO Fault Alarm Cleared Notification - ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm Cleared Notification when a faulty virtualised resource within an NFV-MANO instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm Cleared Notification when a faulty resource within an NFV-MANO instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NFV-MANO instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available. ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO diff --git a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot index 2f4a25ac1..ab61f8d46 100644 --- a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot @@ -10,8 +10,8 @@ Library JSONSchemaLibrary schemas/ *** Test Cases *** Create a new Fault Management alarm subscription [Documentation] Test ID:8.3.3.3.1 - ... Test title: Create a new Fault Management alarm subscription - ... Test objective: The objective is to create a new Fault management alarm subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure + ... Test title: Create a new fault management alarm subscription + ... Test objective: The objective is to create a new fault management alarm subscription and perform a JSON schema and content validation of the returned fault management alarms subscription data structure ... Pre-conditions: No subscription with the same filter and callbackUri exists ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -21,7 +21,7 @@ Create a new Fault Management alarm subscription Check HTTP Response Status Code Is 201 Check Operation Occurrence Id Check HTTP Response Body Json Schema Is FmSubscription - + Check PostCondition Subscription is created Create a new alarm subscription - DUPLICATION [Documentation] Test ID: 8.3.3.3.2 @@ -120,7 +120,7 @@ Get information about multiple alarms - Bad Request Response too Big PUT subscriptions - Method not implemented [Documentation] Test ID: 8.3.3.3.9 ... Test title:PUT subscriptions - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to for Fault management subscriptions on VNF + ... Test objective: The objective is to test that PUT method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none ... RReference: clause 7.5.5.3.3 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -132,7 +132,7 @@ PUT subscriptions - Method not implemented PATCH subscriptions - Method not implemented [Documentation] Test ID: 8.3.3.3.10 ... Test title: PATCH subscriptions - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to for Fault management subscriptions on VNF + ... Test objective: The objective is to test that PATCH method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none ... Reference: clause 7.5.5.3.4 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -144,7 +144,7 @@ PATCH subscriptions - Method not implemented DELETE subscriptions - Method not implemented [Documentation] Test ID: 8.3.3.3.11 ... Test title: DELETE subscriptions - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management subscriptions on VNF + ... Test objective: The objective is to test that DELETE method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none ... Reference: clause 7.5.5.3.5 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO -- GitLab From be3650cfeea3113e656549a4e24545be81d2a0e1 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 19 Aug 2020 15:56:34 +0500 Subject: [PATCH 416/580] Postcondition for creation of duplicate subscription added --- .../FaultManagement-APIKeyword.robot | 22 +++++++++++++++++++ .../Subscriptions.robot | 2 ++ 2 files changed, 24 insertions(+) diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot index 75b547369..bcf560e44 100644 --- a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -201,6 +201,15 @@ POST Subscription Duplication permitted ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} +Check Postcondition FaultManagement Subscription Is Set + Log Check Postcondition subscription exist + Set Headers {"Accept": "${ACCEPT_JSON}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 200 + + POST Subscription Duplication not permitted Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Pass Execution If ${NFVMANO_DUPLICATION} == 1 NVFO is not permitting duplication. Skipping the test @@ -212,6 +221,19 @@ POST Subscription Duplication not permitted ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} +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']} + Integer response status 200 + Log Received a 200 OK as expected + ${contentType}= Output response headers Content-Type + Should Contain ${contentType} application/json + ${result}= Output response body + Validate Json FMSubscription.schema.json ${result} + Log Validated FMSubscription schema + + GET Subscriptions Log Get the list of active subscriptions Set Headers {"Accept": "${ACCEPT}"} diff --git a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot index ab61f8d46..3867997d9 100644 --- a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot @@ -36,6 +36,7 @@ Create a new alarm subscription - DUPLICATION Check HTTP Response Status Code Is 201 Check Operation Occurrence Id Check HTTP Response Body Json Schema Is FmSubscription + Check Postcondition FaultManagement Subscription Is Set Create a new alarm subscription - NO DUPLICATION [Documentation] Test ID: 8.3.3.3.3 @@ -50,6 +51,7 @@ Create a new alarm subscription - NO DUPLICATION Check HTTP Response Status Code Is 303 Check Operation Occurrence Id Check HTTP Response Body Json Schema Is FmSubscription + Check Postcondition Subscription Resource Returned in Location Header Is Available Retrieve a list of alarm subscriptions [Documentation] Test ID: 8.3.3.3.4 -- GitLab From b82ac978b904d267b699091a75d7daefabf3f689 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 19 Aug 2020 15:59:37 +0500 Subject: [PATCH 417/580] Added postcondition for individualSubscription --- .../FaultManagement-APIKeyword.robot | 4 ++++ .../NFVMANOFaultManagement-API/IndividualSubscription.robot | 1 + 2 files changed, 5 insertions(+) diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot index bcf560e44..b7b9174a6 100644 --- a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -290,6 +290,10 @@ POST Individual Subscription ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} +Check Postcondition subscription not created + GET Individual Subscription + Check HTTP Response Status Code Is 404 + GET Individual Subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot index 470d86a23..9d9b91a64 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot @@ -17,6 +17,7 @@ Post Individual Subscription - Method not implemented ... Post-Conditions: subscription is not created POST Individual Subscription Check HTTP Response Status Code Is 405 + Check Postcondition subscription not created Get Information about an individual subscription [Documentation] Test ID: 8.3.3.4.2 -- GitLab From ffcd5734a5b15e43a74657bc597b5930a6b11bab Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 21 Aug 2020 10:30:43 +0500 Subject: [PATCH 418/580] added test case for alarm attribute-based filtering --- .../NFVMANOFaultManagement-API/Alarms.robot | 72 +++++++++++++++++++ .../FaultManagement-APIKeyword.robot | 27 ++++++- .../environment/variables.txt | 3 + 3 files changed, 101 insertions(+), 1 deletion(-) diff --git a/SOL009/NFVMANOFaultManagement-API/Alarms.robot b/SOL009/NFVMANOFaultManagement-API/Alarms.robot index f9ee94c8a..bffdf4308 100644 --- a/SOL009/NFVMANOFaultManagement-API/Alarms.robot +++ b/SOL009/NFVMANOFaultManagement-API/Alarms.robot @@ -85,6 +85,78 @@ Get information about multiple alarms - Bad Request Response too Big GET Fault Management Alarms Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about alarms with attribute-based filter "id" + [Documentation] Test ID: 8.3.3.1.14 + ... Test title: GET information about alarms with attribute-based filter "id" + ... Test objective: The objective is to retrieve information about the alarm list with alarm filter "id" + ... Pre-conditions: + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Alarms Task with filter "id" + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Alarm + Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "id" + +GET information about multiple alarms with attribute-based filter "managedObjectId" + [Documentation] Test ID: 8.3.3.1.15 + ... Test title: GET information about multiple alarms with attribute-based filter "managedObjectId" + ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "managedObjectId" + ... Pre-conditions: + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Alarms Task with filter "managedObjectId" + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Alarms + Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "managedObjectId" + +GET information about multiple alarms with attribute-based filter "eventType" + [Documentation] Test ID: 8.3.3.1.17 + ... Test title: GET information about multiple alarms with attribute-based filter "eventType" + ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "eventType" + ... Pre-conditions: + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Alarms Task with filter "eventType" + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Alarms + Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "eventType" + +GET information about multiple alarms with attribute-based filter "perceivedSeverity" + [Documentation] Test ID: 8.3.3.1.18 + ... Test title: GET information about multiple alarms with attribute-based filter "perceivedSeverity" + ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "perceivedSeverity" + ... Pre-conditions: + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Alarms Task with filter "perceivedSeverity" + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Alarms + Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "perceivedSeverity" + +GET information about multiple alarms with attribute-based filter "probableCause" + [Documentation] Test ID: 8.3.3.1.19 + ... Test title: GET information about multiple alarms with attribute-based filter "probableCause" + ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "probableCause" + ... Pre-conditions: + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Alarms Task with filter "probableCause" + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Alarms + Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "probableCause" + + PUT Alarms - Method not implemented [Documentation] Test ID: 8.3.3.1.7 diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot index b7b9174a6..7560790ba 100644 --- a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -330,4 +330,29 @@ Check Individual Subscription deleted Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 404 \ No newline at end of file + Integer response status 404 + +GET Alarms Task with filter "id" + Log Query NFV-MANO The GET method queries information about multiple alarms with filters "id". + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?id=${alarmId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "id" + Should Be Equal As Strings ${response['body']['id']} ${alarmId} + +GET Alarms Task with filter "managedObjectId" + Log Query VNF The GET method queries information about multiple alarms with filters "vnfcInstanceIds". + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?vnfcInstanceIds=${managedObjectId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "managedObjectId" + Should Be Equal As Strings ${response['body']['managedObjectId']} ${managedObjectId} + diff --git a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt index eee387083..39094b638 100644 --- a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt @@ -18,6 +18,9 @@ ${CONTENT_TYPE_PATCH} application/merge-patch+json ${alarm_filter} managedObjectId ${managedObjectId} 007c111c-38a1-42c0-a666-7475ecb1567c +${eventType} COMMUNICATIONS_ALARM +${probableCause} "" +${perceivedSeverity} CRITICAL ${invalid_alarm_filter} badFilter ${alarmId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d -- GitLab From 075941142cd3a102ea8e91e8fb8771b67f6df2ee Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 21 Aug 2020 10:31:55 +0500 Subject: [PATCH 419/580] change TD ids --- SOL009/NFVMANOFaultManagement-API/Alarms.robot | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/Alarms.robot b/SOL009/NFVMANOFaultManagement-API/Alarms.robot index bffdf4308..79bbeff5d 100644 --- a/SOL009/NFVMANOFaultManagement-API/Alarms.robot +++ b/SOL009/NFVMANOFaultManagement-API/Alarms.robot @@ -87,7 +87,7 @@ Get information about multiple alarms - Bad Request Response too Big Check HTTP Response Body Json Schema Is ProblemDetails GET information about alarms with attribute-based filter "id" - [Documentation] Test ID: 8.3.3.1.14 + [Documentation] Test ID: 8.3.3.1.7 ... Test title: GET information about alarms with attribute-based filter "id" ... Test objective: The objective is to retrieve information about the alarm list with alarm filter "id" ... Pre-conditions: @@ -101,7 +101,7 @@ GET information about alarms with attribute-based filter "id" Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "id" GET information about multiple alarms with attribute-based filter "managedObjectId" - [Documentation] Test ID: 8.3.3.1.15 + [Documentation] Test ID: 8.3.3.1.8 ... Test title: GET information about multiple alarms with attribute-based filter "managedObjectId" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "managedObjectId" ... Pre-conditions: @@ -115,7 +115,7 @@ GET information about multiple alarms with attribute-based filter "managedObject Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "managedObjectId" GET information about multiple alarms with attribute-based filter "eventType" - [Documentation] Test ID: 8.3.3.1.17 + [Documentation] Test ID: 8.3.3.1.9 ... Test title: GET information about multiple alarms with attribute-based filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "eventType" ... Pre-conditions: @@ -129,7 +129,7 @@ GET information about multiple alarms with attribute-based filter "eventType" Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "eventType" GET information about multiple alarms with attribute-based filter "perceivedSeverity" - [Documentation] Test ID: 8.3.3.1.18 + [Documentation] Test ID: 8.3.3.1.10 ... Test title: GET information about multiple alarms with attribute-based filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "perceivedSeverity" ... Pre-conditions: @@ -143,7 +143,7 @@ GET information about multiple alarms with attribute-based filter "perceivedSeve Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "perceivedSeverity" GET information about multiple alarms with attribute-based filter "probableCause" - [Documentation] Test ID: 8.3.3.1.19 + [Documentation] Test ID: 8.3.3.1.11 ... Test title: GET information about multiple alarms with attribute-based filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "probableCause" ... Pre-conditions: @@ -156,10 +156,8 @@ GET information about multiple alarms with attribute-based filter "probableCause Check HTTP Response Body Json Schema Is Alarms Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "probableCause" - - PUT Alarms - Method not implemented - [Documentation] Test ID: 8.3.3.1.7 + [Documentation] Test ID: 8.3.3.1.12 ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify fault management alarms on NFV-MANO. ... Pre-conditions: none @@ -171,7 +169,7 @@ PUT Alarms - Method not implemented Check HTTP Response Status Code Is 405 PATCH Alarms - Method not implemented - [Documentation] Test ID: 8.3.3.1.8 + [Documentation] Test ID: 8.3.3.1.13 ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify fault management alarms on NFV-MANO. ... Pre-conditions: none @@ -183,7 +181,7 @@ PATCH Alarms - Method not implemented Check HTTP Response Status Code Is 405 DELETE Alarms - Method not implemented - [Documentation] Test ID: 8.3.3.1.9 + [Documentation] Test ID: 8.3.3.1.14 ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for fault management alarms on NFV-MANO ... Pre-conditions: none -- GitLab From d73c2ad9072c6ff2405755afec8e51db4d56cfd9 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 21 Aug 2020 10:43:37 +0500 Subject: [PATCH 420/580] added test case for subscription attribute-based filtering --- .../FaultManagement-APIKeyword.robot | 108 +++++++++++++++++- .../Subscriptions.robot | 78 ++++++++++++- .../environment/variables.txt | 2 + 3 files changed, 183 insertions(+), 5 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot index 7560790ba..97fdd3b16 100644 --- a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -345,14 +345,118 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba Should Be Equal As Strings ${response['body']['id']} ${alarmId} GET Alarms Task with filter "managedObjectId" - Log Query VNF The GET method queries information about multiple alarms with filters "vnfcInstanceIds". + Log Query NFV-MANO The GET method queries information about multiple alarms with filters "NFV-MANOcInstanceIds". Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?vnfcInstanceIds=${managedObjectId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?NFV-MANOcInstanceIds=${managedObjectId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "managedObjectId" Should Be Equal As Strings ${response['body']['managedObjectId']} ${managedObjectId} +GET Alarms Task with filter "eventType" + Log Query NFV-MANO The GET method queries information about multiple alarms with filters "eventType". + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?eventType=${eventType} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "eventType" + :FOR ${item} IN @{response['body']} + Should Be Equal As Strings ${item['eventType']} ${eventType} + END + +GET Alarms Task with filter "perceivedSeverity" + Log Query NFV-MANO The GET method queries information about multiple alarms with filters "perceivedSeverity". + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?perceivedSeverity=${perceivedSeverity} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "perceivedSeverity" + :FOR ${item} IN @{response['body']} + Should Be Equal As Strings ${item['perceivedSeverity']} ${perceivedSeverity} + END + +GET Alarms Task with filter "probableCause" + Log Query NFV-MANO The GET method queries information about multiple alarms with filters "probableCause". + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?probableCause=${probableCause} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "probableCause" + :FOR ${item} IN @{response['body']} + Should Be Equal As Strings ${item['probableCause']} ${probableCause} + END + +Get subscriptions with filter "id" + Log Get the list of active subscriptions using a filter "id" + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?id=${subscription_id} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check PostCondition HTTP Response Body Subscription Matches the requested attribute-based filter "id" + Should Be Equal As Strings ${response['body']['id']} ${subscription_id} + +Get subscriptions with filter "filter_notificationTypes" + Log Get the list of active subscriptions using a filter "filter.notificationTypes" + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.notificationTypes=${notification_type} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_notificationTypes" + :FOR ${item} IN @{response['body']} + Should Be Equal As Strings ${item['filter']['notificationTypes']} ${notification_type} + END + +Get subscriptions with filter "filter_perceivedSeverities" + Log Get the list of active subscriptions using a filter "filter.perceivedSeverities" + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.perceivedSeverities=${perceivedSeverity} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_perceivedSeverities" + :FOR ${item} IN @{response['body']} + Should Be Equal As Strings ${item['filter']['perceivedSeverities']} ${perceivedSeverity} + END + +Get subscriptions with filter "filter_eventTypes" + Log Get the list of active subscriptions using a filter "filter.eventTypes" + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.eventTypes=${eventType} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_eventTypes" + :FOR ${item} IN @{response['body']} + Should Be Equal As Strings ${item['filter']['eventTypes']} ${eventType} + END + +Get subscriptions with filter "filter_probableCauses" + Log Get the list of active subscriptions using a filter "filter.probableCauses" + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.probableCauses=${probableCause} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_probableCauses" + :FOR ${item} IN @{response['body']} + Should Be Equal As Strings ${item['filter']['probableCauses']} ${probableCause} + END diff --git a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot index 3867997d9..9983932ed 100644 --- a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot @@ -119,8 +119,80 @@ Get information about multiple alarms - Bad Request Response too Big Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -PUT subscriptions - Method not implemented +GET Subscription with attribute-based filter "id" [Documentation] Test ID: 8.3.3.3.9 + ... Test title: GET Subscription with attribute-based filter "id" + ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" + ... Pre-conditions: + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get subscriptions with filter "id" + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is FmSubscription + Check PostCondition HTTP Response Body Subscription Matches the requested attribute-based filter "id" + + +Get subscriptions with filter "filter.notificationTypes" + [Documentation] Test ID: 8.3.3.3.10 + ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" + ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" + ... Pre-conditions: + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get subscriptions with filter "filter_notificationTypes" + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is FmSubscriptions + Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_notificationTypes" + +Get subscriptions with filter "filter.perceivedSeverities" + [Documentation] Test ID: 8.3.3.3.11 + ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" + ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" + ... Pre-conditions: + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get subscriptions with filter "filter_perceivedSeverities" + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is FmSubscriptions + Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_perceivedSeverities" + +Get subscriptions with filter "filter.eventTypes" + [Documentation] Test ID: 8.3.3.3.12 + ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" + ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" + ... Pre-conditions: + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get subscriptions with filter "filter_eventTypes" + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is FmSubscriptions + Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_eventTypes" + +Get subscriptions with filter "filter.probableCauses" + [Documentation] Test ID: 8.3.3.3.13 + ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" + ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" + ... Pre-conditions: + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get subscriptions with filter "filter_probableCauses" + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is FmSubscriptions + Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_probableCauses" + + +PUT subscriptions - Method not implemented + [Documentation] Test ID: 8.3.3.3.14 ... Test title:PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none @@ -132,7 +204,7 @@ PUT subscriptions - Method not implemented Check HTTP Response Status Code Is 405 PATCH subscriptions - Method not implemented - [Documentation] Test ID: 8.3.3.3.10 + [Documentation] Test ID: 8.3.3.3.15 ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none @@ -144,7 +216,7 @@ PATCH subscriptions - Method not implemented Check HTTP Response Status Code Is 405 DELETE subscriptions - Method not implemented - [Documentation] Test ID: 8.3.3.3.11 + [Documentation] Test ID: 8.3.3.3.16 ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt index 39094b638..c58650bcc 100644 --- a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt @@ -33,6 +33,8 @@ ${sub_filter} filter ${sub_filter_invalid} filter_invalid ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${faultyResourceType} +${notification_type} AlarmNotification ${callback_uri} http://localhost ${callback_port} 9091 -- GitLab From 420a774638d1556351069fe95cbf2b9bd2d8e12f Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 10 Sep 2020 18:21:27 +0200 Subject: [PATCH 421/580] added authentication tests + fixed some keywords --- .../NFVMANOFaultManagement-API/Alarms.robot | 92 +++++++++++++------ .../FaultManagement-APIKeyword.robot | 43 +++++++-- .../Subscriptions.robot | 22 ++--- .../environment/variables.txt | 4 +- 4 files changed, 113 insertions(+), 48 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/Alarms.robot b/SOL009/NFVMANOFaultManagement-API/Alarms.robot index 79bbeff5d..1eedfd8b9 100644 --- a/SOL009/NFVMANOFaultManagement-API/Alarms.robot +++ b/SOL009/NFVMANOFaultManagement-API/Alarms.robot @@ -23,7 +23,7 @@ POST Alarms - Method not implemented Get information about multiple alarms [Documentation] Test ID: 8.3.3.1.2 ... Test title: Get information about multiple alarms - ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure + ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema of the returned alarms data structure ... Pre-conditions: none ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -36,7 +36,7 @@ Get information about multiple alarms Get information about multiple alarms with filter [Documentation] Test ID: 8.3.3.1.3 ... Test title: Get information about multiple alarms with filter - ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters + ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -46,10 +46,10 @@ Get information about multiple alarms with filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is Alarms -Get information about multiple alarms Bad Request Invalid attribute-based filtering parameters +Get information about multiple alarms with invalid attribute-based filtering parameters [Documentation] Test ID: 8.3.3.1.4 - ... Test title: Get information about multiple alarms Bad Request Invalid attribute-based filtering parameters - ... Test objective: The objective is to try to retrieve information about the alarm list with invalid filters and perform a JSON schema and content validation of the returned problem details data structure + ... Test title: Get information about multiple alarms with invalid attribute-based filtering parameters + ... Test objective: The objective is to try to retrieve information about the alarm list with invalid filters and perform a JSON schema validation of the returned problem details data structure ... Pre-conditions: none ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -71,12 +71,12 @@ Get information about multiple alarms as a Paged Response ... Post-Conditions: none GET Fault Management Alarms Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Link Get information about multiple alarms - Bad Request Response too Big [Documentation] Test ID: 8.3.3.1.6 ... Test title: Get information about multiple alarms - Bad Request Response too Big - ... Test objective: The objective is to try to retrieve information about the alarm list because response is too big and perform a JSON schema and content validation of the returned problem details data structure + ... Test objective: The objective is to try to retrieve information about the alarm list because response is too big and perform a JSON schema validation of the returned problem details data structure ... Pre-conditions: none ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -90,12 +90,12 @@ GET information about alarms with attribute-based filter "id" [Documentation] Test ID: 8.3.3.1.7 ... Test title: GET information about alarms with attribute-based filter "id" ... Test objective: The objective is to retrieve information about the alarm list with alarm filter "id" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: - GET Alarms Task with filter "id" + ... Applicability: none + ... Post-Conditions: none + GET Fault Management Alarms with filter "id" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is Alarm Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "id" @@ -107,9 +107,9 @@ GET information about multiple alarms with attribute-based filter "managedObject ... Pre-conditions: ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: - GET Alarms Task with filter "managedObjectId" + ... Applicability: none + ... Post-Conditions: none + GET Fault Management Alarms with filter "managedObjectId" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is Alarms Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "managedObjectId" @@ -121,9 +121,9 @@ GET information about multiple alarms with attribute-based filter "eventType" ... Pre-conditions: ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: - GET Alarms Task with filter "eventType" + ... Applicability: none + ... Post-Conditions: none + GET Fault Management Alarms with filter "eventType" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is Alarms Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "eventType" @@ -132,12 +132,12 @@ GET information about multiple alarms with attribute-based filter "perceivedSeve [Documentation] Test ID: 8.3.3.1.10 ... Test title: GET information about multiple alarms with attribute-based filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "perceivedSeverity" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: - GET Alarms Task with filter "perceivedSeverity" + ... Applicability: none + ... Post-Conditions: none + GET Fault Management Alarms with filter "perceivedSeverity" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is Alarms Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "perceivedSeverity" @@ -146,18 +146,54 @@ GET information about multiple alarms with attribute-based filter "probableCause [Documentation] Test ID: 8.3.3.1.11 ... Test title: GET information about multiple alarms with attribute-based filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "probableCause" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: - GET Alarms Task with filter "probableCause" + ... Applicability: none + ... Post-Conditions: none + GET Fault Management Alarms with filter "probableCause" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is Alarms Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "probableCause" -PUT Alarms - Method not implemented +Get information about multiple alarms with malformed authorization token [Documentation] Test ID: 8.3.3.1.12 + ... Test title: Get information about multiple alarms with malformed authorization token + ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when using malformed authorization token + ... Pre-conditions: none + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [3] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Fault Management Alarms with malformed authorization token + Check HTTP Response Status Code Is 400 + +Get information about multiple alarms without authorization token + [Documentation] Test ID: 8.3.3.1.13 + ... Test title: Get information about multiple alarms without authorization token + ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when omitting the authorization token + ... Pre-conditions: none + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [3] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Fault Management Alarms without authorization token + Check HTTP Response Status Code Is 401 + +GET information about multiple alarms with expired or revoked authorization token + [Documentation] Test ID: 8.3.3.1.14 + ... Test title: GET information about multiple alarms with expired or revoked authorization token + ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when using expired or revoked authorization token + ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [3] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Fault Management Alarms with expired or revoked authorization token + Check HTTP Response Status Code Is 401 + +PUT Alarms - Method not implemented + [Documentation] Test ID: 8.3.3.1.15 ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify fault management alarms on NFV-MANO. ... Pre-conditions: none @@ -169,7 +205,7 @@ PUT Alarms - Method not implemented Check HTTP Response Status Code Is 405 PATCH Alarms - Method not implemented - [Documentation] Test ID: 8.3.3.1.13 + [Documentation] Test ID: 8.3.3.1.16 ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify fault management alarms on NFV-MANO. ... Pre-conditions: none @@ -181,7 +217,7 @@ PATCH Alarms - Method not implemented Check HTTP Response Status Code Is 405 DELETE Alarms - Method not implemented - [Documentation] Test ID: 8.3.3.1.14 + [Documentation] Test ID: 8.3.3.1.17 ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for fault management alarms on NFV-MANO ... Pre-conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot index 97fdd3b16..cc846559f 100644 --- a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -60,7 +60,7 @@ GET Fault Management Alarms With Invalid Filters ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Check LINK in Header +Check HTTP Response Header Contains Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} @@ -178,7 +178,7 @@ POST Subscription ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Check Operation Occurrence Id +Check HTTP Response Header Contains Location ${opOccId}= Get Value From Json ${response['headers']} $..Location Should Not Be Empty ${opOccId} @@ -332,7 +332,7 @@ Check Individual Subscription deleted Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 404 -GET Alarms Task with filter "id" +GET Fault Management Alarms with filter "id" Log Query NFV-MANO The GET method queries information about multiple alarms with filters "id". Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -344,7 +344,7 @@ GET Alarms Task with filter "id" Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "id" Should Be Equal As Strings ${response['body']['id']} ${alarmId} -GET Alarms Task with filter "managedObjectId" +GET Fault Management Alarms with filter "managedObjectId" Log Query NFV-MANO The GET method queries information about multiple alarms with filters "NFV-MANOcInstanceIds". Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -356,7 +356,7 @@ GET Alarms Task with filter "managedObjectId" Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "managedObjectId" Should Be Equal As Strings ${response['body']['managedObjectId']} ${managedObjectId} -GET Alarms Task with filter "eventType" +GET Fault Management Alarms with filter "eventType" Log Query NFV-MANO The GET method queries information about multiple alarms with filters "eventType". Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -370,7 +370,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba Should Be Equal As Strings ${item['eventType']} ${eventType} END -GET Alarms Task with filter "perceivedSeverity" +GET Fault Management Alarms with filter "perceivedSeverity" Log Query NFV-MANO The GET method queries information about multiple alarms with filters "perceivedSeverity". Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -384,7 +384,7 @@ Check PostCondition HTTP Response Body alarms Matches the requested attribute-ba Should Be Equal As Strings ${item['perceivedSeverity']} ${perceivedSeverity} END -GET Alarms Task with filter "probableCause" +GET Fault Management Alarms with filter "probableCause" Log Query NFV-MANO The GET method queries information about multiple alarms with filters "probableCause". Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -460,3 +460,32 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri :FOR ${item} IN @{response['body']} Should Be Equal As Strings ${item['filter']['probableCauses']} ${probableCause} END + +GET Fault Management Alarms with malformed authorization token + Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting authentication + Log The GET method queries using invalid token + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Fault Management Alarms without authorization token + Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication + Log The GET method queries omitting token + Set Headers {"Accept": "${ACCEPT_JSON}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Fault Management Alarms with expired or revoked authorization token + Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication + Log The GET method queries using invalid token + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot index 9983932ed..caec27420 100644 --- a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot @@ -11,7 +11,7 @@ Library JSONSchemaLibrary schemas/ Create a new Fault Management alarm subscription [Documentation] Test ID:8.3.3.3.1 ... Test title: Create a new fault management alarm subscription - ... Test objective: The objective is to create a new fault management alarm subscription and perform a JSON schema and content validation of the returned fault management alarms subscription data structure + ... Test objective: The objective is to create a new fault management alarm subscription and perform a JSON schema validation of the returned fault management alarms subscription data structure ... Pre-conditions: No subscription with the same filter and callbackUri exists ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -19,14 +19,14 @@ Create a new Fault Management alarm subscription ... Post-Conditions: subscription is created POST Subscription Check HTTP Response Status Code Is 201 - Check Operation Occurrence Id Check HTTP Response Body Json Schema Is FmSubscription + Check HTTP Response Header Contains Location Check PostCondition Subscription is created Create a new alarm subscription - DUPLICATION [Documentation] Test ID: 8.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-MANO allowing duplication and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. + ... Test objective: The objective is to create a new subscription with the NFV-MANO allowing duplication and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: subscription with the same filter and callbackUri exists ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -34,14 +34,14 @@ Create a new alarm subscription - DUPLICATION ... Post-Conditions: duplicated subscription is created POST Subscription Duplication permitted Check HTTP Response Status Code Is 201 - Check Operation Occurrence Id Check HTTP Response Body Json Schema Is FmSubscription + Check HTTP Response Header Contains Location Check Postcondition FaultManagement Subscription Is Set Create a new alarm subscription - NO DUPLICATION [Documentation] Test ID: 8.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-MANO not allowing duplication and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. + ... Test objective: The objective is to create a new subscription with the NFV-MANO not allowing duplication and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: subscription with the same filter and callbackUri exists ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -49,14 +49,14 @@ Create a new alarm subscription - NO DUPLICATION ... Post-Conditions: duplicated subscription is not created POST Subscription Duplication not permitted Check HTTP Response Status Code Is 303 - Check Operation Occurrence Id Check HTTP Response Body Json Schema Is FmSubscription + Check HTTP Response Header Contains Location Check Postcondition Subscription Resource Returned in Location Header Is Available Retrieve a list of alarm subscriptions [Documentation] Test ID: 8.3.3.3.4 ... Test title: Retrieve a list of alarm subscriptions - ... Test objective: The objective is to retrieve the list of active subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. + ... Test objective: The objective is to retrieve the list of active subscriptions and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -69,7 +69,7 @@ Retrieve a list of alarm subscriptions Retrieve a list of alarm subscriptions with filter [Documentation] Test ID: 8.3.3.3.5 ... Test title: Retrieve a list of alarm subscriptions with filter - ... Test objective: The objective is to retrieve the list of active subscriptions with filter and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. + ... Test objective: The objective is to retrieve the list of active subscriptions with filter and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -90,12 +90,12 @@ Get information about multiple alarms as a Paged Response ... Post-Conditions: none GET Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Link GET subscriptions - Bad Request Invalid attribute-based filtering parameters [Documentation] Test ID: 8.3.3.3.7 ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters - ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters and perform a JSON schema and content validation of the returned problem details data structure. + ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters and perform a JSON schema validation of the returned problem details data structure. ... Pre-conditions: none ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -109,7 +109,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters Get information about multiple alarms - Bad Request Response too Big [Documentation] Test ID: 8.3.3.3.8 ... Test title: Get information about multiple alarms - Bad Request Response too Big - ... Test objective: The objective is to try to retrieve information about active list subscription to check that response is too big and perform a JSON schema and content validation of the returned problem details data structure + ... Test objective: The objective is to try to retrieve information about active list subscription to check that response is too big and perform a JSON schema validation of the returned problem details data structure ... Pre-conditions: none ... Reference: Clause clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO diff --git a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt index c58650bcc..fdb1ee9d3 100644 --- a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt @@ -7,8 +7,8 @@ ${CONTENT_TYPE} application/json ${ACCEPT} application/json ${ACCEPT_JSON} application/json ${AUTH_USAGE} 1 - -${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX +${NEG_AUTHORIZATION} Bearer negativetoken +${BAD_AUTHORIZATION} Bear sometoken ${apiRoot} / ${apiName} nfvmanofm ${apiMajorVersion} v1 -- GitLab From 6ebbfeb35c816a9b429e1b00b059be60fd9a65e0 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 14 Sep 2020 11:10:38 +0500 Subject: [PATCH 422/580] templating, minor bugs fix and new testcases added --- .../NFVMANOFaultManagement-API/Alarms.robot | 7 ++--- .../FaultManagement-APIKeyword.robot | 14 ++++++---- .../IndividualAlarm.robot | 28 +++++++++++++------ .../IndividualSubscription.robot | 18 ++++++++++-- .../Subscriptions.robot | 2 -- .../jsons/fmSubscriptionRequest.json | 6 ++-- 6 files changed, 49 insertions(+), 26 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/Alarms.robot b/SOL009/NFVMANOFaultManagement-API/Alarms.robot index 1eedfd8b9..395a6c96c 100644 --- a/SOL009/NFVMANOFaultManagement-API/Alarms.robot +++ b/SOL009/NFVMANOFaultManagement-API/Alarms.robot @@ -59,7 +59,6 @@ Get information about multiple alarms with invalid attribute-based filtering par Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails - Get information about multiple alarms as a Paged Response [Documentation] Test ID: 8.3.3.1.5 ... Test title: Get information about multiple alarms as a Paged Response @@ -161,7 +160,7 @@ Get information about multiple alarms with malformed authorization token ... Test title: Get information about multiple alarms with malformed authorization token ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when using malformed authorization token ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [3] v3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -173,7 +172,7 @@ Get information about multiple alarms without authorization token ... Test title: Get information about multiple alarms without authorization token ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when omitting the authorization token ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [3] v3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -185,7 +184,7 @@ GET information about multiple alarms with expired or revoked authorization toke ... Test title: GET information about multiple alarms with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when using expired or revoked authorization token ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [3] v3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot index cc846559f..d2f872b07 100644 --- a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -1,5 +1,6 @@ *** Settings *** -Resource environment/variables.txt +Library String +Resource environment/variables.txt Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} Library JSONLibrary Library JSONSchemaLibrary schemas/ @@ -173,7 +174,8 @@ POST Subscription Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/fmSubscriptionRequest.json + ${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} @@ -196,7 +198,8 @@ POST Subscription Duplication permitted Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/fmSubscriptionRequest.json + ${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} @@ -209,14 +212,14 @@ Check Postcondition FaultManagement Subscription Is Set Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 - POST Subscription Duplication not permitted Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Pass Execution If ${NFVMANO_DUPLICATION} == 1 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}"} - ${body}= Get File jsons/fmSubscriptionRequest.json + ${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} @@ -232,7 +235,6 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab ${result}= Output response body Validate Json FMSubscription.schema.json ${result} Log Validated FMSubscription schema - GET Subscriptions Log Get the list of active subscriptions diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot index 23e3d369e..3493df3dd 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot @@ -34,9 +34,21 @@ Get information about an fault management individual alarm GET Fault Management Individual Alarm Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarm + +Get information about an fault management individual alarm - Not Found + [Documentation] Test ID: 8.3.3.2.3 + ... Test title: Get information about an fault management individual alarm + ... Test objective: The objective is to test the retrieval of information about an individual alarm fails when the resource is not present. + ... Pre-conditions: none + ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Fault Management Individual Alarm + Check HTTP Response Status Code Is 404 PUT Alarm - Method not implemented - [Documentation] Test ID: 8.3.3.2.3 + [Documentation] Test ID: 8.3.3.2.4 ... Test title: PUT Alarm - Method not implemented ... Test objective: he objective is to test that PUT method is not allowed to for fault management individual alarm on NFV-MANO ... Pre-conditions: The related alarm exists @@ -48,9 +60,9 @@ PUT Alarm - Method not implemented Check HTTP Response Status Code Is 405 PATCH Fault Management Individual Alarm - [Documentation] Test ID: 8.3.3.2.4 + [Documentation] Test ID: 8.3.3.2.5 ... Test title: PATCH Fault Management Individual Alarm - ... Test objective: The objective is to Modify an individual alarm resource and perform a JSON schema and content validation of the returned alarm data structure + ... Test objective: The objective is to Modify an individual alarm resource, and perform a JSON schema validation of the returned alarm data structure. ... Pre-conditions: The related alarm exists ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -61,9 +73,9 @@ PATCH Fault Management Individual Alarm Check HTTP Response Body Json Schema Is AlarmModification Modify an individual alarm resource - Precondition failed - [Documentation] Test ID: 8.3.3.2.5 + [Documentation] Test ID: 8.3.3.2.6 ... Test title: Modify an individual alarm resource - Precondition failed - ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set + ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set, and perform a JSON schema validation of the returned data structure. ... Pre-conditions: The related alarm exists ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -75,9 +87,9 @@ Modify an individual alarm resource - Precondition failed Check Postcondition fault management individual alarm exists Modify an individual alarm resource - Conflict - [Documentation] Test ID: 8.3.3.2.6 + [Documentation] Test ID: 8.3.3.2.7 ... Test title: Modify an individual alarm resource - Conflict - ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the resource was modified by another entity + ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the resource was modified by another entity , and perform a JSON schema validation of the returned data structure. ... Pre-conditions: The related alarm exists ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -89,7 +101,7 @@ Modify an individual alarm resource - Conflict Check Postcondition fault management individual alarm exists DELETE Alarm - Method not implemented - [Documentation] Test ID: 8.3.3.2.7 + [Documentation] Test ID: 8.3.3.2.8 ... Test title: DELETE Alarm - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete fault management individual alarm on NFV-MANO. ... Pre-conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot index 9d9b91a64..21d22e06a 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot @@ -31,9 +31,21 @@ Get Information about an individual subscription GET Individual Subscription Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscription + +Get Information about an individual subscription - Not Found + [Documentation] Test ID: 8.3.3.4.3 + ... Test title: Get Information about an individual subscription - Not Found + ... Test objective: The objective is to test the retrieval of individual subscription from NFV-MANO alarms fails when the resource is not present. + ... Pre-conditions: none + ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual Subscription + Check HTTP Response Status Code Is 404 PUT an individual subscription - Method not implemented - [Documentation] Test ID: 8.3.3.4.3 + [Documentation] Test ID: 8.3.3.4.4 ... Test title:PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for fault management individual subscription on VNF ... Pre-conditions: none @@ -45,7 +57,7 @@ PUT an individual subscription - Method not implemented Check HTTP Response Status Code Is 405 PATCH an individual subscription - Method not implemented - [Documentation] Test ID: 8.3.3.4.4 + [Documentation] Test ID: 8.3.3.4.5 ... Test title:PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for fault management individual subscription on VNF ... Pre-conditions: none @@ -57,7 +69,7 @@ PATCH an individual subscription - Method not implemented Check HTTP Response Status Code Is 405 DELETE an individual subscription - [Documentation] Test ID: 8.3.3.4.5 + [Documentation] Test ID: 8.3.3.4.6 ... Test title:DELETE an individual subscription ... Test objective: The objective is to test that DELETE method removes individual subscription on VNF ... Pre-conditions: The Subsbcription already exists diff --git a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot index caec27420..7eee42b04 100644 --- a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot @@ -105,7 +105,6 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails - Get information about multiple alarms - Bad Request Response too Big [Documentation] Test ID: 8.3.3.3.8 ... Test title: Get information about multiple alarms - Bad Request Response too Big @@ -190,7 +189,6 @@ Get subscriptions with filter "filter.probableCauses" Check HTTP Response Body Json Schema Is FmSubscriptions Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_probableCauses" - PUT subscriptions - Method not implemented [Documentation] Test ID: 8.3.3.3.14 ... Test title:PUT subscriptions - Method not implemented diff --git a/SOL009/NFVMANOFaultManagement-API/jsons/fmSubscriptionRequest.json b/SOL009/NFVMANOFaultManagement-API/jsons/fmSubscriptionRequest.json index 8d91c2b81..0e741d682 100644 --- a/SOL009/NFVMANOFaultManagement-API/jsons/fmSubscriptionRequest.json +++ b/SOL009/NFVMANOFaultManagement-API/jsons/fmSubscriptionRequest.json @@ -1,3 +1,3 @@ -{ - "callbackUri": "http://127.0.0.1/subscribe" -} \ No newline at end of file +{{ + "callbackUri": "{callback_uri}{callback_endpoint}" +}} \ No newline at end of file -- GitLab From ea3981420461cf482d159662efeca64afc78881f Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 14 Sep 2020 12:40:36 +0500 Subject: [PATCH 423/580] redundant post-conditions removed --- .../FaultManagement-APIKeyword.robot | 4 ---- SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot | 5 ++--- .../NFVMANOFaultManagement-API/IndividualSubscription.robot | 3 +-- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot index d2f872b07..a83c15dd4 100644 --- a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -292,10 +292,6 @@ POST Individual Subscription ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Check Postcondition subscription not created - GET Individual Subscription - Check HTTP Response Status Code Is 404 - GET Individual Subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot index 3493df3dd..c1a4b258e 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot @@ -108,7 +108,6 @@ DELETE Alarm - Method not implemented ... Reference: clause 7.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The individual alarm still exists + ... Post-Conditions: none DELETE Fault Management Individual Alarm - Check HTTP Response Status Code Is 405 - Check Postcondition fault management individual alarm exists \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot index 21d22e06a..116617884 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot @@ -14,10 +14,9 @@ Post Individual Subscription - Method not implemented ... Reference: clause 7.5.6.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: subscription is not created + ... Post-Conditions: none POST Individual Subscription Check HTTP Response Status Code Is 405 - Check Postcondition subscription not created Get Information about an individual subscription [Documentation] Test ID: 8.3.3.4.2 -- GitLab From aeb402e036ea492a9db3f6abe65ad2e57f89eee6 Mon Sep 17 00:00:00 2001 From: Sana Zulfiqar Date: Mon, 14 Sep 2020 10:54:17 +0200 Subject: [PATCH 424/580] minor changes in pre-conditions --- SOL009/NFVMANOFaultManagement-API/Alarms.robot | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/Alarms.robot b/SOL009/NFVMANOFaultManagement-API/Alarms.robot index 395a6c96c..53ba9ed6e 100644 --- a/SOL009/NFVMANOFaultManagement-API/Alarms.robot +++ b/SOL009/NFVMANOFaultManagement-API/Alarms.robot @@ -103,7 +103,7 @@ GET information about multiple alarms with attribute-based filter "managedObject [Documentation] Test ID: 8.3.3.1.8 ... Test title: GET information about multiple alarms with attribute-based filter "managedObjectId" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "managedObjectId" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -117,7 +117,7 @@ GET information about multiple alarms with attribute-based filter "eventType" [Documentation] Test ID: 8.3.3.1.9 ... Test title: GET information about multiple alarms with attribute-based filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "eventType" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -165,7 +165,7 @@ Get information about multiple alarms with malformed authorization token ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none GET Fault Management Alarms with malformed authorization token - Check HTTP Response Status Code Is 400 + Check HTTP Response Status Code Is 401 Get information about multiple alarms without authorization token [Documentation] Test ID: 8.3.3.1.13 @@ -226,5 +226,4 @@ DELETE Alarms - Method not implemented ... Post-Conditions: none DELETE Fault management Alarms Check HTTP Response Status Code Is 405 - Check Postcondition NFV-MANO fault management alarms Exists \ No newline at end of file -- GitLab From 45bf953fd98b13edc7dce58515f7475037691cd6 Mon Sep 17 00:00:00 2001 From: Sana Zulfiqar Date: Mon, 14 Sep 2020 10:59:51 +0200 Subject: [PATCH 425/580] pre-condition updated --- SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot index c1a4b258e..d16f9b4b4 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot @@ -51,7 +51,7 @@ PUT Alarm - Method not implemented [Documentation] Test ID: 8.3.3.2.4 ... Test title: PUT Alarm - Method not implemented ... Test objective: he objective is to test that PUT method is not allowed to for fault management individual alarm on NFV-MANO - ... Pre-conditions: The related alarm exists + ... Pre-conditions: none ... Reference: clause 7.5.4.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none -- GitLab From 163566d859fcc2c150a1e37015045b9c75d98d7b Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 22 Oct 2020 18:16:50 +0200 Subject: [PATCH 426/580] updated references --- .../NFVMANOFaultManagement-API/Alarms.robot | 34 +++++++++---------- .../ApiVersion.robot | 20 +++++------ .../IndividualAlarm.robot | 16 ++++----- .../IndividualSubscription.robot | 12 +++---- .../NotificationEndpoint.robot | 6 ++-- .../Subscriptions.robot | 32 ++++++++--------- 6 files changed, 60 insertions(+), 60 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/Alarms.robot b/SOL009/NFVMANOFaultManagement-API/Alarms.robot index 53ba9ed6e..c31d850cb 100644 --- a/SOL009/NFVMANOFaultManagement-API/Alarms.robot +++ b/SOL009/NFVMANOFaultManagement-API/Alarms.robot @@ -13,7 +13,7 @@ POST Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create fault management alarms on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.3.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get information about multiple alarms ... Test title: Get information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema of the returned alarms data structure ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get information about multiple alarms with filter ... Test title: Get information about multiple alarms with filter ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ Get information about multiple alarms with invalid attribute-based filtering par ... Test title: Get information about multiple alarms with invalid attribute-based filtering parameters ... Test objective: The objective is to try to retrieve information about the alarm list with invalid filters and perform a JSON schema validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ Get information about multiple alarms as a Paged Response ... Test title: Get information about multiple alarms as a Paged Response ... Test objective: The objective is to retrieve information about the alarm list as a Paged Response. ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ Get information about multiple alarms - Bad Request Response too Big ... Test title: Get information about multiple alarms - Bad Request Response too Big ... Test objective: The objective is to try to retrieve information about the alarm list because response is too big and perform a JSON schema validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ GET information about alarms with attribute-based filter "id" ... Test title: GET information about alarms with attribute-based filter "id" ... Test objective: The objective is to retrieve information about the alarm list with alarm filter "id" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ GET information about multiple alarms with attribute-based filter "managedObject ... Test title: GET information about multiple alarms with attribute-based filter "managedObjectId" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "managedObjectId" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ GET information about multiple alarms with attribute-based filter "eventType" ... Test title: GET information about multiple alarms with attribute-based filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "eventType" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -132,7 +132,7 @@ GET information about multiple alarms with attribute-based filter "perceivedSeve ... Test title: GET information about multiple alarms with attribute-based filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "perceivedSeverity" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -146,7 +146,7 @@ GET information about multiple alarms with attribute-based filter "probableCause ... Test title: GET information about multiple alarms with attribute-based filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "probableCause" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ Get information about multiple alarms with malformed authorization token ... Test title: Get information about multiple alarms with malformed authorization token ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when using malformed authorization token ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -172,7 +172,7 @@ Get information about multiple alarms without authorization token ... Test title: Get information about multiple alarms without authorization token ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when omitting the authorization token ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -184,7 +184,7 @@ GET information about multiple alarms with expired or revoked authorization toke ... Test title: GET information about multiple alarms with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when using expired or revoked authorization token ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -196,7 +196,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify fault management alarms on NFV-MANO. ... Pre-conditions: none - ... Reference: clause 7.5.3.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.3.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -208,7 +208,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify fault management alarms on NFV-MANO. ... Pre-conditions: none - ... Reference: clause 7.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.3.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -220,7 +220,7 @@ DELETE Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for fault management alarms on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.3.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.3.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot b/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot index a02570f36..0dde1341d 100644 --- a/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot +++ b/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot @@ -11,7 +11,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot index d16f9b4b4..49d8d806e 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot @@ -15,7 +15,7 @@ POST Alarm - Method not implemented ... Test title: POST Alarm - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create fault management individual alarm on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.4.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Get information about an fault management individual alarm ... Test title: Get information about an fault management individual alarm ... Test objective: The objective is to retrieve information about an individual alarm and perform a JSON schema and content validation of the returned alarm data structure ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ Get information about an fault management individual alarm - Not Found ... Test title: Get information about an fault management individual alarm ... Test objective: The objective is to test the retrieval of information about an individual alarm fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Alarm - Method not implemented ... Test title: PUT Alarm - Method not implemented ... Test objective: he objective is to test that PUT method is not allowed to for fault management individual alarm on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.4.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.4.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Fault Management Individual Alarm ... Test title: PATCH Fault Management Individual Alarm ... Test objective: The objective is to Modify an individual alarm resource, and perform a JSON schema validation of the returned alarm data structure. ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Alarm is modified. @@ -77,7 +77,7 @@ Modify an individual alarm resource - Precondition failed ... Test title: Modify an individual alarm resource - Precondition failed ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set, and perform a JSON schema validation of the returned data structure. ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Alarm is not modified. @@ -91,7 +91,7 @@ Modify an individual alarm resource - Conflict ... Test title: Modify an individual alarm resource - Conflict ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the resource was modified by another entity , and perform a JSON schema validation of the returned data structure. ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Alarm is not modified. @@ -105,7 +105,7 @@ DELETE Alarm - Method not implemented ... Test title: DELETE Alarm - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete fault management individual alarm on NFV-MANO. ... Pre-conditions: none - ... Reference: clause 7.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.4.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot index 116617884..b4022daf4 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ Post Individual Subscription - Method not implemented ... Test title: Post Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for fault management subscription on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.6.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.6.3.1 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ Get Information about an individual subscription ... Test title: Get Information about an individual subscription ... Test objective: The objective is to read an individual subscription from NFV-MANO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure ... Pre-conditions: The subscription with the given id exists - ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ Get Information about an individual subscription - Not Found ... Test title: Get Information about an individual subscription - Not Found ... Test objective: The objective is to test the retrieval of individual subscription from NFV-MANO alarms fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PUT an individual subscription - Method not implemented ... Test title:PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for fault management individual subscription on VNF ... Pre-conditions: none - ... Reference: clause 7.5.6.3.3 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.6.3.3 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ PATCH an individual subscription - Method not implemented ... Test title:PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for fault management individual subscription on VNF ... Pre-conditions: none - ... Reference: clause 7.5.6.3.4 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.6.3.4 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ DELETE an individual subscription ... Test title:DELETE an individual subscription ... Test objective: The objective is to test that DELETE method removes individual subscription on VNF ... Pre-conditions: The Subsbcription already exists - ... Reference: clause 7.5.6.3.5 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.6.3.5 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: subscription is not deleted diff --git a/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot index ed61029e8..47640fb7c 100644 --- a/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot @@ -14,7 +14,7 @@ NFV-MANO Fault Alarm Notification ... Test title: NFV-MANO Fault Alarm Notification ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm Notification when a resource within an NFV-MANO instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NFV-MANO instance is instantiated, and a subscription for fault alarm notifications is available. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ NFV-MANO Fault Alarm Cleared Notification ... Test title: NFV-MANO Fault Alarm Cleared Notification ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm Cleared Notification when a faulty resource within an NFV-MANO instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NFV-MANO instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ NFV-MANO Fault Alarm List Rebuilt Notification ... Test title: NFV-MANO Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm List Rebuilt Notification when the NFV-MANO decides to rebuild the list of its NFV-MANO alarms, e.g. due to a corruption in the alarm storage, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NFV-MANO instance is instantiated, one or more virtualised resource are in faulty state, and a subscription for fault alarm list rebuilt notifications is available. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot index 7eee42b04..cfa5851cc 100644 --- a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot @@ -13,7 +13,7 @@ Create a new Fault Management alarm subscription ... Test title: Create a new fault management alarm subscription ... Test objective: The objective is to create a new fault management alarm subscription and perform a JSON schema validation of the returned fault management alarms subscription data structure ... Pre-conditions: No subscription with the same filter and callbackUri exists - ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: subscription is created @@ -28,7 +28,7 @@ Create a new alarm subscription - DUPLICATION ... Test title: Create a new alarm subscription - DUPLICATION ... Test objective: The objective is to create a new subscription with the NFV-MANO allowing duplication and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: the NFV-MANO allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists ... Post-Conditions: duplicated subscription is created @@ -43,7 +43,7 @@ Create a new alarm subscription - NO DUPLICATION ... Test title: Create a new alarm subscription - NO DUPLICATION ... Test objective: The objective is to create a new subscription with the NFV-MANO not allowing duplication and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: the NFV-MANO decides to not create a duplicate subscription resource ... Post-Conditions: duplicated subscription is not created @@ -58,7 +58,7 @@ Retrieve a list of alarm subscriptions ... Test title: Retrieve a list of alarm subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: noe @@ -71,7 +71,7 @@ Retrieve a list of alarm subscriptions with filter ... Test title: Retrieve a list of alarm subscriptions with filter ... Test objective: The objective is to retrieve the list of active subscriptions with filter and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ Get information about multiple alarms as a Paged Response ... Test title: Get information about multiple alarms as a Paged Response ... Test objective: The objective is to retrieve information about active list subscriptions as a Paged Response ... Pre-conditions: none - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters and perform a JSON schema validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ Get information about multiple alarms - Bad Request Response too Big ... Test title: Get information about multiple alarms - Bad Request Response too Big ... Test objective: The objective is to try to retrieve information about active list subscription to check that response is too big and perform a JSON schema validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: @@ -138,7 +138,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: @@ -152,7 +152,7 @@ Get subscriptions with filter "filter.perceivedSeverities" ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" ... Pre-conditions: - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: @@ -166,7 +166,7 @@ Get subscriptions with filter "filter.eventTypes" ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" ... Pre-conditions: - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: @@ -180,7 +180,7 @@ Get subscriptions with filter "filter.probableCauses" ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" ... Pre-conditions: - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: @@ -194,7 +194,7 @@ PUT subscriptions - Method not implemented ... Test title:PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none - ... RReference: clause 7.5.5.3.3 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... RReference: clause 7.5.5.3.3 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -206,7 +206,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none - ... Reference: clause 7.5.5.3.4 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.5.3.4 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -218,7 +218,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none - ... Reference: clause 7.5.5.3.5 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 7.5.5.3.5 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: subscription is not deleted -- GitLab From 989123078f9c60cf48056705c555aabf9b0c88de Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 26 Oct 2020 16:11:25 +0500 Subject: [PATCH 427/580] minor bugs fix added --- .../NFVMANOFaultManagement-API/Alarms.robot | 1 - .../IndividualAlarm.robot | 17 +++++---- .../IndividualSubscription.robot | 4 +-- .../Subscriptions.robot | 35 +++++++++---------- 4 files changed, 27 insertions(+), 30 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/Alarms.robot b/SOL009/NFVMANOFaultManagement-API/Alarms.robot index c31d850cb..4ac515cb8 100644 --- a/SOL009/NFVMANOFaultManagement-API/Alarms.robot +++ b/SOL009/NFVMANOFaultManagement-API/Alarms.robot @@ -6,7 +6,6 @@ Library JSONLibrary Library JSONSchemaLibrary schemas/ Library OperatingSystem - *** Test Cases *** POST Alarms - Method not implemented [Documentation] Test ID: 8.3.3.1.1 diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot index 49d8d806e..5a38fd5f5 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot @@ -7,12 +7,10 @@ Library JSONLibrary Library JSONSchemaLibrary schemas/ Library DependencyLibrary - - *** Test Cases *** -POST Alarm - Method not implemented +POST Individual Alarm - Method not implemented [Documentation] Test ID: 8.3.3.2.1 - ... Test title: POST Alarm - Method not implemented + ... Test title: POST Individual Alarm - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create fault management individual alarm on NFV-MANO ... Pre-conditions: none ... Reference: clause 7.5.4.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 @@ -46,11 +44,12 @@ Get information about an fault management individual alarm - Not Found ... Post-Conditions: none GET Fault Management Individual Alarm Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails -PUT Alarm - Method not implemented +PUT Individual Alarm - Method not implemented [Documentation] Test ID: 8.3.3.2.4 - ... Test title: PUT Alarm - Method not implemented - ... Test objective: he objective is to test that PUT method is not allowed to for fault management individual alarm on NFV-MANO + ... Test title: PUT Individual Alarm - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to for fault management individual alarm on NFV-MANO ... Pre-conditions: none ... Reference: clause 7.5.4.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -100,9 +99,9 @@ Modify an individual alarm resource - Conflict Check HTTP Response Body Json Schema Is ProblemDetails Check Postcondition fault management individual alarm exists -DELETE Alarm - Method not implemented +DELETE Individual Alarm - Method not implemented [Documentation] Test ID: 8.3.3.2.8 - ... Test title: DELETE Alarm - Method not implemented + ... Test title: DELETE Individual Alarm - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete fault management individual alarm on NFV-MANO. ... Pre-conditions: none ... Reference: clause 7.5.4.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot index b4022daf4..a957c5e34 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot @@ -75,7 +75,7 @@ DELETE an individual subscription ... Reference: clause 7.5.6.3.5 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: subscription is not deleted + ... Post-Conditions: subscription is deleted DELETE Individual Subscription Check HTTP Response Status Code Is 204 - Check Individual Subscription deleted + Check Individual Subscription deleted \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot index cfa5851cc..d9f55b948 100644 --- a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot @@ -45,7 +45,7 @@ Create a new alarm subscription - NO DUPLICATION ... Pre-conditions: subscription with the same filter and callbackUri exists ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: the NFV-MANO decides to not create a duplicate subscription resource + ... Applicability: the NFV-MANO does not allow to create a duplicate subscription resource ... Post-Conditions: duplicated subscription is not created POST Subscription Duplication not permitted Check HTTP Response Status Code Is 303 @@ -122,26 +122,25 @@ GET Subscription with attribute-based filter "id" [Documentation] Test ID: 8.3.3.3.9 ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with filter "id" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscription Check PostCondition HTTP Response Body Subscription Matches the requested attribute-based filter "id" - Get subscriptions with filter "filter.notificationTypes" [Documentation] Test ID: 8.3.3.3.10 ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with filter "filter_notificationTypes" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -151,11 +150,11 @@ Get subscriptions with filter "filter.perceivedSeverities" [Documentation] Test ID: 8.3.3.3.11 ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with filter "filter_perceivedSeverities" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -165,11 +164,11 @@ Get subscriptions with filter "filter.eventTypes" [Documentation] Test ID: 8.3.3.3.12 ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with filter "filter_eventTypes" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -179,11 +178,11 @@ Get subscriptions with filter "filter.probableCauses" [Documentation] Test ID: 8.3.3.3.13 ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" - ... Pre-conditions: + ... Pre-conditions: none ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get subscriptions with filter "filter_probableCauses" Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is FmSubscriptions @@ -221,6 +220,6 @@ DELETE subscriptions - Method not implemented ... Reference: clause 7.5.5.3.5 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: subscription is not deleted + ... Post-Conditions: none DELETE Subscriptions Check HTTP Response Status Code Is 405 \ No newline at end of file -- GitLab From a35c08cdf924c64d974cd53fd00cb0d30d14d168 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 15 Jul 2020 11:21:46 +0500 Subject: [PATCH 428/580] Added Test Cases for PMJobs.robot --- .../PMJobs.robot | 296 ++ .../environment/pmJobs.txt | 5 + .../environment/variables.txt | 31 + .../jsons/CreatePmJobRequest.json | 10 + .../schemas/PmJob.schema.json | 145 + .../schemas/PmJobs.schema.json | 148 + .../schemas/ProblemDetails.schema.json | 1 + libspecs/BuiltIn.libspec | 2823 +++++++++++++++++ libspecs/Collections.libspec | 880 +++++ libspecs/DateTime.libspec | 512 +++ libspecs/DependencyLibrary_bb1d1ad.libspec | 55 + libspecs/Dialogs.libspec | 112 + libspecs/Easter.libspec | 15 + libspecs/JSONLibrary_17ae429.libspec | 171 + libspecs/JSONSchemaLibrary_c1d7acb.libspec | 31 + libspecs/MockServerLibrary_03fd3d4.libspec | 258 ++ libspecs/OperatingSystem.libspec | 1138 +++++++ libspecs/Process.libspec | 637 ++++ libspecs/REST_04a9321.libspec | 999 ++++++ libspecs/Reserved.libspec | 87 + libspecs/Screenshot.libspec | 132 + libspecs/String.libspec | 722 +++++ libspecs/Telnet.libspec | 744 +++++ libspecs/XML.libspec | 1365 ++++++++ 24 files changed, 11317 insertions(+) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot create mode 100644 SOL009/NFVMANOPerformanceManagement-API/environment/pmJobs.txt create mode 100644 SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt create mode 100644 SOL009/NFVMANOPerformanceManagement-API/jsons/CreatePmJobRequest.json create mode 100644 SOL009/NFVMANOPerformanceManagement-API/schemas/PmJob.schema.json create mode 100644 SOL009/NFVMANOPerformanceManagement-API/schemas/PmJobs.schema.json create mode 100644 SOL009/NFVMANOPerformanceManagement-API/schemas/ProblemDetails.schema.json create mode 100644 libspecs/BuiltIn.libspec create mode 100644 libspecs/Collections.libspec create mode 100644 libspecs/DateTime.libspec create mode 100644 libspecs/DependencyLibrary_bb1d1ad.libspec create mode 100644 libspecs/Dialogs.libspec create mode 100644 libspecs/Easter.libspec create mode 100644 libspecs/JSONLibrary_17ae429.libspec create mode 100644 libspecs/JSONSchemaLibrary_c1d7acb.libspec create mode 100644 libspecs/MockServerLibrary_03fd3d4.libspec create mode 100644 libspecs/OperatingSystem.libspec create mode 100644 libspecs/Process.libspec create mode 100644 libspecs/REST_04a9321.libspec create mode 100644 libspecs/Reserved.libspec create mode 100644 libspecs/Screenshot.libspec create mode 100644 libspecs/String.libspec create mode 100644 libspecs/Telnet.libspec create mode 100644 libspecs/XML.libspec diff --git a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot new file mode 100644 index 000000000..3b28a5740 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot @@ -0,0 +1,296 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource environment/pmJobs.txt +Library JSONLibrary +Library OperatingSystem +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +GET all NFV-MANO Performance Monitoring Jobs + [Documentation] Test ID: 8.3.2.1.1 + ... Test title: GET all NFV-MANO Performance Monitoring Jobs + ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance monitoring jobs and perform a JSON schema validation + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET all NFV-MANO Performance Monitoring Jobs + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJobs + +GET NFV-MANO Performance Monitoring Jobs with attribute-based filter + [Documentation] Test ID: 8.3.2.1.2 + ... Test title: GET all NFV-MANO Performance Monitoring Jobs with attribute-based filter + ... Test objective: The objective is to test the retrieval of NFV-MANO performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET NFV-MANO Performance Monitoring Jobs with attribute-based filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJobs + +GET all NFV-MANO Performance Monitoring Jobs with all_fields attribute selector + [Documentation] Test ID: 8.3.2.1.3 + ... Test title: GET all NFV-MANO Performance Monitoring Jobs with all_fields attribute selector + ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs all_fields attribute selector, perform a JSON schema validation of the collected jobs data structure + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET NFV-MANO Performance Monitoring Jobs with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJobs + +GET all NFV-MANO Performance Monitoring Jobs with exclude_default attribute selector + [Documentation] Test ID: 8.3.2.1.4 + ... Test title: GET all NFV-MANO Performance Monitoring Jobs with exclude_default attribute selector + ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET NFV-MANO Performance Monitoring Jobs with exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJobs + +GET all NFV-MANO Performance Monitoring Jobs with fields attribute selector + [Documentation] Test ID: 8.3.2.1.5 + ... Test title: GET all NFV-MANO Performance Monitoring Jobs with fields attribute selector + ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs fields attribute selector, perform a JSON schema validation of the collected jobs data structure + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO supports the use of fields attribute selector + ... Post-Conditions: none + GET NFV-MANO Performance Monitoring Jobs with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJobs + +GET all NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selector + [Documentation] Test ID: 8.3.2.1.6 + ... Test title: GET all NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selector + ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs exclude_fields attribute selector, perform a JSON schema validation of the collected jobs data structure + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO supports the use of exclude_fields attribute selector + ... Post-Conditions: none + GET NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJobs + +GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter + [Documentation] Test ID: 8.3.2.1.7 + ... Test title: GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of NFV-MANO performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET NFV-MANO Performance Monitoring Jobs with invalid resource endpoint + [Documentation] Test ID: 8.3.2.1.8 + ... Test title: GET NFV-MANO Performance Monitoring Jobs with invalid resource endpoint + ... Test objective: The objective is to test that the retrieval of NFV-MANO performance monitoring jobs fails when using invalid resource endpoint + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET NFV-MANO Performance Monitoring Jobs with invalid resource endpoint + Check HTTP Response Status Code Is 404 + +Create new NFV-MANO Performance Monitoring Job + [Documentation] Test ID: 8.3.2.1.9 + ... Test title: Create a new NFV-MANO Performance Monitoring Job + ... Test objective: The objective is to test the creation of a new NFV-MANO performance monitoring job and perform the JSON schema validation of the returned job data structure + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO Performance Job is successfully created on the NFV-MANO + Send Post Request Create new NFV-MANO Performance Monitoring Job + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PmJob + Check Postcondition PmJob Exists + +PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented + [Documentation] Test ID: 8.3.2.1.10 + ... Test title: PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Monitoring Jobs + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.3.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for all NFV-MANO Performance Monitoring Jobs + Check HTTP Response Status Code Is 405 + +PATCH all NFV-MANO Performance Monitoring Jobs - (Method not implemented) + [Documentation] Test ID: 8.3.2.1.11 + ... Test title: PATCH all NFV-MANO Performance Monitoring Jobs - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update NFV-MANO Performance Monitoring Jobs + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for all NFV-MANO Performance Monitoring Jobs + Check HTTP Response Status Code Is 405 + +DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented + [Documentation] Test ID: 8.3.2.1.12 + ... Test title: DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Monitoring Jobs + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.3.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Request for all NFV-MANO Performance Monitoring Jobs + Check HTTP Response Status Code Is 405 + Check Postcondition NFV-MANO Performance Monitoring Jobs Exist + +*** Keywords *** +GET all NFV-MANO Performance Monitoring Jobs + Log Trying to get all PM Jobs present in the NFV-MANO + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NFV-MANO Performance Monitoring Jobs with attribute-based filter + Log Trying to get all PM Jobs present in the NFV-MANO, using filter params + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${POS_FILTER} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NFV-MANO Performance Monitoring Jobs with all_fields attribute selector + Log Trying to get all PM Jobs present in the NFV-MANO, using 'all_fields' filter + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?all_fields + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NFV-MANO Performance Monitoring Jobs with exclude_default attribute selector + Log Trying to get all NFV-MANO Packages present in the NFV-MANO, using filter params + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NFV-MANO Performance Monitoring Jobs with fields attribute selector + Log Trying to get all NFV-MANO Packages present in the NFV-MANO, using filter params + Pass Execution If ${FIELD_USAGE} == 0 Skipping test as NFV-MANO is not supporting 'fields' + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selector + Log Trying to get all NFV-MANO Packages present in the NFV-MANO, using filter params + Pass Execution If ${FIELD_USAGE} == 0 Skipping test as NFV-MANO is not supporting 'fields' + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter + Log Trying to get all PM Jobs present in the NFV-MANO, using an erroneous filter param + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${NEG_FILTER} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NFV-MANO Performance Monitoring Jobs 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}/pm_job # wrong URI /pm_job instead of /pm_jobs + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Post Request Create new NFV-MANO Performance Monitoring Job + Log Creating a new PM Job + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body}= Get File jsons/CreatePmJobRequest.json + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PUT Request for all NFV-MANO Performance Monitoring Jobs + 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}/pm_jobs + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PATCH Request for all NFV-MANO Performance Monitoring Jobs + 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}"} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send DELETE Request for all NFV-MANO Performance Monitoring Jobs + 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}"} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition PmJob Exists + Log Checking that Pm Job exists + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${response['body']['id']} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJob + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + ${status}= Convert To Integer ${expected_status} + Should Be Equal ${response['status']} ${status} + Log Status code validated + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + Should Contain ${response['headers']['Content-Type']} application/json + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK + +Check Postcondition NFV-MANO Performance Monitoring Jobs Exist + Log Checking that Pm Job still exists + GET all NFV-MANO Performance Monitoring Jobs \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/pmJobs.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/pmJobs.txt new file mode 100644 index 000000000..30b6682ef --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/pmJobs.txt @@ -0,0 +1,5 @@ +*** Variables *** +${POS_FILTER} objectInstanceIds=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${NEG_FILTER} criteriaPmJob=erroneousAttributeName +${fields} criteria,objectInstanceIds +${response} httpresponse diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt new file mode 100644 index 000000000..3ea92791d --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt @@ -0,0 +1,31 @@ +*** Variables *** +${NFVMANOHOST} localhost # Hostname of the VNFM +${NFVMANO_PORT} 8080 # Listening port of the VNFM +${NFVMANO_SCHEMA} https + + +${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${NEG_AUTHORIZATION} Bearer negativetoken + +${CONTENT_TYPE_JSON} application/json +${ACCEPT_JSON} application/json +${AUTH_USAGE} 1 +${FIELD_USAGE} 1 +${NFVMANO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint + +${NFVMANO_ALLOWS_DUPLICATE_SUBS} 1 + +${apiRoot} / +${apiMajorVersion} v1 +${apiName} nfvmanopm + +${callback_port} 9091 +${callback_uri} http://172.22.1.7:${callback_port} +${callback_endpoint} /nfvmanopm/subscriptions +${callback_endpoint_error} /subs_404 +${sleep_interval} 20s + +${total_polling_time} 2 min +${polling_interval} 10 sec + +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/jsons/CreatePmJobRequest.json b/SOL009/NFVMANOPerformanceManagement-API/jsons/CreatePmJobRequest.json new file mode 100644 index 000000000..026d55498 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/jsons/CreatePmJobRequest.json @@ -0,0 +1,10 @@ +{ + "objectType":"dummy", + "objectInstanceIds" : ["1f50d68b-82e8-4deb-bd40-c934d4d1ac0a"], + "criteria" : { + "performanceMetric": [], + "performanceMetricGroup": [], + "collectionPeriod": 10, + "reportingPeriod": 30 + } +} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/schemas/PmJob.schema.json b/SOL009/NFVMANOPerformanceManagement-API/schemas/PmJob.schema.json new file mode 100644 index 000000000..7b4833902 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/schemas/PmJob.schema.json @@ -0,0 +1,145 @@ +{ + "description": "This type represents a PM job. \n", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectType": { + "description": "Type of measured object. The applicable measured object type for a measurement is defined in clause 8.2 of ETSI GS NFV-IFA 031.\n", + "type": "string" + }, + "objectInstanceIds": { + "description": "Identifiers of the measured object instance for which performance information is collected. This attribute shall contain the identifier of the instance of the measure object according to their type. See also definitions in clause 8.2 of ETSI GS NFV-IFA 031.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "minItems": 1 + }, + "subObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance for which performance information is requested to be collected. May be present if a sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the related measured object type. If this attribute is present, the cardinality of the \"objectInstanceIds\" attribute shall be 1. If this attribute is absent and a sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "criteria": { + "description": "This type represents collection criteria for PM jobs.\n", + "type": "object", + "properties": { + "performanceMetric": { + "description": "This defines the types of performance metrics for the specified measured object(s). This attribute’s value shall contain the related \"Measurement Name\" values as defined in clause 8.4 of ETSI GS NFV-IFA 031. At least one of the two attributes (performance metric or group) shall be present.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "performanceMetricGroup": { + "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the producer that it can decompose to individual metrics. This attribute’s value shall contain the related \"Measurement Group\" values as defined in clause 8.4 of ETSI GS NFV-IFA 031. At least one of the two attributes (performance metric or group) shall be present.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "collectionPeriod": { + "description": "Specifies the periodicity at which the producer will collect performance information. The unit shall be seconds. \nAt the end of each reportingPeriod, the producer will inform the API consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together. \nIn particular when choosing short collection and reporting periods, the number of PM jobs that can be supported depends on the capability of the producing entity.\n", + "type": "integer" + }, + "reportingPeriod": { + "description": "Specifies the periodicity at which the producer will report to the API consumer about performance information. The unit shall be seconds.\nAt the end of each reportingPeriod, the producer will inform the API consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together. \nIn particular when choosing short collection and reporting periods, the number of PM jobs that can be supported depends on the capability of the producing entity.\n", + "type": "integer" + }, + "reportingBoundary": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + } + }, + "required": [ + "collectionPeriod", + "reportingPeriod" + ] + }, + "reports": { + "description": "Information about available reports collected by this PM job.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "readyTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "expiryTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "fileSize": { + "description": "Unsigned integer\n", + "type": "number" + } + }, + "required": [ + "href", + "readyTime" + ] + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objects": { + "description": "Links to resources representing the measured object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.\n", + "type": "array", + "items": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + }, + "required": [ + "self" + ] + } + }, + "required": [ + "id", + "objectType", + "objectInstanceIds", + "criteria", + "_links" + ] +} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/schemas/PmJobs.schema.json b/SOL009/NFVMANOPerformanceManagement-API/schemas/PmJobs.schema.json new file mode 100644 index 000000000..95ada1a02 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/schemas/PmJobs.schema.json @@ -0,0 +1,148 @@ +{ + "type": "array", + "items": { + "description": "This type represents a PM job. \n", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectType": { + "description": "Type of measured object. The applicable measured object type for a measurement is defined in clause 8.2 of ETSI GS NFV-IFA 031.\n", + "type": "string" + }, + "objectInstanceIds": { + "description": "Identifiers of the measured object instance for which performance information is collected. This attribute shall contain the identifier of the instance of the measure object according to their type. See also definitions in clause 8.2 of ETSI GS NFV-IFA 031.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "minItems": 1 + }, + "subObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance for which performance information is requested to be collected. May be present if a sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the related measured object type. If this attribute is present, the cardinality of the \"objectInstanceIds\" attribute shall be 1. If this attribute is absent and a sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "criteria": { + "description": "This type represents collection criteria for PM jobs.\n", + "type": "object", + "properties": { + "performanceMetric": { + "description": "This defines the types of performance metrics for the specified measured object(s). This attribute’s value shall contain the related \"Measurement Name\" values as defined in clause 8.4 of ETSI GS NFV-IFA 031. At least one of the two attributes (performance metric or group) shall be present.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "performanceMetricGroup": { + "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the producer that it can decompose to individual metrics. This attribute’s value shall contain the related \"Measurement Group\" values as defined in clause 8.4 of ETSI GS NFV-IFA 031. At least one of the two attributes (performance metric or group) shall be present.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "collectionPeriod": { + "description": "Specifies the periodicity at which the producer will collect performance information. The unit shall be seconds. \nAt the end of each reportingPeriod, the producer will inform the API consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together. \nIn particular when choosing short collection and reporting periods, the number of PM jobs that can be supported depends on the capability of the producing entity.\n", + "type": "integer" + }, + "reportingPeriod": { + "description": "Specifies the periodicity at which the producer will report to the API consumer about performance information. The unit shall be seconds.\nAt the end of each reportingPeriod, the producer will inform the API consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together. \nIn particular when choosing short collection and reporting periods, the number of PM jobs that can be supported depends on the capability of the producing entity.\n", + "type": "integer" + }, + "reportingBoundary": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + } + }, + "required": [ + "collectionPeriod", + "reportingPeriod" + ] + }, + "reports": { + "description": "Information about available reports collected by this PM job.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "readyTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "expiryTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "fileSize": { + "description": "Unsigned integer\n", + "type": "number" + } + }, + "required": [ + "href", + "readyTime" + ] + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objects": { + "description": "Links to resources representing the measured object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.\n", + "type": "array", + "items": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + }, + "required": [ + "self" + ] + } + }, + "required": [ + "id", + "objectType", + "objectInstanceIds", + "criteria", + "_links" + ] +} +} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/schemas/ProblemDetails.schema.json b/SOL009/NFVMANOPerformanceManagement-API/schemas/ProblemDetails.schema.json new file mode 100644 index 000000000..2af3ef9b3 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/schemas/ProblemDetails.schema.json @@ -0,0 +1 @@ +{ "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", "type": "object", "required": [ "status", "detail" ], "properties": { "type": { "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", "type": "string", "format": "URI" }, "title": { "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", "type": "string" }, "status": { "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", "type": "integer" }, "detail": { "description": "A human-readable explanation specific to this occurrence of the problem.\n", "type": "string" }, "instance": { "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", "type": "string", "format": "URI" } }} \ No newline at end of file diff --git a/libspecs/BuiltIn.libspec b/libspecs/BuiltIn.libspec new file mode 100644 index 000000000..1f1b093cf --- /dev/null +++ b/libspecs/BuiltIn.libspec @@ -0,0 +1,2823 @@ + + +3.1 +global +yes +An always available standard library with often needed keywords. + +``BuiltIn`` is Robot Framework's standard library that provides a set +of generic keywords needed often. It is imported automatically and +thus always available. The provided keywords can be used, for example, +for verifications (e.g. `Should Be Equal`, `Should Contain`), +conversions (e.g. `Convert To Integer`) and for various other purposes +(e.g. `Log`, `Sleep`, `Run Keyword If`, `Set Global Variable`). + +== Table of contents == + +- `HTML error messages` +- `Evaluating expressions` +- `Boolean arguments` +- `Pattern matching` +- `Multiline string comparisons` +- `Shortcuts` +- `Keywords` + += HTML error messages = + +Many of the keywords accept an optional error message to use if the keyword +fails, and it is possible to use HTML in these messages by prefixing them +with ``*HTML*``. See `Fail` keyword for a usage example. Notice that using +HTML in messages is not limited to BuiltIn library but works with any +error message. + += Evaluating expressions = + +Many keywords, such as `Evaluate`, `Run Keyword If` and `Should Be True`, +accept an expression that is evaluated in Python. These expressions are +evaluated using Python's +[http://docs.python.org/library/functions.html#eval|eval] function so +that all Python built-ins like ``len()`` and ``int()`` are available. +`Evaluate` allows configuring the execution namespace with custom modules, +and other keywords have [http://docs.python.org/library/os.html|os] +and [http://docs.python.org/library/sys.html|sys] modules available +automatically. + +Examples: +| `Run Keyword If` | os.sep == '/' | Log | Not on Windows | +| ${random int} = | `Evaluate` | random.randint(0, 5) | modules=random | + +When a variable is used in the expressing using the normal ``${variable}`` +syntax, its value is replaces before the expression is evaluated. This +means that the value used in the expression will be the string +representation of the variable value, not the variable value itself. +This is not a problem with numbers and other objects that have a string +representation that can be evaluated directly, but with other objects +the behavior depends on the string representation. Most importantly, +strings must always be quoted, and if they can contain newlines, they must +be triple quoted. + +Examples: +| `Should Be True` | ${rc} < 10 | Return code greater than 10 | +| `Run Keyword If` | '${status}' == 'PASS' | Log | Passed | +| `Run Keyword If` | 'FAIL' in '''${output}''' | Log | Output contains FAIL | + +Starting from Robot Framework 2.9, variables themselves are automatically +available in the evaluation namespace. They can be accessed using special +variable syntax without the curly braces like ``$variable``. These +variables should never be quoted, and in fact they are not even replaced +inside strings. + +Examples: +| `Should Be True` | $rc < 10 | Return code greater than 10 | +| `Run Keyword If` | $status == 'PASS' | `Log` | Passed | +| `Run Keyword If` | 'FAIL' in $output | `Log` | Output contains FAIL | +| `Should Be True` | len($result) > 1 and $result[1] == 'OK' | + +Using the ``$variable`` syntax slows down expression evaluation a little. +This should not typically matter, but should be taken into account if +complex expressions are evaluated often and there are strict time +constrains. + +Notice that instead of creating complicated expressions, it is often better +to move the logic into a test library. That eases maintenance and can also +enhance execution speed. + += Boolean arguments = + +Some keywords accept arguments that are handled as Boolean values true or +false. If such an argument is given as a string, it is considered false if +it is an empty string or equal to ``FALSE``, ``NONE``, ``NO``, ``OFF`` or +``0``, case-insensitively. Keywords verifying something that allow dropping +actual and expected values from the possible error message also consider +string ``no values`` to be false. Other strings are considered true +regardless their value, and other argument types are tested using the same +[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. + +True examples: +| `Should Be Equal` | ${x} | ${y} | Custom error | values=True | # Strings are generally true. | +| `Should Be Equal` | ${x} | ${y} | Custom error | values=yes | # Same as the above. | +| `Should Be Equal` | ${x} | ${y} | Custom error | values=${TRUE} | # Python ``True`` is true. | +| `Should Be Equal` | ${x} | ${y} | Custom error | values=${42} | # Numbers other than 0 are true. | + +False examples: +| `Should Be Equal` | ${x} | ${y} | Custom error | values=False | # String ``false`` is false. | +| `Should Be Equal` | ${x} | ${y} | Custom error | values=no | # Also string ``no`` is false. | +| `Should Be Equal` | ${x} | ${y} | Custom error | values=${EMPTY} | # Empty string is false. | +| `Should Be Equal` | ${x} | ${y} | Custom error | values=${FALSE} | # Python ``False`` is false. | +| `Should Be Equal` | ${x} | ${y} | Custom error | values=no values | # ``no values`` works with ``values`` argument | + +Considering string ``NONE`` false is new in Robot Framework 3.0.3 and +considering also ``OFF`` and ``0`` false is new in Robot Framework 3.1. + += Pattern matching = + +Many keywords accepts arguments as either glob or regular expression +patterns. + +== Glob patterns == + +Some keywords, for example `Should Match`, support so called +[http://en.wikipedia.org/wiki/Glob_(programming)|glob patterns] where: + +| ``*`` | matches any string, even an empty string | +| ``?`` | matches any single character | +| ``[chars]`` | matches one character in the bracket | +| ``[!chars]`` | matches one character not in the bracket | +| ``[a-z]`` | matches one character from the range in the bracket | +| ``[!a-z]`` | matches one character not from the range in the bracket | + +Unlike with glob patterns normally, path separator characters ``/`` and +``\`` and the newline character ``\n`` are matches by the above +wildcards. + +Support for brackets like ``[abc]`` and ``[!a-z]`` is new in +Robot Framework 3.1 + +== Regular expressions == + +Some keywords, for example `Should Match Regexp`, support +[http://en.wikipedia.org/wiki/Regular_expression|regular expressions] +that are more powerful but also more complicated that glob patterns. +The regular expression support is implemented using Python's +[http://docs.python.org/library/re.html|re module] and its documentation +should be consulted for more information about the syntax. + +Because the backslash character (``\``) is an escape character in +Robot Framework test data, possible backslash characters in regular +expressions need to be escaped with another backslash like ``\\d\\w+``. +Strings that may contain special characters but should be handled +as literal strings, can be escaped with the `Regexp Escape` keyword. + += Multiline string comparisons = + +`Should Be Equal` and `Should Be Equal As Strings` report the failures using +[http://en.wikipedia.org/wiki/Diff_utility#Unified_format|unified diff +format] if both strings have more than two lines. New in Robot Framework +2.9.1. + +Example: +| ${first} = | `Catenate` | SEPARATOR=\n | Not in second | Same | Differs | Same | +| ${second} = | `Catenate` | SEPARATOR=\n | Same | Differs2 | Same | Not in first | +| `Should Be Equal` | ${first} | ${second} | + +Results in the following error message: + +| Multiline strings are different: +| --- first +| +++ second +| @@ -1,4 +1,4 @@ +| -Not in second +| Same +| -Differs +| +Differs2 +| Same +| +Not in first + + +object +method_name +*args +**kwargs + +Calls the named method of the given object with the provided arguments. + +The possible return value from the method is returned and can be +assigned to a variable. Keyword fails both if the object does not have +a method with the given name or if executing the method raises an +exception. + +Support for ``**kwargs`` is new in Robot Framework 2.9. Since that +possible equal signs in other arguments must be escaped with a +backslash like ``\=``. + +Examples: +| Call Method | ${hashtable} | put | myname | myvalue | +| ${isempty} = | Call Method | ${hashtable} | isEmpty | | +| Should Not Be True | ${isempty} | | | | +| ${value} = | Call Method | ${hashtable} | get | myname | +| Should Be Equal | ${value} | myvalue | | | +| Call Method | ${object} | kwargs | name=value | foo=bar | +| Call Method | ${object} | positional | escaped\=equals | + + + + + +*items + +Catenates the given items together and returns the resulted string. + +By default, items are catenated with spaces, but if the first item +contains the string ``SEPARATOR=<sep>``, the separator ``<sep>`` is +used instead. Items are converted into strings when necessary. + +Examples: +| ${str1} = | Catenate | Hello | world | | +| ${str2} = | Catenate | SEPARATOR=--- | Hello | world | +| ${str3} = | Catenate | SEPARATOR= | Hello | world | +=> +| ${str1} = 'Hello world' +| ${str2} = 'Hello---world' +| ${str3} = 'Helloworld' + + + + + +*messages + +Displays the given messages in the log file as keyword arguments. + +This keyword does nothing with the arguments it receives, but as they +are visible in the log, this keyword can be used to display simple +messages. Given arguments are ignored so thoroughly that they can even +contain non-existing variables. If you are interested about variable +values, you can use the `Log` or `Log Many` keywords. + + + + + + +Skips the current for loop iteration and continues from the next. + +Skips the remaining keywords in the current for loop iteration and +continues from the next one. Can be used directly in a for loop or +in a keyword that the loop uses. + +Example: +| :FOR | ${var} | IN | @{VALUES} | +| | Run Keyword If | '${var}' == 'CONTINUE' | Continue For Loop | +| | Do Something | ${var} | + +See `Continue For Loop If` to conditionally continue a for loop without +using `Run Keyword If` or other wrapper keywords. + + + + + +condition + +Skips the current for loop iteration if the ``condition`` is true. + +A wrapper for `Continue For Loop` to continue a for loop based on +the given condition. The condition is evaluated using the same +semantics as with `Should Be True` keyword. + +Example: +| :FOR | ${var} | IN | @{VALUES} | +| | Continue For Loop If | '${var}' == 'CONTINUE' | +| | Do Something | ${var} | + + + + + +item +base=None +prefix=None +length=None + +Converts the given item to a binary string. + +The ``item``, with an optional ``base``, is first converted to an +integer using `Convert To Integer` internally. After that it +is converted to a binary number (base 2) represented as a +string such as ``1011``. + +The returned value can contain an optional ``prefix`` and can be +required to be of minimum ``length`` (excluding the prefix and a +possible minus sign). If the value is initially shorter than +the required length, it is padded with zeros. + +Examples: +| ${result} = | Convert To Binary | 10 | | | # Result is 1010 | +| ${result} = | Convert To Binary | F | base=16 | prefix=0b | # Result is 0b1111 | +| ${result} = | Convert To Binary | -2 | prefix=B | length=4 | # Result is -B0010 | + +See also `Convert To Integer`, `Convert To Octal` and `Convert To Hex`. + + + + + +item + +Converts the given item to Boolean true or false. + +Handles strings ``True`` and ``False`` (case-insensitive) as expected, +otherwise returns item's +[http://docs.python.org/library/stdtypes.html#truth|truth value] +using Python's ``bool()`` method. + + + + + +input +input_type=text + +Converts the given ``input`` to bytes according to the ``input_type``. + +Valid input types are listed below: + +- ``text:`` Converts text to bytes character by character. All + characters with ordinal below 256 can be used and are converted to + bytes with same values. Many characters are easiest to represent + using escapes like ``\x00`` or ``\xff``. Supports both Unicode + strings and bytes. + +- ``int:`` Converts integers separated by spaces to bytes. Similarly as + with `Convert To Integer`, it is possible to use binary, octal, or + hex values by prefixing the values with ``0b``, ``0o``, or ``0x``, + respectively. + +- ``hex:`` Converts hexadecimal values to bytes. Single byte is always + two characters long (e.g. ``01`` or ``FF``). Spaces are ignored and + can be used freely as a visual separator. + +- ``bin:`` Converts binary values to bytes. Single byte is always eight + characters long (e.g. ``00001010``). Spaces are ignored and can be + used freely as a visual separator. + +In addition to giving the input as a string, it is possible to use +lists or other iterables containing individual characters or numbers. +In that case numbers do not need to be padded to certain length and +they cannot contain extra spaces. + +Examples (last column shows returned bytes): +| ${bytes} = | Convert To Bytes | hyvä | | # hyv\xe4 | +| ${bytes} = | Convert To Bytes | \xff\x07 | | # \xff\x07 | +| ${bytes} = | Convert To Bytes | 82 70 | int | # RF | +| ${bytes} = | Convert To Bytes | 0b10 0x10 | int | # \x02\x10 | +| ${bytes} = | Convert To Bytes | ff 00 07 | hex | # \xff\x00\x07 | +| ${bytes} = | Convert To Bytes | 5246212121 | hex | # RF!!! | +| ${bytes} = | Convert To Bytes | 0000 1000 | bin | # \x08 | +| ${input} = | Create List | 1 | 2 | 12 | +| ${bytes} = | Convert To Bytes | ${input} | int | # \x01\x02\x0c | +| ${bytes} = | Convert To Bytes | ${input} | hex | # \x01\x02\x12 | + +Use `Encode String To Bytes` in ``String`` library if you need to +convert text to bytes using a certain encoding. + + + + + +item +base=None +prefix=None +length=None +lowercase=False + +Converts the given item to a hexadecimal string. + +The ``item``, with an optional ``base``, is first converted to an +integer using `Convert To Integer` internally. After that it +is converted to a hexadecimal number (base 16) represented as +a string such as ``FF0A``. + +The returned value can contain an optional ``prefix`` and can be +required to be of minimum ``length`` (excluding the prefix and a +possible minus sign). If the value is initially shorter than +the required length, it is padded with zeros. + +By default the value is returned as an upper case string, but the +``lowercase`` argument a true value (see `Boolean arguments`) turns +the value (but not the given prefix) to lower case. + +Examples: +| ${result} = | Convert To Hex | 255 | | | # Result is FF | +| ${result} = | Convert To Hex | -10 | prefix=0x | length=2 | # Result is -0x0A | +| ${result} = | Convert To Hex | 255 | prefix=X | lowercase=yes | # Result is Xff | + +See also `Convert To Integer`, `Convert To Binary` and `Convert To Octal`. + + + + + +item +base=None + +Converts the given item to an integer number. + +If the given item is a string, it is by default expected to be an +integer in base 10. There are two ways to convert from other bases: + +- Give base explicitly to the keyword as ``base`` argument. + +- Prefix the given string with the base so that ``0b`` means binary + (base 2), ``0o`` means octal (base 8), and ``0x`` means hex (base 16). + The prefix is considered only when ``base`` argument is not given and + may itself be prefixed with a plus or minus sign. + +The syntax is case-insensitive and possible spaces are ignored. + +Examples: +| ${result} = | Convert To Integer | 100 | | # Result is 100 | +| ${result} = | Convert To Integer | FF AA | 16 | # Result is 65450 | +| ${result} = | Convert To Integer | 100 | 8 | # Result is 64 | +| ${result} = | Convert To Integer | -100 | 2 | # Result is -4 | +| ${result} = | Convert To Integer | 0b100 | | # Result is 4 | +| ${result} = | Convert To Integer | -0x100 | | # Result is -256 | + +See also `Convert To Number`, `Convert To Binary`, `Convert To Octal`, +`Convert To Hex`, and `Convert To Bytes`. + + + + + +item +precision=None + +Converts the given item to a floating point number. + +If the optional ``precision`` is positive or zero, the returned number +is rounded to that number of decimal digits. Negative precision means +that the number is rounded to the closest multiple of 10 to the power +of the absolute precision. If a number is equally close to a certain +precision, it is always rounded away from zero. + +Examples: +| ${result} = | Convert To Number | 42.512 | | # Result is 42.512 | +| ${result} = | Convert To Number | 42.512 | 1 | # Result is 42.5 | +| ${result} = | Convert To Number | 42.512 | 0 | # Result is 43.0 | +| ${result} = | Convert To Number | 42.512 | -1 | # Result is 40.0 | + +Notice that machines generally cannot store floating point numbers +accurately. This may cause surprises with these numbers in general +and also when they are rounded. For more information see, for example, +these resources: + +- http://docs.python.org/tutorial/floatingpoint.html +- http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition + +If you want to avoid possible problems with floating point numbers, +you can implement custom keywords using Python's +[http://docs.python.org/library/decimal.html|decimal] or +[http://docs.python.org/library/fractions.html|fractions] modules. + +If you need an integer number, use `Convert To Integer` instead. + + + + + +item +base=None +prefix=None +length=None + +Converts the given item to an octal string. + +The ``item``, with an optional ``base``, is first converted to an +integer using `Convert To Integer` internally. After that it +is converted to an octal number (base 8) represented as a +string such as ``775``. + +The returned value can contain an optional ``prefix`` and can be +required to be of minimum ``length`` (excluding the prefix and a +possible minus sign). If the value is initially shorter than +the required length, it is padded with zeros. + +Examples: +| ${result} = | Convert To Octal | 10 | | | # Result is 12 | +| ${result} = | Convert To Octal | -F | base=16 | prefix=0 | # Result is -017 | +| ${result} = | Convert To Octal | 16 | prefix=oct | length=4 | # Result is oct0020 | + +See also `Convert To Integer`, `Convert To Binary` and `Convert To Hex`. + + + + + +item + +Converts the given item to a Unicode string. + +Uses ``__unicode__`` or ``__str__`` method with Python objects and +``toString`` with Java objects. + +Use `Encode String To Bytes` and `Decode Bytes To String` keywords +in ``String`` library if you need to convert between Unicode and byte +strings using different encodings. Use `Convert To Bytes` if you just +want to create byte strings. + + + + + +*items + +Creates and returns a dictionary based on the given ``items``. + +Items are typically given using the ``key=value`` syntax same way as +``&{dictionary}`` variables are created in the Variable table. Both +keys and values can contain variables, and possible equal sign in key +can be escaped with a backslash like ``escaped\=key=value``. It is +also possible to get items from existing dictionaries by simply using +them like ``&{dict}``. + +Alternatively items can be specified so that keys and values are given +separately. This and the ``key=value`` syntax can even be combined, +but separately given items must be first. + +If same key is used multiple times, the last value has precedence. +The returned dictionary is ordered, and values with strings as keys +can also be accessed using a convenient dot-access syntax like +``${dict.key}``. + +Examples: +| &{dict} = | Create Dictionary | key=value | foo=bar | | | # key=value syntax | +| Should Be True | ${dict} == {'key': 'value', 'foo': 'bar'} | +| &{dict2} = | Create Dictionary | key | value | foo | bar | # separate key and value | +| Should Be Equal | ${dict} | ${dict2} | +| &{dict} = | Create Dictionary | ${1}=${2} | &{dict} | foo=new | | # using variables | +| Should Be True | ${dict} == {1: 2, 'key': 'value', 'foo': 'new'} | +| Should Be Equal | ${dict.key} | value | | | | # dot-access | + +This keyword was changed in Robot Framework 2.9 in many ways: +- Moved from ``Collections`` library to ``BuiltIn``. +- Support also non-string keys in ``key=value`` syntax. +- Returned dictionary is ordered and dot-accessible. +- Old syntax to give keys and values separately was deprecated, but + deprecation was later removed in RF 3.0.1. + + + + + +*items + +Returns a list containing given items. + +The returned list can be assigned both to ``${scalar}`` and ``@{list}`` +variables. + +Examples: +| @{list} = | Create List | a | b | c | +| ${scalar} = | Create List | a | b | c | +| ${ints} = | Create List | ${1} | ${2} | ${3} | + + + + + +expression +modules=None +namespace=None + +Evaluates the given expression in Python and returns the results. + +``expression`` is evaluated in Python as explained in `Evaluating +expressions`. + +``modules`` argument can be used to specify a comma separated +list of Python modules to be imported and added to the evaluation +namespace. + +``namespace`` argument can be used to pass a custom evaluation +namespace as a dictionary. Possible ``modules`` are added to this +namespace. + +Variables used like ``${variable}`` are replaced in the expression +before evaluation. Variables are also available in the evaluation +namespace and can be accessed using special syntax ``$variable``. +This is a new feature in Robot Framework 2.9 and it is explained more +thoroughly in `Evaluating expressions`. + +Examples (expecting ``${result}`` is 3.14): +| ${status} = | Evaluate | 0 < ${result} < 10 | # Would also work with string '3.14' | +| ${status} = | Evaluate | 0 < $result < 10 | # Using variable itself, not string representation | +| ${random} = | Evaluate | random.randint(0, sys.maxint) | modules=random, sys | +| ${ns} = | Create Dictionary | x=${4} | y=${2} | +| ${result} = | Evaluate | x*10 + y | namespace=${ns} | +=> +| ${status} = True +| ${random} = <random integer> +| ${result} = 42 + + + + + + +Stops executing the enclosing for loop. + +Exits the enclosing for loop and continues execution after it. +Can be used directly in a for loop or in a keyword that the loop uses. + +Example: +| :FOR | ${var} | IN | @{VALUES} | +| | Run Keyword If | '${var}' == 'EXIT' | Exit For Loop | +| | Do Something | ${var} | + +See `Exit For Loop If` to conditionally exit a for loop without +using `Run Keyword If` or other wrapper keywords. + + + + + +condition + +Stops executing the enclosing for loop if the ``condition`` is true. + +A wrapper for `Exit For Loop` to exit a for loop based on +the given condition. The condition is evaluated using the same +semantics as with `Should Be True` keyword. + +Example: +| :FOR | ${var} | IN | @{VALUES} | +| | Exit For Loop If | '${var}' == 'EXIT' | +| | Do Something | ${var} | + + + + + +msg=None +*tags + +Fails the test with the given message and optionally alters its tags. + +The error message is specified using the ``msg`` argument. +It is possible to use HTML in the given error message, similarly +as with any other keyword accepting an error message, by prefixing +the error with ``*HTML*``. + +It is possible to modify tags of the current test case by passing tags +after the message. Tags starting with a hyphen (e.g. ``-regression``) +are removed and others added. Tags are modified using `Set Tags` and +`Remove Tags` internally, and the semantics setting and removing them +are the same as with these keywords. + +Examples: +| Fail | Test not ready | | | # Fails with the given message. | +| Fail | *HTML*<b>Test not ready</b> | | | # Fails using HTML in the message. | +| Fail | Test not ready | not-ready | | # Fails and adds 'not-ready' tag. | +| Fail | OS not supported | -regression | | # Removes tag 'regression'. | +| Fail | My message | tag | -t* | # Removes all tags starting with 't' except the newly added 'tag'. | + +See `Fatal Error` if you need to stop the whole test execution. + + + + + +msg=None + +Stops the whole test execution. + +The test or suite where this keyword is used fails with the provided +message, and subsequent tests fail with a canned message. +Possible teardowns will nevertheless be executed. + +See `Fail` if you only want to stop one test case unconditionally. + + + + + +item1 +item2 + +Returns and logs how many times ``item2`` is found from ``item1``. + +This keyword works with Python strings and lists and all objects +that either have ``count`` method or can be converted to Python lists. + +Example: +| ${count} = | Get Count | ${some item} | interesting value | +| Should Be True | 5 < ${count} < 10 | + + + + + +item + +Returns and logs the length of the given item as an integer. + +The item can be anything that has a length, for example, a string, +a list, or a mapping. The keyword first tries to get the length with +the Python function ``len``, which calls the item's ``__len__`` method +internally. If that fails, the keyword tries to call the item's +possible ``length`` and ``size`` methods directly. The final attempt is +trying to get the value of the item's ``length`` attribute. If all +these attempts are unsuccessful, the keyword fails. + +Examples: +| ${length} = | Get Length | Hello, world! | | +| Should Be Equal As Integers | ${length} | 13 | +| @{list} = | Create List | Hello, | world! | +| ${length} = | Get Length | ${list} | | +| Should Be Equal As Integers | ${length} | 2 | + +See also `Length Should Be`, `Should Be Empty` and `Should Not Be +Empty`. + + + + + +name=None +all=False + +Returns the currently active instance of the specified test library. + +This keyword makes it easy for test libraries to interact with +other test libraries that have state. This is illustrated by +the Python example below: + +| from robot.libraries.BuiltIn import BuiltIn +| +| def title_should_start_with(expected): +| seleniumlib = BuiltIn().get_library_instance('SeleniumLibrary') +| title = seleniumlib.get_title() +| if not title.startswith(expected): +| raise AssertionError("Title '%s' did not start with '%s'" +| % (title, expected)) + +It is also possible to use this keyword in the test data and +pass the returned library instance to another keyword. If a +library is imported with a custom name, the ``name`` used to get +the instance must be that name and not the original library name. + +If the optional argument ``all`` is given a true value, then a +dictionary mapping all library names to instances will be returned. +This feature is new in Robot Framework 2.9.2. + +Example: +| &{all libs} = | Get library instance | all=True | + + + + + +format=timestamp +time_=NOW + +Returns the given time in the requested format. + +*NOTE:* DateTime library contains much more flexible keywords for +getting the current date and time and for date and time handling in +general. + +How time is returned is determined based on the given ``format`` +string as follows. Note that all checks are case-insensitive. + +1) If ``format`` contains the word ``epoch``, the time is returned + in seconds after the UNIX epoch (1970-01-01 00:00:00 UTC). + The return value is always an integer. + +2) If ``format`` contains any of the words ``year``, ``month``, + ``day``, ``hour``, ``min``, or ``sec``, only the selected parts are + returned. The order of the returned parts is always the one + in the previous sentence and the order of words in ``format`` + is not significant. The parts are returned as zero-padded + strings (e.g. May -> ``05``). + +3) Otherwise (and by default) the time is returned as a + timestamp string in the format ``2006-02-24 15:08:31``. + +By default this keyword returns the current local time, but +that can be altered using ``time`` argument as explained below. +Note that all checks involving strings are case-insensitive. + +1) If ``time`` is a number, or a string that can be converted to + a number, it is interpreted as seconds since the UNIX epoch. + This documentation was originally written about 1177654467 + seconds after the epoch. + +2) If ``time`` is a timestamp, that time will be used. Valid + timestamp formats are ``YYYY-MM-DD hh:mm:ss`` and + ``YYYYMMDD hhmmss``. + +3) If ``time`` is equal to ``NOW`` (default), the current local + time is used. + +4) If ``time`` is equal to ``UTC``, the current time in + [http://en.wikipedia.org/wiki/Coordinated_Universal_Time|UTC] + is used. + +5) If ``time`` is in the format like ``NOW - 1 day`` or ``UTC + 1 hour + 30 min``, the current local/UTC time plus/minus the time + specified with the time string is used. The time string format + is described in an appendix of Robot Framework User Guide. + +Examples (expecting the current local time is 2006-03-29 15:06:21): +| ${time} = | Get Time | | | | +| ${secs} = | Get Time | epoch | | | +| ${year} = | Get Time | return year | | | +| ${yyyy} | ${mm} | ${dd} = | Get Time | year,month,day | +| @{time} = | Get Time | year month day hour min sec | | | +| ${y} | ${s} = | Get Time | seconds and year | | +=> +| ${time} = '2006-03-29 15:06:21' +| ${secs} = 1143637581 +| ${year} = '2006' +| ${yyyy} = '2006', ${mm} = '03', ${dd} = '29' +| @{time} = ['2006', '03', '29', '15', '06', '21'] +| ${y} = '2006' +| ${s} = '21' + +Examples (expecting the current local time is 2006-03-29 15:06:21 and +UTC time is 2006-03-29 12:06:21): +| ${time} = | Get Time | | 1177654467 | # Time given as epoch seconds | +| ${secs} = | Get Time | sec | 2007-04-27 09:14:27 | # Time given as a timestamp | +| ${year} = | Get Time | year | NOW | # The local time of execution | +| @{time} = | Get Time | hour min sec | NOW + 1h 2min 3s | # 1h 2min 3s added to the local time | +| @{utc} = | Get Time | hour min sec | UTC | # The UTC time of execution | +| ${hour} = | Get Time | hour | UTC - 1 hour | # 1h subtracted from the UTC time | +=> +| ${time} = '2007-04-27 09:14:27' +| ${secs} = 27 +| ${year} = '2006' +| @{time} = ['16', '08', '24'] +| @{utc} = ['12', '06', '21'] +| ${hour} = '11' + + + + + +name +default=None + +Returns variable value or ``default`` if the variable does not exist. + +The name of the variable can be given either as a normal variable name +(e.g. ``${NAME}``) or in escaped format (e.g. ``\${NAME}``). Notice +that the former has some limitations explained in `Set Suite Variable`. + +Examples: +| ${x} = | Get Variable Value | ${a} | default | +| ${y} = | Get Variable Value | ${a} | ${b} | +| ${z} = | Get Variable Value | ${z} | | +=> +| ${x} gets value of ${a} if ${a} exists and string 'default' otherwise +| ${y} gets value of ${a} if ${a} exists and value of ${b} otherwise +| ${z} is set to Python None if it does not exist previously + +See `Set Variable If` for another keyword to set variables dynamically. + + + + + +no_decoration=False + +Returns a dictionary containing all variables in the current scope. + +Variables are returned as a special dictionary that allows accessing +variables in space, case, and underscore insensitive manner similarly +as accessing variables in the test data. This dictionary supports all +same operations as normal Python dictionaries and, for example, +Collections library can be used to access or modify it. Modifying the +returned dictionary has no effect on the variables available in the +current scope. + +By default variables are returned with ``${}``, ``@{}`` or ``&{}`` +decoration based on variable types. Giving a true value (see `Boolean +arguments`) to the optional argument ``no_decoration`` will return +the variables without the decoration. This option is new in Robot +Framework 2.9. + +Example: +| ${example_variable} = | Set Variable | example value | +| ${variables} = | Get Variables | | +| Dictionary Should Contain Key | ${variables} | \${example_variable} | +| Dictionary Should Contain Key | ${variables} | \${ExampleVariable} | +| Set To Dictionary | ${variables} | \${name} | value | +| Variable Should Not Exist | \${name} | | | +| ${no decoration} = | Get Variables | no_decoration=Yes | +| Dictionary Should Contain Key | ${no decoration} | example_variable | + + + + + +name +*args + +Imports a library with the given name and optional arguments. + +This functionality allows dynamic importing of libraries while tests +are running. That may be necessary, if the library itself is dynamic +and not yet available when test data is processed. In a normal case, +libraries should be imported using the Library setting in the Setting +table. + +This keyword supports importing libraries both using library +names and physical paths. When paths are used, they must be +given in absolute format or found from +[http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#pythonpath-jythonpath-and-ironpythonpath| +search path]. Forward slashes can be used as path separators in all +operating systems. + +It is possible to pass arguments to the imported library and also +named argument syntax works if the library supports it. ``WITH NAME`` +syntax can be used to give a custom name to the imported library. + +Examples: +| Import Library | MyLibrary | +| Import Library | ${CURDIR}/../Library.py | arg1 | named=arg2 | +| Import Library | ${LIBRARIES}/Lib.java | arg | WITH NAME | JavaLib | + + + + + +path + +Imports a resource file with the given path. + +Resources imported with this keyword are set into the test suite scope +similarly when importing them in the Setting table using the Resource +setting. + +The given path must be absolute or found from +[http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#pythonpath-jythonpath-and-ironpythonpath| +search path]. Forward slashes can be used as path separator regardless +the operating system. + +Examples: +| Import Resource | ${CURDIR}/resource.txt | +| Import Resource | ${CURDIR}/../resources/resource.html | +| Import Resource | found_from_pythonpath.robot | + + + + + +path +*args + +Imports a variable file with the given path and optional arguments. + +Variables imported with this keyword are set into the test suite scope +similarly when importing them in the Setting table using the Variables +setting. These variables override possible existing variables with +the same names. This functionality can thus be used to import new +variables, for example, for each test in a test suite. + +The given path must be absolute or found from +[http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#pythonpath-jythonpath-and-ironpythonpath| +search path]. Forward slashes can be used as path separator regardless +the operating system. + +Examples: +| Import Variables | ${CURDIR}/variables.py | | | +| Import Variables | ${CURDIR}/../vars/env.py | arg1 | arg2 | +| Import Variables | file_from_pythonpath.py | | | + + + + + +name +msg=None + +Fails unless the given keyword exists in the current scope. + +Fails also if there are more than one keywords with the same name. +Works both with the short name (e.g. ``Log``) and the full name +(e.g. ``BuiltIn.Log``). + +The default error message can be overridden with the ``msg`` argument. + +See also `Variable Should Exist`. + + + + + +item +length +msg=None + +Verifies that the length of the given item is correct. + +The length of the item is got using the `Get Length` keyword. The +default error message can be overridden with the ``msg`` argument. + + + + + +message +level=INFO +html=False +console=False +repr=False + +Logs the given message with the given level. + +Valid levels are TRACE, DEBUG, INFO (default), HTML, WARN, and ERROR. +Messages below the current active log level are ignored. See +`Set Log Level` keyword and ``--loglevel`` command line option +for more details about setting the level. + +Messages logged with the WARN or ERROR levels will be automatically +visible also in the console and in the Test Execution Errors section +in the log file. + +Logging can be configured using optional ``html``, ``console`` and +``repr`` arguments. They are off by default, but can be enabled +by giving them a true value. See `Boolean arguments` section for more +information about true and false values. + +If the ``html`` argument is given a true value, the message will be +considered HTML and special characters such as ``<`` in it are not +escaped. For example, logging ``<img src="image.png">`` creates an +image when ``html`` is true, but otherwise the message is that exact +string. An alternative to using the ``html`` argument is using the HTML +pseudo log level. It logs the message as HTML using the INFO level. + +If the ``console`` argument is true, the message will be written to +the console where test execution was started from in addition to +the log file. This keyword always uses the standard output stream +and adds a newline after the written message. Use `Log To Console` +instead if either of these is undesirable, + +If the ``repr`` argument is true, the given item will be passed through +a custom version of Python's ``pprint.pformat()`` function before +logging it. This is useful, for example, when working with strings or +bytes containing invisible characters, or when working with nested data +structures. The custom version differs from the standard one so that it +omits the ``u`` prefix from Unicode strings and adds ``b`` prefix to +byte strings on Python 2. + +Examples: +| Log | Hello, world! | | | # Normal INFO message. | +| Log | Warning, world! | WARN | | # Warning. | +| Log | <b>Hello</b>, world! | html=yes | | # INFO message as HTML. | +| Log | <b>Hello</b>, world! | HTML | | # Same as above. | +| Log | <b>Hello</b>, world! | DEBUG | html=true | # DEBUG as HTML. | +| Log | Hello, console! | console=yes | | # Log also to the console. | +| Log | Hyvä \x00 | repr=yes | | # Log ``'Hyv\xe4 \x00'``. | + +See `Log Many` if you want to log multiple messages in one go, and +`Log To Console` if you only want to write to the console. + + + + + +*messages + +Logs the given messages as separate entries using the INFO level. + +Supports also logging list and dictionary variable items individually. + +Examples: +| Log Many | Hello | ${var} | +| Log Many | @{list} | &{dict} | + +See `Log` and `Log To Console` keywords if you want to use alternative +log levels, use HTML, or log to the console. + + + + + +message +stream=STDOUT +no_newline=False + +Logs the given message to the console. + +By default uses the standard output stream. Using the standard error +stream is possibly by giving the ``stream`` argument value ``STDERR`` +(case-insensitive). + +By default appends a newline to the logged message. This can be +disabled by giving the ``no_newline`` argument a true value (see +`Boolean arguments`). + +Examples: +| Log To Console | Hello, console! | | +| Log To Console | Hello, stderr! | STDERR | +| Log To Console | Message starts here and is | no_newline=true | +| Log To Console | continued without newline. | | + +This keyword does not log the message to the normal log file. Use +`Log` keyword, possibly with argument ``console``, if that is desired. + + + + + +level=INFO + +Logs all variables in the current scope with given log level. + + + + + + +Does absolutely nothing. + + + + + +message +*tags + +Skips rest of the current test, setup, or teardown with PASS status. + +This keyword can be used anywhere in the test data, but the place where +used affects the behavior: + +- When used in any setup or teardown (suite, test or keyword), passes + that setup or teardown. Possible keyword teardowns of the started + keywords are executed. Does not affect execution or statuses + otherwise. +- When used in a test outside setup or teardown, passes that particular + test case. Possible test and keyword teardowns are executed. + +Possible continuable failures before this keyword is used, as well as +failures in executed teardowns, will fail the execution. + +It is mandatory to give a message explaining why execution was passed. +By default the message is considered plain text, but starting it with +``*HTML*`` allows using HTML formatting. + +It is also possible to modify test tags passing tags after the message +similarly as with `Fail` keyword. Tags starting with a hyphen +(e.g. ``-regression``) are removed and others added. Tags are modified +using `Set Tags` and `Remove Tags` internally, and the semantics +setting and removing them are the same as with these keywords. + +Examples: +| Pass Execution | All features available in this version tested. | +| Pass Execution | Deprecated test. | deprecated | -regression | + +This keyword is typically wrapped to some other keyword, such as +`Run Keyword If`, to pass based on a condition. The most common case +can be handled also with `Pass Execution If`: + +| Run Keyword If | ${rc} < 0 | Pass Execution | Negative values are cool. | +| Pass Execution If | ${rc} < 0 | Negative values are cool. | + +Passing execution in the middle of a test, setup or teardown should be +used with care. In the worst case it leads to tests that skip all the +parts that could actually uncover problems in the tested application. +In cases where execution cannot continue do to external factors, +it is often safer to fail the test case and make it non-critical. + + + + + +condition +message +*tags + +Conditionally skips rest of the current test, setup, or teardown with PASS status. + +A wrapper for `Pass Execution` to skip rest of the current test, +setup or teardown based the given ``condition``. The condition is +evaluated similarly as with `Should Be True` keyword, and ``message`` +and ``*tags`` have same semantics as with `Pass Execution`. + +Example: +| :FOR | ${var} | IN | @{VALUES} | +| | Pass Execution If | '${var}' == 'EXPECTED' | Correct value was found | +| | Do Something | ${var} | + + + + + +*patterns + +Returns each argument string escaped for use as a regular expression. + +This keyword can be used to escape strings to be used with +`Should Match Regexp` and `Should Not Match Regexp` keywords. + +Escaping is done with Python's ``re.escape()`` function. + +Examples: +| ${escaped} = | Regexp Escape | ${original} | +| @{strings} = | Regexp Escape | @{strings} | + + + + + +name_or_instance + +Rechecks what keywords the specified library provides. + +Can be called explicitly in the test data or by a library itself +when keywords it provides have changed. + +The library can be specified by its name or as the active instance of +the library. The latter is especially useful if the library itself +calls this keyword as a method. + +New in Robot Framework 2.9. + + + + + +*tags + +Removes given ``tags`` from the current test or all tests in a suite. + +Tags can be given exactly or using a pattern with ``*``, ``?`` and +``[chars]`` acting as wildcards. See the `Glob patterns` section +for more information. + +This keyword can affect either one test case or all test cases in a +test suite similarly as `Set Tags` keyword. + +The current tags are available as a built-in variable ``@{TEST TAGS}``. + +Example: +| Remove Tags | mytag | something-* | ?ython | + +See `Set Tags` if you want to add certain tags and `Fail` if you want +to fail the test case after setting and/or removing tags. + + + + + +repeat +name +*args + +Executes the specified keyword multiple times. + +``name`` and ``args`` define the keyword that is executed similarly as +with `Run Keyword`. ``repeat`` specifies how many times (as a count) or +how long time (as a timeout) the keyword should be executed. + +If ``repeat`` is given as count, it specifies how many times the +keyword should be executed. ``repeat`` can be given as an integer or +as a string that can be converted to an integer. If it is a string, +it can have postfix ``times`` or ``x`` (case and space insensitive) +to make the expression more explicit. + +If ``repeat`` is given as timeout, it must be in Robot Framework's +time format (e.g. ``1 minute``, ``2 min 3 s``). Using a number alone +(e.g. ``1`` or ``1.5``) does not work in this context. + +If ``repeat`` is zero or negative, the keyword is not executed at +all. This keyword fails immediately if any of the execution +rounds fails. + +Examples: +| Repeat Keyword | 5 times | Go to Previous Page | +| Repeat Keyword | ${var} | Some Keyword | arg1 | arg2 | +| Repeat Keyword | 2 minutes | Some Keyword | arg1 | arg2 | + +Specifying ``repeat`` as a timeout is new in Robot Framework 3.0. + + + + + +text + +Replaces variables in the given text with their current values. + +If the text contains undefined variables, this keyword fails. +If the given ``text`` contains only a single variable, its value is +returned as-is and it can be any object. Otherwise this keyword +always returns a string. + +Example: + +The file ``template.txt`` contains ``Hello ${NAME}!`` and variable +``${NAME}`` has the value ``Robot``. + +| ${template} = | Get File | ${CURDIR}/template.txt | +| ${message} = | Replace Variables | ${template} | +| Should Be Equal | ${message} | Hello Robot! | + + + + + +*return_values + +Returns from the enclosing user keyword. + +This keyword can be used to return from a user keyword with PASS status +without executing it fully. It is also possible to return values +similarly as with the ``[Return]`` setting. For more detailed information +about working with the return values, see the User Guide. + +This keyword is typically wrapped to some other keyword, such as +`Run Keyword If` or `Run Keyword If Test Passed`, to return based +on a condition: + +| Run Keyword If | ${rc} < 0 | Return From Keyword | +| Run Keyword If Test Passed | Return From Keyword | + +It is possible to use this keyword to return from a keyword also inside +a for loop. That, as well as returning values, is demonstrated by the +`Find Index` keyword in the following somewhat advanced example. +Notice that it is often a good idea to move this kind of complicated +logic into a test library. + +| ***** Variables ***** +| @{LIST} = foo baz +| +| ***** Test Cases ***** +| Example +| ${index} = Find Index baz @{LIST} +| Should Be Equal ${index} ${1} +| ${index} = Find Index non existing @{LIST} +| Should Be Equal ${index} ${-1} +| +| ***** Keywords ***** +| Find Index +| [Arguments] ${element} @{items} +| ${index} = Set Variable ${0} +| :FOR ${item} IN @{items} +| \ Run Keyword If '${item}' == '${element}' Return From Keyword ${index} +| \ ${index} = Set Variable ${index + 1} +| Return From Keyword ${-1} # Also [Return] would work here. + +The most common use case, returning based on an expression, can be +accomplished directly with `Return From Keyword If`. See also +`Run Keyword And Return` and `Run Keyword And Return If`. + + + + + +condition +*return_values + +Returns from the enclosing user keyword if ``condition`` is true. + +A wrapper for `Return From Keyword` to return based on the given +condition. The condition is evaluated using the same semantics as +with `Should Be True` keyword. + +Given the same example as in `Return From Keyword`, we can rewrite the +`Find Index` keyword as follows: + +| ***** Keywords ***** +| Find Index +| [Arguments] ${element} @{items} +| ${index} = Set Variable ${0} +| :FOR ${item} IN @{items} +| \ Return From Keyword If '${item}' == '${element}' ${index} +| \ ${index} = Set Variable ${index + 1} +| Return From Keyword ${-1} # Also [Return] would work here. + +See also `Run Keyword And Return` and `Run Keyword And Return If`. + + + + + +name +*args + +Executes the given keyword with the given arguments. + +Because the name of the keyword to execute is given as an argument, it +can be a variable and thus set dynamically, e.g. from a return value of +another keyword or from the command line. + + + + + +name +*args + +Runs the keyword and continues execution even if a failure occurs. + +The keyword name and arguments work as with `Run Keyword`. + +Example: +| Run Keyword And Continue On Failure | Fail | This is a stupid example | +| Log | This keyword is executed | + +The execution is not continued if the failure is caused by invalid syntax, +timeout, or fatal exception. +Since Robot Framework 2.9, variable errors are caught by this keyword. + + + + + +expected_error +name +*args + +Runs the keyword and checks that the expected error occurred. + +The keyword to execute and its arguments are specified using ``name`` +and ``*args`` exactly like with `Run Keyword`. + +The expected error must be given in the same format as in Robot +Framework reports. By default it is interpreted as a glob pattern +with ``*``, ``?`` and ``[chars]`` as wildcards, but starting from +Robot Framework 3.1 that can be changed by using various prefixes +explained in the table below. Prefixes are case-sensitive and they +must be separated from the actual message with a colon and an +optional space like ``PREFIX: Message`` or ``PREFIX:Message``. + +| = Prefix = | = Explanation = | +| ``EQUALS`` | Exact match. Especially useful if the error contains glob wildcards. | +| ``STARTS`` | Error must start with the specified error. | +| ``REGEXP`` | Regular expression match. | +| ``GLOB`` | Same as the default behavior. | + +See the `Pattern matching` section for more information about glob +patterns and regular expressions. + +If the expected error occurs, the error message is returned and it can +be further processed or tested if needed. If there is no error, or the +error does not match the expected error, this keyword fails. + +Examples: +| Run Keyword And Expect Error | My error | Keyword | arg | +| Run Keyword And Expect Error | ValueError: * | Some Keyword | +| Run Keyword And Expect Error | STARTS: ValueError: | Some Keyword | +| Run Keyword And Expect Error | EQUALS:No match for '//input[@type="text"]' | +| ... | Find Element | //input[@type="text"] | +| ${msg} = | Run Keyword And Expect Error | * | +| ... | Keyword | arg1 | arg2 | +| Log To Console | ${msg} | + +Errors caused by invalid syntax, timeouts, or fatal exceptions are not +caught by this keyword. +Since Robot Framework 2.9, variable errors are caught by this keyword. + + + + + +name +*args + +Runs the given keyword with the given arguments and ignores possible error. + +This keyword returns two values, so that the first is either string +``PASS`` or ``FAIL``, depending on the status of the executed keyword. +The second value is either the return value of the keyword or the +received error message. See `Run Keyword And Return Status` If you are +only interested in the execution status. + +The keyword name and arguments work as in `Run Keyword`. See +`Run Keyword If` for a usage example. + +Errors caused by invalid syntax, timeouts, or fatal exceptions are not +caught by this keyword. Otherwise this keyword itself never fails. +Since Robot Framework 2.9, variable errors are caught by this keyword. + + + + + +name +*args + +Runs the specified keyword and returns from the enclosing user keyword. + +The keyword to execute is defined with ``name`` and ``*args`` exactly +like with `Run Keyword`. After running the keyword, returns from the +enclosing user keyword and passes possible return value from the +executed keyword further. Returning from a keyword has exactly same +semantics as with `Return From Keyword`. + +Example: +| `Run Keyword And Return` | `My Keyword` | arg1 | arg2 | +| # Above is equivalent to: | +| ${result} = | `My Keyword` | arg1 | arg2 | +| `Return From Keyword` | ${result} | | | + +Use `Run Keyword And Return If` if you want to run keyword and return +based on a condition. + + + + + +condition +name +*args + +Runs the specified keyword and returns from the enclosing user keyword. + +A wrapper for `Run Keyword And Return` to run and return based on +the given ``condition``. The condition is evaluated using the same +semantics as with `Should Be True` keyword. + +Example: +| `Run Keyword And Return If` | ${rc} > 0 | `My Keyword` | arg1 | arg2 | +| # Above is equivalent to: | +| `Run Keyword If` | ${rc} > 0 | `Run Keyword And Return` | `My Keyword ` | arg1 | arg2 | + +Use `Return From Keyword If` if you want to return a certain value +based on a condition. + + + + + +name +*args + +Runs the given keyword with given arguments and returns the status as a Boolean value. + +This keyword returns Boolean ``True`` if the keyword that is executed +succeeds and ``False`` if it fails. This is useful, for example, in +combination with `Run Keyword If`. If you are interested in the error +message or return value, use `Run Keyword And Ignore Error` instead. + +The keyword name and arguments work as in `Run Keyword`. + +Example: +| ${passed} = | `Run Keyword And Return Status` | Keyword | args | +| `Run Keyword If` | ${passed} | Another keyword | + +Errors caused by invalid syntax, timeouts, or fatal exceptions are not +caught by this keyword. Otherwise this keyword itself never fails. + + + + + +condition +name +*args + +Runs the given keyword with the given arguments, if ``condition`` is true. + +The given ``condition`` is evaluated in Python as explained in +`Evaluating expressions`, and ``name`` and ``*args`` have same +semantics as with `Run Keyword`. + +Example, a simple if/else construct: +| ${status} | ${value} = | `Run Keyword And Ignore Error` | `My Keyword` | +| `Run Keyword If` | '${status}' == 'PASS' | `Some Action` | arg | +| `Run Keyword Unless` | '${status}' == 'PASS' | `Another Action` | + +In this example, only either `Some Action` or `Another Action` is +executed, based on the status of `My Keyword`. Instead of `Run Keyword +And Ignore Error` you can also use `Run Keyword And Return Status`. + +Variables used like ``${variable}``, as in the examples above, are +replaced in the expression before evaluation. Variables are also +available in the evaluation namespace and can be accessed using special +syntax ``$variable``. This is a new feature in Robot Framework 2.9 +and it is explained more thoroughly in `Evaluating expressions`. + +Example: +| `Run Keyword If` | $result is None or $result == 'FAIL' | `Keyword` | + +This keyword supports also optional ELSE and ELSE IF branches. Both +of them are defined in ``*args`` and must use exactly format ``ELSE`` +or ``ELSE IF``, respectively. ELSE branches must contain first the +name of the keyword to execute and then its possible arguments. ELSE +IF branches must first contain a condition, like the first argument +to this keyword, and then the keyword to execute and its possible +arguments. It is possible to have ELSE branch after ELSE IF and to +have multiple ELSE IF branches. Nested `Run Keyword If` usage is not +supported when using ELSE and/or ELSE IF branches. + +Given previous example, if/else construct can also be created like this: +| ${status} | ${value} = | `Run Keyword And Ignore Error` | `My Keyword` | +| `Run Keyword If` | '${status}' == 'PASS' | `Some Action` | arg | ELSE | `Another Action` | + +The return value of this keyword is the return value of the actually +executed keyword or Python ``None`` if no keyword was executed (i.e. +if ``condition`` was false). Hence, it is recommended to use ELSE +and/or ELSE IF branches to conditionally assign return values from +keyword to variables (see `Set Variable If` if you need to set fixed +values conditionally). This is illustrated by the example below: + +| ${var1} = | `Run Keyword If` | ${rc} == 0 | `Some keyword returning a value` | +| ... | ELSE IF | 0 < ${rc} < 42 | `Another keyword` | +| ... | ELSE IF | ${rc} < 0 | `Another keyword with args` | ${rc} | arg2 | +| ... | ELSE | `Final keyword to handle abnormal cases` | ${rc} | +| ${var2} = | `Run Keyword If` | ${condition} | `Some keyword` | + +In this example, ${var2} will be set to ``None`` if ${condition} is +false. + +Notice that ``ELSE`` and ``ELSE IF`` control words must be used +explicitly and thus cannot come from variables. If you need to use +literal ``ELSE`` and ``ELSE IF`` strings as arguments, you can escape +them with a backslash like ``\ELSE`` and ``\ELSE IF``. + +Python's [http://docs.python.org/library/os.html|os] and +[http://docs.python.org/library/sys.html|sys] modules are +automatically imported when evaluating the ``condition``. +Attributes they contain can thus be used in the condition: + +| `Run Keyword If` | os.sep == '/' | `Unix Keyword` | +| ... | ELSE IF | sys.platform.startswith('java') | `Jython Keyword` | +| ... | ELSE | `Windows Keyword` | + + + + + +name +*args + +Runs the given keyword with the given arguments, if all critical tests passed. + +This keyword can only be used in suite teardown. Trying to use it in +any other place will result in an error. + +Otherwise, this keyword works exactly like `Run Keyword`, see its +documentation for more details. + + + + + +name +*args + +Runs the given keyword with the given arguments, if all tests passed. + +This keyword can only be used in a suite teardown. Trying to use it +anywhere else results in an error. + +Otherwise, this keyword works exactly like `Run Keyword`, see its +documentation for more details. + + + + + +name +*args + +Runs the given keyword with the given arguments, if any critical tests failed. + +This keyword can only be used in a suite teardown. Trying to use it +anywhere else results in an error. + +Otherwise, this keyword works exactly like `Run Keyword`, see its +documentation for more details. + + + + + +name +*args + +Runs the given keyword with the given arguments, if one or more tests failed. + +This keyword can only be used in a suite teardown. Trying to use it +anywhere else results in an error. + +Otherwise, this keyword works exactly like `Run Keyword`, see its +documentation for more details. + + + + + +name +*args + +Runs the given keyword with the given arguments, if the test failed. + +This keyword can only be used in a test teardown. Trying to use it +anywhere else results in an error. + +Otherwise, this keyword works exactly like `Run Keyword`, see its +documentation for more details. + +Prior to Robot Framework 2.9 failures in test teardown itself were +not detected by this keyword. + + + + + +name +*args + +Runs the given keyword with the given arguments, if the test passed. + +This keyword can only be used in a test teardown. Trying to use it +anywhere else results in an error. + +Otherwise, this keyword works exactly like `Run Keyword`, see its +documentation for more details. + +Prior to Robot Framework 2.9 failures in test teardown itself were +not detected by this keyword. + + + + + +name +*args + +Runs the given keyword if either a test or a keyword timeout has occurred. + +This keyword can only be used in a test teardown. Trying to use it +anywhere else results in an error. + +Otherwise, this keyword works exactly like `Run Keyword`, see its +documentation for more details. + + + + + +condition +name +*args + +Runs the given keyword with the given arguments if ``condition`` is false. + +See `Run Keyword If` for more information and an example. Notice that +this keyword does not support ``ELSE`` or ``ELSE IF`` branches like +`Run Keyword If` does, though. + + + + + +*keywords + +Executes all the given keywords in a sequence. + +This keyword is mainly useful in setups and teardowns when they need +to take care of multiple actions and creating a new higher level user +keyword would be an overkill. + +By default all arguments are expected to be keywords to be executed. + +Examples: +| `Run Keywords` | `Initialize database` | `Start servers` | `Clear logs` | +| `Run Keywords` | ${KW 1} | ${KW 2} | +| `Run Keywords` | @{KEYWORDS} | + +Keywords can also be run with arguments using upper case ``AND`` as +a separator between keywords. The keywords are executed so that the +first argument is the first keyword and proceeding arguments until +the first ``AND`` are arguments to it. First argument after the first +``AND`` is the second keyword and proceeding arguments until the next +``AND`` are its arguments. And so on. + +Examples: +| `Run Keywords` | `Initialize database` | db1 | AND | `Start servers` | server1 | server2 | +| `Run Keywords` | `Initialize database` | ${DB NAME} | AND | `Start servers` | @{SERVERS} | AND | `Clear logs` | +| `Run Keywords` | ${KW} | AND | @{KW WITH ARGS} | + +Notice that the ``AND`` control argument must be used explicitly and +cannot itself come from a variable. If you need to use literal ``AND`` +string as argument, you can either use variables or escape it with +a backslash like ``\AND``. + + + + + +name +*values + +Makes a variable available globally in all tests and suites. + +Variables set with this keyword are globally available in all +subsequent test suites, test cases and user keywords. Also variables +in variable tables are overridden. Variables assigned locally based +on keyword return values or by using `Set Test Variable` and +`Set Suite Variable` override these variables in that scope, but +the global value is not changed in those cases. + +In practice setting variables with this keyword has the same effect +as using command line options ``--variable`` and ``--variablefile``. +Because this keyword can change variables everywhere, it should be +used with care. + +See `Set Suite Variable` for more information and examples. + + + + + +*search_order + +Sets the resolution order to use when a name matches multiple keywords. + +The library search order is used to resolve conflicts when a keyword +name in the test data matches multiple keywords. The first library +(or resource, see below) containing the keyword is selected and that +keyword implementation used. If the keyword is not found from any library +(or resource), test executing fails the same way as when the search +order is not set. + +When this keyword is used, there is no need to use the long +``LibraryName.Keyword Name`` notation. For example, instead of +having + +| MyLibrary.Keyword | arg | +| MyLibrary.Another Keyword | +| MyLibrary.Keyword | xxx | + +you can have + +| Set Library Search Order | MyLibrary | +| Keyword | arg | +| Another Keyword | +| Keyword | xxx | + +This keyword can be used also to set the order of keywords in different +resource files. In this case resource names must be given without paths +or extensions like: + +| Set Library Search Order | resource | another_resource | + +*NOTE:* +- The search order is valid only in the suite where this keywords is used. +- Keywords in resources always have higher priority than + keywords in libraries regardless the search order. +- The old order is returned and can be used to reset the search order later. +- Library and resource names in the search order are both case and space + insensitive. + + + + + +level + +Sets the log threshold to the specified level and returns the old level. + +Messages below the level will not logged. The default logging level is +INFO, but it can be overridden with the command line option +``--loglevel``. + +The available levels: TRACE, DEBUG, INFO (default), WARN, ERROR and NONE (no +logging). + + + + + +doc +append=False +top=False + +Sets documentation for the current test suite. + +By default the possible existing documentation is overwritten, but +this can be changed using the optional ``append`` argument similarly +as with `Set Test Message` keyword. + +This keyword sets the documentation of the current suite by default. +If the optional ``top`` argument is given a true value (see `Boolean +arguments`), the documentation of the top level suite is altered +instead. + +The documentation of the current suite is available as a built-in +variable ``${SUITE DOCUMENTATION}``. + + + + + +name +value +append=False +top=False + +Sets metadata for the current test suite. + +By default possible existing metadata values are overwritten, but +this can be changed using the optional ``append`` argument similarly +as with `Set Test Message` keyword. + +This keyword sets the metadata of the current suite by default. +If the optional ``top`` argument is given a true value (see `Boolean +arguments`), the metadata of the top level suite is altered instead. + +The metadata of the current suite is available as a built-in variable +``${SUITE METADATA}`` in a Python dictionary. Notice that modifying this +variable directly has no effect on the actual metadata the suite has. + + + + + +name +*values + +Makes a variable available everywhere within the scope of the current suite. + +Variables set with this keyword are available everywhere within the +scope of the currently executed test suite. Setting variables with this +keyword thus has the same effect as creating them using the Variable +table in the test data file or importing them from variable files. + +Possible child test suites do not see variables set with this keyword +by default. Starting from Robot Framework 2.9, that can be controlled +by using ``children=<option>`` as the last argument. If the specified +``<option>`` is a non-empty string or any other value considered true +in Python, the variable is set also to the child suites. Parent and +sibling suites will never see variables set with this keyword. + +The name of the variable can be given either as a normal variable name +(e.g. ``${NAME}``) or in escaped format as ``\${NAME}`` or ``$NAME``. +Variable value can be given using the same syntax as when variables +are created in the Variable table. + +If a variable already exists within the new scope, its value will be +overwritten. Otherwise a new variable is created. If a variable already +exists within the current scope, the value can be left empty and the +variable within the new scope gets the value within the current scope. + +Examples: +| Set Suite Variable | ${SCALAR} | Hello, world! | +| Set Suite Variable | ${SCALAR} | Hello, world! | children=true | +| Set Suite Variable | @{LIST} | First item | Second item | +| Set Suite Variable | &{DICT} | key=value | foo=bar | +| ${ID} = | Get ID | +| Set Suite Variable | ${ID} | + +To override an existing value with an empty value, use built-in +variables ``${EMPTY}``, ``@{EMPTY}`` or ``&{EMPTY}``: + +| Set Suite Variable | ${SCALAR} | ${EMPTY} | +| Set Suite Variable | @{LIST} | @{EMPTY} | +| Set Suite Variable | &{DICT} | &{EMPTY} | + +*NOTE:* If the variable has value which itself is a variable (escaped +or not), you must always use the escaped format to set the variable: + +Example: +| ${NAME} = | Set Variable | \${var} | +| Set Suite Variable | ${NAME} | value | # Sets variable ${var} | +| Set Suite Variable | \${NAME} | value | # Sets variable ${NAME} | + +This limitation applies also to `Set Test Variable`, `Set Global +Variable`, `Variable Should Exist`, `Variable Should Not Exist` and +`Get Variable Value` keywords. + + + + + +*tags + +Adds given ``tags`` for the current test or all tests in a suite. + +When this keyword is used inside a test case, that test gets +the specified tags and other tests are not affected. + +If this keyword is used in a suite setup, all test cases in +that suite, recursively, gets the given tags. It is a failure +to use this keyword in a suite teardown. + +The current tags are available as a built-in variable ``@{TEST TAGS}``. + +See `Remove Tags` if you want to remove certain tags and `Fail` if +you want to fail the test case after setting and/or removing tags. + + + + + +name +*values + +Makes a variable available everywhere within the scope of the current task. + +This is an alias for `Set Test Variable` that is more applicable when +creating tasks, not tests. New in RF 3.1. + + + + + +doc +append=False + +Sets documentation for the current test case. + +By default the possible existing documentation is overwritten, but +this can be changed using the optional ``append`` argument similarly +as with `Set Test Message` keyword. + +The current test documentation is available as a built-in variable +``${TEST DOCUMENTATION}``. This keyword can not be used in suite +setup or suite teardown. + + + + + +message +append=False + +Sets message for the current test case. + +If the optional ``append`` argument is given a true value (see `Boolean +arguments`), the given ``message`` is added after the possible earlier +message by joining the messages with a space. + +In test teardown this keyword can alter the possible failure message, +but otherwise failures override messages set by this keyword. Notice +that in teardown the message is available as a built-in variable +``${TEST MESSAGE}``. + +It is possible to use HTML format in the message by starting the message +with ``*HTML*``. + +Examples: +| Set Test Message | My message | | +| Set Test Message | is continued. | append=yes | +| Should Be Equal | ${TEST MESSAGE} | My message is continued. | +| Set Test Message | `*`HTML`*` <b>Hello!</b> | | + +This keyword can not be used in suite setup or suite teardown. + + + + + +name +*values + +Makes a variable available everywhere within the scope of the current test. + +Variables set with this keyword are available everywhere within the +scope of the currently executed test case. For example, if you set a +variable in a user keyword, it is available both in the test case level +and also in all other user keywords used in the current test. Other +test cases will not see variables set with this keyword. + +See `Set Suite Variable` for more information and examples. + + + + + +*values + +Returns the given values which can then be assigned to a variables. + +This keyword is mainly used for setting scalar variables. +Additionally it can be used for converting a scalar variable +containing a list to a list variable or to multiple scalar variables. +It is recommended to use `Create List` when creating new lists. + +Examples: +| ${hi} = | Set Variable | Hello, world! | +| ${hi2} = | Set Variable | I said: ${hi} | +| ${var1} | ${var2} = | Set Variable | Hello | world | +| @{list} = | Set Variable | ${list with some items} | +| ${item1} | ${item2} = | Set Variable | ${list with 2 items} | + +Variables created with this keyword are available only in the +scope where they are created. See `Set Global Variable`, +`Set Test Variable` and `Set Suite Variable` for information on how to +set variables so that they are available also in a larger scope. + + + + + +condition +*values + +Sets variable based on the given condition. + +The basic usage is giving a condition and two values. The +given condition is first evaluated the same way as with the +`Should Be True` keyword. If the condition is true, then the +first value is returned, and otherwise the second value is +returned. The second value can also be omitted, in which case +it has a default value None. This usage is illustrated in the +examples below, where ``${rc}`` is assumed to be zero. + +| ${var1} = | Set Variable If | ${rc} == 0 | zero | nonzero | +| ${var2} = | Set Variable If | ${rc} > 0 | value1 | value2 | +| ${var3} = | Set Variable If | ${rc} > 0 | whatever | | +=> +| ${var1} = 'zero' +| ${var2} = 'value2' +| ${var3} = None + +It is also possible to have 'else if' support by replacing the +second value with another condition, and having two new values +after it. If the first condition is not true, the second is +evaluated and one of the values after it is returned based on +its truth value. This can be continued by adding more +conditions without a limit. + +| ${var} = | Set Variable If | ${rc} == 0 | zero | +| ... | ${rc} > 0 | greater than zero | less then zero | +| | +| ${var} = | Set Variable If | +| ... | ${rc} == 0 | zero | +| ... | ${rc} == 1 | one | +| ... | ${rc} == 2 | two | +| ... | ${rc} > 2 | greater than two | +| ... | ${rc} < 0 | less than zero | + +Use `Get Variable Value` if you need to set variables +dynamically based on whether a variable exist or not. + + + + + +item +msg=None + +Verifies that the given item is empty. + +The length of the item is got using the `Get Length` keyword. The +default error message can be overridden with the ``msg`` argument. + + + + + +first +second +msg=None +values=True +ignore_case=False + +Fails if the given objects are unequal. + +Optional ``msg`` and ``values`` arguments specify how to construct +the error message if this keyword fails: + +- If ``msg`` is not given, the error message is ``<first> != <second>``. +- If ``msg`` is given and ``values`` gets a true value (default), + the error message is ``<msg>: <first> != <second>``. +- If ``msg`` is given and ``values`` gets a false value, the error + message is simply ``<msg>``. See `Boolean arguments` for more details + about using false values. + +If ``ignore_case`` is given a true value (see `Boolean arguments`) and +arguments are strings, it indicates that comparison should be +case-insensitive. New option in Robot Framework 3.0.1. + +If both arguments are multiline strings, the comparison is done using +`multiline string comparisons`. + +Examples: +| Should Be Equal | ${x} | expected | +| Should Be Equal | ${x} | expected | Custom error message | +| Should Be Equal | ${x} | expected | Custom message | values=False | +| Should Be Equal | ${x} | expected | ignore_case=True | + + + + + +first +second +msg=None +values=True +base=None + +Fails if objects are unequal after converting them to integers. + +See `Convert To Integer` for information how to convert integers from +other bases than 10 using ``base`` argument or ``0b/0o/0x`` prefixes. + +See `Should Be Equal` for an explanation on how to override the default +error message with ``msg`` and ``values``. + +Examples: +| Should Be Equal As Integers | 42 | ${42} | Error message | +| Should Be Equal As Integers | ABCD | abcd | base=16 | +| Should Be Equal As Integers | 0b1011 | 11 | + + + + + +first +second +msg=None +values=True +precision=6 + +Fails if objects are unequal after converting them to real numbers. + +The conversion is done with `Convert To Number` keyword using the +given ``precision``. + +Examples: +| Should Be Equal As Numbers | ${x} | 1.1 | | # Passes if ${x} is 1.1 | +| Should Be Equal As Numbers | 1.123 | 1.1 | precision=1 | # Passes | +| Should Be Equal As Numbers | 1.123 | 1.4 | precision=0 | # Passes | +| Should Be Equal As Numbers | 112.3 | 75 | precision=-2 | # Passes | + +As discussed in the documentation of `Convert To Number`, machines +generally cannot store floating point numbers accurately. Because of +this limitation, comparing floats for equality is problematic and +a correct approach to use depends on the context. This keyword uses +a very naive approach of rounding the numbers before comparing them, +which is both prone to rounding errors and does not work very well if +numbers are really big or small. For more information about comparing +floats, and ideas on how to implement your own context specific +comparison algorithm, see +http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/. + +If you want to avoid possible problems with floating point numbers, +you can implement custom keywords using Python's +[http://docs.python.org/library/decimal.html|decimal] or +[http://docs.python.org/library/fractions.html|fractions] modules. + +See `Should Not Be Equal As Numbers` for a negative version of this +keyword and `Should Be Equal` for an explanation on how to override +the default error message with ``msg`` and ``values``. + + + + + +first +second +msg=None +values=True +ignore_case=False + +Fails if objects are unequal after converting them to strings. + +See `Should Be Equal` for an explanation on how to override the default +error message with ``msg`` and ``values``. + +If ``ignore_case`` is given a true value (see `Boolean arguments`), it +indicates that comparison should be case-insensitive. New option in +Robot Framework 3.0.1. + +If both arguments are multiline strings, the comparison is done using +`multiline string comparisons`. + + + + + +condition +msg=None + +Fails if the given condition is not true. + +If ``condition`` is a string (e.g. ``${rc} < 10``), it is evaluated as +a Python expression as explained in `Evaluating expressions` and the +keyword status is decided based on the result. If a non-string item is +given, the status is got directly from its +[http://docs.python.org/library/stdtypes.html#truth|truth value]. + +The default error message (``<condition> should be true``) is not very +informative, but it can be overridden with the ``msg`` argument. + +Examples: +| Should Be True | ${rc} < 10 | +| Should Be True | '${status}' == 'PASS' | # Strings must be quoted | +| Should Be True | ${number} | # Passes if ${number} is not zero | +| Should Be True | ${list} | # Passes if ${list} is not empty | + +Variables used like ``${variable}``, as in the examples above, are +replaced in the expression before evaluation. Variables are also +available in the evaluation namespace and can be accessed using special +syntax ``$variable``. This is a new feature in Robot Framework 2.9 +and it is explained more thoroughly in `Evaluating expressions`. + +Examples: +| Should Be True | $rc < 10 | +| Should Be True | $status == 'PASS' | # Expected string must be quoted | + +`Should Be True` automatically imports Python's +[http://docs.python.org/library/os.html|os] and +[http://docs.python.org/library/sys.html|sys] modules that contain +several useful attributes: + +| Should Be True | os.linesep == '\n' | # Unixy | +| Should Be True | os.linesep == '\r\n' | # Windows | +| Should Be True | sys.platform == 'darwin' | # OS X | +| Should Be True | sys.platform.startswith('java') | # Jython | + + + + + +container +item +msg=None +values=True +ignore_case=False + +Fails if ``container`` does not contain ``item`` one or more times. + +Works with strings, lists, and anything that supports Python's ``in`` +operator. + +See `Should Be Equal` for an explanation on how to override the default +error message with arguments ``msg`` and ``values``. + +If ``ignore_case`` is given a true value (see `Boolean arguments`) and +compared items are strings, it indicates that comparison should be +case-insensitive. If the ``container`` is a list-like object, string +items in it are compared case-insensitively. New option in Robot +Framework 3.0.1. + +Examples: +| Should Contain | ${output} | PASS | +| Should Contain | ${some list} | value | msg=Failure! | values=False | +| Should Contain | ${some list} | value | ignore_case=True | + + + + + +container +*items +**configuration + +Fails if ``container`` does not contain any of the ``*items``. + +Works with strings, lists, and anything that supports Python's ``in`` +operator. + +Supports additional configuration parameters ``msg``, ``values`` +and ``ignore_case``, which have exactly the same semantics as arguments +with same names have with `Should Contain`. These arguments must +always be given using ``name=value`` syntax after all ``items``. + +Note that possible equal signs in ``items`` must be escaped with +a backslash (e.g. ``foo\=bar``) to avoid them to be passed in +as ``**configuration``. + +Examples: +| Should Contain Any | ${string} | substring 1 | substring 2 | +| Should Contain Any | ${list} | item 1 | item 2 | item 3 | +| Should Contain Any | ${list} | item 1 | item 2 | item 3 | ignore_case=True | +| Should Contain Any | ${list} | @{items} | msg=Custom message | values=False | + +New in Robot Framework 3.0.1. + + + + + +item1 +item2 +count +msg=None +ignore_case=False + +Fails if ``item1`` does not contain ``item2`` ``count`` times. + +Works with strings, lists and all objects that `Get Count` works +with. The default error message can be overridden with ``msg`` and +the actual count is always logged. + +If ``ignore_case`` is given a true value (see `Boolean arguments`) and +compared items are strings, it indicates that comparison should be +case-insensitive. If the ``item1`` is a list-like object, string +items in it are compared case-insensitively. New option in Robot +Framework 3.0.1. + +Examples: +| Should Contain X Times | ${output} | hello | 2 | +| Should Contain X Times | ${some list} | value | 3 | ignore_case=True | + + + + + +str1 +str2 +msg=None +values=True +ignore_case=False + +Fails if the string ``str1`` does not end with the string ``str2``. + +See `Should Be Equal` for an explanation on how to override the default +error message with ``msg`` and ``values``, as well as for semantics +of the ``ignore_case`` option. + + + + + +string +pattern +msg=None +values=True +ignore_case=False + +Fails if the given ``string`` does not match the given ``pattern``. + +Pattern matching is similar as matching files in a shell with +``*``, ``?`` and ``[chars]`` acting as wildcards. See the +`Glob patterns` section for more information. + +See `Should Be Equal` for an explanation on how to override the default +error message with ``msg`` and ``values``, as well as for semantics +of the ``ignore_case`` option. + + + + + +string +pattern +msg=None +values=True + +Fails if ``string`` does not match ``pattern`` as a regular expression. + +See the `Regular expressions` section for more information about +regular expressions and how to use then in Robot Framework test data. + +Notice that the given pattern does not need to match the whole string. +For example, the pattern ``ello`` matches the string ``Hello world!``. +If a full match is needed, the ``^`` and ``$`` characters can be used +to denote the beginning and end of the string, respectively. +For example, ``^ello$`` only matches the exact string ``ello``. + +Possible flags altering how the expression is parsed (e.g. +``re.IGNORECASE``, ``re.MULTILINE``) must be embedded to the +pattern like ``(?im)pattern``. The most useful flags are ``i`` +(case-insensitive), ``m`` (multiline mode), ``s`` (dotall mode) +and ``x`` (verbose). + +If this keyword passes, it returns the portion of the string that +matched the pattern. Additionally, the possible captured groups are +returned. + +See the `Should Be Equal` keyword for an explanation on how to override +the default error message with the ``msg`` and ``values`` arguments. + +Examples: +| Should Match Regexp | ${output} | \\d{6} | # Output contains six numbers | +| Should Match Regexp | ${output} | ^\\d{6}$ | # Six numbers and nothing more | +| ${ret} = | Should Match Regexp | Foo: 42 | (?i)foo: \\d+ | +| ${match} | ${group1} | ${group2} = | +| ... | Should Match Regexp | Bar: 43 | (Foo|Bar): (\\d+) | +=> +| ${ret} = 'Foo: 42' +| ${match} = 'Bar: 43' +| ${group1} = 'Bar' +| ${group2} = '43' + + + + + +item +msg=None + +Verifies that the given item is not empty. + +The length of the item is got using the `Get Length` keyword. The +default error message can be overridden with the ``msg`` argument. + + + + + +first +second +msg=None +values=True +ignore_case=False + +Fails if the given objects are equal. + +See `Should Be Equal` for an explanation on how to override the default +error message with ``msg`` and ``values``. + +If ``ignore_case`` is given a true value (see `Boolean arguments`) and +both arguments are strings, it indicates that comparison should be +case-insensitive. New option in Robot Framework 3.0.1. + + + + + +first +second +msg=None +values=True +base=None + +Fails if objects are equal after converting them to integers. + +See `Convert To Integer` for information how to convert integers from +other bases than 10 using ``base`` argument or ``0b/0o/0x`` prefixes. + +See `Should Be Equal` for an explanation on how to override the default +error message with ``msg`` and ``values``. + +See `Should Be Equal As Integers` for some usage examples. + + + + + +first +second +msg=None +values=True +precision=6 + +Fails if objects are equal after converting them to real numbers. + +The conversion is done with `Convert To Number` keyword using the +given ``precision``. + +See `Should Be Equal As Numbers` for examples on how to use +``precision`` and why it does not always work as expected. See also +`Should Be Equal` for an explanation on how to override the default +error message with ``msg`` and ``values``. + + + + + +first +second +msg=None +values=True +ignore_case=False + +Fails if objects are equal after converting them to strings. + +If ``ignore_case`` is given a true value (see `Boolean arguments`), it +indicates that comparison should be case-insensitive. New option in +Robot Framework 3.0.1. + +See `Should Be Equal` for an explanation on how to override the default +error message with ``msg`` and ``values``. + + + + + +condition +msg=None + +Fails if the given condition is true. + +See `Should Be True` for details about how ``condition`` is evaluated +and how ``msg`` can be used to override the default error message. + + + + + +container +item +msg=None +values=True +ignore_case=False + +Fails if ``container`` contains ``item`` one or more times. + +Works with strings, lists, and anything that supports Python's ``in`` +operator. + +See `Should Be Equal` for an explanation on how to override the default +error message with arguments ``msg`` and ``values``. ``ignore_case`` +has exactly the same semantics as with `Should Contain`. + +Examples: +| Should Not Contain | ${some list} | value | +| Should Not Contain | ${output} | FAILED | ignore_case=True | + + + + + +container +*items +**configuration + +Fails if ``container`` contains one or more of the ``*items``. + +Works with strings, lists, and anything that supports Python's ``in`` +operator. + +Supports additional configuration parameters ``msg``, ``values`` +and ``ignore_case``, which have exactly the same semantics as arguments +with same names have with `Should Contain`. These arguments must +always be given using ``name=value`` syntax after all ``items``. + +Note that possible equal signs in ``items`` must be escaped with +a backslash (e.g. ``foo\=bar``) to avoid them to be passed in +as ``**configuration``. + +Examples: +| Should Not Contain Any | ${string} | substring 1 | substring 2 | +| Should Not Contain Any | ${list} | item 1 | item 2 | item 3 | +| Should Not Contain Any | ${list} | item 1 | item 2 | item 3 | ignore_case=True | +| Should Not Contain Any | ${list} | @{items} | msg=Custom message | values=False | + +New in Robot Framework 3.0.1. + + + + + +str1 +str2 +msg=None +values=True +ignore_case=False + +Fails if the string ``str1`` ends with the string ``str2``. + +See `Should Be Equal` for an explanation on how to override the default +error message with ``msg`` and ``values``, as well as for semantics +of the ``ignore_case`` option. + + + + + +string +pattern +msg=None +values=True +ignore_case=False + +Fails if the given ``string`` matches the given ``pattern``. + +Pattern matching is similar as matching files in a shell with +``*``, ``?`` and ``[chars]`` acting as wildcards. See the +`Glob patterns` section for more information. + +See `Should Be Equal` for an explanation on how to override the default +error message with ``msg`` and ``values``, as well as for semantics +of the ``ignore_case`` option. + + + + + +string +pattern +msg=None +values=True + +Fails if ``string`` matches ``pattern`` as a regular expression. + +See `Should Match Regexp` for more information about arguments. + + + + + +str1 +str2 +msg=None +values=True +ignore_case=False + +Fails if the string ``str1`` starts with the string ``str2``. + +See `Should Be Equal` for an explanation on how to override the default +error message with ``msg`` and ``values``, as well as for semantics +of the ``ignore_case`` option. + + + + + +str1 +str2 +msg=None +values=True +ignore_case=False + +Fails if the string ``str1`` does not start with the string ``str2``. + +See `Should Be Equal` for an explanation on how to override the default +error message with ``msg`` and ``values``, as well as for semantics +of the ``ignore_case`` option. + + + + + +time_ +reason=None + +Pauses the test executed for the given time. + +``time`` may be either a number or a time string. Time strings are in +a format such as ``1 day 2 hours 3 minutes 4 seconds 5milliseconds`` or +``1d 2h 3m 4s 5ms``, and they are fully explained in an appendix of +Robot Framework User Guide. Optional `reason` can be used to explain why +sleeping is necessary. Both the time slept and the reason are logged. + +Examples: +| Sleep | 42 | +| Sleep | 1.5 | +| Sleep | 2 minutes 10 seconds | +| Sleep | 10s | Wait for a reply | + + + + + +name +msg=None + +Fails unless the given variable exists within the current scope. + +The name of the variable can be given either as a normal variable name +(e.g. ``${NAME}``) or in escaped format (e.g. ``\${NAME}``). Notice +that the former has some limitations explained in `Set Suite Variable`. + +The default error message can be overridden with the ``msg`` argument. + +See also `Variable Should Not Exist` and `Keyword Should Exist`. + + + + + +name +msg=None + +Fails if the given variable exists within the current scope. + +The name of the variable can be given either as a normal variable name +(e.g. ``${NAME}``) or in escaped format (e.g. ``\${NAME}``). Notice +that the former has some limitations explained in `Set Suite Variable`. + +The default error message can be overridden with the ``msg`` argument. + +See also `Variable Should Exist` and `Keyword Should Exist`. + + + + + +retry +retry_interval +name +*args + +Runs the specified keyword and retries if it fails. + +``name`` and ``args`` define the keyword that is executed similarly +as with `Run Keyword`. How long to retry running the keyword is +defined using ``retry`` argument either as timeout or count. +``retry_interval`` is the time to wait before trying to run the +keyword again after the previous run has failed. + +If ``retry`` is given as timeout, it must be in Robot Framework's +time format (e.g. ``1 minute``, ``2 min 3 s``, ``4.5``) that is +explained in an appendix of Robot Framework User Guide. If it is +given as count, it must have ``times`` or ``x`` postfix (e.g. +``5 times``, ``10 x``). ``retry_interval`` must always be given in +Robot Framework's time format. + +If the keyword does not succeed regardless of retries, this keyword +fails. If the executed keyword passes, its return value is returned. + +Examples: +| Wait Until Keyword Succeeds | 2 min | 5 sec | My keyword | argument | +| ${result} = | Wait Until Keyword Succeeds | 3x | 200ms | My keyword | + +All normal failures are caught by this keyword. Errors caused by +invalid syntax, test or keyword timeouts, or fatal exceptions (caused +e.g. by `Fatal Error`) are not caught. + +Running the same keyword multiple times inside this keyword can create +lots of output and considerably increase the size of the generated +output files. It is possible to remove unnecessary keywords from +the outputs using ``--RemoveKeywords WUKS`` command line option. + +Support for specifying ``retry`` as a number of times to retry is +a new feature in Robot Framework 2.9. +Since Robot Framework 2.9, variable errors are caught by this keyword. + + + + diff --git a/libspecs/Collections.libspec b/libspecs/Collections.libspec new file mode 100644 index 000000000..75feb0881 --- /dev/null +++ b/libspecs/Collections.libspec @@ -0,0 +1,880 @@ + + +3.1 +global +yes +A test library providing keywords for handling lists and dictionaries. + +``Collections`` is Robot Framework's standard library that provides a +set of keywords for handling Python lists and dictionaries. This +library has keywords, for example, for modifying and getting +values from lists and dictionaries (e.g. `Append To List`, `Get +From Dictionary`) and for verifying their contents (e.g. `Lists +Should Be Equal`, `Dictionary Should Contain Value`). + += Related keywords in BuiltIn = + +Following keywords in the BuiltIn library can also be used with +lists and dictionaries: + +| = Keyword Name = | = Applicable With = | = Comment = | +| `Create List` | lists | +| `Create Dictionary` | dicts | Was in Collections until RF 2.9. | +| `Get Length` | both | +| `Length Should Be` | both | +| `Should Be Empty` | both | +| `Should Not Be Empty` | both | +| `Should Contain` | both | +| `Should Not Contain` | both | +| `Should Contain X Times` | lists | +| `Should Not Contain X Times` | lists | +| `Get Count` | lists | + += Using with list-like and dictionary-like objects = + +List keywords that do not alter the given list can also be used +with tuples, and to some extend also with other iterables. +`Convert To List` can be used to convert tuples and other iterables +to Python ``list`` objects. + +Similarly dictionary keywords can, for most parts, be used with other +mappings. `Convert To Dictionary` can be used if real Python ``dict`` +objects are needed. + += Boolean arguments = + +Some keywords accept arguments that are handled as Boolean values true or +false. If such an argument is given as a string, it is considered false if +it is an empty string or equal to ``FALSE``, ``NONE``, ``NO``, ``OFF`` or +``0``, case-insensitively. Keywords verifying something that allow dropping +actual and expected values from the possible error message also consider +string ``no values`` to be false. Other strings are considered true +regardless their value, and other argument types are tested using the same +[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. + +True examples: +| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=True | # Strings are generally true. | +| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=yes | # Same as the above. | +| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=${TRUE} | # Python ``True`` is true. | +| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=${42} | # Numbers other than 0 are true. | + +False examples: +| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=False | # String ``false`` is false. | +| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=no | # Also string ``no`` is false. | +| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=${EMPTY} | # Empty string is false. | +| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=${FALSE} | # Python ``False`` is false. | +| `Lists Should Be Equal` | ${x} | ${y} | Custom error | values=no values | # ``no values`` works with ``values`` argument | + +Considering string ``NONE`` false is new in Robot Framework 3.0.3 and +considering also ``OFF`` and ``0`` false is new in Robot Framework 3.1. + += Data in examples = + +List related keywords use variables in format ``${Lx}`` in their examples. +They mean lists with as many alphabetic characters as specified by ``x``. +For example, ``${L1}`` means ``['a']`` and ``${L3}`` means +``['a', 'b', 'c']``. + +Dictionary keywords use similar ``${Dx}`` variables. For example, ``${D1}`` +means ``{'a': 1}`` and ``${D3}`` means ``{'a': 1, 'b': 2, 'c': 3}``. + + +list_ +*values + +Adds ``values`` to the end of ``list``. + +Example: +| Append To List | ${L1} | xxx | | | +| Append To List | ${L2} | x | y | z | +=> +| ${L1} = ['a', 'xxx'] +| ${L2} = ['a', 'b', 'x', 'y', 'z'] + + + + + +*lists + +Combines the given ``lists`` together and returns the result. + +The given lists are not altered by this keyword. + +Example: +| ${x} = | Combine List | ${L1} | ${L2} | | +| ${y} = | Combine List | ${L1} | ${L2} | ${L1} | +=> +| ${x} = ['a', 'a', 'b'] +| ${y} = ['a', 'a', 'b', 'a'] +| ${L1} and ${L2} are not changed. + + + + + +item + +Converts the given ``item`` to a Python ``dict`` type. + +Mainly useful for converting other mappings to dictionaries. Use +`Create Dictionary` from the BuiltIn library for constructing new +dictionaries. + +New in Robot Framework 2.9. + + + + + +item + +Converts the given ``item`` to a Python ``list`` type. + +Mainly useful for converting tuples and other iterable to lists. +Use `Create List` from the BuiltIn library for constructing new lists. + + + + + +dictionary + +Returns a copy of the given dictionary. + +The given dictionary is never altered by this keyword. + + + + + +list_ + +Returns a copy of the given list. + +The given list is never altered by this keyword. + + + + + +list_ +value +start=0 +end=None + +Returns the number of occurrences of the given ``value`` in ``list``. + +The search can be narrowed to the selected sublist by the ``start`` and +``end`` indexes having the same semantics as with `Get Slice From List` +keyword. The given list is never altered by this keyword. + +Example: +| ${x} = | Count Values In List | ${L3} | b | +=> +| ${x} = 1 +| ${L3} is not changed + + + + + +dict1 +dict2 +msg=None +values=True + +Fails if the given dictionaries are not equal. + +First the equality of dictionaries' keys is checked and after that all +the key value pairs. If there are differences between the values, those +are listed in the error message. The types of the dictionaries do not +need to be same. + +See `Lists Should Be Equal` for more information about configuring +the error message with ``msg`` and ``values`` arguments. + +The given dictionaries are never altered by this keyword. + + + + + +dictionary +key +value +msg=None + +An item of ``key`` / ``value`` must be found in a ``dictionary``. + +Value is converted to unicode for comparison. + +See `Lists Should Be Equal` for an explanation of ``msg``. +The given dictionary is never altered by this keyword. + + + + + +dictionary +key +msg=None + +Fails if ``key`` is not found from ``dictionary``. + +See `List Should Contain Value` for an explanation of ``msg``. + +The given dictionary is never altered by this keyword. + + + + + +dict1 +dict2 +msg=None +values=True + +Fails unless all items in ``dict2`` are found from ``dict1``. + +See `Lists Should Be Equal` for more information about configuring +the error message with ``msg`` and ``values`` arguments. + +The given dictionaries are never altered by this keyword. + + + + + +dictionary +value +msg=None + +Fails if ``value`` is not found from ``dictionary``. + +See `List Should Contain Value` for an explanation of ``msg``. + +The given dictionary is never altered by this keyword. + + + + + +dictionary +key +msg=None + +Fails if ``key`` is found from ``dictionary``. + +See `List Should Contain Value` for an explanation of ``msg``. + +The given dictionary is never altered by this keyword. + + + + + +dictionary +value +msg=None + +Fails if ``value`` is found from ``dictionary``. + +See `List Should Contain Value` for an explanation of ``msg``. + +The given dictionary is never altered by this keyword. + + + + + +dictionary + +Returns items of the given ``dictionary``. + +Items are returned sorted by keys. The given ``dictionary`` is not +altered by this keyword. + +Example: +| ${items} = | Get Dictionary Items | ${D3} | +=> +| ${items} = ['a', 1, 'b', 2, 'c', 3] + + + + + +dictionary + +Returns keys of the given ``dictionary``. + +If keys are sortable, they are returned in sorted order. The given +``dictionary`` is never altered by this keyword. + +Example: +| ${keys} = | Get Dictionary Keys | ${D3} | +=> +| ${keys} = ['a', 'b', 'c'] + + + + + +dictionary + +Returns values of the given dictionary. + +Values are returned sorted according to keys. The given dictionary is +never altered by this keyword. + +Example: +| ${values} = | Get Dictionary Values | ${D3} | +=> +| ${values} = [1, 2, 3] + + + + + +dictionary +key + +Returns a value from the given ``dictionary`` based on the given ``key``. + +If the given ``key`` cannot be found from the ``dictionary``, this +keyword fails. + +The given dictionary is never altered by this keyword. + +Example: +| ${value} = | Get From Dictionary | ${D3} | b | +=> +| ${value} = 2 + + + + + +list_ +index + +Returns the value specified with an ``index`` from ``list``. + +The given list is never altered by this keyword. + +Index ``0`` means the first position, ``1`` the second, and so on. +Similarly, ``-1`` is the last position, ``-2`` the second last, and so on. +Using an index that does not exist on the list causes an error. +The index can be either an integer or a string that can be converted +to an integer. + +Examples (including Python equivalents in comments): +| ${x} = | Get From List | ${L5} | 0 | # L5[0] | +| ${y} = | Get From List | ${L5} | -2 | # L5[-2] | +=> +| ${x} = 'a' +| ${y} = 'd' +| ${L5} is not changed + + + + + +list_ +value +start=0 +end=None + +Returns the index of the first occurrence of the ``value`` on the list. + +The search can be narrowed to the selected sublist by the ``start`` and +``end`` indexes having the same semantics as with `Get Slice From List` +keyword. In case the value is not found, -1 is returned. The given list +is never altered by this keyword. + +Example: +| ${x} = | Get Index From List | ${L5} | d | +=> +| ${x} = 3 +| ${L5} is not changed + + + + + +list +pattern +case_insensitive=False +whitespace_insensitive=False + +Returns the count of matches to ``pattern`` in ``list``. + +For more information on ``pattern``, ``case_insensitive``, and +``whitespace_insensitive``, see `Should Contain Match`. + +Examples: +| ${count}= | Get Match Count | ${list} | a* | # ${count} will be the count of strings beginning with 'a' | +| ${count}= | Get Match Count | ${list} | regexp=a.* | # ${matches} will be the count of strings beginning with 'a' (regexp version) | +| ${count}= | Get Match Count | ${list} | a* | case_insensitive=${True} | # ${matches} will be the count of strings beginning with 'a' or 'A' | + + + + + +list +pattern +case_insensitive=False +whitespace_insensitive=False + +Returns a list of matches to ``pattern`` in ``list``. + +For more information on ``pattern``, ``case_insensitive``, and +``whitespace_insensitive``, see `Should Contain Match`. + +Examples: +| ${matches}= | Get Matches | ${list} | a* | # ${matches} will contain any string beginning with 'a' | +| ${matches}= | Get Matches | ${list} | regexp=a.* | # ${matches} will contain any string beginning with 'a' (regexp version) | +| ${matches}= | Get Matches | ${list} | a* | case_insensitive=${True} | # ${matches} will contain any string beginning with 'a' or 'A' | + + + + + +list_ +start=0 +end=None + +Returns a slice of the given list between ``start`` and ``end`` indexes. + +The given list is never altered by this keyword. + +If both ``start`` and ``end`` are given, a sublist containing values +from ``start`` to ``end`` is returned. This is the same as +``list[start:end]`` in Python. To get all items from the beginning, +use 0 as the start value, and to get all items until and including +the end, use ``None`` (default) as the end value. + +Using ``start`` or ``end`` not found on the list is the same as using +the largest (or smallest) available index. + +Examples (incl. Python equivalents in comments): +| ${x} = | Get Slice From List | ${L5} | 2 | 4 | # L5[2:4] | +| ${y} = | Get Slice From List | ${L5} | 1 | | # L5[1:None] | +| ${z} = | Get Slice From List | ${L5} | | -2 | # L5[0:-2] | +=> +| ${x} = ['c', 'd'] +| ${y} = ['b', 'c', 'd', 'e'] +| ${z} = ['a', 'b', 'c'] +| ${L5} is not changed + + + + + +list_ +index +value + +Inserts ``value`` into ``list`` to the position specified with ``index``. + +Index ``0`` adds the value into the first position, ``1`` to the second, +and so on. Inserting from right works with negative indices so that +``-1`` is the second last position, ``-2`` third last, and so on. Use +`Append To List` to add items to the end of the list. + +If the absolute value of the index is greater than +the length of the list, the value is added at the end +(positive index) or the beginning (negative index). An index +can be given either as an integer or a string that can be +converted to an integer. + +Example: +| Insert Into List | ${L1} | 0 | xxx | +| Insert Into List | ${L2} | ${-1} | xxx | +=> +| ${L1} = ['xxx', 'a'] +| ${L2} = ['a', 'xxx', 'b'] + + + + + +dictionary +*keys + +Keeps the given ``keys`` in the ``dictionary`` and removes all other. + +If the given ``key`` cannot be found from the ``dictionary``, it +is ignored. + +Example: +| Keep In Dictionary | ${D5} | b | x | d | +=> +| ${D5} = {'b': 2, 'd': 4} + + + + + +list1 +list2 +msg=None +values=True + +Fails if not all of the elements in ``list2`` are found in ``list1``. + +The order of values and the number of values are not taken into +account. + +See `Lists Should Be Equal` for more information about configuring +the error message with ``msg`` and ``values`` arguments. + + + + + +list_ +value +msg=None + +Fails if the ``value`` is not found from ``list``. + +If the keyword fails, the default error messages is ``<list> does +not contain value '<value>'``. A custom message can be given using +the ``msg`` argument. + + + + + +list_ +msg=None + +Fails if any element in the ``list`` is found from it more than once. + +The default error message lists all the elements that were found +from the ``list`` multiple times, but it can be overridden by giving +a custom ``msg``. All multiple times found items and their counts are +also logged. + +This keyword works with all iterables that can be converted to a list. +The original iterable is never altered. + + + + + +list_ +value +msg=None + +Fails if the ``value`` is found from ``list``. + +See `List Should Contain Value` for an explanation of ``msg``. + + + + + +list1 +list2 +msg=None +values=True +names=None + +Fails if given lists are unequal. + +The keyword first verifies that the lists have equal lengths, and then +it checks are all their values equal. Possible differences between the +values are listed in the default error message like ``Index 4: ABC != +Abc``. The types of the lists do not need to be the same. For example, +Python tuple and list with same content are considered equal. + + +The error message can be configured using ``msg`` and ``values`` +arguments: +- If ``msg`` is not given, the default error message is used. +- If ``msg`` is given and ``values`` gets a value considered true + (see `Boolean arguments`), the error message starts with the given + ``msg`` followed by a newline and the default message. +- If ``msg`` is given and ``values`` is not given a true value, + the error message is just the given ``msg``. + +Optional ``names`` argument can be used for naming the indices shown in +the default error message. It can either be a list of names matching +the indices in the lists or a dictionary where keys are indices that +need to be named. It is not necessary to name all of the indices. When +using a dictionary, keys can be either integers or strings that can be +converted to integers. + +Examples: +| ${names} = | Create List | First Name | Family Name | Email | +| Lists Should Be Equal | ${people1} | ${people2} | names=${names} | +| ${names} = | Create Dictionary | 0=First Name | 2=Email | +| Lists Should Be Equal | ${people1} | ${people2} | names=${names} | + +If the items in index 2 would differ in the above examples, the error +message would contain a row like ``Index 2 (email): name@foo.com != +name@bar.com``. + + + + + +dictionary +level=INFO + +Logs the size and contents of the ``dictionary`` using given ``level``. + +Valid levels are TRACE, DEBUG, INFO (default), and WARN. + +If you only want to log the size, use keyword `Get Length` from +the BuiltIn library. + + + + + +list_ +level=INFO + +Logs the length and contents of the ``list`` using given ``level``. + +Valid levels are TRACE, DEBUG, INFO (default), and WARN. + +If you only want to the length, use keyword `Get Length` from +the BuiltIn library. + + + + + +dictionary +key +default= + +Pops the given ``key`` from the ``dictionary`` and returns its value. + +By default the keyword fails if the given ``key`` cannot be found from +the ``dictionary``. If optional ``default`` value is given, it will be +returned instead of failing. + +Example: +| ${val}= | Pop From Dictionary | ${D3} | b | +=> +| ${val} = 2 +| ${D3} = {'a': 1, 'c': 3} + +New in Robot Framework 2.9.2. + + + + + +list_ + +Returns a list without duplicates based on the given ``list``. + +Creates and returns a new list that contains all items in the given +list so that one item can appear only once. Order of the items in +the new list is the same as in the original except for missing +duplicates. Number of the removed duplicates is logged. + + + + + +dictionary +*keys + +Removes the given ``keys`` from the ``dictionary``. + +If the given ``key`` cannot be found from the ``dictionary``, it +is ignored. + +Example: +| Remove From Dictionary | ${D3} | b | x | y | +=> +| ${D3} = {'a': 1, 'c': 3} + + + + + +list_ +index + +Removes and returns the value specified with an ``index`` from ``list``. + +Index ``0`` means the first position, ``1`` the second and so on. +Similarly, ``-1`` is the last position, ``-2`` the second last, and so on. +Using an index that does not exist on the list causes an error. +The index can be either an integer or a string that can be converted +to an integer. + +Example: +| ${x} = | Remove From List | ${L2} | 0 | +=> +| ${x} = 'a' +| ${L2} = ['b'] + + + + + +list_ +*values + +Removes all occurrences of given ``values`` from ``list``. + +It is not an error if a value does not exist in the list at all. + +Example: +| Remove Values From List | ${L4} | a | c | e | f | +=> +| ${L4} = ['b', 'd'] + + + + + +list_ + +Reverses the given list in place. + +Note that the given list is changed and nothing is returned. Use +`Copy List` first, if you need to keep also the original order. + +| Reverse List | ${L3} | +=> +| ${L3} = ['c', 'b', 'a'] + + + + + +list_ +index +value + +Sets the value of ``list`` specified by ``index`` to the given ``value``. + +Index ``0`` means the first position, ``1`` the second and so on. +Similarly, ``-1`` is the last position, ``-2`` second last, and so on. +Using an index that does not exist on the list causes an error. +The index can be either an integer or a string that can be converted to +an integer. + +Example: +| Set List Value | ${L3} | 1 | xxx | +| Set List Value | ${L3} | -1 | yyy | +=> +| ${L3} = ['a', 'xxx', 'yyy'] + + + + + +dictionary +*key_value_pairs +**items + +Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``. + +Giving items as ``key_value_pairs`` means giving keys and values +as separate arguments: + +| Set To Dictionary | ${D1} | key | value | second | ${2} | +=> +| ${D1} = {'a': 1, 'key': 'value', 'second': 2} + +| Set To Dictionary | ${D1} | key=value | second=${2} | + +The latter syntax is typically more convenient to use, but it has +a limitation that keys must be strings. + +If given keys already exist in the dictionary, their values are updated. + + + + + +list +pattern +msg=None +case_insensitive=False +whitespace_insensitive=False + +Fails if ``pattern`` is not found in ``list``. + +See `List Should Contain Value` for an explanation of ``msg``. + +By default, pattern matching is similar to matching files in a shell +and is case-sensitive and whitespace-sensitive. In the pattern syntax, +``*`` matches to anything and ``?`` matches to any single character. You +can also prepend ``glob=`` to your pattern to explicitly use this pattern +matching behavior. + +If you prepend ``regexp=`` to your pattern, your pattern will be used +according to the Python +[http://docs.python.org/library/re.html|re module] regular expression +syntax. Important note: Backslashes are an escape character, and must +be escaped with another backslash (e.g. ``regexp=\\d{6}`` to search for +``\d{6}``). See `BuiltIn.Should Match Regexp` for more details. + +If ``case_insensitive`` is given a true value (see `Boolean arguments`), +the pattern matching will ignore case. + +If ``whitespace_insensitive`` is given a true value (see `Boolean +arguments`), the pattern matching will ignore whitespace. + +Non-string values in lists are ignored when matching patterns. + +The given list is never altered by this keyword. + +See also ``Should Not Contain Match``. + +Examples: +| Should Contain Match | ${list} | a* | | | # Match strings beginning with 'a'. | +| Should Contain Match | ${list} | regexp=a.* | | | # Same as the above but with regexp. | +| Should Contain Match | ${list} | regexp=\\d{6} | | | # Match strings containing six digits. | +| Should Contain Match | ${list} | a* | case_insensitive=True | | # Match strings beginning with 'a' or 'A'. | +| Should Contain Match | ${list} | ab* | whitespace_insensitive=yes | | # Match strings beginning with 'ab' with possible whitespace ignored. | +| Should Contain Match | ${list} | ab* | whitespace_insensitive=true | case_insensitive=true | # Same as the above but also ignore case. | + + + + + +list +pattern +msg=None +case_insensitive=False +whitespace_insensitive=False + +Fails if ``pattern`` is found in ``list``. + +Exact opposite of `Should Contain Match` keyword. See that keyword +for information about arguments and usage in general. + + + + + +list_ + +Sorts the given list in place. + +The strings are sorted alphabetically and the numbers numerically. + +Note that the given list is changed and nothing is returned. Use +`Copy List` first, if you need to keep also the original order. + +${L} = [2,1,'a','c','b'] +| Sort List | ${L} | +=> +| ${L} = [1, 2, 'a', 'b', 'c'] + + + + diff --git a/libspecs/DateTime.libspec b/libspecs/DateTime.libspec new file mode 100644 index 000000000..538dd5912 --- /dev/null +++ b/libspecs/DateTime.libspec @@ -0,0 +1,512 @@ + + +3.1 +global +yes +A test library for handling date and time values. + +``DateTime`` is a Robot Framework standard library that supports creating and +converting date and time values (e.g. `Get Current Date`, `Convert Time`), +as well as doing simple calculations with them (e.g. `Subtract Time From Date`, +`Add Time To Time`). It supports dates and times in various formats, and can +also be used by other libraries programmatically. + += Table of Contents = + +- `Terminology` +- `Date formats` +- `Time formats` +- `Millisecond handling` +- `Programmatic usage` +- `Shortcuts` +- `Keywords` + += Terminology = + +In the context of this library, ``date`` and ``time`` generally have following +meanings: + +- ``date``: An entity with both date and time components but without any + timezone information. For example, ``2014-06-11 10:07:42``. +- ``time``: A time interval. For example, ``1 hour 20 minutes`` or ``01:20:00``. + +This terminology differs from what Python's standard +[http://docs.python.org/library/datetime.html|datetime] module uses. +Basically its +[http://docs.python.org/library/datetime.html#datetime-objects|datetime] and +[http://docs.python.org/library/datetime.html#timedelta-objects|timedelta] +objects match ``date`` and ``time`` as defined by this library. + += Date formats = + +Dates can given to and received from keywords in `timestamp`, `custom +timestamp`, `Python datetime` and `epoch time` formats. These formats are +discussed thoroughly in subsequent sections. + +Input format is determined automatically based on the given date except when +using custom timestamps, in which case it needs to be given using +``date_format`` argument. Default result format is timestamp, but it can +be overridden using ``result_format`` argument. + +== Timestamp == + +If a date is given as a string, it is always considered to be a timestamp. +If no custom formatting is given using ``date_format`` argument, the timestamp +is expected to be in [http://en.wikipedia.org/wiki/ISO_8601|ISO 8601] like +format ``YYYY-MM-DD hh:mm:ss.mil``, where any non-digit character can be used +as a separator or separators can be omitted altogether. Additionally, +only the date part is mandatory, all possibly missing time components are +considered to be zeros. + +Dates can also be returned in the same ``YYYY-MM-DD hh:mm:ss.mil`` format by +using ``timestamp`` value with ``result_format`` argument. This is also the +default format that keywords returning dates use. Milliseconds can be excluded +using ``exclude_millis`` as explained in `Millisecond handling` section. + +Examples: +| ${date1} = | Convert Date | 2014-06-11 10:07:42.000 | +| ${date2} = | Convert Date | 20140611 100742 | result_format=timestamp | +| Should Be Equal | ${date1} | ${date2} | +| ${date} = | Convert Date | 20140612 12:57 | exclude_millis=yes | +| Should Be Equal | ${date} | 2014-06-12 12:57:00 | + +== Custom timestamp == + +It is possible to use custom timestamps in both input and output. +The custom format is same as accepted by Python's +[http://docs.python.org/library/datetime.html#strftime-strptime-behavior| +datatime.strptime] function. For example, the default timestamp discussed +in the previous section would match ``%Y-%m-%d %H:%M:%S.%f``. + +When using a custom timestamp in input, it must be specified using +``date_format`` argument. The actual input value must be a string that matches +the specified format exactly. When using a custom timestamp in output, it must +be given using ``result_format`` argument. + +Examples: +| ${date} = | Convert Date | 28.05.2014 12:05 | date_format=%d.%m.%Y %H:%M | +| Should Be Equal | ${date} | 2014-05-28 12:05:00.000 | +| ${date} = | Convert Date | ${date} | result_format=%d.%m.%Y | +| Should Be Equal | ${date} | 28.05.2014 | + +Notice that locale aware directives like ``%b`` do not work correctly with +Jython on non-English locales: http://bugs.jython.org/issue2285 + +== Python datetime == + +Python's standard +[http://docs.python.org/library/datetime.html#datetime-objects|datetime] +objects can be used both in input and output. In input they are recognized +automatically, and in output it is possible to get them by giving ``datetime`` +value to ``result_format`` argument. + +One nice benefit with datetime objects is that they have different time +components available as attributes that can be easily accessed using the +extended variable syntax. + +Examples: +| ${datetime} = | Convert Date | 2014-06-11 10:07:42.123 | datetime | +| Should Be Equal As Integers | ${datetime.year} | 2014 | +| Should Be Equal As Integers | ${datetime.month} | 6 | +| Should Be Equal As Integers | ${datetime.day} | 11 | +| Should Be Equal As Integers | ${datetime.hour} | 10 | +| Should Be Equal As Integers | ${datetime.minute} | 7 | +| Should Be Equal As Integers | ${datetime.second} | 42 | +| Should Be Equal As Integers | ${datetime.microsecond} | 123000 | + +== Epoch time == + +Epoch time is the time in seconds since the +[http://en.wikipedia.org/wiki/Unix_time|UNIX epoch] i.e. 00:00:00.000 (UTC) +1 January 1970. To give a date in epoch time, it must be given as a number +(integer or float), not as a string. To return a date in epoch time, +it is possible to use ``epoch`` value with ``result_format`` argument. +Epoch time is returned as a floating point number. + +Notice that epoch time itself is independent on timezones and thus same +around the world at a certain time. What local time a certain epoch time +matches obviously then depends on the timezone. For example, examples below +were tested in Finland but verifications would fail on other timezones. + +Examples: +| ${date} = | Convert Date | ${1000000000} | +| Should Be Equal | ${date} | 2001-09-09 04:46:40.000 | +| ${date} = | Convert Date | 2014-06-12 13:27:59.279 | epoch | +| Should Be Equal | ${date} | ${1402568879.279} | + +== Earliest supported date == + +The earliest date that is supported depends on the date format and to some +extend on the platform: + +- Timestamps support year 1900 and above. +- Python datetime objects support year 1 and above. +- Epoch time supports 1970 and above on Windows with Python and IronPython. +- On other platforms epoch time supports 1900 and above or even earlier. + +Prior to Robot Framework 2.9.2, all formats had same limitation as epoch time +has nowadays. + += Time formats = + +Similarly as dates, times can be given to and received from keywords in +various different formats. Supported formats are `number`, `time string` +(verbose and compact), `timer string` and `Python timedelta`. + +Input format for time is always determined automatically based on the input. +Result format is number by default, but it can be customised using +``result_format`` argument. + +== Number == + +Time given as a number is interpreted to be seconds. It can be given +either as an integer or a float, or it can be a string that can be converted +to a number. + +To return a time as a number, ``result_format`` argument must have value +``number``, which is also the default. Returned number is always a float. + +Examples: +| ${time} = | Convert Time | 3.14 | +| Should Be Equal | ${time} | ${3.14} | +| ${time} = | Convert Time | ${time} | result_format=number | +| Should Be Equal | ${time} | ${3.14} | + +== Time string == + +Time strings are strings in format like ``1 minute 42 seconds`` or ``1min 42s``. +The basic idea of this format is having first a number and then a text +specifying what time that number represents. Numbers can be either +integers or floating point numbers, the whole format is case and space +insensitive, and it is possible to add a minus prefix to specify negative +times. The available time specifiers are: + +- ``days``, ``day``, ``d`` +- ``hours``, ``hour``, ``h`` +- ``minutes``, ``minute``, ``mins``, ``min``, ``m`` +- ``seconds``, ``second``, ``secs``, ``sec``, ``s`` +- ``milliseconds``, ``millisecond``, ``millis``, ``ms`` + +When returning a time string, it is possible to select between ``verbose`` +and ``compact`` representations using ``result_format`` argument. The verbose +format uses long specifiers ``day``, ``hour``, ``minute``, ``second`` and +``millisecond``, and adds ``s`` at the end when needed. The compact format uses +shorter specifiers ``d``, ``h``, ``min``, ``s`` and ``ms``, and even drops +the space between the number and the specifier. + +Examples: +| ${time} = | Convert Time | 1 minute 42 seconds | +| Should Be Equal | ${time} | ${102} | +| ${time} = | Convert Time | 4200 | verbose | +| Should Be Equal | ${time} | 1 hour 10 minutes | +| ${time} = | Convert Time | - 1.5 hours | compact | +| Should Be Equal | ${time} | - 1h 30min | + +== Timer string == + +Timer string is a string given in timer like format ``hh:mm:ss.mil``. In this +format both hour and millisecond parts are optional, leading and trailing +zeros can be left out when they are not meaningful, and negative times can +be represented by adding a minus prefix. + +To return a time as timer string, ``result_format`` argument must be given +value ``timer``. Timer strings are by default returned in full ``hh:mm:ss.mil`` +format, but milliseconds can be excluded using ``exclude_millis`` as explained +in `Millisecond handling` section. + +Examples: +| ${time} = | Convert Time | 01:42 | +| Should Be Equal | ${time} | ${102} | +| ${time} = | Convert Time | 01:10:00.123 | +| Should Be Equal | ${time} | ${4200.123} | +| ${time} = | Convert Time | 102 | timer | +| Should Be Equal | ${time} | 00:01:42.000 | +| ${time} = | Convert Time | -101.567 | timer | exclude_millis=yes | +| Should Be Equal | ${time} | -00:01:42 | + +== Python timedelta == + +Python's standard +[http://docs.python.org/library/datetime.html#datetime.timedelta|timedelta] +objects are also supported both in input and in output. In input they are +recognized automatically, and in output it is possible to receive them by +giving ``timedelta`` value to ``result_format`` argument. + +Examples: +| ${timedelta} = | Convert Time | 01:10:02.123 | timedelta | +| Should Be Equal | ${timedelta.total_seconds()} | ${4202.123} | + += Millisecond handling = + +This library handles dates and times internally using the precision of the +given input. With `timestamp`, `time string`, and `timer string` result +formats seconds are, however, rounded to millisecond accuracy. Milliseconds +may also be included even if there would be none. + +All keywords returning dates or times have an option to leave milliseconds out +by giving a true value to ``exclude_millis`` argument. If the argument is given +as a string, it is considered true unless it is empty or case-insensitively +equal to ``false``, ``none`` or ``no``. Other argument types are tested using +same [http://docs.python.org/library/stdtypes.html#truth|rules as in +Python]. Notice that prior to Robot Framework 2.9, all strings except +the empty string were considered true, and that considering ``none`` false is +new in Robot Framework 3.0.3. + +When milliseconds are excluded, seconds in returned dates and times are +rounded to the nearest full second. With `timestamp` and `timer string` +result formats, milliseconds will also be removed from the returned string +altogether. + +Examples: +| ${date} = | Convert Date | 2014-06-11 10:07:42 | +| Should Be Equal | ${date} | 2014-06-11 10:07:42.000 | +| ${date} = | Convert Date | 2014-06-11 10:07:42.500 | exclude_millis=yes | +| Should Be Equal | ${date} | 2014-06-11 10:07:43 | +| ${dt} = | Convert Date | 2014-06-11 10:07:42.500 | datetime | exclude_millis=yes | +| Should Be Equal | ${dt.second} | ${43} | +| Should Be Equal | ${dt.microsecond} | ${0} | +| ${time} = | Convert Time | 102 | timer | exclude_millis=false | +| Should Be Equal | ${time} | 00:01:42.000 | | +| ${time} = | Convert Time | 102.567 | timer | exclude_millis=true | +| Should Be Equal | ${time} | 00:01:43 | | + += Programmatic usage = + +In addition to be used as normal library, this library is intended to +provide a stable API for other libraries to use if they want to support +same date and time formats as this library. All the provided keywords +are available as functions that can be easily imported: + +| from robot.libraries.DateTime import convert_time +| +| def example_keyword(timeout): +| seconds = convert_time(timeout) +| # ... + +Additionally helper classes ``Date`` and ``Time`` can be used directly: + +| from robot.libraries.DateTime import Date, Time +| +| def example_keyword(date, interval): +| date = Date(date).convert('datetime') +| interval = Time(interval).convert('number') +| # ... + + +date +time +result_format=timestamp +exclude_millis=False +date_format=None + +Adds time to date and returns the resulting date. + +Arguments: +- ``date:`` Date to add time to in one of the supported + `date formats`. +- ``time:`` Time that is added in one of the supported + `time formats`. +- ``result_format:`` Format of the returned date. +- ``exclude_millis:`` When set to any true value, rounds and drops + milliseconds as explained in `millisecond handling`. +- ``date_format:`` Possible `custom timestamp` format of ``date``. + +Examples: +| ${date} = | Add Time To Date | 2014-05-28 12:05:03.111 | 7 days | +| Should Be Equal | ${date} | 2014-06-04 12:05:03.111 | | +| ${date} = | Add Time To Date | 2014-05-28 12:05:03.111 | 01:02:03:004 | +| Should Be Equal | ${date} | 2014-05-28 13:07:06.115 | + + + + + +time1 +time2 +result_format=number +exclude_millis=False + +Adds time to another time and returns the resulting time. + +Arguments: +- ``time1:`` First time in one of the supported `time formats`. +- ``time2:`` Second time in one of the supported `time formats`. +- ``result_format:`` Format of the returned time. +- ``exclude_millis:`` When set to any true value, rounds and drops + milliseconds as explained in `millisecond handling`. + +Examples: +| ${time} = | Add Time To Time | 1 minute | 42 | +| Should Be Equal | ${time} | ${102} | +| ${time} = | Add Time To Time | 3 hours 5 minutes | 01:02:03 | timer | exclude_millis=yes | +| Should Be Equal | ${time} | 04:07:03 | + + + + + +date +result_format=timestamp +exclude_millis=False +date_format=None + +Converts between supported `date formats`. + +Arguments: +- ``date:`` Date in one of the supported `date formats`. +- ``result_format:`` Format of the returned date. +- ``exclude_millis:`` When set to any true value, rounds and drops + milliseconds as explained in `millisecond handling`. +- ``date_format:`` Specifies possible `custom timestamp` format. + +Examples: +| ${date} = | Convert Date | 20140528 12:05:03.111 | +| Should Be Equal | ${date} | 2014-05-28 12:05:03.111 | +| ${date} = | Convert Date | ${date} | epoch | +| Should Be Equal | ${date} | ${1401267903.111} | +| ${date} = | Convert Date | 5.28.2014 12:05 | exclude_millis=yes | date_format=%m.%d.%Y %H:%M | +| Should Be Equal | ${date} | 2014-05-28 12:05:00 | + + + + + +time +result_format=number +exclude_millis=False + +Converts between supported `time formats`. + +Arguments: +- ``time:`` Time in one of the supported `time formats`. +- ``result_format:`` Format of the returned time. +- ``exclude_millis:`` When set to any true value, rounds and drops + milliseconds as explained in `millisecond handling`. + +Examples: +| ${time} = | Convert Time | 10 seconds | +| Should Be Equal | ${time} | ${10} | +| ${time} = | Convert Time | 1:00:01 | verbose | +| Should Be Equal | ${time} | 1 hour 1 second | +| ${time} = | Convert Time | ${3661.5} | timer | exclude_milles=yes | +| Should Be Equal | ${time} | 01:01:02 | + + + + + +time_zone=local +increment=0 +result_format=timestamp +exclude_millis=False + +Returns current local or UTC time with an optional increment. + +Arguments: +- ``time_zone:`` Get the current time on this time zone. Currently only + ``local`` (default) and ``UTC`` are supported. +- ``increment:`` Optional time increment to add to the returned date in + one of the supported `time formats`. Can be negative. +- ``result_format:`` Format of the returned date (see `date formats`). +- ``exclude_millis:`` When set to any true value, rounds and drops + milliseconds as explained in `millisecond handling`. + +Examples: +| ${date} = | Get Current Date | +| Should Be Equal | ${date} | 2014-06-12 20:00:58.946 | +| ${date} = | Get Current Date | UTC | +| Should Be Equal | ${date} | 2014-06-12 17:00:58.946 | +| ${date} = | Get Current Date | increment=02:30:00 | +| Should Be Equal | ${date} | 2014-06-12 22:30:58.946 | +| ${date} = | Get Current Date | UTC | - 5 hours | +| Should Be Equal | ${date} | 2014-06-12 12:00:58.946 | +| ${date} = | Get Current Date | result_format=datetime | +| Should Be Equal | ${date.year} | ${2014} | +| Should Be Equal | ${date.month} | ${6} | + + + + + +date1 +date2 +result_format=number +exclude_millis=False +date1_format=None +date2_format=None + +Subtracts date from another date and returns time between. + +Arguments: +- ``date1:`` Date to subtract another date from in one of the + supported `date formats`. +- ``date2:`` Date that is subtracted in one of the supported + `date formats`. +- ``result_format:`` Format of the returned time (see `time formats`). +- ``exclude_millis:`` When set to any true value, rounds and drops + milliseconds as explained in `millisecond handling`. +- ``date1_format:`` Possible `custom timestamp` format of ``date1``. +- ``date2_format:`` Possible `custom timestamp` format of ``date2``. + + Examples: +| ${time} = | Subtract Date From Date | 2014-05-28 12:05:52 | 2014-05-28 12:05:10 | +| Should Be Equal | ${time} | ${42} | +| ${time} = | Subtract Date From Date | 2014-05-28 12:05:52 | 2014-05-27 12:05:10 | verbose | +| Should Be Equal | ${time} | 1 day 42 seconds | + + + + + +date +time +result_format=timestamp +exclude_millis=False +date_format=None + +Subtracts time from date and returns the resulting date. + +Arguments: +- ``date:`` Date to subtract time from in one of the supported + `date formats`. +- ``time:`` Time that is subtracted in one of the supported + `time formats`. +- ``result_format:`` Format of the returned date. +- ``exclude_millis:`` When set to any true value, rounds and drops + milliseconds as explained in `millisecond handling`. +- ``date_format:`` Possible `custom timestamp` format of ``date``. + +Examples: +| ${date} = | Subtract Time From Date | 2014-06-04 12:05:03.111 | 7 days | +| Should Be Equal | ${date} | 2014-05-28 12:05:03.111 | +| ${date} = | Subtract Time From Date | 2014-05-28 13:07:06.115 | 01:02:03:004 | +| Should Be Equal | ${date} | 2014-05-28 12:05:03.111 | + + + + + +time1 +time2 +result_format=number +exclude_millis=False + +Subtracts time from another time and returns the resulting time. + +Arguments: +- ``time1:`` Time to subtract another time from in one of + the supported `time formats`. +- ``time2:`` Time to subtract in one of the supported `time formats`. +- ``result_format:`` Format of the returned time. +- ``exclude_millis:`` When set to any true value, rounds and drops + milliseconds as explained in `millisecond handling`. + +Examples: +| ${time} = | Subtract Time From Time | 00:02:30 | 100 | +| Should Be Equal | ${time} | ${50} | +| ${time} = | Subtract Time From Time | ${time} | 1 minute | compact | +| Should Be Equal | ${time} | - 10s | + + + + diff --git a/libspecs/DependencyLibrary_bb1d1ad.libspec b/libspecs/DependencyLibrary_bb1d1ad.libspec new file mode 100644 index 000000000..95e914a1a --- /dev/null +++ b/libspecs/DependencyLibrary_bb1d1ad.libspec @@ -0,0 +1,55 @@ + + + +global +yes +Documentation for library ``DependencyLibrary``. + + +name + + + + + + + +name + + + + + + + +name + + + + + + + +name + + + + + + + +name + + + + + + + +name + + + + + + diff --git a/libspecs/Dialogs.libspec b/libspecs/Dialogs.libspec new file mode 100644 index 000000000..b02219559 --- /dev/null +++ b/libspecs/Dialogs.libspec @@ -0,0 +1,112 @@ + + +3.1 +global +yes +A test library providing dialogs for interacting with users. + +``Dialogs`` is Robot Framework's standard library that provides means +for pausing the test execution and getting input from users. The +dialogs are slightly different depending on whether tests are run on +Python, IronPython or Jython but they provide the same functionality. + +Long lines in the provided messages are wrapped automatically. If you want +to wrap lines manually, you can add newlines using the ``\n`` character +sequence. + +The library has a known limitation that it cannot be used with timeouts +on Python. Support for IronPython was added in Robot Framework 2.9.2. + + +message +default_error= + +Pauses test execution until user sets the keyword status. + +User can press either ``PASS`` or ``FAIL`` button. In the latter case execution +fails and an additional dialog is opened for defining the error message. + +``message`` is the instruction shown in the initial dialog and +``default_error`` is the default value shown in the possible error message +dialog. + + + + + +message +*values + +Pauses test execution and asks user to select a value. + +The selected value is returned. Pressing ``Cancel`` fails the keyword. + +``message`` is the instruction shown in the dialog and ``values`` are +the options given to the user. + +Example: +| ${user} = | Get Selection From User | Select user | user1 | user2 | admin | + + + + + +message +*values + +Pauses test execution and asks user to select multiple values. + +The selected values are returned as a list. Selecting no values is OK +and in that case the returned list is empty. Pressing ``Cancel`` fails +the keyword. + +``message`` is the instruction shown in the dialog and ``values`` are +the options given to the user. + +Example: +| ${users} = | Get Selections From User | Select users | user1 | user2 | admin | + +New in Robot Framework 3.1. + + + + + +message +default_value= +hidden=False + +Pauses test execution and asks user to input a value. + +Value typed by the user, or the possible default value, is returned. +Returning an empty value is fine, but pressing ``Cancel`` fails the keyword. + +``message`` is the instruction shown in the dialog and ``default_value`` is +the possible default value shown in the input field. + +If ``hidden`` is given a true value, the value typed by the user is hidden. +``hidden`` is considered true if it is a non-empty string not equal to +``false``, ``none`` or ``no``, case-insensitively. If it is not a string, +its truth value is got directly using same +[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. + +Example: +| ${username} = | Get Value From User | Input user name | default | +| ${password} = | Get Value From User | Input password | hidden=yes | + +Considering strings ``false`` and ``no`` to be false is new in RF 2.9 +and considering string ``none`` false is new in RF 3.0.3. + + + + + +message=Test execution paused. Press OK to continue. + +Pauses test execution until user clicks ``Ok`` button. + +``message`` is the message shown in the dialog. + + + + diff --git a/libspecs/Easter.libspec b/libspecs/Easter.libspec new file mode 100644 index 000000000..90df83ed3 --- /dev/null +++ b/libspecs/Easter.libspec @@ -0,0 +1,15 @@ + + + +global +yes +Documentation for library ``Easter``. + + +who + + + + + + diff --git a/libspecs/JSONLibrary_17ae429.libspec b/libspecs/JSONLibrary_17ae429.libspec new file mode 100644 index 000000000..ce5576ce9 --- /dev/null +++ b/libspecs/JSONLibrary_17ae429.libspec @@ -0,0 +1,171 @@ + + + +global +yes +JSONLibrary is a robotframework testlibrary for manipulating JSON object (dictionary) + +You can get, add, update and delete your json object using JSONPath. + +== JSONPath Syntax == +| JSONPath | Description | +| $ | the root object/element | +| @ | the current object/element | +| . or [] | child operator | +| .. | recursive descent. JSONPath borrows this syntax from E4X | +| * | wildcard. All objects/element regardless their names. | +| [] | subscript operator. XPath uses it to iterate over element collections and for predicates. In Javascript and JSON it is the native array operator. | +| [,] | Union operator in XPath results in a combination of node sets. JSONPath allows alternate names or array indices as a set. | +| [start:end:step] | array slice operator borrowed from ES4 | +| ?() | applies a filter (script) expression. | +| () | script expression, using the underlying script engine. | + +== *** Known issue *** == +If there is a space in JSONPath expression, the module used by this library will throw an exception. +Therefore, please avoid the space in JSONPath expression if possible. + +*Example:* +| JSONPath | Exception? | +| $.[?(@.id == 1)] | Y | +| $.[?(@.id==1)] | N | +| $.[?(@.name=='test 123')] | N | + +== Example Test Cases == +| *** Settings *** | +| Library | JSONLibrary | +| | +| *** Test Cases *** | +| TestManipulatingJSON | +| ${json_object}= | Load JSON From File | example.json | +| ${object_to_add}= | Create Dictionary | country=Thailand | +| ${json_object}= | Add Object To Json | ${json_object} | $..address | ${object_to_add} | +| ${value}= | Get Value From Json | ${json_object} | $..country | +| Should Be Equal As Strings | ${value[0]} | Thailand | + + +json_object +json_path +object_to_add + +Add an dictionary or list object to json object using json_path + +Arguments: + - json_object: json as a dictionary object. + - json_path: jsonpath expression + - object_to_add: dictionary or list object to add to json_object which is matched by json_path + +Return new json object. + +Examples: +| ${dict}= | Create Dictionary | latitude=13.1234 | longitude=130.1234 | +| ${json}= | Add Object To Json | ${json} | $..address | ${dict} | + + + + + +json_object + +Convert JSON object to string + +Arguments: + - json_object: json as a dictionary object. + +Return new json_string + +Examples: +| ${json_str}= | Convert JSON To String | ${json_obj} | + + + + + +json_string + +Convert String to JSON object + +Arguments: + - json_string: JSON string + +Return new json_object + +Examples: +| ${json_object}= | Convert String to JSON | ${json_string} | + + + + + +json_object +json_path + +Delete Object From JSON using json_path + +Arguments: + - json_object: json as a dictionary object. + - json_path: jsonpath expression + +Return new json_object + +Examples: +| ${json_object}= | Delete Object From Json | ${json} | $..address.streetAddress | + + + + + +json_object +json_path + +Get Value From JSON using JSONPath + +Arguments: + - json_object: json as a dictionary object. + - json_path: jsonpath expression + +Return array of values + +Examples: +| ${values}= | Get Value From Json | ${json} | $..phone_number | + + + + + +file_name + +Load JSON from file. + +Return json as a dictionary object. + +Arguments: + - file_name: absolute json file name + +Return json object (list or dictionary) + +Examples: +| ${result}= | Load Json From File | /path/to/file.json | + + + + + +json_object +json_path +new_value + +Update value to JSON using JSONPath + +Arguments: + - json_object: json as a dictionary object. + - json_path: jsonpath expression + - new_value: value to update + +Return new json_object + +Examples: +| ${json_object}= | Update Value To Json | ${json} | $..address.streetAddress | Ratchadapisek Road | + + + + diff --git a/libspecs/JSONSchemaLibrary_c1d7acb.libspec b/libspecs/JSONSchemaLibrary_c1d7acb.libspec new file mode 100644 index 000000000..1e176c935 --- /dev/null +++ b/libspecs/JSONSchemaLibrary_c1d7acb.libspec @@ -0,0 +1,31 @@ + + + +global +yes +JSONSchemaLibrary is a library to validate JSON against JSON Schema definitions using Robot Framework. + +It uses the jsonschema library for Python: https://github.com/Julian/jsonschema + +*Before running tests* + +Prior to running JSONSchemaLibrary tests, you must make sure that the JSON Schema definitions are available +somewhere on the local filesystem. The default is to look in a subdirectory called `schemas`. + + +schema_location=schemas + +Initialize self. See help(type(self)) for accurate signature. + + + + + +schema_filename +sample + +Validates the sample JSON against the given schema. + + + + diff --git a/libspecs/MockServerLibrary_03fd3d4.libspec b/libspecs/MockServerLibrary_03fd3d4.libspec new file mode 100644 index 000000000..46a38b604 --- /dev/null +++ b/libspecs/MockServerLibrary_03fd3d4.libspec @@ -0,0 +1,258 @@ + + +0.0.6 +global +yes +Robot Framework library for interacting with [http://www.mock-server.com|MockServer] + +The purpose of this library is to provide a keyword-based API +towards MockServer to be used in robot tests. The project is hosted in +[https://github.com/etsi-cti-admin/robotframework-mockserver|GitHub], +and packages are released to PyPI. + += Installation = + +| pip install robotframework-mockserver + += Importing = + +The library does not currently support any import arguments, so use the +following setting to take the library into use: + +| Library | MockServerLibrary | + + +path + +Clears expectations and requests for a specific endpoint from the mockserver. + +`path` is the url of the endpoint for which to clean expectations and requests, e.g. /api + + + + + +method +path +response_code=200 +response_headers=None +body_type=JSON +response_body=None + +Creates a default expectation to be used by mockserver. + +`method` is the HTTP method of the mocked endpoint + +`path` is the url of the mocked endpoint, e.g. /api + +`response_code` is the HTTP status code of the response + +`response_headers` is a dictionary of headers to be added to the response + +`body_type` is the type of the response body, e.g. JSON + +`response_body` is a dictonary of JSON attribute(s) to be added to the response body + + + + + +request +response +count=1 +unlimited=True + +Creates a mock expectation to be used by mockserver. + +`request` is a mock request matcher in a dictionary format. + +`response` is a mock response in a dictionary format. + +`count` is the number of expected requests + +`unlimited` is a boolean value which, if enabled, allows unspecified number of +requests to reply to + + + + + +data + +Creates a mock expectation with defined data to be used by mockserver. + +`data` is a dictionary or JSON string with mock data. Please see +[https://app.swaggerhub.com/apis/jamesdbloom/mock-server_api|MockServer documentation] +for the detailed API reference. + + + + + +request +forward +count=1 +unlimited=True + +Creates a mock expectation with request and forward action to be used by mockserver. + +`request` is a mock request matcher in a dictionary format. + +`forward` is a mock forward in a dictionary format. + +`count` is the number of expected requests + +`unlimited` is a boolean value which, if enabled, allows unspecified number of +requests to reply to + + + + + +path +delay=1 +unit=SECONDS + +Creates a mock http override forward to be used by mockserver. + +Returns the http forward in a dictionary format. + +`path` is the new url where to forward the request + +`delay` is the delay of the forward action + +`unit` is the unit of the delay time (default "SECONDS") + + + + + +method +path +body_type=JSON +body=None +exact=True + +Creates a mock request matcher to be used by mockserver. + +Returns the request matcher in a dictionary format. + +`method` is the HTTP method of the mocked endpoint + +`path` is the url of the mocked endpoint, e.g. /api + +`body_type` is the type of the request body, e.g. JSON + +`body` is a dictionary of the json attribute(s) to match + +`exact` is a boolean value which specifies whether the body should match fully (=true), +or if only specified fields should match (=false) + + + + + +status_code +headers=None +body_type=JSON +body=None + +Creates a mock response to be used by mockserver. + +Returns the response in a dictionary format. + +`status_code` is the HTTP status code of the response + +`headers` is a dictionary of headers to be added to the response + +`body_type` is the type of the response body, e.g. JSON + +`body` is a dictonary of JSON attribute(s) to be added to the response body + + + + + +base_url + +Creates an HTTP session towards mockserver. + +`base_url` is the full url (including port, if applicable) of the mockserver, +e.g. http://localhost:1080. + + + + + + +Dumps logs at the mockserver. + + + + + + +Clears all expectations and received requests from the mockserver. + + + + + +path + +Retrieves expectations from the mockserver. + +`path` is the url of the endpoint for which to retrieve expectations, e.g. /api + + + + + +path + +Retrieves requests from the mockserver + +`path` is the url of the endpoint for which to retrieve requests, e.g. /api + + + + + +request +count=1 +exact=True + +Verifies that the mockserver has received a specific request. + +`request` is a request expectation created using the keyword `Create Mock Request Matcher` + +`count` is the minimum expected number of requests + +`exact` specifies whether the expected count should match the actual received count + + + + + +data + +Verifies a mock expectation with specified data. + +`data` is a dictionary or JSON string with mock data. Please see +[https://app.swaggerhub.com/apis/jamesdbloom/mock-server_api|MockServer documentation] +for the detailed API reference. + + + + + +requests + +Verifies that the mockserver has received a specific ordered request sequence. + +`requests` is a list of request expectations created using the keyword +`Create Mock Request Matcher` + + + + diff --git a/libspecs/OperatingSystem.libspec b/libspecs/OperatingSystem.libspec new file mode 100644 index 000000000..2ec003cd7 --- /dev/null +++ b/libspecs/OperatingSystem.libspec @@ -0,0 +1,1138 @@ + + +3.1 +global +yes +A test library providing keywords for OS related tasks. + +``OperatingSystem`` is Robot Framework's standard library that +enables various operating system related tasks to be performed in +the system where Robot Framework is running. It can, among other +things, execute commands (e.g. `Run`), create and remove files and +directories (e.g. `Create File`, `Remove Directory`), check +whether files or directories exists or contain something +(e.g. `File Should Exist`, `Directory Should Be Empty`) and +manipulate environment variables (e.g. `Set Environment Variable`). + +== Table of contents == + +- `Path separators` +- `Pattern matching` +- `Tilde expansion` +- `Boolean arguments` +- `Example` +- `Shortcuts` +- `Keywords` + += Path separators = + +Because Robot Framework uses the backslash (``\``) as an escape character +in the test data, using a literal backslash requires duplicating it like +in ``c:\\path\\file.txt``. That can be inconvenient especially with +longer Windows paths, and thus all keywords expecting paths as arguments +convert forward slashes to backslashes automatically on Windows. This also +means that paths like ``${CURDIR}/path/file.txt`` are operating system +independent. + +Notice that the automatic path separator conversion does not work if +the path is only a part of an argument like with `Run` and `Start Process` +keywords. In these cases the built-in variable ``${/}`` that contains +``\`` or ``/``, depending on the operating system, can be used instead. + += Pattern matching = + +Some keywords allow their arguments to be specified as +[http://en.wikipedia.org/wiki/Glob_(programming)|glob patterns] where: + +| ``*`` | matches any string, even an empty string | +| ``?`` | matches any single character | +| ``[chars]`` | matches one character in the bracket | +| ``[!chars]`` | matches one character not in the bracket | +| ``[a-z]`` | matches one character from the range in the bracket | +| ``[!a-z]`` | matches one character not from the range in the bracket | + +Unless otherwise noted, matching is case-insensitive on +case-insensitive operating systems such as Windows. + +Starting from Robot Framework 2.9.1, globbing is not done if the given path +matches an existing file even if it would contain a glob pattern. + += Tilde expansion = + +Paths beginning with ``~`` or ``~username`` are expanded to the current or +specified user's home directory, respectively. The resulting path is +operating system dependent, but typically e.g. ``~/robot`` is expanded to +``C:\Users\<user>\robot`` on Windows and ``/home/<user>/robot`` on +Unixes. + +The ``~username`` form does not work on Jython. + += Boolean arguments = + +Some keywords accept arguments that are handled as Boolean values true or +false. If such an argument is given as a string, it is considered false if +it is an empty string or equal to ``FALSE``, ``NONE``, ``NO``, ``OFF`` or +``0``, case-insensitively. Other strings are considered true regardless +their value, and other argument types are tested using the same +[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. + +True examples: +| `Remove Directory` | ${path} | recursive=True | # Strings are generally true. | +| `Remove Directory` | ${path} | recursive=yes | # Same as the above. | +| `Remove Directory` | ${path} | recursive=${TRUE} | # Python ``True`` is true. | +| `Remove Directory` | ${path} | recursive=${42} | # Numbers other than 0 are true. | + +False examples: +| `Remove Directory` | ${path} | recursive=False | # String ``false`` is false. | +| `Remove Directory` | ${path} | recursive=no | # Also string ``no`` is false. | +| `Remove Directory` | ${path} | recursive=${EMPTY} | # Empty string is false. | +| `Remove Directory` | ${path} | recursive=${FALSE} | # Python ``False`` is false. | + +Considering string ``NONE`` false is new in Robot Framework 3.0.3 and +considering also ``OFF`` and ``0`` false is new in Robot Framework 3.1. + += Example = + +| =Setting= | =Value= | +| Library | OperatingSystem | + +| =Variable= | =Value= | +| ${PATH} | ${CURDIR}/example.txt | + +| =Test Case= | =Action= | =Argument= | =Argument= | +| Example | Create File | ${PATH} | Some text | +| | File Should Exist | ${PATH} | | +| | Copy File | ${PATH} | ~/file.txt | +| | ${output} = | Run | ${TEMPDIR}${/}script.py arg | + + +name +*values +**config + +Appends given ``values`` to environment variable ``name``. + +If the environment variable already exists, values are added after it, +and otherwise a new environment variable is created. + +Values are, by default, joined together using the operating system +path separator (``;`` on Windows, ``:`` elsewhere). This can be changed +by giving a separator after the values like ``separator=value``. No +other configuration parameters are accepted. + +Examples (assuming ``NAME`` and ``NAME2`` do not exist initially): +| Append To Environment Variable | NAME | first | | +| Should Be Equal | %{NAME} | first | | +| Append To Environment Variable | NAME | second | third | +| Should Be Equal | %{NAME} | first${:}second${:}third | +| Append To Environment Variable | NAME2 | first | separator=- | +| Should Be Equal | %{NAME2} | first | | +| Append To Environment Variable | NAME2 | second | separator=- | +| Should Be Equal | %{NAME2} | first-second | + + + + + +path +content +encoding=UTF-8 + +Appends the given content to the specified file. + +If the file does not exists, this keyword works exactly the same +way as `Create File`. + + + + + +source +destination + +Copies the source directory into the destination. + +If the destination exists, the source is copied under it. Otherwise +the destination directory and the possible missing intermediate +directories are created. + + + + + +source +destination + +Copies the source file into the destination. + +Source must be a path to an existing file or a glob pattern (see +`Pattern matching`) that matches exactly one file. How the +destination is interpreted is explained below. + +1) If the destination is an existing file, the source file is copied +over it. + +2) If the destination is an existing directory, the source file is +copied into it. A possible file with the same name as the source is +overwritten. + +3) If the destination does not exist and it ends with a path +separator (``/`` or ``\``), it is considered a directory. That +directory is created and a source file copied into it. +Possible missing intermediate directories are also created. + +4) If the destination does not exist and it does not end with a path +separator, it is considered a file. If the path to the file does not +exist, it is created. + +The resulting destination path is returned since Robot Framework 2.9.2. + +See also `Copy Files`, `Move File`, and `Move Files`. + + + + + +*sources_and_destination + +Copies specified files to the target directory. + +Source files can be given as exact paths and as glob patterns (see +`Pattern matching`). At least one source must be given, but it is +not an error if it is a pattern that does not match anything. + +Last argument must be the destination directory. If the destination +does not exist, it will be created. + +Examples: +| Copy Files | ${dir}/file1.txt | ${dir}/file2.txt | ${dir2} | +| Copy Files | ${dir}/file-*.txt | ${dir2} | | + +See also `Copy File`, `Move File`, and `Move Files`. + + + + + +path +pattern=None + +Wrapper for `Count Items In Directory` returning only directory count. + + + + + +path +pattern=None + +Wrapper for `Count Items In Directory` returning only file count. + + + + + +path +pattern=None + +Returns and logs the number of all items in the given directory. + +The argument ``pattern`` has the same semantics as with `List Directory` +keyword. The count is returned as an integer, so it must be checked e.g. +with the built-in keyword `Should Be Equal As Integers`. + + + + + +path +content + +Creates a binary file with the given content. + +If content is given as a Unicode string, it is first converted to bytes +character by character. All characters with ordinal below 256 can be +used and are converted to bytes with same values. Using characters +with higher ordinal is an error. + +Byte strings, and possible other types, are written to the file as is. + +If the directory for the file does not exist, it is created, along +with missing intermediate directories. + +Examples: +| Create Binary File | ${dir}/example.png | ${image content} | +| Create Binary File | ${path} | \x01\x00\xe4\x00 | + +Use `Create File` if you want to create a text file using a certain +encoding. `File Should Not Exist` can be used to avoid overwriting +existing files. + + + + + +path + +Creates the specified directory. + +Also possible intermediate directories are created. Passes if the +directory already exists, but fails if the path exists and is not +a directory. + + + + + +path +content= +encoding=UTF-8 + +Creates a file with the given content and encoding. + +If the directory for the file does not exist, it is created, along +with missing intermediate directories. + +See `Get File` for more information about possible ``encoding`` values, +including special values ``SYSTEM`` and ``CONSOLE``. + +Examples: +| Create File | ${dir}/example.txt | Hello, world! | | +| Create File | ${path} | Hyv\xe4 esimerkki | Latin-1 | +| Create File | /tmp/foo.txt | ${content} | SYSTEM | + +Use `Append To File` if you want to append to an existing file +and `Create Binary File` if you need to write bytes without encoding. +`File Should Not Exist` can be used to avoid overwriting existing +files. + +The support for ``SYSTEM`` and ``CONSOLE`` encodings is new in Robot +Framework 3.0. + + + + + +path +msg=None + +Fails unless the specified directory is empty. + +The default error message can be overridden with the ``msg`` argument. + + + + + +path +msg=None + +Fails unless the given path points to an existing directory. + +The path can be given as an exact path or as a glob pattern. +The pattern matching syntax is explained in `introduction`. +The default error message can be overridden with the ``msg`` argument. + + + + + +path +msg=None + +Fails if the specified directory is empty. + +The default error message can be overridden with the ``msg`` argument. + + + + + +path +msg=None + +Fails if the given path points to an existing file. + +The path can be given as an exact path or as a glob pattern. +The pattern matching syntax is explained in `introduction`. +The default error message can be overridden with the ``msg`` argument. + + + + + +path + +Deletes all the content from the given directory. + +Deletes both files and sub-directories, but the specified directory +itself if not removed. Use `Remove Directory` if you want to remove +the whole directory. + + + + + +name +msg=None + +Fails if the specified environment variable is not set. + +The default error message can be overridden with the ``msg`` argument. + + + + + +name +msg=None + +Fails if the specified environment variable is set. + +The default error message can be overridden with the ``msg`` argument. + + + + + +path +msg=None + +Fails unless the specified file is empty. + +The default error message can be overridden with the ``msg`` argument. + + + + + +path +msg=None + +Fails unless the given ``path`` points to an existing file. + +The path can be given as an exact path or as a glob pattern. +The pattern matching syntax is explained in `introduction`. +The default error message can be overridden with the ``msg`` argument. + + + + + +path +msg=None + +Fails if the specified directory is empty. + +The default error message can be overridden with the ``msg`` argument. + + + + + +path +msg=None + +Fails if the given path points to an existing file. + +The path can be given as an exact path or as a glob pattern. +The pattern matching syntax is explained in `introduction`. +The default error message can be overridden with the ``msg`` argument. + + + + + +path + +Returns the contents of a specified file. + +This keyword reads the specified file and returns the contents as is. +See also `Get File`. + + + + + +name +default=None + +Returns the value of an environment variable with the given name. + +If no such environment variable is set, returns the default value, if +given. Otherwise fails the test case. + +Returned variables are automatically decoded to Unicode using +the system encoding. + +Note that you can also access environment variables directly using +the variable syntax ``%{ENV_VAR_NAME}``. + + + + + + +Returns currently available environment variables as a dictionary. + +Both keys and values are decoded to Unicode using the system encoding. +Altering the returned dictionary has no effect on the actual environment +variables. + + + + + +path +encoding=UTF-8 +encoding_errors=strict + +Returns the contents of a specified file. + +This keyword reads the specified file and returns the contents. +Line breaks in content are converted to platform independent form. +See also `Get Binary File`. + +``encoding`` defines the encoding of the file. The default value is +``UTF-8``, which means that UTF-8 and ASCII encoded files are read +correctly. In addition to the encodings supported by the underlying +Python implementation, the following special encoding values can be +used: + +- ``SYSTEM``: Use the default system encoding. +- ``CONSOLE``: Use the console encoding. Outside Windows this is same + as the system encoding. + +``encoding_errors`` argument controls what to do if decoding some bytes +fails. All values accepted by ``decode`` method in Python are valid, but +in practice the following values are most useful: + +- ``strict``: Fail if characters cannot be decoded (default). +- ``ignore``: Ignore characters that cannot be decoded. +- ``replace``: Replace characters that cannot be decoded with + a replacement character. + +Support for ``SYSTEM`` and ``CONSOLE`` encodings in Robot Framework 3.0. + + + + + +path + +Returns and logs file size as an integer in bytes. + + + + + +path +format=timestamp + +Returns the last modification time of a file or directory. + +How time is returned is determined based on the given ``format`` +string as follows. Note that all checks are case-insensitive. +Returned time is also automatically logged. + +1) If ``format`` contains the word ``epoch``, the time is returned + in seconds after the UNIX epoch. The return value is always + an integer. + +2) If ``format`` contains any of the words ``year``, ``month``, + ``day``, ``hour``, ``min`` or ``sec``, only the selected parts are + returned. The order of the returned parts is always the one + in the previous sentence and the order of the words in + ``format`` is not significant. The parts are returned as + zero-padded strings (e.g. May -> ``05``). + +3) Otherwise, and by default, the time is returned as a + timestamp string in the format ``2006-02-24 15:08:31``. + +Examples (when the modified time of ``${CURDIR}`` is +2006-03-29 15:06:21): +| ${time} = | Get Modified Time | ${CURDIR} | +| ${secs} = | Get Modified Time | ${CURDIR} | epoch | +| ${year} = | Get Modified Time | ${CURDIR} | return year | +| ${y} | ${d} = | Get Modified Time | ${CURDIR} | year,day | +| @{time} = | Get Modified Time | ${CURDIR} | year,month,day,hour,min,sec | +=> +- ${time} = '2006-03-29 15:06:21' +- ${secs} = 1143637581 +- ${year} = '2006' +- ${y} = '2006' & ${d} = '29' +- @{time} = ['2006', '03', '29', '15', '06', '21'] + + + + + +path +pattern +encoding=UTF-8 +encoding_errors=strict + +Returns the lines of the specified file that match the ``pattern``. + +This keyword reads a file from the file system using the defined +``path``, ``encoding`` and ``encoding_errors`` similarly as `Get File`. +A difference is that only the lines that match the given ``pattern`` are +returned. Lines are returned as a single string catenated back together +with newlines and the number of matched lines is automatically logged. +Possible trailing newline is never returned. + +A line matches if it contains the ``pattern`` anywhere in it and +it *does not need to match the pattern fully*. The pattern +matching syntax is explained in `introduction`, and in this +case matching is case-sensitive. + +Examples: +| ${errors} = | Grep File | /var/log/myapp.log | ERROR | +| ${ret} = | Grep File | ${CURDIR}/file.txt | [Ww]ildc??d ex*ple | + +If more complex pattern matching is needed, it is possible to use +`Get File` in combination with String library keywords like `Get +Lines Matching Regexp`. + + + + + +base +*parts + +Joins the given path part(s) to the given base path. + +The path separator (``/`` or ``\``) is inserted when needed and +the possible absolute paths handled as expected. The resulted +path is also normalized. + +Examples: +| ${path} = | Join Path | my | path | +| ${p2} = | Join Path | my/ | path/ | +| ${p3} = | Join Path | my | path | my | file.txt | +| ${p4} = | Join Path | my | /path | +| ${p5} = | Join Path | /my/path/ | .. | path2 | +=> +- ${path} = 'my/path' +- ${p2} = 'my/path' +- ${p3} = 'my/path/my/file.txt' +- ${p4} = '/path' +- ${p5} = '/my/path2' + + + + + +base +*paths + +Joins given paths with base and returns resulted paths. + +See `Join Path` for more information. + +Examples: +| @{p1} = | Join Paths | base | example | other | | +| @{p2} = | Join Paths | /my/base | /example | other | | +| @{p3} = | Join Paths | my/base | example/path/ | other | one/more | +=> +- @{p1} = ['base/example', 'base/other'] +- @{p2} = ['/example', '/my/base/other'] +- @{p3} = ['my/base/example/path', 'my/base/other', 'my/base/one/more'] + + + + + +path +pattern=None +absolute=False + +Wrapper for `List Directory` that returns only directories. + + + + + +path +pattern=None +absolute=False + +Returns and logs items in a directory, optionally filtered with ``pattern``. + +File and directory names are returned in case-sensitive alphabetical +order, e.g. ``['A Name', 'Second', 'a lower case name', 'one more']``. +Implicit directories ``.`` and ``..`` are not returned. The returned +items are automatically logged. + +File and directory names are returned relative to the given path +(e.g. ``'file.txt'``) by default. If you want them be returned in +absolute format (e.g. ``'/home/robot/file.txt'``), give the ``absolute`` +argument a true value (see `Boolean arguments`). + +If ``pattern`` is given, only items matching it are returned. The pattern +matching syntax is explained in `introduction`, and in this case +matching is case-sensitive. + +Examples (using also other `List Directory` variants): +| @{items} = | List Directory | ${TEMPDIR} | +| @{files} = | List Files In Directory | /tmp | *.txt | absolute | +| ${count} = | Count Files In Directory | ${CURDIR} | ??? | + + + + + +path +pattern=None +absolute=False + +Wrapper for `List Directory` that returns only files. + + + + + +level=INFO + +Logs all environment variables using the given log level. + +Environment variables are also returned the same way as with +`Get Environment Variables` keyword. + + + + + +path +encoding=UTF-8 +encoding_errors=strict + +Wrapper for `Get File` that also logs the returned file. + +The file is logged with the INFO level. If you want something else, +just use `Get File` and the built-in keyword `Log` with the desired +level. + +See `Get File` for more information about ``encoding`` and +``encoding_errors`` arguments. + + + + + +source +destination + +Moves the source directory into a destination. + +Uses `Copy Directory` keyword internally, and ``source`` and +``destination`` arguments have exactly same semantics as with +that keyword. + + + + + +source +destination + +Moves the source file into the destination. + +Arguments have exactly same semantics as with `Copy File` keyword. +Destination file path is returned since Robot Framework 2.9.2. + +If the source and destination are on the same filesystem, rename +operation is used. Otherwise file is copied to the destination +filesystem and then removed from the original filesystem. + +See also `Move Files`, `Copy File`, and `Copy Files`. + + + + + +*sources_and_destination + +Moves specified files to the target directory. + +Arguments have exactly same semantics as with `Copy Files` keyword. + +See also `Move File`, `Copy File`, and `Copy Files`. + + + + + +path +case_normalize=False + +Normalizes the given path. + +- Collapses redundant separators and up-level references. +- Converts ``/`` to ``\`` on Windows. +- Replaces initial ``~`` or ``~user`` by that user's home directory. + The latter is not supported on Jython. +- If ``case_normalize`` is given a true value (see `Boolean arguments`) + on Windows, converts the path to all lowercase. New in Robot + Framework 3.1. + +Examples: +| ${path1} = | Normalize Path | abc/ | +| ${path2} = | Normalize Path | abc/../def | +| ${path3} = | Normalize Path | abc/./def//ghi | +| ${path4} = | Normalize Path | ~robot/stuff | +=> +- ${path1} = 'abc' +- ${path2} = 'def' +- ${path3} = 'abc/def/ghi' +- ${path4} = '/home/robot/stuff' + +On Windows result would use ``\`` instead of ``/`` and home directory +would be different. + + + + + +path +recursive=False + +Removes the directory pointed to by the given ``path``. + +If the second argument ``recursive`` is given a true value (see +`Boolean arguments`), the directory is removed recursively. Otherwise +removing fails if the directory is not empty. + +If the directory pointed to by the ``path`` does not exist, the keyword +passes, but it fails, if the ``path`` points to a file. + + + + + +*names + +Deletes the specified environment variable. + +Does nothing if the environment variable is not set. + +It is possible to remove multiple variables by passing them to this +keyword as separate arguments. + + + + + +path + +Removes a file with the given path. + +Passes if the file does not exist, but fails if the path does +not point to a regular file (e.g. it points to a directory). + +The path can be given as an exact path or as a glob pattern. +The pattern matching syntax is explained in `introduction`. +If the path is a pattern, all files matching it are removed. + + + + + +*paths + +Uses `Remove File` to remove multiple files one-by-one. + +Example: +| Remove Files | ${TEMPDIR}${/}foo.txt | ${TEMPDIR}${/}bar.txt | ${TEMPDIR}${/}zap.txt | + + + + + +command + +Runs the given command in the system and returns the output. + +The execution status of the command *is not checked* by this +keyword, and it must be done separately based on the returned +output. If the execution return code is needed, either `Run +And Return RC` or `Run And Return RC And Output` can be used. + +The standard error stream is automatically redirected to the standard +output stream by adding ``2>&1`` after the executed command. This +automatic redirection is done only when the executed command does not +contain additional output redirections. You can thus freely forward +the standard error somewhere else, for example, like +``my_command 2>stderr.txt``. + +The returned output contains everything written into the standard +output or error streams by the command (unless either of them +is redirected explicitly). Many commands add an extra newline +(``\n``) after the output to make it easier to read in the +console. To ease processing the returned output, this possible +trailing newline is stripped by this keyword. + +Examples: +| ${output} = | Run | ls -lhF /tmp | +| Log | ${output} | +| ${result} = | Run | ${CURDIR}${/}tester.py arg1 arg2 | +| Should Not Contain | ${result} | FAIL | +| ${stdout} = | Run | /opt/script.sh 2>/tmp/stderr.txt | +| Should Be Equal | ${stdout} | TEST PASSED | +| File Should Be Empty | /tmp/stderr.txt | + +*TIP:* `Run Process` keyword provided by the +[http://robotframework.org/robotframework/latest/libraries/Process.html| +Process library] supports better process configuration and is generally +recommended as a replacement for this keyword. + + + + + +command + +Runs the given command in the system and returns the return code. + +The return code (RC) is returned as a positive integer in +range from 0 to 255 as returned by the executed command. On +some operating systems (notable Windows) original return codes +can be something else, but this keyword always maps them to +the 0-255 range. Since the RC is an integer, it must be +checked e.g. with the keyword `Should Be Equal As Integers` +instead of `Should Be Equal` (both are built-in keywords). + +Examples: +| ${rc} = | Run and Return RC | ${CURDIR}${/}script.py arg | +| Should Be Equal As Integers | ${rc} | 0 | +| ${rc} = | Run and Return RC | /path/to/example.rb arg1 arg2 | +| Should Be True | 0 < ${rc} < 42 | + +See `Run` and `Run And Return RC And Output` if you need to get the +output of the executed command. + +*TIP:* `Run Process` keyword provided by the +[http://robotframework.org/robotframework/latest/libraries/Process.html| +Process library] supports better process configuration and is generally +recommended as a replacement for this keyword. + + + + + +command + +Runs the given command in the system and returns the RC and output. + +The return code (RC) is returned similarly as with `Run And Return RC` +and the output similarly as with `Run`. + +Examples: +| ${rc} | ${output} = | Run and Return RC and Output | ${CURDIR}${/}mytool | +| Should Be Equal As Integers | ${rc} | 0 | +| Should Not Contain | ${output} | FAIL | +| ${rc} | ${stdout} = | Run and Return RC and Output | /opt/script.sh 2>/tmp/stderr.txt | +| Should Be True | ${rc} > 42 | +| Should Be Equal | ${stdout} | TEST PASSED | +| File Should Be Empty | /tmp/stderr.txt | + +*TIP:* `Run Process` keyword provided by the +[http://robotframework.org/robotframework/latest/libraries/Process.html| +Process library] supports better process configuration and is generally +recommended as a replacement for this keyword. + + + + + +name +value + +Sets an environment variable to a specified value. + +Values are converted to strings automatically. Set variables are +automatically encoded using the system encoding. + + + + + +path +mtime + +Sets the file modification and access times. + +Changes the modification and access times of the given file to +the value determined by ``mtime``. The time can be given in +different formats described below. Note that all checks +involving strings are case-insensitive. Modified time can only +be set to regular files. + +1) If ``mtime`` is a number, or a string that can be converted + to a number, it is interpreted as seconds since the UNIX + epoch (1970-01-01 00:00:00 UTC). This documentation was + originally written about 1177654467 seconds after the epoch. + +2) If ``mtime`` is a timestamp, that time will be used. Valid + timestamp formats are ``YYYY-MM-DD hh:mm:ss`` and + ``YYYYMMDD hhmmss``. + +3) If ``mtime`` is equal to ``NOW``, the current local time is used. + +4) If ``mtime`` is equal to ``UTC``, the current time in + [http://en.wikipedia.org/wiki/Coordinated_Universal_Time|UTC] + is used. + +5) If ``mtime`` is in the format like ``NOW - 1 day`` or ``UTC + 1 + hour 30 min``, the current local/UTC time plus/minus the time + specified with the time string is used. The time string format + is described in an appendix of Robot Framework User Guide. + +Examples: +| Set Modified Time | /path/file | 1177654467 | # Time given as epoch seconds | +| Set Modified Time | /path/file | 2007-04-27 9:14:27 | # Time given as a timestamp | +| Set Modified Time | /path/file | NOW | # The local time of execution | +| Set Modified Time | /path/file | NOW - 1 day | # 1 day subtracted from the local time | +| Set Modified Time | /path/file | UTC + 1h 2min 3s | # 1h 2min 3s added to the UTC time | + + + + + +path +msg=None + +Fails unless the given path (file or directory) exists. + +The path can be given as an exact path or as a glob pattern. +The pattern matching syntax is explained in `introduction`. +The default error message can be overridden with the ``msg`` argument. + + + + + +path +msg=None + +Fails if the given path (file or directory) exists. + +The path can be given as an exact path or as a glob pattern. +The pattern matching syntax is explained in `introduction`. +The default error message can be overridden with the ``msg`` argument. + + + + + +path + +Splits the extension from the given path. + +The given path is first normalized (e.g. possible trailing +path separators removed, special directories ``..`` and ``.`` +removed). The base path and extension are returned as separate +components so that the dot used as an extension separator is +removed. If the path contains no extension, an empty string is +returned for it. Possible leading and trailing dots in the file +name are never considered to be extension separators. + +Examples: +| ${path} | ${ext} = | Split Extension | file.extension | +| ${p2} | ${e2} = | Split Extension | path/file.ext | +| ${p3} | ${e3} = | Split Extension | path/file | +| ${p4} | ${e4} = | Split Extension | p1/../p2/file.ext | +| ${p5} | ${e5} = | Split Extension | path/.file.ext | +| ${p6} | ${e6} = | Split Extension | path/.file | +=> +- ${path} = 'file' & ${ext} = 'extension' +- ${p2} = 'path/file' & ${e2} = 'ext' +- ${p3} = 'path/file' & ${e3} = '' +- ${p4} = 'p2/file' & ${e4} = 'ext' +- ${p5} = 'path/.file' & ${e5} = 'ext' +- ${p6} = 'path/.file' & ${e6} = '' + + + + + +path + +Splits the given path from the last path separator (``/`` or ``\``). + +The given path is first normalized (e.g. a possible trailing +path separator is removed, special directories ``..`` and ``.`` +removed). The parts that are split are returned as separate +components. + +Examples: +| ${path1} | ${dir} = | Split Path | abc/def | +| ${path2} | ${file} = | Split Path | abc/def/ghi.txt | +| ${path3} | ${d2} = | Split Path | abc/../def/ghi/ | +=> +- ${path1} = 'abc' & ${dir} = 'def' +- ${path2} = 'abc/def' & ${file} = 'ghi.txt' +- ${path3} = 'def' & ${d2} = 'ghi' + + + + + +path + +Emulates the UNIX touch command. + +Creates a file, if it does not exist. Otherwise changes its access and +modification times to the current time. + +Fails if used with the directories or the parent directory of the given +file does not exist. + + + + + +path +timeout=1 minute + +Waits until the given file or directory is created. + +The path can be given as an exact path or as a glob pattern. +The pattern matching syntax is explained in `introduction`. +If the path is a pattern, the keyword returns when an item matching +it is created. + +The optional ``timeout`` can be used to control the maximum time of +waiting. The timeout is given as a timeout string, e.g. in a format +``15 seconds``, ``1min 10s`` or just ``10``. The time string format is +described in an appendix of Robot Framework User Guide. + +If the timeout is negative, the keyword is never timed-out. The keyword +returns immediately, if the path already exists. + + + + + +path +timeout=1 minute + +Waits until the given file or directory is removed. + +The path can be given as an exact path or as a glob pattern. +The pattern matching syntax is explained in `introduction`. +If the path is a pattern, the keyword waits until all matching +items are removed. + +The optional ``timeout`` can be used to control the maximum time of +waiting. The timeout is given as a timeout string, e.g. in a format +``15 seconds``, ``1min 10s`` or just ``10``. The time string format is +described in an appendix of Robot Framework User Guide. + +If the timeout is negative, the keyword is never timed-out. The keyword +returns immediately, if the path does not exist in the first place. + + + + diff --git a/libspecs/Process.libspec b/libspecs/Process.libspec new file mode 100644 index 000000000..ad9fe354c --- /dev/null +++ b/libspecs/Process.libspec @@ -0,0 +1,637 @@ + + +3.1 +global +yes +Robot Framework test library for running processes. + +This library utilizes Python's +[http://docs.python.org/library/subprocess.html|subprocess] +module and its +[http://docs.python.org/library/subprocess.html#popen-constructor|Popen] +class. + +The library has following main usages: + +- Running processes in system and waiting for their completion using + `Run Process` keyword. +- Starting processes on background using `Start Process`. +- Waiting started process to complete using `Wait For Process` or + stopping them with `Terminate Process` or `Terminate All Processes`. + +== Table of contents == + +- `Specifying command and arguments` +- `Process configuration` +- `Active process` +- `Result object` +- `Boolean arguments` +- `Example` +- `Shortcuts` +- `Keywords` + += Specifying command and arguments = + +Both `Run Process` and `Start Process` accept the command to execute and +all arguments passed to the command as separate arguments. This makes usage +convenient and also allows these keywords to automatically escape possible +spaces and other special characters in commands and arguments. Notice that +if a command accepts options that themselves accept values, these options +and their values must be given as separate arguments. + +When `running processes in shell`, it is also possible to give the whole +command to execute as a single string. The command can then contain +multiple commands to be run together. When using this approach, the caller +is responsible on escaping. + +Examples: +| `Run Process` | ${tools}${/}prog.py | argument | second arg with spaces | +| `Run Process` | java | -jar | ${jars}${/}example.jar | --option | value | +| `Run Process` | prog.py "one arg" && tool.sh | shell=yes | cwd=${tools} | + +Possible non-string arguments are converted to strings automatically. + += Process configuration = + +`Run Process` and `Start Process` keywords can be configured using +optional ``**configuration`` keyword arguments. Configuration arguments +must be given after other arguments passed to these keywords and must +use syntax like ``name=value``. Available configuration arguments are +listed below and discussed further in sections afterwards. + +| = Name = | = Explanation = | +| shell | Specifies whether to run the command in shell or not. | +| cwd | Specifies the working directory. | +| env | Specifies environment variables given to the process. | +| env:<name> | Overrides the named environment variable(s) only. | +| stdout | Path of a file where to write standard output. | +| stderr | Path of a file where to write standard error. | +| output_encoding | Encoding to use when reading command outputs. | +| alias | Alias given to the process. | + +Note that because ``**configuration`` is passed using ``name=value`` syntax, +possible equal signs in other arguments passed to `Run Process` and +`Start Process` must be escaped with a backslash like ``name\=value``. +See `Run Process` for an example. + +== Running processes in shell == + +The ``shell`` argument specifies whether to run the process in a shell or +not. By default shell is not used, which means that shell specific commands, +like ``copy`` and ``dir`` on Windows, are not available. You can, however, +run shell scripts and batch files without using a shell. + +Giving the ``shell`` argument any non-false value, such as ``shell=True``, +changes the program to be executed in a shell. It allows using the shell +capabilities, but can also make the process invocation operating system +dependent. Having a shell between the actually started process and this +library can also interfere communication with the process such as stopping +it and reading its outputs. Because of these problems, it is recommended +to use the shell only when absolutely necessary. + +When using a shell it is possible to give the whole command to execute +as a single string. See `Specifying command and arguments` section for +examples and more details in general. + +== Current working directory == + +By default the child process will be executed in the same directory +as the parent process, the process running tests, is executed. This +can be changed by giving an alternative location using the ``cwd`` argument. +Forward slashes in the given path are automatically converted to +backslashes on Windows. + +`Standard output and error streams`, when redirected to files, +are also relative to the current working directory possibly set using +the ``cwd`` argument. + +Example: +| `Run Process` | prog.exe | cwd=${ROOT}/directory | stdout=stdout.txt | + +== Environment variables == + +By default the child process will get a copy of the parent process's +environment variables. The ``env`` argument can be used to give the +child a custom environment as a Python dictionary. If there is a need +to specify only certain environment variable, it is possible to use the +``env:<name>=<value>`` format to set or override only that named variables. +It is also possible to use these two approaches together. + +Examples: +| `Run Process` | program | env=${environ} | +| `Run Process` | program | env:http_proxy=10.144.1.10:8080 | env:PATH=%{PATH}${:}${PROGDIR} | +| `Run Process` | program | env=${environ} | env:EXTRA=value | + +== Standard output and error streams == + +By default processes are run so that their standard output and standard +error streams are kept in the memory. This works fine normally, +but if there is a lot of output, the output buffers may get full and +the program can hang. Additionally on Jython, everything written to +these in-memory buffers can be lost if the process is terminated. + +To avoid the above mentioned problems, it is possible to use ``stdout`` +and ``stderr`` arguments to specify files on the file system where to +redirect the outputs. This can also be useful if other processes or +other keywords need to read or manipulate the outputs somehow. + +Given ``stdout`` and ``stderr`` paths are relative to the `current working +directory`. Forward slashes in the given paths are automatically converted +to backslashes on Windows. + +As a special feature, it is possible to redirect the standard error to +the standard output by using ``stderr=STDOUT``. + +Regardless are outputs redirected to files or not, they are accessible +through the `result object` returned when the process ends. Commands are +expected to write outputs using the console encoding, but `output encoding` +can be configured using the ``output_encoding`` argument if needed. + +Examples: +| ${result} = | `Run Process` | program | stdout=${TEMPDIR}/stdout.txt | stderr=${TEMPDIR}/stderr.txt | +| `Log Many` | stdout: ${result.stdout} | stderr: ${result.stderr} | +| ${result} = | `Run Process` | program | stderr=STDOUT | +| `Log` | all output: ${result.stdout} | + +Note that the created output files are not automatically removed after +the test run. The user is responsible to remove them if needed. + +== Output encoding == + +Executed commands are, by default, expected to write outputs to the +`standard output and error streams` using the encoding used by the +system console. If the command uses some other encoding, that can be +configured using the ``output_encoding`` argument. This is especially +useful on Windows where the console uses a different encoding than rest +of the system, and many commands use the general system encoding instead +of the console encoding. + +The value used with the ``output_encoding`` argument must be a valid +encoding and must match the encoding actually used by the command. As a +convenience, it is possible to use strings ``CONSOLE`` and ``SYSTEM`` +to specify that the console or system encoding is used, respectively. +If produced outputs use different encoding then configured, values got +through the `result object` will be invalid. + +Examples: +| `Start Process` | program | output_encoding=UTF-8 | +| `Run Process` | program | stdout=${path} | output_encoding=SYSTEM | + +The support to set output encoding is new in Robot Framework 3.0. + +== Alias == + +A custom name given to the process that can be used when selecting the +`active process`. + +Examples: +| `Start Process` | program | alias=example | +| `Run Process` | python | -c | print 'hello' | alias=hello | + += Active process = + +The test library keeps record which of the started processes is currently +active. By default it is latest process started with `Start Process`, +but `Switch Process` can be used to select a different one. Using +`Run Process` does not affect the active process. + +The keywords that operate on started processes will use the active process +by default, but it is possible to explicitly select a different process +using the ``handle`` argument. The handle can be the identifier returned by +`Start Process` or an ``alias`` explicitly given to `Start Process` or +`Run Process`. + += Result object = + +`Run Process`, `Wait For Process` and `Terminate Process` keywords return a +result object that contains information about the process execution as its +attributes. The same result object, or some of its attributes, can also +be get using `Get Process Result` keyword. Attributes available in the +object are documented in the table below. + +| = Attribute = | = Explanation = | +| rc | Return code of the process as an integer. | +| stdout | Contents of the standard output stream. | +| stderr | Contents of the standard error stream. | +| stdout_path | Path where stdout was redirected or ``None`` if not redirected. | +| stderr_path | Path where stderr was redirected or ``None`` if not redirected. | + +Example: +| ${result} = | `Run Process` | program | +| `Should Be Equal As Integers` | ${result.rc} | 0 | +| `Should Match` | ${result.stdout} | Some t?xt* | +| `Should Be Empty` | ${result.stderr} | | +| ${stdout} = | `Get File` | ${result.stdout_path} | +| `Should Be Equal` | ${stdout} | ${result.stdout} | +| `File Should Be Empty` | ${result.stderr_path} | | + += Boolean arguments = + +Some keywords accept arguments that are handled as Boolean values true or +false. If such an argument is given as a string, it is considered false if +it is an empty string or equal to ``FALSE``, ``NONE``, ``NO``, ``OFF`` or +``0``, case-insensitively. Other strings are considered true regardless +their value, and other argument types are tested using the same +[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. + +True examples: +| `Terminate Process` | kill=True | # Strings are generally true. | +| `Terminate Process` | kill=yes | # Same as the above. | +| `Terminate Process` | kill=${TRUE} | # Python ``True`` is true. | +| `Terminate Process` | kill=${42} | # Numbers other than 0 are true. | + +False examples: +| `Terminate Process` | kill=False | # String ``false`` is false. | +| `Terminate Process` | kill=no | # Also string ``no`` is false. | +| `Terminate Process` | kill=${EMPTY} | # Empty string is false. | +| `Terminate Process` | kill=${FALSE} | # Python ``False`` is false. | + +Considering string ``NONE`` false is new in Robot Framework 3.0.3 and +considering also ``OFF`` and ``0`` false is new in Robot Framework 3.1. + += Example = + +| ***** Settings ***** +| Library Process +| Suite Teardown `Terminate All Processes` kill=True +| +| ***** Test Cases ***** +| Example +| `Start Process` program arg1 arg2 alias=First +| ${handle} = `Start Process` command.sh arg | command2.sh shell=True cwd=/path +| ${result} = `Run Process` ${CURDIR}/script.py +| `Should Not Contain` ${result.stdout} FAIL +| `Terminate Process` ${handle} +| ${result} = `Wait For Process` First +| `Should Be Equal As Integers` ${result.rc} 0 + + +handle=None + +Returns the process ID (pid) of the process as an integer. + +If ``handle`` is not given, uses the current `active process`. + +Notice that the pid is not the same as the handle returned by +`Start Process` that is used internally by this library. + + + + + +handle=None + +Return the underlying ``subprocess.Popen`` object. + +If ``handle`` is not given, uses the current `active process`. + + + + + +handle=None +rc=False +stdout=False +stderr=False +stdout_path=False +stderr_path=False + +Returns the specified `result object` or some of its attributes. + +The given ``handle`` specifies the process whose results should be +returned. If no ``handle`` is given, results of the current `active +process` are returned. In either case, the process must have been +finishes before this keyword can be used. In practice this means +that processes started with `Start Process` must be finished either +with `Wait For Process` or `Terminate Process` before using this +keyword. + +If no other arguments than the optional ``handle`` are given, a whole +`result object` is returned. If one or more of the other arguments +are given any true value, only the specified attributes of the +`result object` are returned. These attributes are always returned +in the same order as arguments are specified in the keyword signature. +See `Boolean arguments` section for more details about true and false +values. + +Examples: +| Run Process | python | -c | print 'Hello, world!' | alias=myproc | +| # Get result object | | | +| ${result} = | Get Process Result | myproc | +| Should Be Equal | ${result.rc} | ${0} | +| Should Be Equal | ${result.stdout} | Hello, world! | +| Should Be Empty | ${result.stderr} | | +| # Get one attribute | | | +| ${stdout} = | Get Process Result | myproc | stdout=true | +| Should Be Equal | ${stdout} | Hello, world! | +| # Multiple attributes | | | +| ${stdout} | ${stderr} = | Get Process Result | myproc | stdout=yes | stderr=yes | +| Should Be Equal | ${stdout} | Hello, world! | +| Should Be Empty | ${stderr} | | + +Although getting results of a previously executed process can be handy +in general, the main use case for this keyword is returning results +over the remote library interface. The remote interface does not +support returning the whole result object, but individual attributes +can be returned without problems. + + + + + +handle=None + +Checks is the process running or not. + +If ``handle`` is not given, uses the current `active process`. + +Returns ``True`` if the process is still running and ``False`` otherwise. + + + + + +*args + +Joins arguments into one command line string. + +In resulting command line string arguments are delimited with a space, +arguments containing spaces are surrounded with quotes, and possible +quotes are escaped with a backslash. + +If this keyword is given only one argument and that is a list like +object, then the values of that list are joined instead. + +Example: +| ${cmd} = | Join Command Line | --option | value with spaces | +| Should Be Equal | ${cmd} | --option "value with spaces" | + +New in Robot Framework 2.9.2. + + + + + +handle=None +error_message=Process is not running. + +Verifies that the process is running. + +If ``handle`` is not given, uses the current `active process`. + +Fails if the process has stopped. + + + + + +handle=None +error_message=Process is running. + +Verifies that the process is not running. + +If ``handle`` is not given, uses the current `active process`. + +Fails if the process is still running. + + + + + +command +*arguments +**configuration + +Runs a process and waits for it to complete. + +``command`` and ``*arguments`` specify the command to execute and +arguments passed to it. See `Specifying command and arguments` for +more details. + +``**configuration`` contains additional configuration related to +starting processes and waiting for them to finish. See `Process +configuration` for more details about configuration related to starting +processes. Configuration related to waiting for processes consists of +``timeout`` and ``on_timeout`` arguments that have same semantics as +with `Wait For Process` keyword. By default there is no timeout, and +if timeout is defined the default action on timeout is ``terminate``. + +Returns a `result object` containing information about the execution. + +Note that possible equal signs in ``*arguments`` must be escaped +with a backslash (e.g. ``name\=value``) to avoid them to be passed in +as ``**configuration``. + +Examples: +| ${result} = | Run Process | python | -c | print 'Hello, world!' | +| Should Be Equal | ${result.stdout} | Hello, world! | +| ${result} = | Run Process | ${command} | stderr=STDOUT | timeout=10s | +| ${result} = | Run Process | ${command} | timeout=1min | on_timeout=continue | +| ${result} = | Run Process | java -Dname\=value Example | shell=True | cwd=${EXAMPLE} | + +This keyword does not change the `active process`. + + + + + +signal +handle=None +group=False + +Sends the given ``signal`` to the specified process. + +If ``handle`` is not given, uses the current `active process`. + +Signal can be specified either as an integer as a signal name. In the +latter case it is possible to give the name both with or without ``SIG`` +prefix, but names are case-sensitive. For example, all the examples +below send signal ``INT (2)``: + +| Send Signal To Process | 2 | | # Send to active process | +| Send Signal To Process | INT | | | +| Send Signal To Process | SIGINT | myproc | # Send to named process | + +This keyword is only supported on Unix-like machines, not on Windows. +What signals are supported depends on the system. For a list of +existing signals on your system, see the Unix man pages related to +signal handling (typically ``man signal`` or ``man 7 signal``). + +By default sends the signal only to the parent process, not to possible +child processes started by it. Notice that when `running processes in +shell`, the shell is the parent process and it depends on the system +does the shell propagate the signal to the actual started process. + +To send the signal to the whole process group, ``group`` argument can +be set to any true value (see `Boolean arguments`). This is not +supported by Jython, however. + + + + + +args +escaping=False + +Splits command line string into a list of arguments. + +String is split from spaces, but argument surrounded in quotes may +contain spaces in them. If ``escaping`` is given a true value, then +backslash is treated as an escape character. It can escape unquoted +spaces, quotes inside quotes, and so on, but it also requires using +double backslashes when using Windows paths. + +Examples: +| @{cmd} = | Split Command Line | --option "value with spaces" | +| Should Be True | $cmd == ['--option', 'value with spaces'] | + +New in Robot Framework 2.9.2. + + + + + +command +*arguments +**configuration + +Starts a new process on background. + +See `Specifying command and arguments` and `Process configuration` +for more information about the arguments, and `Run Process` keyword +for related examples. + +Makes the started process new `active process`. Returns an identifier +that can be used as a handle to activate the started process if needed. + +Processes are started so that they create a new process group. This +allows sending signals to and terminating also possible child +processes. This is not supported on Jython. + + + + + +handle + +Makes the specified process the current `active process`. + +The handle can be an identifier returned by `Start Process` or +the ``alias`` given to it explicitly. + +Example: +| Start Process | prog1 | alias=process1 | +| Start Process | prog2 | alias=process2 | +| # currently active process is process2 | +| Switch Process | process1 | +| # now active process is process1 | + + + + + +kill=False + +Terminates all still running processes started by this library. + +This keyword can be used in suite teardown or elsewhere to make +sure that all processes are stopped, + +By default tries to terminate processes gracefully, but can be +configured to forcefully kill them immediately. See `Terminate Process` +that this keyword uses internally for more details. + + + + + +handle=None +kill=False + +Stops the process gracefully or forcefully. + +If ``handle`` is not given, uses the current `active process`. + +By default first tries to stop the process gracefully. If the process +does not stop in 30 seconds, or ``kill`` argument is given a true value, +(see `Boolean arguments`) kills the process forcefully. Stops also all +the child processes of the originally started process. + +Waits for the process to stop after terminating it. Returns a `result +object` containing information about the execution similarly as `Wait +For Process`. + +On Unix-like machines graceful termination is done using ``TERM (15)`` +signal and killing using ``KILL (9)``. Use `Send Signal To Process` +instead if you just want to send either of these signals without +waiting for the process to stop. + +On Windows graceful termination is done using ``CTRL_BREAK_EVENT`` +event and killing using Win32 API function ``TerminateProcess()``. + +Examples: +| ${result} = | Terminate Process | | +| Should Be Equal As Integers | ${result.rc} | -15 | # On Unixes | +| Terminate Process | myproc | kill=true | + +Limitations: +- Graceful termination is not supported on Windows when using Jython. + Process is killed instead. +- Stopping the whole process group is not supported when using Jython. +- On Windows forceful kill only stops the main process, not possible + child processes. + + + + + +handle=None +timeout=None +on_timeout=continue + +Waits for the process to complete or to reach the given timeout. + +The process to wait for must have been started earlier with +`Start Process`. If ``handle`` is not given, uses the current +`active process`. + +``timeout`` defines the maximum time to wait for the process. It can be +given in +[http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#time-format| +various time formats] supported by Robot Framework, for example, ``42``, +``42 s``, or ``1 minute 30 seconds``. + +``on_timeout`` defines what to do if the timeout occurs. Possible values +and corresponding actions are explained in the table below. Notice +that reaching the timeout never fails the test. + +| = Value = | = Action = | +| continue | The process is left running (default). | +| terminate | The process is gracefully terminated. | +| kill | The process is forcefully stopped. | + +See `Terminate Process` keyword for more details how processes are +terminated and killed. + +If the process ends before the timeout or it is terminated or killed, +this keyword returns a `result object` containing information about +the execution. If the process is left running, Python ``None`` is +returned instead. + +Examples: +| # Process ends cleanly | | | +| ${result} = | Wait For Process | example | +| Process Should Be Stopped | example | | +| Should Be Equal As Integers | ${result.rc} | 0 | +| # Process does not end | | | +| ${result} = | Wait For Process | timeout=42 secs | +| Process Should Be Running | | | +| Should Be Equal | ${result} | ${NONE} | +| # Kill non-ending process | | | +| ${result} = | Wait For Process | timeout=1min 30s | on_timeout=kill | +| Process Should Be Stopped | | | +| Should Be Equal As Integers | ${result.rc} | -9 | + + + + diff --git a/libspecs/REST_04a9321.libspec b/libspecs/REST_04a9321.libspec new file mode 100644 index 000000000..c4e9d3a37 --- /dev/null +++ b/libspecs/REST_04a9321.libspec @@ -0,0 +1,999 @@ + + + +test suite +yes +RESTinstance is revolutionary and peaceful HTTP JSON API test library. + +It guides you to write more stable API tests relying on constraints (e.g. "people's email addresses must be valid"), rather than on values having the nature of change (e.g "the first created user's email is expected to stay foo@bar.com"). + +It bases on observations that we are more often concerned whether and which properties changed, when they should (not) had as this signals a bug, and less often what the actual values were/are. This also helps in tackling tests failing only because the test environment data was (not) reset. + +These resolutions in mind, it walks the path with you to contract-driven testing, from automatically generated JSON Schema data models to having formal OpenAPI service specs, as the both are essentially of the same origin. Both are also supported by major forces (Google, Microsoft, IBM et al. founded OpenAPI Initiative), and are language-agnostic which goes as well with Robot Framework. + +Contracts represent a common language within software teams, recognising our differing talents as designers, developers and test experts; or perhaps your new business companion wants to integrate to the system as well, but there is still some noise in signal - yet you don't feel very content providing them the source code, let alone explaining technical details, like which JSON properties are must in the response body, over the phone. + +Rest your mind. OSS got your back. + + += Tutorial = + +There is a [https://github.com/asyrjasalo/RESTinstance/blob/master/examples/README.rst|step-by-step tutorial] in the making on using the library. + +For RESTful APIs, this library is intended to be used so that a test suite +is dedicated per endpoint. The test suite is divided into test cases so that +the differing operations (implemented by the endpoint via HTTP methods) +are tested with separate test cases. + + += The state = + +The library represents its own state as JSON itself, as an array of objects. +Together these objects are commonly called instances. + +A single instance always has these three properties: + +- Request data as a JSON object +- Response data as a JSON object +- JSON Schema for the above two properties + +For each request-response, as soon as the response has been gotten +(and the request did not timeout), a new instance is created with these +properties. + +Request and response schemas are inferred if they are not already +expected by using expectation keywords. All the validations the library +implements are based on JSON Schema [http://json-schema.org/draft-07/json-schema-validation.html|draft-07] by default +but also [http://json-schema.org/draft-06/json-schema-validation.html|draft-06] and +[http://json-schema.org/draft-04/json-schema-validation.html|draft-04] can be configured. + += The scope = + +All the assertion keywords, `Output` and `Output Schema` are effective +in the scope of the last instance. + +The scope of the library itself is test suite, meaning the instances +are persisted in memory until the execution of the test suite is finished, +regardless whether successfully or not. + +The last request and response is easiest seen with `Output`. +The output is written to terminal by default, as this is usually faster +for debugging purposes than finding the right keyword in ``log.html``. + +All instances can be output to a file with `RESTinstances` which can +be useful for additional logging. + + +url=None +ssl_verify=True +accept=application/json, */* +content_type=application/json +user_agent=RESTinstance/1.0.0rc4 +proxies={} +schema={} +spec={} +instances=[] + +Initialize self. See help(type(self)) for accurate signature. + + + + + +field +*enum +**validations + +*Asserts the field as JSON array.* + +The field consists of parts separated by spaces, the parts being +object property names or array indices starting from 0, and the root +being the instance created by the last request (see `Output` for it). + +For asserting deeply nested properties or multiple objects at once, +[http://goessner.net/articles/JsonPath|JSONPath] can be used with +[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], +the root being the response body. + +*Enum* + +The allowed values for the property as zero or more arguments. +If none given, the value of the property is not asserted. + +*Validations* + +The JSON Schema validation keywords +[https://json-schema.org/understanding-json-schema/reference/array.html|for array] +can be used. Validations are optional but update the schema of +the property (more accurate) if given. +`Output Schema` can be used for the current schema of the field. + +The keyword will fail if any of the given validations fail. +Given validations can be skipped altogether by adding ``skip=true``. +When skipped, the schema is updated but the validations are not ran. +Skip is intented mainly for debugging the updated schema before aborting. + +*Examples* +| `GET` | /users?_limit=10 | | | | # https://jsonplaceholder.typicode.com/users | +| `Array` | response body | | | +| `Array` | $ | | | | # same as above | +| `Array` | $ | minItems=1 | maxItems=10 | uniqueItems=true | + +assertions + + + + +field +value=None +**validations + +*Asserts the field as JSON boolean.* + +The field consists of parts separated by spaces, the parts being +object property names or array indices starting from 0, and the root +being the instance created by the last request (see `Output` for it). + +For asserting deeply nested properties or multiple objects at once, +[http://goessner.net/articles/JsonPath|JSONPath] can be used with +[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], the root being the response body. + +*Value* + +If given, the property value is validated in addition to the type. + +*Validations* + +The JSON Schema validation keywords +[https://json-schema.org/understanding-json-schema/reference/generic.html|common for all types] +can be used. Validations are optional but update the schema of +the property (more accurate) if given. +`Output Schema` can be used for the current schema of the field. + +The keyword will fail if any of the given validations fail. +Given validations can be skipped altogether by adding ``skip=true``. +When skipped, the schema is updated but the validations are not ran. +Skip is intented mainly for debugging the updated schema before aborting. + +*Examples* + +| `PUT` | /users/1 | { "verified_email": true } | | | # https://jsonplaceholder.typicode.com/users/1 | +| `Boolean` | response body verified_email | | | | # value is optional | +| `Boolean` | response body verified_email | true | +| `Boolean` | response body verified_email | ${True} | | | # same as above | +| `Boolean` | $.verified_email | true | | | # JSONPath alternative | +| `Boolean` | $.verified_email | true | enum=[1, "1"] | skip=true | # would pass | + +assertions + + + + + +*Resets the expectations for both request and response.* + +Using this keyword resets any expectations set with keywords +`Expect Response`, `Expect Response Body` and `Expect Request`. + +expectations + + + + +endpoint +timeout=None +allow_redirects=None +validate=True +headers=None + +*Sends a DELETE request to the endpoint.* + +The endpoint is joined with the URL given on library init (if any). +If endpoint starts with ``http://`` or ``https://``, it is assumed +an URL outside the tested API (which may affect logging). + +*Options* + +``timeout``: A number of seconds to wait for the response before failing the keyword. + +``allow_redirects``: If false, do not follow any redirects. + +``validate``: If false, skips any request and response validations set +by expectation keywords and a spec given on library init. + +``headers``: Headers as a JSON object to add or override for the request. + +*Examples* + +| `DELETE` | /users/6 | +| `DELETE` | http://localhost:8273/state | validate=false | + +http + + + + +schema +merge=False + +*Sets the schema to validate the request properties* + +Expectations are effective for following requests in the test suite, +or until they are reset or updated by using expectation keywords again. +On the test suite level (suite setup), they are best used for expecting +the endpoint wide properties that are common regardless of the tested +HTTP method, and on the test case level (test setup) to merge in +the HTTP method specific properties. + +`Expect Request` is intented to be used with tests that have some of the +request properties, e.g. body or query parameters, randomized ("fuzzing") +for validating that the sent values are within the expected scope. + +If the keyword is used, following HTTP keywords will fail when +their request properties are not valid against the expected schema. + +If the keyword is not used, a new schema is generated for each following +request for its ``body`` and ``query`` properties. Use `Output Schema` to output it and use it as an input to this keyword. + +*Options* + +``merge``: Merges the new schema with the current instead of replacing it + +*Examples* + +| `Expect Request` | ${CURDIR}/valid_payload.json | | # See `Output Schema` | +| `Expect Request` | { "body": { "required": ["id"] } } | merge=true | + +expectations + + + + +schema +merge=False + +*Sets the schema to validate the response properties.* + +Expectations are effective for following requests in the test suite, +or until they are reset or updated by using expectation keywords again. +On the test suite level (suite setup), they are best used for expecting +the endpoint wide properties that are common regardless of the tested +HTTP method, and on the test case level (test setup) to merge in +the HTTP method specific properties. + +`Expect Response` is intented to be used on the suite level to validate +the endpoint properties that hold regardless of the HTTP method, +such as body property types, responded headers, authentication, etc. + +If the keyword is used, following HTTP keywords will fail when +their response properties are not valid against the expected schema. + +If the keyword is not used, a new schema is inferred for each following +response for its ``body``. Use `Output Schema` to output it and use it +as an input to this keyword. + +*Options* + +``merge``: Merges the new schema with the current instead of replacing it + +*Examples* + +| `Expect Response` | ${CURDIR}/endpoint_data_model.json | | # See `Output Schema` | +| `Expect Response` | { "headers": { "required": ["Via"] } } | merge=true | +| `Expect Response` | { "seconds": { "maximum": "1.0" } } | merge=true | + +expectations + + + + +schema + +*Updates the schema to validate the response body properties.* + +Expectations are effective for following requests in the test suite, +or until they are reset or updated by using expectation keywords again. +On the test suite level (suite setup), they are best used for expecting +the endpoint wide properties that are common regardless of the tested +HTTP method, and on the test case level (test setup) to merge in +the HTTP method specific properties. + +`Expect Response Body` is intented to be used on the test case level, +to validate that the response body has the expected properties for +the particular HTTP method. Note that if something about response body +has been already expected with `Expected Response`, using this keyword +updates the expectations in terms of given response body properties. + +If the keyword is used, following HTTP keywords will fail if +their response body is not valid against the expected schema. + +If the keyword is not used, and no schema is already expected with +`Expect Response` for response ``body``, a new schema is inferred for it. +Use `Output Schema` to output it and use it as an input to this keyword. + +*Tips* + +Regardless whether the HTTP method returns one (an object) or many +(an array of objects), the validation of the object property types and features can usually be done to some extent on the test suite level +with `Expect Response`, then extended on the test case level using this +keyword. This helps in ensuring that the data model is unified between +the different HTTP methods. + +*Examples* + +| `Expect Response Body` | ${CURDIR}/user_properties.json | # See `Output Schema` | +| `Expect Response Body` | { "required": ["id", "token"] } | # Only these are required from this method | +| `Expect Response Body` | { "additionalProperties": false } | # Nothing extra should be responded by this method | + +expectations + + + + +endpoint +query=None +timeout=None +allow_redirects=None +validate=True +headers=None + +*Sends a GET request to the endpoint.* + +The endpoint is joined with the URL given on library init (if any). +If endpoint starts with ``http://`` or ``https://``, it is assumed +an URL outside the tested API (which may affect logging). + +*Options* + +``query``: Request query parameters as a JSON object or a dictionary. +Alternatively, query parameters can be given as part of endpoint as well. + +``timeout``: A number of seconds to wait for the response before failing the keyword. + +``allow_redirects``: If false, do not follow any redirects. + +``validate``: If false, skips any request and response validations set +by expectation keywords and a spec given on library init. + +``headers``: Headers as a JSON object to add or override for the request. + +*Examples* + +| `GET` | /users/1 | +| `GET` | /users | timeout=2.5 | +| `GET` | /users?_limit=2 | +| `GET` | /users | _limit=2 | +| `GET` | /users | { "_limit": "2" } | +| `GET` | https://jsonplaceholder.typicode.com/users | headers={ "Authentication": "" } | + +http + + + + +endpoint +timeout=None +allow_redirects=None +validate=True +headers=None + +*Sends a HEAD request to the endpoint.* + +The endpoint is joined with the URL given on library init (if any). +If endpoint starts with ``http://`` or ``https://``, it is assumed +an URL outside the tested API (which may affect logging). + +*Options* + +``timeout``: A number of seconds to wait for the response before failing the keyword. + +``allow_redirects``: If true, follow all redirects. +In contrary to other methods, no HEAD redirects are followed by default. + +``validate``: If false, skips any request and response validations set +by expectation keywords and a spec given on library init. + +``headers``: The headers to add or override for this request. + +*Examples* + +| `HEAD` | /users/1 | +| `HEAD` | /users/1 | timeout=0.5 | + +http + + + + +what + +*Converts the input to JSON and returns it.* + +Any of the following is accepted: + +- The path to JSON file +- Any scalar that can be interpreted as JSON +- A dictionary or a list + +*Examples* + +| ${payload} | `Input` | ${CURDIR}/payload.json | + +| ${object} | `Input` | { "name": "Julie Langford", "username": "jlangfor" } | +| ${object} | `Input` | ${dict} | + +| ${array} | `Input` | ["name", "username"] | +| ${array} | `Input` | ${list} | + +| ${boolean} | `Input` | true | +| ${boolean} | `Input` | ${True} | + +| ${number} | `Input` | 2.0 | +| ${number} | `Input` | ${2.0} | + +| ${string} | `Input` | Quotes are optional for strings | + +I/O + + + + +field +*enum +**validations + +*Asserts the field as JSON integer.* + +The field consists of parts separated by spaces, the parts being +object property names or array indices starting from 0, and the root +being the instance created by the last request (see `Output` for it). + +For asserting deeply nested properties or multiple objects at once, +[http://goessner.net/articles/JsonPath|JSONPath] can be used with +[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], +the root being the response body. + +*Enum* + +The allowed values for the property as zero or more arguments. +If none given, the value of the property is not asserted. + +*Validations* + +The JSON Schema validation keywords +[https://json-schema.org/understanding-json-schema/reference/numeric.html#integer|for numeric types] +can be used. Validations are optional but update the schema of +the property (more accurate) if given. +`Output Schema` can be used for the current schema of the field. + +The keyword will fail if any of the given validations fail. +Given validations can be skipped altogether by adding ``skip=true``. +When skipped, the schema is updated but the validations are not ran. +Skip is intented mainly for debugging the updated schema before aborting. + +*Examples* + +| `GET` | /users/1 | | # https://jsonplaceholder.typicode.com/users/1 | +| `Integer` | response body id | | # value is optional | +| `Integer` | response body id | 1 | +| `Integer` | response body id | ${1} | # same as above | +| `Integer` | $.id | 1 | # JSONPath alternative | + +| `GET` | /users?_limit=10 | | | | # https://jsonplaceholder.typicode.com/users | +| `Integer` | response body 0 id | 1 | | | +| `Integer` | $[0].id | 1 | | | # same as above | +| `Integer` | $[*].id | | minimum=1 | maximum=10 | + +assertions + + + + +field + +*Asserts the field does not exist.* + +The field consists of parts separated by spaces, the parts being +object property names or array indices starting from 0, and the root +being the instance created by the last request (see `Output` for it). + +For asserting deeply nested properties or multiple objects at once, +[http://goessner.net/articles/JsonPath|JSONPath] can be used with +[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], +the root being the response body. + +*Examples* + +| `GET` | /users/1 | # https://jsonplaceholder.typicode.com/users/1 | +| `Missing` | response body password | +| `Missing` | $.password | +| `Missing` | $..geo.elevation | # response body address geo elevation | + +| `GET` | /users | # https://jsonplaceholder.typicode.com/users | +| `Missing` | response body 0 password | +| `Missing` | $[*].password | +| `Missing` | $[*]..geo.elevation | + +assertions + + + + +field +**validations + +*Asserts the field as JSON null.* + +The field consists of parts separated by spaces, the parts being +object property names or array indices starting from 0, and the root +being the instance created by the last request (see `Output` for it). + +For asserting deeply nested properties or multiple objects at once, +[http://goessner.net/articles/JsonPath|JSONPath] can be used with +[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], +the root being the response body. + +*Validations* + +The JSON Schema validation keywords +[https://json-schema.org/understanding-json-schema/reference/generic.html|common for all types] +can be used. Validations are optional but update the schema of +the property (more accurate) if given. +`Output Schema` can be used for the current schema of the field. + +The keyword will fail if any of the given validations fail. +Given validations can be skipped altogether by adding ``skip=true``. +When skipped, the schema is updated but the validations are not ran. +Skip is intented mainly for debugging the updated schema before aborting. + +*Examples* + +| `PUT` | /users/1 | { "deactivated_at": null } | # https://jsonplaceholder.typicode.com/users/1 | +| `Null` | response body deactivated_at | | +| `Null` | $.deactivated_at | | # JSONPath alternative | + +assertions + + + + +field +*enum +**validations + +*Asserts the field as JSON number.* + +The field consists of parts separated by spaces, the parts being +object property names or array indices starting from 0, and the root +being the instance created by the last request (see `Output` for it). + +For asserting deeply nested properties or multiple objects at once, +[http://goessner.net/articles/JsonPath|JSONPath] can be used with +[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], +the root being the response body. + +*Enum* + +The allowed values for the property as zero or more arguments. +If none given, the value of the property is not asserted. + +*Validations* + +The JSON Schema validation keywords +[https://json-schema.org/understanding-json-schema/reference/numeric.html#number|for numeric types] can be used. Validations are optional but update the schema of +the property (more accurate) if given. +`Output Schema` can be used for the current schema of the field. + +The keyword will fail if any of the given validations fail. +Given validations can be skipped altogether by adding ``skip=true``. +When skipped, the schema is updated but the validations are not ran. +Skip is intented mainly for debugging the updated schema before aborting. + +*Examples* + +| `PUT` | /users/1 | { "allocation": 95.0 } | # https://jsonplaceholder.typicode.com/users/1 | +| `Number` | response body allocation | | # value is optional | +| `Number` | response body allocation | 95.0 | +| `Number` | response body allocation | ${95.0} | # same as above | +| `Number` | $.allocation | 95.0 | # JSONPath alternative | + +| `GET` | /users?_limit=10 | | | | # https://jsonplaceholder.typicode.com/users | +| `Number` | $[0].id | 1 | | | # integers are also numbers | +| `Number` | $[*].id | | minimum=1 | maximum=10 | + +assertions + + + + +field +*enum +**validations + +*Asserts the field as JSON object.* + +The field consists of parts separated by spaces, the parts being +object property names or array indices starting from 0, and the root +being the instance created by the last request (see `Output` for it). + +For asserting deeply nested properties or multiple objects at once, +[http://goessner.net/articles/JsonPath|JSONPath] can be used with +[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], the root being the response body. + +*Enum* + +The allowed values for the property as zero or more arguments. +If none given, the value of the property is not asserted. + +*Validations* + +The JSON Schema validation keywords +[https://json-schema.org/understanding-json-schema/reference/object.html|for object] +can be used. Validations are optional but update the schema of +the property (more accurate) if given. +`Output Schema` can be used for the current schema of the field. + +The keyword will fail if any of the given validations fail. +Given validations can be skipped altogether by adding ``skip=true``. +When skipped, the schema is updated but the validations are not ran. +Skip is intented mainly for debugging the updated schema before aborting. + +*Examples* + +| `GET` | /users/1 | | # https://jsonplaceholder.typicode.com/users/1 | +| `Object` | response body | | +| `Object` | response body | required=["id", "name"] | # can have other properties | + +| `GET` | /users/1 | | # https://jsonplaceholder.typicode.com/users/1 | +| `Object` | $.address.geo | required=["lat", "lng"] | +| `Object` | $..geo | additionalProperties=false | # cannot have other properties | + +assertions + + + + +endpoint +timeout=None +allow_redirects=None +validate=True +headers=None + +*Sends an OPTIONS request to the endpoint.* + +The endpoint is joined with the URL given on library init (if any). +If endpoint starts with ``http://`` or ``https://``, it is assumed +an URL outside the tested API (which may affect logging). + +*Options* + +``timeout``: A number of seconds to wait for the response before failing the keyword. + +``allow_redirects``: If false, do not follow any redirects. + +``validate``: If false, skips any request and response validations set +by expectation keywords and a spec given on library init. + +``headers``: Headers as a JSON object to add or override for the request. + +*Examples* + +| `OPTIONS` | /users/1 | +| `OPTIONS` | /users/1 | allow_redirects=false | + +http + + + + +what= +file_path=None +append=False +sort_keys=False + +*Outputs JSON to terminal or a file.* + +By default, the last request and response are output to terminal. + +The output can be limited further by: + +- The property of the last instance, e.g. ``request`` or ``response`` +- Any nested property that exists, similarly as for assertion keywords + +Also variables and values that can be converted to JSON are accepted, +in which case those are output as JSON instead. + +*Options* + +``file_path``: The JSON is written to a file instead of terminal. +The file is created if it does not exist. + +``append``: If true, the JSON is appended to the given file +instead of truncating it first. + +``sort_keys``: If true, the JSON is sorted alphabetically by +property names before it is output. + +*Examples* + +| `Output` | response | # only the response is output | +| `Output` | response body | # only the response body is output | +| `Output` | $.email | # only the response body property is output | +| `Output` | $..geo | # only the nested response body property is output | + +| `Output` | request | # only the request is output | +| `Output` | request headers | # only the request headers are output | +| `Output` | request headers Authentication | # only this header is output | + +| `Output` | response body | ${CURDIR}/response_body.json | | # write the response body to a file | +| `Output` | response seconds | ${CURDIR}/response_delays.log | append=true | # keep track of response delays in a file | + +I/O + + + + +what= +file_path=None +append=False +sort_keys=False + +*Outputs JSON Schema to terminal or a file.* + +By default, the schema is output for the last request and response. + +The output can be limited further by: + +- The property of the last instance, e.g. ``request`` or ``response`` +- Any nested property that exists, similarly as for assertion keywords + +Also variables and values that can be converted to JSON are accepted, +in which case the schema is generated for those instead. + +*Options* + +``file_path``: The JSON Schema is written to a file instead of terminal. +The file is created if it does not exist. + +``append``: If true, the JSON Schema is appended to the given file +instead of truncating it first. + +``sort_keys``: If true, the JSON Schema is sorted alphabetically by +property names before it is output. + +*Examples* + +| `Output Schema` | response | ${CURDIR}/response_schema.json | # Write a file to use with `Expect Response` | +| `Output Schema` | response body | ${CURDIR}/response_body_schema.json | # Write a file to use with `Expect Response Body` | + +| `Output Schema` | $.email | # only the schema for one response body property | +| `Output Schema` | $..geo | # only the schema for the nested response body property | + +I/O + + + + +endpoint +body=None +timeout=None +allow_redirects=None +validate=True +headers=None + +*Sends a PATCH request to the endpoint.* + +The endpoint is joined with the URL given on library init (if any). +If endpoint starts with ``http://`` or ``https://``, it is assumed +an URL outside the tested API (which may affect logging). + +*Options* + +``body``: Request body parameters as a JSON object, file or a dictionary. + +``timeout``: A number of seconds to wait for the response before failing the keyword. + +``allow_redirects``: If false, do not follow any redirects. + +``validate``: If false, skips any request and response validations set +by expectation keywords and a spec given on library init. + +``headers``: Headers as a JSON object to add or override for the request. + +*Examples* + +| `PATCH` | /users/4 | { "name": "Clementine Bauch" } | +| `PATCH` | /users/4 | ${dict} | + +http + + + + +endpoint +body=None +timeout=None +allow_redirects=None +validate=True +headers=None + +*Sends a POST request to the endpoint.* + +The endpoint is joined with the URL given on library init (if any). +If endpoint starts with ``http://`` or ``https://``, it is assumed +an URL outside the tested API (which may affect logging). + +*Options* + +``body``: Request body parameters as a JSON object, file or a dictionary. + +``timeout``: A number of seconds to wait for the response before failing the keyword. + +``allow_redirects``: If false, do not follow any redirects. + +``validate``: If false, skips any request and response validations set +by expectation keywords and a spec given on library init. + +``headers``: Headers as a JSON object to add or override for the request. + +*Examples* + +| `POST` | /users | { "id": 11, "name": "Gil Alexander" } | +| `POST` | /users | ${CURDIR}/new_user.json | + +http + + + + +endpoint +body=None +timeout=None +allow_redirects=None +validate=True +headers=None + +*Sends a PUT request to the endpoint.* + +The endpoint is joined with the URL given on library init (if any). +If endpoint starts with ``http://`` or ``https://``, it is assumed +an URL outside the tested API (which may affect logging). + +*Options* + +``body``: Request body parameters as a JSON object, file or a dictionary. + +``timeout``: A number of seconds to wait for the response before failing the keyword. + +``allow_redirects``: If false, do not follow any redirects. + +``validate``: If false, skips any request and response validations set +by expectation keywords and a spec given on library init. + +``headers``: Headers as a JSON object to add or override for the request. + +*Examples* + +| `PUT` | /users/2 | { "name": "Julie Langford", "username": "jlangfor" } | +| `PUT` | /users/2 | ${dict} | + +http + + + + +file_path=None +sort_keys=False + +*Writes the instances as JSON to a file.* + +The instances are written to file as a JSON array of JSON objects, +each object representing a single instance, and having three properties: + +- the request +- the response +- the schema for both, which have been updated according to the tests + +The file is created if it does not exist, otherwise it is truncated. + +*Options* + +``sort_keys``: If true, the instances are sorted alphabetically by +property names. + +*Examples* + +| `Rest Instances` | ${CURDIR}/log.json | + +I/O + + + + +cert + +*Sets the client cert for the requests.* + +The cert is either a path to a .pem file, or a JSON array, or a list +having the cert path and the key path. + +Values ``null`` and ``${None}`` can be used for clearing the cert. + +*Examples* + +| `Set Client Cert` | ${CURDIR}/client.pem | +| `Set Client Cert` | ["${CURDIR}/client.cert", "${CURDIR}/client.key"] | +| `Set Client Cert` | ${paths_list} | + +settings + + + + +headers + +*Sets new request headers or updates the existing.* + +``headers``: The headers to add or update as a JSON object or a +dictionary. + +*Examples* + +| `Set Headers` | { "authorization": "Basic QWxhZGRpbjpPcGVuU2VzYW1"} | +| `Set Headers` | { "Accept-Encoding": "identity"} | +| `Set Headers` | ${auth_dict} | + +settings + + + + +field +*enum +**validations + +*Asserts the field as JSON string.* + +The field consists of parts separated by spaces, the parts being +object property names or array indices starting from 0, and the root +being the instance created by the last request (see `Output` for it). + +For asserting deeply nested properties or multiple objects at once, +[http://goessner.net/articles/JsonPath|JSONPath] can be used with +[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], the root being the response body. + +*Enum* + +The allowed values for the property as zero or more arguments. +If none given, the value of the property is not asserted. + +*Validations* + +The JSON Schema validation keywords +[https://json-schema.org/understanding-json-schema/reference/string.html|for string] +can be used. Validations are optional but update the schema of +the property (more accurate) if given. +`Output Schema` can be used for the current schema of the field. + +The keyword will fail if any of the given validations fail. +Given validations can be skipped altogether by adding ``skip=true``. +When skipped, the schema is updated but the validations are not ran. +Skip is intented mainly for debugging the updated schema before aborting. + +*Examples* + +| `GET` | /users/1 | | | # https://jsonplaceholder.typicode.com/users/1 | +| `String` | response body email | | | # value is optional | +| `String` | response body email | Sincere@april.biz | +| `String` | $.email | Sincere@april.biz | | # JSONPath alternative | +| `String` | $.email | | format=email | + +| `GET` | /users?_limit=10 | | | # https://jsonplaceholder.typicode.com/users | +| `String` | response body 0 email | Sincere@april.biz | +| `String` | $[0].email | Sincere@april.biz | | # same as above | +| `String` | $[*].email | | format=email | + +assertions + + + diff --git a/libspecs/Reserved.libspec b/libspecs/Reserved.libspec new file mode 100644 index 000000000..b093decf0 --- /dev/null +++ b/libspecs/Reserved.libspec @@ -0,0 +1,87 @@ + + + +global +yes +Documentation for library ``Reserved``. + + +*varargs + + + + + + + +*varargs + + + + + + + +*varargs + + + + + + + +*varargs + + + + + + + +*varargs + + + + + + + +*varargs + + + + + + + +*varargs + + + + + + + +*varargs + + + + + + + +*varargs + + + + + + + +*varargs + + + + + + diff --git a/libspecs/Screenshot.libspec b/libspecs/Screenshot.libspec new file mode 100644 index 000000000..5703b5b9e --- /dev/null +++ b/libspecs/Screenshot.libspec @@ -0,0 +1,132 @@ + + +3.1 +test suite +yes +Test library for taking screenshots on the machine where tests are run. + +Notice that successfully taking screenshots requires tests to be run with +a physical or virtual display. + += Using with Python = + +How screenshots are taken when using Python depends on the operating +system. On OSX screenshots are taken using the built-in ``screencapture`` +utility. On other operating systems you need to have one of the following +tools or Python modules installed. You can specify the tool/module to use +when `importing` the library. If no tool or module is specified, the first +one found will be used. + +- wxPython :: http://wxpython.org :: Required also by RIDE so many Robot + Framework users already have this module installed. +- PyGTK :: http://pygtk.org :: This module is available by default on most + Linux distributions. +- Pillow :: http://python-pillow.github.io :: + Only works on Windows. Also the original PIL package is supported. +- Scrot :: http://en.wikipedia.org/wiki/Scrot :: Not used on Windows. + Install with ``apt-get install scrot`` or similar. + +Using ``screencapture`` on OSX and specifying explicit screenshot module +are new in Robot Framework 2.9.2. The support for using ``scrot`` is new +in Robot Framework 3.0. + += Using with Jython and IronPython = + +With Jython and IronPython this library uses APIs provided by JVM and .NET +platforms, respectively. These APIs are always available and thus no +external modules are needed. + += Where screenshots are saved = + +By default screenshots are saved into the same directory where the Robot +Framework log file is written. If no log is created, screenshots are saved +into the directory where the XML output file is written. + +It is possible to specify a custom location for screenshots using +``screenshot_directory`` argument when `importing` the library and +using `Set Screenshot Directory` keyword during execution. It is also +possible to save screenshots using an absolute path. + + +screenshot_directory=None +screenshot_module=None + +Configure where screenshots are saved. + +If ``screenshot_directory`` is not given, screenshots are saved into +same directory as the log file. The directory can also be set using +`Set Screenshot Directory` keyword. + +``screenshot_module`` specifies the module or tool to use when using +this library on Python outside OSX. Possible values are ``wxPython``, +``PyGTK``, ``PIL`` and ``scrot``, case-insensitively. If no value is +given, the first module/tool found is used in that order. See `Using +with Python` for more information. + +Examples (use only one of these): +| =Setting= | =Value= | =Value= | +| Library | Screenshot | | +| Library | Screenshot | ${TEMPDIR} | +| Library | Screenshot | screenshot_module=PyGTK | + +Specifying explicit screenshot module is new in Robot Framework 2.9.2. + + + + + +path + +Sets the directory where screenshots are saved. + +It is possible to use ``/`` as a path separator in all operating +systems. Path to the old directory is returned. + +The directory can also be set in `importing`. + + + + + +name=screenshot +width=800px + +Takes a screenshot in JPEG format and embeds it into the log file. + +Name of the file where the screenshot is stored is derived from the +given ``name``. If the ``name`` ends with extension ``.jpg`` or +``.jpeg``, the screenshot will be stored with that exact name. +Otherwise a unique name is created by adding an underscore, a running +index and an extension to the ``name``. + +The name will be interpreted to be relative to the directory where +the log file is written. It is also possible to use absolute paths. +Using ``/`` as a path separator works in all operating systems. + +``width`` specifies the size of the screenshot in the log file. + +Examples: (LOGDIR is determined automatically by the library) +| Take Screenshot | | | # LOGDIR/screenshot_1.jpg (index automatically incremented) | +| Take Screenshot | mypic | | # LOGDIR/mypic_1.jpg (index automatically incremented) | +| Take Screenshot | ${TEMPDIR}/mypic | | # /tmp/mypic_1.jpg (index automatically incremented) | +| Take Screenshot | pic.jpg | | # LOGDIR/pic.jpg (always uses this file) | +| Take Screenshot | images/login.jpg | 80% | # Specify both name and width. | +| Take Screenshot | width=550px | | # Specify only width. | + +The path where the screenshot is saved is returned. + + + + + +name=screenshot + +Takes a screenshot and links it from the log file. + +This keyword is otherwise identical to `Take Screenshot` but the saved +screenshot is not embedded into the log file. The screenshot is linked +so it is nevertheless easily available. + + + + diff --git a/libspecs/String.libspec b/libspecs/String.libspec new file mode 100644 index 000000000..f82c78ea9 --- /dev/null +++ b/libspecs/String.libspec @@ -0,0 +1,722 @@ + + +3.1 +global +yes +A test library for string manipulation and verification. + +``String`` is Robot Framework's standard library for manipulating +strings (e.g. `Replace String Using Regexp`, `Split To Lines`) and +verifying their contents (e.g. `Should Be String`). + +Following keywords from ``BuiltIn`` library can also be used with strings: + +- `Catenate` +- `Get Length` +- `Length Should Be` +- `Should (Not) Be Empty` +- `Should (Not) Be Equal (As Strings/Integers/Numbers)` +- `Should (Not) Match (Regexp)` +- `Should (Not) Contain` +- `Should (Not) Start With` +- `Should (Not) End With` +- `Convert To String` +- `Convert To Bytes` + + +string + +Converts string to lowercase. + +Examples: +| ${str1} = | Convert To Lowercase | ABC | +| ${str2} = | Convert To Lowercase | 1A2c3D | +| Should Be Equal | ${str1} | abc | +| Should Be Equal | ${str2} | 1a2c3d | + + + + + +string + +Converts string to uppercase. + +Examples: +| ${str1} = | Convert To Uppercase | abc | +| ${str2} = | Convert To Uppercase | 1a2C3d | +| Should Be Equal | ${str1} | ABC | +| Should Be Equal | ${str2} | 1A2C3D | + + + + + +bytes +encoding +errors=strict + +Decodes the given ``bytes`` to a Unicode string using the given ``encoding``. + +``errors`` argument controls what to do if decoding some bytes fails. +All values accepted by ``decode`` method in Python are valid, but in +practice the following values are most useful: + +- ``strict``: fail if characters cannot be decoded (default) +- ``ignore``: ignore characters that cannot be decoded +- ``replace``: replace characters that cannot be decoded with + a replacement character + +Examples: +| ${string} = | Decode Bytes To String | ${bytes} | UTF-8 | +| ${string} = | Decode Bytes To String | ${bytes} | ASCII | errors=ignore | + +Use `Encode String To Bytes` if you need to convert Unicode strings to +byte strings, and `Convert To String` in ``BuiltIn`` if you need to +convert arbitrary objects to Unicode strings. + + + + + +string +encoding +errors=strict + +Encodes the given Unicode ``string`` to bytes using the given ``encoding``. + +``errors`` argument controls what to do if encoding some characters fails. +All values accepted by ``encode`` method in Python are valid, but in +practice the following values are most useful: + +- ``strict``: fail if characters cannot be encoded (default) +- ``ignore``: ignore characters that cannot be encoded +- ``replace``: replace characters that cannot be encoded with + a replacement character + +Examples: +| ${bytes} = | Encode String To Bytes | ${string} | UTF-8 | +| ${bytes} = | Encode String To Bytes | ${string} | ASCII | errors=ignore | + +Use `Convert To Bytes` in ``BuiltIn`` if you want to create bytes based +on character or integer sequences. Use `Decode Bytes To String` if you +need to convert byte strings to Unicode strings and `Convert To String` +in ``BuiltIn`` if you need to convert arbitrary objects to Unicode. + + + + + +string +marker + +Returns contents of the ``string`` before the first occurrence of ``marker``. + +If the ``marker`` is not found, whole string is returned. + +See also `Fetch From Right`, `Split String` and `Split String +From Right`. + + + + + +string +marker + +Returns contents of the ``string`` after the last occurrence of ``marker``. + +If the ``marker`` is not found, whole string is returned. + +See also `Fetch From Left`, `Split String` and `Split String +From Right`. + + + + + +template +*positional +**named + +Formats a ``template`` using the given ``positional`` and ``named`` arguments. + +The template can be either be a string or an absolute path to +an existing file. In the latter case the file is read and its contents +are used as the template. If the template file contains non-ASCII +characters, it must be encoded using UTF-8. + +The template is formatted using Python's +[https://docs.python.org/library/string.html#format-string-syntax|format +string syntax]. Placeholders are marked using ``{}`` with possible +field name and format specification inside. Literal curly braces +can be inserted by doubling them like `{{` and `}}`. + +Examples: +| ${to} = | Format String | To: {} <{}> | ${user} | ${email} | +| ${to} = | Format String | To: {name} <{email}> | name=${name} | email=${email} | +| ${to} = | Format String | To: {user.name} <{user.email}> | user=${user} | +| ${xx} = | Format String | {:*^30} | centered | +| ${yy} = | Format String | {0:{width}{base}} | ${42} | base=X | width=10 | +| ${zz} = | Format String | ${CURDIR}/template.txt | positional | named=value | + +New in Robot Framework 3.1. + + + + + +length=8 +chars=[LETTERS][NUMBERS] + +Generates a string with a desired ``length`` from the given ``chars``. + +The population sequence ``chars`` contains the characters to use +when generating the random string. It can contain any +characters, and it is possible to use special markers +explained in the table below: + +| = Marker = | = Explanation = | +| ``[LOWER]`` | Lowercase ASCII characters from ``a`` to ``z``. | +| ``[UPPER]`` | Uppercase ASCII characters from ``A`` to ``Z``. | +| ``[LETTERS]`` | Lowercase and uppercase ASCII characters. | +| ``[NUMBERS]`` | Numbers from 0 to 9. | + +Examples: +| ${ret} = | Generate Random String | +| ${low} = | Generate Random String | 12 | [LOWER] | +| ${bin} = | Generate Random String | 8 | 01 | +| ${hex} = | Generate Random String | 4 | [NUMBERS]abcdef | + + + + + +string +line_number + +Returns the specified line from the given ``string``. + +Line numbering starts from 0 and it is possible to use +negative indices to refer to lines from the end. The line is +returned without the newline character. + +Examples: +| ${first} = | Get Line | ${string} | 0 | +| ${2nd last} = | Get Line | ${string} | -2 | + +Use `Split To Lines` if all lines are needed. + + + + + +string + +Returns and logs the number of lines in the given string. + + + + + +string +pattern +case_insensitive=False + +Returns lines of the given ``string`` that contain the ``pattern``. + +The ``pattern`` is always considered to be a normal string, not a glob +or regexp pattern. A line matches if the ``pattern`` is found anywhere +on it. + +The match is case-sensitive by default, but giving ``case_insensitive`` +a true value makes it case-insensitive. The value is considered true +if it is a non-empty string that is not equal to ``false``, ``none`` or +``no``. If the value is not a string, its truth value is got directly +in Python. Considering ``none`` false is new in RF 3.0.3. + +Lines are returned as one string catenated back together with +newlines. Possible trailing newline is never returned. The +number of matching lines is automatically logged. + +Examples: +| ${lines} = | Get Lines Containing String | ${result} | An example | +| ${ret} = | Get Lines Containing String | ${ret} | FAIL | case-insensitive | + +See `Get Lines Matching Pattern` and `Get Lines Matching Regexp` +if you need more complex pattern matching. + + + + + +string +pattern +case_insensitive=False + +Returns lines of the given ``string`` that match the ``pattern``. + +The ``pattern`` is a _glob pattern_ where: +| ``*`` | matches everything | +| ``?`` | matches any single character | +| ``[chars]`` | matches any character inside square brackets (e.g. ``[abc]`` matches either ``a``, ``b`` or ``c``) | +| ``[!chars]`` | matches any character not inside square brackets | + +A line matches only if it matches the ``pattern`` fully. + +The match is case-sensitive by default, but giving ``case_insensitive`` +a true value makes it case-insensitive. The value is considered true +if it is a non-empty string that is not equal to ``false``, ``none`` or +``no``. If the value is not a string, its truth value is got directly +in Python. Considering ``none`` false is new in RF 3.0.3. + +Lines are returned as one string catenated back together with +newlines. Possible trailing newline is never returned. The +number of matching lines is automatically logged. + +Examples: +| ${lines} = | Get Lines Matching Pattern | ${result} | Wild???? example | +| ${ret} = | Get Lines Matching Pattern | ${ret} | FAIL: * | case_insensitive=true | + +See `Get Lines Matching Regexp` if you need more complex +patterns and `Get Lines Containing String` if searching +literal strings is enough. + + + + + +string +pattern +partial_match=False + +Returns lines of the given ``string`` that match the regexp ``pattern``. + +See `BuiltIn.Should Match Regexp` for more information about +Python regular expression syntax in general and how to use it +in Robot Framework test data in particular. + +By default lines match only if they match the pattern fully, but +partial matching can be enabled by giving the ``partial_match`` +argument a true value. The value is considered true +if it is a non-empty string that is not equal to ``false``, ``none`` or +``no``. If the value is not a string, its truth value is got directly +in Python. Considering ``none`` false is new in RF 3.0.3. + +If the pattern is empty, it matches only empty lines by default. +When partial matching is enabled, empty pattern matches all lines. + +Notice that to make the match case-insensitive, you need to prefix +the pattern with case-insensitive flag ``(?i)``. + +Lines are returned as one string concatenated back together with +newlines. Possible trailing newline is never returned. The +number of matching lines is automatically logged. + +Examples: +| ${lines} = | Get Lines Matching Regexp | ${result} | Reg\\w{3} example | +| ${lines} = | Get Lines Matching Regexp | ${result} | Reg\\w{3} example | partial_match=true | +| ${ret} = | Get Lines Matching Regexp | ${ret} | (?i)FAIL: .* | + +See `Get Lines Matching Pattern` and `Get Lines Containing +String` if you do not need full regular expression powers (and +complexity). + +``partial_match`` argument is new in Robot Framework 2.9. In earlier + versions exact match was always required. + + + + + +string +pattern +*groups + +Returns a list of all non-overlapping matches in the given string. + +``string`` is the string to find matches from and ``pattern`` is the +regular expression. See `BuiltIn.Should Match Regexp` for more +information about Python regular expression syntax in general and how +to use it in Robot Framework test data in particular. + +If no groups are used, the returned list contains full matches. If one +group is used, the list contains only contents of that group. If +multiple groups are used, the list contains tuples that contain +individual group contents. All groups can be given as indexes (starting +from 1) and named groups also as names. + +Examples: +| ${no match} = | Get Regexp Matches | the string | xxx | +| ${matches} = | Get Regexp Matches | the string | t.. | +| ${one group} = | Get Regexp Matches | the string | t(..) | 1 | +| ${named group} = | Get Regexp Matches | the string | t(?P<name>..) | name | +| ${two groups} = | Get Regexp Matches | the string | t(.)(.) | 1 | 2 | +=> +| ${no match} = [] +| ${matches} = ['the', 'tri'] +| ${one group} = ['he', 'ri'] +| ${named group} = ['he', 'ri'] +| ${two groups} = [('h', 'e'), ('r', 'i')] + +New in Robot Framework 2.9. + + + + + +string +start +end=None + +Returns a substring from ``start`` index to ``end`` index. + +The ``start`` index is inclusive and ``end`` is exclusive. +Indexing starts from 0, and it is possible to use +negative indices to refer to characters from the end. + +Examples: +| ${ignore first} = | Get Substring | ${string} | 1 | | +| ${ignore last} = | Get Substring | ${string} | | -1 | +| ${5th to 10th} = | Get Substring | ${string} | 4 | 10 | +| ${first two} = | Get Substring | ${string} | | 1 | +| ${last two} = | Get Substring | ${string} | -2 | | + + + + + +string +*removables + +Removes all ``removables`` from the given ``string``. + +``removables`` are used as literal strings. Each removable will be +matched to a temporary string from which preceding removables have +been already removed. See second example below. + +Use `Remove String Using Regexp` if more powerful pattern matching is +needed. If only a certain number of matches should be removed, +`Replace String` or `Replace String Using Regexp` can be used. + +A modified version of the string is returned and the original +string is not altered. + +Examples: +| ${str} = | Remove String | Robot Framework | work | +| Should Be Equal | ${str} | Robot Frame | +| ${str} = | Remove String | Robot Framework | o | bt | +| Should Be Equal | ${str} | R Framewrk | + + + + + +string +*patterns + +Removes ``patterns`` from the given ``string``. + +This keyword is otherwise identical to `Remove String`, but +the ``patterns`` to search for are considered to be a regular +expression. See `Replace String Using Regexp` for more information +about the regular expression syntax. That keyword can also be +used if there is a need to remove only a certain number of +occurrences. + + + + + +string +search_for +replace_with +count=-1 + +Replaces ``search_for`` in the given ``string`` with ``replace_with``. + +``search_for`` is used as a literal string. See `Replace String +Using Regexp` if more powerful pattern matching is needed. +If you need to just remove a string see `Remove String`. + +If the optional argument ``count`` is given, only that many +occurrences from left are replaced. Negative ``count`` means +that all occurrences are replaced (default behaviour) and zero +means that nothing is done. + +A modified version of the string is returned and the original +string is not altered. + +Examples: +| ${str} = | Replace String | Hello, world! | world | tellus | +| Should Be Equal | ${str} | Hello, tellus! | | | +| ${str} = | Replace String | Hello, world! | l | ${EMPTY} | count=1 | +| Should Be Equal | ${str} | Helo, world! | | | + + + + + +string +pattern +replace_with +count=-1 + +Replaces ``pattern`` in the given ``string`` with ``replace_with``. + +This keyword is otherwise identical to `Replace String`, but +the ``pattern`` to search for is considered to be a regular +expression. See `BuiltIn.Should Match Regexp` for more +information about Python regular expression syntax in general +and how to use it in Robot Framework test data in particular. + +If you need to just remove a string see `Remove String Using Regexp`. + +Examples: +| ${str} = | Replace String Using Regexp | ${str} | 20\\d\\d-\\d\\d-\\d\\d | <DATE> | +| ${str} = | Replace String Using Regexp | ${str} | (Hello|Hi) | ${EMPTY} | count=1 | + + + + + +item +msg=None + +Fails if the given ``item`` is not a byte string. + +Use `Should Be Unicode String` if you want to verify the ``item`` is a +Unicode string, or `Should Be String` if both Unicode and byte strings +are fine. See `Should Be String` for more details about Unicode strings +and byte strings. + +The default error message can be overridden with the optional +``msg`` argument. + + + + + +string +msg=None + +Fails if the given ``string`` is not in lowercase. + +For example, ``'string'`` and ``'with specials!'`` would pass, and +``'String'``, ``''`` and ``' '`` would fail. + +The default error message can be overridden with the optional +``msg`` argument. + +See also `Should Be Uppercase` and `Should Be Titlecase`. + + + + + +item +msg=None + +Fails if the given ``item`` is not a string. + +With Python 2, except with IronPython, this keyword passes regardless +is the ``item`` a Unicode string or a byte string. Use `Should Be +Unicode String` or `Should Be Byte String` if you want to restrict +the string type. Notice that with Python 2, except with IronPython, +``'string'`` creates a byte string and ``u'unicode'`` must be used to +create a Unicode string. + +With Python 3 and IronPython, this keyword passes if the string is +a Unicode string but fails if it is bytes. Notice that with both +Python 3 and IronPython, ``'string'`` creates a Unicode string, and +``b'bytes'`` must be used to create a byte string. + +The default error message can be overridden with the optional +``msg`` argument. + + + + + +string +msg=None + +Fails if given ``string`` is not title. + +``string`` is a titlecased string if there is at least one +character in it, uppercase characters only follow uncased +characters and lowercase characters only cased ones. + +For example, ``'This Is Title'`` would pass, and ``'Word In UPPER'``, +``'Word In lower'``, ``''`` and ``' '`` would fail. + +The default error message can be overridden with the optional +``msg`` argument. + +See also `Should Be Uppercase` and `Should Be Lowercase`. + + + + + +item +msg=None + +Fails if the given ``item`` is not a Unicode string. + +Use `Should Be Byte String` if you want to verify the ``item`` is a +byte string, or `Should Be String` if both Unicode and byte strings +are fine. See `Should Be String` for more details about Unicode +strings and byte strings. + +The default error message can be overridden with the optional +``msg`` argument. + + + + + +string +msg=None + +Fails if the given ``string`` is not in uppercase. + +For example, ``'STRING'`` and ``'WITH SPECIALS!'`` would pass, and +``'String'``, ``''`` and ``' '`` would fail. + +The default error message can be overridden with the optional +``msg`` argument. + +See also `Should Be Titlecase` and `Should Be Lowercase`. + + + + + +item +msg=None + +Fails if the given ``item`` is a string. + +See `Should Be String` for more details about Unicode strings and byte +strings. + +The default error message can be overridden with the optional +``msg`` argument. + + + + + +string +separator=None +max_split=-1 + +Splits the ``string`` using ``separator`` as a delimiter string. + +If a ``separator`` is not given, any whitespace string is a +separator. In that case also possible consecutive whitespace +as well as leading and trailing whitespace is ignored. + +Split words are returned as a list. If the optional +``max_split`` is given, at most ``max_split`` splits are done, and +the returned list will have maximum ``max_split + 1`` elements. + +Examples: +| @{words} = | Split String | ${string} | +| @{words} = | Split String | ${string} | ,${SPACE} | +| ${pre} | ${post} = | Split String | ${string} | :: | 1 | + +See `Split String From Right` if you want to start splitting +from right, and `Fetch From Left` and `Fetch From Right` if +you only want to get first/last part of the string. + + + + + +string +separator=None +max_split=-1 + +Splits the ``string`` using ``separator`` starting from right. + +Same as `Split String`, but splitting is started from right. This has +an effect only when ``max_split`` is given. + +Examples: +| ${first} | ${rest} = | Split String | ${string} | - | 1 | +| ${rest} | ${last} = | Split String From Right | ${string} | - | 1 | + + + + + +string + +Splits the given ``string`` to characters. + +Example: +| @{characters} = | Split String To Characters | ${string} | + + + + + +string +start=0 +end=None + +Splits the given string to lines. + +It is possible to get only a selection of lines from ``start`` +to ``end`` so that ``start`` index is inclusive and ``end`` is +exclusive. Line numbering starts from 0, and it is possible to +use negative indices to refer to lines from the end. + +Lines are returned without the newlines. The number of +returned lines is automatically logged. + +Examples: +| @{lines} = | Split To Lines | ${manylines} | | | +| @{ignore first} = | Split To Lines | ${manylines} | 1 | | +| @{ignore last} = | Split To Lines | ${manylines} | | -1 | +| @{5th to 10th} = | Split To Lines | ${manylines} | 4 | 10 | +| @{first two} = | Split To Lines | ${manylines} | | 1 | +| @{last two} = | Split To Lines | ${manylines} | -2 | | + +Use `Get Line` if you only need to get a single line. + + + + + +string +mode=both +characters=None + +Remove leading and/or trailing whitespaces from the given string. + +``mode`` is either ``left`` to remove leading characters, ``right`` to +remove trailing characters, ``both`` (default) to remove the +characters from both sides of the string or ``none`` to return the +unmodified string. + +If the optional ``characters`` is given, it must be a string and the +characters in the string will be stripped in the string. Please note, +that this is not a substring to be removed but a list of characters, +see the example below. + +Examples: +| ${stripped}= | Strip String | ${SPACE}Hello${SPACE} | | +| Should Be Equal | ${stripped} | Hello | | +| ${stripped}= | Strip String | ${SPACE}Hello${SPACE} | mode=left | +| Should Be Equal | ${stripped} | Hello${SPACE} | | +| ${stripped}= | Strip String | aabaHelloeee | characters=abe | +| Should Be Equal | ${stripped} | Hello | | + +New in Robot Framework 3.0. + + + + diff --git a/libspecs/Telnet.libspec b/libspecs/Telnet.libspec new file mode 100644 index 000000000..0e1aa812a --- /dev/null +++ b/libspecs/Telnet.libspec @@ -0,0 +1,744 @@ + + +3.1 +test suite +yes +A test library providing communication over Telnet connections. + +``Telnet`` is Robot Framework's standard library that makes it possible to +connect to Telnet servers and execute commands on the opened connections. + +== Table of contents == + +- `Connections` +- `Writing and reading` +- `Configuration` +- `Terminal emulation` +- `Logging` +- `Time string format` +- `Boolean arguments` +- `Importing` +- `Shortcuts` +- `Keywords` + += Connections = + +The first step of using ``Telnet`` is opening a connection with `Open +Connection` keyword. Typically the next step is logging in with `Login` +keyword, and in the end the opened connection can be closed with `Close +Connection`. + +It is possible to open multiple connections and switch the active one +using `Switch Connection`. `Close All Connections` can be used to close +all the connections, which is especially useful in suite teardowns to +guarantee that all connections are always closed. + += Writing and reading = + +After opening a connection and possibly logging in, commands can be +executed or text written to the connection for other reasons using `Write` +and `Write Bare` keywords. The main difference between these two is that +the former adds a [#Configuration|configurable newline] after the text +automatically. + +After writing something to the connection, the resulting output can be +read using `Read`, `Read Until`, `Read Until Regexp`, and `Read Until +Prompt` keywords. Which one to use depends on the context, but the latest +one is often the most convenient. + +As a convenience when running a command, it is possible to use `Execute +Command` that simply uses `Write` and `Read Until Prompt` internally. +`Write Until Expected Output` is useful if you need to wait until writing +something produces a desired output. + +Written and read text is automatically encoded/decoded using a +[#Configuration|configured encoding]. + +The ANSI escape codes, like cursor movement and color codes, are +normally returned as part of the read operation. If an escape code occurs +in middle of a search pattern it may also prevent finding the searched +string. `Terminal emulation` can be used to process these +escape codes as they would be if a real terminal would be in use. + += Configuration = + +Many aspects related the connections can be easily configured either +globally or per connection basis. Global configuration is done when +[#Importing|library is imported], and these values can be overridden per +connection by `Open Connection` or with setting specific keywords +`Set Timeout`, `Set Newline`, `Set Prompt`, `Set Encoding`, +`Set Default Log Level` and `Set Telnetlib Log Level`. + +Values of ``environ_user``, ``window_size``, ``terminal_emulation``, and +``terminal_type`` can not be changed after opening the connection. + +== Timeout == + +Timeout defines how long is the maximum time to wait when reading +output. It is used internally by `Read Until`, `Read Until Regexp`, +`Read Until Prompt`, and `Login` keywords. The default value is 3 seconds. + +== Connection Timeout == + +Connection Timeout defines how long is the maximum time to wait when +opening the telnet connection. It is used internally by `Open Connection`. +The default value is the system global default timeout. + +New in Robot Framework 2.9.2. + +== Newline == + +Newline defines which line separator `Write` keyword should use. The +default value is ``CRLF`` that is typically used by Telnet connections. + +Newline can be given either in escaped format using ``\n`` and ``\r`` or +with special ``LF`` and ``CR`` syntax. + +Examples: +| `Set Newline` | \n | +| `Set Newline` | CRLF | + +== Prompt == + +Often the easiest way to read the output of a command is reading all +the output until the next prompt with `Read Until Prompt`. It also makes +it easier, and faster, to verify did `Login` succeed. + +Prompt can be specified either as a normal string or a regular expression. +The latter is especially useful if the prompt changes as a result of +the executed commands. Prompt can be set to be a regular expression +by giving ``prompt_is_regexp`` argument a true value (see `Boolean +arguments`). + +Examples: +| `Open Connection` | lolcathost | prompt=$ | +| `Set Prompt` | (> |# ) | prompt_is_regexp=true | + +== Encoding == + +To ease handling text containing non-ASCII characters, all written text is +encoded and read text decoded by default. The default encoding is UTF-8 +that works also with ASCII. Encoding can be disabled by using a special +encoding value ``NONE``. This is mainly useful if you need to get the bytes +received from the connection as-is. + +Notice that when writing to the connection, only Unicode strings are +encoded using the defined encoding. Byte strings are expected to be already +encoded correctly. Notice also that normal text in test data is passed to +the library as Unicode and you need to use variables to use bytes. + +It is also possible to configure the error handler to use if encoding or +decoding characters fails. Accepted values are the same that encode/decode +functions in Python strings accept. In practice the following values are +the most useful: + +- ``ignore``: ignore characters that cannot be encoded (default) +- ``strict``: fail if characters cannot be encoded +- ``replace``: replace characters that cannot be encoded with a replacement + character + +Examples: +| `Open Connection` | lolcathost | encoding=Latin1 | encoding_errors=strict | +| `Set Encoding` | ISO-8859-15 | +| `Set Encoding` | errors=ignore | + +== Default log level == + +Default log level specifies the log level keywords use for `logging` unless +they are given an explicit log level. The default value is ``INFO``, and +changing it, for example, to ``DEBUG`` can be a good idea if there is lot +of unnecessary output that makes log files big. + +== Terminal type == + +By default the Telnet library does not negotiate any specific terminal type +with the server. If a specific terminal type, for example ``vt100``, is +desired, the terminal type can be configured in `importing` and with +`Open Connection`. + +== Window size == + +Window size for negotiation with the server can be configured when +`importing` the library and with `Open Connection`. + +== USER environment variable == + +Telnet protocol allows the ``USER`` environment variable to be sent when +connecting to the server. On some servers it may happen that there is no +login prompt, and on those cases this configuration option will allow still +to define the desired username. The option ``environ_user`` can be used in +`importing` and with `Open Connection`. + += Terminal emulation = + +Telnet library supports terminal +emulation with [http://pyte.readthedocs.io|Pyte]. Terminal emulation +will process the output in a virtual screen. This means that ANSI escape +codes, like cursor movements, and also control characters, like +carriage returns and backspaces, have the same effect on the result as they +would have on a normal terminal screen. For example the sequence +``acdc\x1b[3Dbba`` will result in output ``abba``. + +Terminal emulation is taken into use by giving ``terminal_emulation`` +argument a true value (see `Boolean arguments`) either in the library +initialization or with `Open Connection`. + +As Pyte approximates vt-style terminal, you may also want to set the +terminal type as ``vt100``. We also recommend that you increase the window +size, as the terminal emulation will break all lines that are longer than +the window row length. + +When terminal emulation is used, the `newline` and `encoding` can not be +changed anymore after opening the connection. + +Examples: +| `Open Connection` | lolcathost | terminal_emulation=True | terminal_type=vt100 | window_size=400x100 | + +As a prerequisite for using terminal emulation, you need to have Pyte +installed. Due to backwards incompatible changes in Pyte, different +Robot Framework versions support different Pyte versions: + +- Pyte 0.6 and newer are supported by Robot Framework 3.0.3. + Latest Pyte version can be installed (or upgraded) with + ``pip install --upgrade pyte``. +- Pyte 0.5.2 and older are supported by Robot Framework 3.0.2 and earlier. + Pyte 0.5.2 can be installed with ``pip install pyte==0.5.2``. + += Logging = + +All keywords that read something log the output. These keywords take the +log level to use as an optional argument, and if no log level is specified +they use the [#Configuration|configured] default value. + +The valid log levels to use are ``TRACE``, ``DEBUG``, ``INFO`` (default), +and ``WARN``. Levels below ``INFO`` are not shown in log files by default +whereas warnings are shown more prominently. + +The [http://docs.python.org/library/telnetlib.html|telnetlib module] +used by this library has a custom logging system for logging content it +sends and receives. By default these messages are written using ``TRACE`` +level, but the level is configurable with the ``telnetlib_log_level`` +option either in the library initialization, to the `Open Connection` +or by using the `Set Telnetlib Log Level` keyword to the active +connection. Special level ``NONE`` con be used to disable the logging +altogether. + += Time string format = + +Timeouts and other times used must be given as a time string using format +like ``15 seconds`` or ``1min 10s``. If the timeout is given as just +a number, for example, ``10`` or ``1.5``, it is considered to be seconds. +The time string format is described in more detail in an appendix of +[http://robotframework.org/robotframework/#user-guide|Robot Framework User Guide]. + += Boolean arguments = + +Some keywords accept arguments that are handled as Boolean values true or +false. If such an argument is given as a string, it is considered false if +it is an empty string or equal to ``FALSE``, ``NONE``, ``NO``, ``OFF`` or +``0``, case-insensitively. Other strings are considered true regardless +their value, and other argument types are tested using the same +[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. + +True examples: +| `Open Connection` | lolcathost | terminal_emulation=True | # Strings are generally true. | +| `Open Connection` | lolcathost | terminal_emulation=yes | # Same as the above. | +| `Open Connection` | lolcathost | terminal_emulation=${TRUE} | # Python ``True`` is true. | +| `Open Connection` | lolcathost | terminal_emulation=${42} | # Numbers other than 0 are true. | + +False examples: +| `Open Connection` | lolcathost | terminal_emulation=False | # String ``false`` is false. | +| `Open Connection` | lolcathost | terminal_emulation=no | # Also string ``no`` is false. | +| `Open Connection` | lolcathost | terminal_emulation=${EMPTY} | # Empty string is false. | +| `Open Connection` | lolcathost | terminal_emulation=${FALSE} | # Python ``False`` is false. | + +Considering string ``NONE`` false is new in Robot Framework 3.0.3 and +considering also ``OFF`` and ``0`` false is new in Robot Framework 3.1. + + +timeout=3 seconds +newline=CRLF +prompt=None +prompt_is_regexp=False +encoding=UTF-8 +encoding_errors=ignore +default_log_level=INFO +window_size=None +environ_user=None +terminal_emulation=False +terminal_type=None +telnetlib_log_level=TRACE +connection_timeout=None + +Telnet library can be imported with optional configuration parameters. + +Configuration parameters are used as default values when new +connections are opened with `Open Connection` keyword. They can also be +overridden after opening the connection using the `Set ...` `keywords`. +See these keywords as well as `Configuration`, `Terminal emulation` and +`Logging` sections above for more information about these parameters +and their possible values. + +See `Time string format` and `Boolean arguments` sections for +information about using arguments accepting times and Boolean values, +respectively. + +Examples (use only one of these): +| = Setting = | = Value = | = Value = | = Value = | = Value = | = Comment = | +| Library | Telnet | | | | # default values | +| Library | Telnet | 5 seconds | | | # set only timeout | +| Library | Telnet | newline=LF | encoding=ISO-8859-1 | | # set newline and encoding using named arguments | +| Library | Telnet | prompt=$ | | | # set prompt | +| Library | Telnet | prompt=(> |# ) | prompt_is_regexp=yes | | # set prompt as a regular expression | +| Library | Telnet | terminal_emulation=True | terminal_type=vt100 | window_size=400x100 | # use terminal emulation with defined window size and terminal type | +| Library | Telnet | telnetlib_log_level=NONE | | | # disable logging messages from the underlying telnetlib | + + + + + + +Closes all open connections and empties the connection cache. + +If multiple connections are opened, this keyword should be used in +a test or suite teardown to make sure that all connections are closed. +It is not an error is some of the connections have already been closed +by `Close Connection`. + +After this keyword, new indexes returned by `Open Connection` +keyword are reset to 1. + + + + + +loglevel=None + +Closes the current Telnet connection. + +Remaining output in the connection is read, logged, and returned. +It is not an error to close an already closed connection. + +Use `Close All Connections` if you want to make sure all opened +connections are closed. + +See `Logging` section for more information about log levels. + + + + + +command +loglevel=None +strip_prompt=False + +Executes the given ``command`` and reads, logs, and returns everything until the prompt. + +This keyword requires the prompt to be [#Configuration|configured] +either in `importing` or with `Open Connection` or `Set Prompt` keyword. + +This is a convenience keyword that uses `Write` and `Read Until Prompt` +internally. Following two examples are thus functionally identical: + +| ${out} = | `Execute Command` | pwd | + +| `Write` | pwd | +| ${out} = | `Read Until Prompt` | + +See `Logging` section for more information about log levels and `Read +Until Prompt` for more information about the ``strip_prompt`` parameter. + + + + + +username +password +login_prompt=login: +password_prompt=Password: +login_timeout=1 second +login_incorrect=Login incorrect + +Logs in to the Telnet server with the given user information. + +This keyword reads from the connection until the ``login_prompt`` is +encountered and then types the given ``username``. Then it reads until +the ``password_prompt`` and types the given ``password``. In both cases +a newline is appended automatically and the connection specific +timeout used when waiting for outputs. + +How logging status is verified depends on whether a prompt is set for +this connection or not: + +1) If the prompt is set, this keyword reads the output until the prompt +is found using the normal timeout. If no prompt is found, login is +considered failed and also this keyword fails. Note that in this case +both ``login_timeout`` and ``login_incorrect`` arguments are ignored. + +2) If the prompt is not set, this keywords sleeps until ``login_timeout`` +and then reads all the output available on the connection. If the +output contains ``login_incorrect`` text, login is considered failed +and also this keyword fails. + +See `Configuration` section for more information about setting +newline, timeout, and prompt. + + + + + +host +alias=None +port=23 +timeout=None +newline=None +prompt=None +prompt_is_regexp=False +encoding=None +encoding_errors=None +default_log_level=None +window_size=None +environ_user=None +terminal_emulation=None +terminal_type=None +telnetlib_log_level=None +connection_timeout=None + +Opens a new Telnet connection to the given host and port. + +The ``timeout``, ``newline``, ``prompt``, ``prompt_is_regexp``, +``encoding``, ``default_log_level``, ``window_size``, ``environ_user``, +``terminal_emulation``, ``terminal_type`` and ``telnetlib_log_level`` +arguments get default values when the library is [#Importing|imported]. +Setting them here overrides those values for the opened connection. +See `Configuration`, `Terminal emulation` and `Logging` sections for +more information about these parameters and their possible values. + +Possible already opened connections are cached and it is possible to +switch back to them using `Switch Connection` keyword. It is possible to +switch either using explicitly given ``alias`` or using index returned +by this keyword. Indexing starts from 1 and is reset back to it by +`Close All Connections` keyword. + + + + + +loglevel=None + +Reads everything that is currently available in the output. + +Read output is both returned and logged. See `Logging` section for more +information about log levels. + + + + + +expected +loglevel=None + +Reads output until ``expected`` text is encountered. + +Text up to and including the match is returned and logged. If no match +is found, this keyword fails. How much to wait for the output depends +on the [#Configuration|configured timeout]. + +See `Logging` section for more information about log levels. Use +`Read Until Regexp` if more complex matching is needed. + + + + + +loglevel=None +strip_prompt=False + +Reads output until the prompt is encountered. + +This keyword requires the prompt to be [#Configuration|configured] +either in `importing` or with `Open Connection` or `Set Prompt` keyword. + +By default, text up to and including the prompt is returned and logged. +If no prompt is found, this keyword fails. How much to wait for the +output depends on the [#Configuration|configured timeout]. + +If you want to exclude the prompt from the returned output, set +``strip_prompt`` to a true value (see `Boolean arguments`). If your +prompt is a regular expression, make sure that the expression spans the +whole prompt, because only the part of the output that matches the +regular expression is stripped away. + +See `Logging` section for more information about log levels. + + + + + +*expected + +Reads output until any of the ``expected`` regular expressions match. + +This keyword accepts any number of regular expressions patterns or +compiled Python regular expression objects as arguments. Text up to +and including the first match to any of the regular expressions is +returned and logged. If no match is found, this keyword fails. How much +to wait for the output depends on the [#Configuration|configured timeout]. + +If the last given argument is a [#Logging|valid log level], it is used +as ``loglevel`` similarly as with `Read Until` keyword. + +See the documentation of +[http://docs.python.org/library/re.html|Python re module] +for more information about the supported regular expression syntax. +Notice that possible backslashes need to be escaped in Robot Framework +test data. + +Examples: +| `Read Until Regexp` | (#|$) | +| `Read Until Regexp` | first_regexp | second_regexp | +| `Read Until Regexp` | \\d{4}-\\d{2}-\\d{2} | DEBUG | + + + + + +level + +Sets the default log level used for `logging` in the current connection. + +The old default log level is returned and can be used to restore the +log level later. + +See `Configuration` section for more information about global and +connection specific configuration. + + + + + +encoding=None +errors=None + +Sets the encoding to use for `writing and reading` in the current connection. + +The given ``encoding`` specifies the encoding to use when written/read +text is encoded/decoded, and ``errors`` specifies the error handler to +use if encoding/decoding fails. Either of these can be omitted and in +that case the old value is not affected. Use string ``NONE`` to disable +encoding altogether. + +See `Configuration` section for more information about encoding and +error handlers, as well as global and connection specific configuration +in general. + +The old values are returned and can be used to restore the encoding +and the error handler later. See `Set Prompt` for a similar example. + +If terminal emulation is used, the encoding can not be changed on an open +connection. + + + + + +newline + +Sets the newline used by `Write` keyword in the current connection. + +The old newline is returned and can be used to restore the newline later. +See `Set Timeout` for a similar example. + +If terminal emulation is used, the newline can not be changed on an open +connection. + +See `Configuration` section for more information about global and +connection specific configuration. + + + + + +prompt +prompt_is_regexp=False + +Sets the prompt used by `Read Until Prompt` and `Login` in the current connection. + +If ``prompt_is_regexp`` is given a true value (see `Boolean arguments`), +the given ``prompt`` is considered to be a regular expression. + +The old prompt is returned and can be used to restore the prompt later. + +Example: +| ${prompt} | ${regexp} = | `Set Prompt` | $ | +| `Do Something` | +| `Set Prompt` | ${prompt} | ${regexp} | + +See the documentation of +[http://docs.python.org/library/re.html|Python re module] +for more information about the supported regular expression syntax. +Notice that possible backslashes need to be escaped in Robot Framework +test data. + +See `Configuration` section for more information about global and +connection specific configuration. + + + + + +level + +Sets the log level used for `logging` in the underlying ``telnetlib``. + +Note that ``telnetlib`` can be very noisy thus using the level ``NONE`` +can shutdown the messages generated by this library. + + + + + +timeout + +Sets the timeout used for waiting output in the current connection. + +Read operations that expect some output to appear (`Read Until`, `Read +Until Regexp`, `Read Until Prompt`, `Login`) use this timeout and fail +if the expected output does not appear before this timeout expires. + +The ``timeout`` must be given in `time string format`. The old timeout +is returned and can be used to restore the timeout later. + +Example: +| ${old} = | `Set Timeout` | 2 minute 30 seconds | +| `Do Something` | +| `Set Timeout` | ${old} | + +See `Configuration` section for more information about global and +connection specific configuration. + + + + + +index_or_alias + +Switches between active connections using an index or an alias. + +Aliases can be given to `Open Connection` keyword which also always +returns the connection index. + +This keyword returns the index of previous active connection. + +Example: +| `Open Connection` | myhost.net | | | +| `Login` | john | secret | | +| `Write` | some command | | | +| `Open Connection` | yourhost.com | 2nd conn | | +| `Login` | root | password | | +| `Write` | another cmd | | | +| ${old index}= | `Switch Connection` | 1 | # index | +| `Write` | something | | | +| `Switch Connection` | 2nd conn | | # alias | +| `Write` | whatever | | | +| `Switch Connection` | ${old index} | | # back to original | +| [Teardown] | `Close All Connections` | | | + +The example above expects that there were no other open +connections when opening the first one, because it used index +``1`` when switching to the connection later. If you are not +sure about that, you can store the index into a variable as +shown below. + +| ${index} = | `Open Connection` | myhost.net | +| `Do Something` | | | +| `Switch Connection` | ${index} | | + + + + + +text +loglevel=None + +Writes the given text plus a newline into the connection. + +The newline character sequence to use can be [#Configuration|configured] +both globally and per connection basis. The default value is ``CRLF``. + +This keyword consumes the written text, until the added newline, from +the output and logs and returns it. The given text itself must not +contain newlines. Use `Write Bare` instead if either of these features +causes a problem. + +*Note:* This keyword does not return the possible output of the executed +command. To get the output, one of the `Read ...` `keywords` must be +used. See `Writing and reading` section for more details. + +See `Logging` section for more information about log levels. + + + + + +text + +Writes the given text, and nothing else, into the connection. + +This keyword does not append a newline nor consume the written text. +Use `Write` if these features are needed. + + + + + +character + +Writes the given control character into the connection. + +The control character is prepended with an IAC (interpret as command) +character. + +The following control character names are supported: BRK, IP, AO, AYT, +EC, EL, NOP. Additionally, you can use arbitrary numbers to send any +control character. + +Example: +| Write Control Character | BRK | # Send Break command | +| Write Control Character | 241 | # Send No operation command | + + + + + +text +expected +timeout +retry_interval +loglevel=None + +Writes the given ``text`` repeatedly, until ``expected`` appears in the output. + +``text`` is written without appending a newline and it is consumed from +the output before trying to find ``expected``. If ``expected`` does not +appear in the output within ``timeout``, this keyword fails. + +``retry_interval`` defines the time to wait ``expected`` to appear before +writing the ``text`` again. Consuming the written ``text`` is subject to +the normal [#Configuration|configured timeout]. + +Both ``timeout`` and ``retry_interval`` must be given in `time string +format`. See `Logging` section for more information about log levels. + +Example: +| Write Until Expected Output | ps -ef| grep myprocess\r\n | myprocess | +| ... | 5 s | 0.5 s | + +The above example writes command ``ps -ef | grep myprocess\r\n`` until +``myprocess`` appears in the output. The command is written every 0.5 +seconds and the keyword fails if ``myprocess`` does not appear in +the output in 5 seconds. + + + + diff --git a/libspecs/XML.libspec b/libspecs/XML.libspec new file mode 100644 index 000000000..a5b64dc04 --- /dev/null +++ b/libspecs/XML.libspec @@ -0,0 +1,1365 @@ + + +3.1 +global +yes +Robot Framework test library for verifying and modifying XML documents. + +As the name implies, _XML_ is a test library for verifying contents of XML +files. In practice it is a pretty thin wrapper on top of Python's +[http://docs.python.org/library/xml.etree.elementtree.html|ElementTree XML API]. + +The library has the following main usages: + +- Parsing an XML file, or a string containing XML, into an XML element + structure and finding certain elements from it for for further analysis + (e.g. `Parse XML` and `Get Element` keywords). +- Getting text or attributes of elements + (e.g. `Get Element Text` and `Get Element Attribute`). +- Directly verifying text, attributes, or whole elements + (e.g `Element Text Should Be` and `Elements Should Be Equal`). +- Modifying XML and saving it (e.g. `Set Element Text`, `Add Element` + and `Save XML`). + +== Table of contents == + +- `Parsing XML` +- `Using lxml` +- `Example` +- `Finding elements with xpath` +- `Element attributes` +- `Handling XML namespaces` +- `Boolean arguments` +- `Pattern matching` +- `Shortcuts` +- `Keywords` + += Parsing XML = + +XML can be parsed into an element structure using `Parse XML` keyword. +It accepts both paths to XML files and strings that contain XML. The +keyword returns the root element of the structure, which then contains +other elements as its children and their children. Possible comments and +processing instructions in the source XML are removed. + +XML is not validated during parsing even if has a schema defined. How +possible doctype elements are handled otherwise depends on the used XML +module and on the platform. The standard ElementTree strips doctypes +altogether but when `using lxml` they are preserved when XML is saved. + +The element structure returned by `Parse XML`, as well as elements +returned by keywords such as `Get Element`, can be used as the ``source`` +argument with other keywords. In addition to an already parsed XML +structure, other keywords also accept paths to XML files and strings +containing XML similarly as `Parse XML`. Notice that keywords that modify +XML do not write those changes back to disk even if the source would be +given as a path to a file. Changes must always saved explicitly using +`Save XML` keyword. + +When the source is given as a path to a file, the forward slash character +(``/``) can be used as the path separator regardless the operating system. +On Windows also the backslash works, but it the test data it needs to be +escaped by doubling it (``\\``). Using the built-in variable ``${/}`` +naturally works too. + += Using lxml = + +By default this library uses Python's standard +[http://docs.python.org/library/xml.etree.elementtree.html|ElementTree] +module for parsing XML, but it can be configured to use +[http://lxml.de|lxml] module instead when `importing` the library. +The resulting element structure has same API regardless which module +is used for parsing. + +The main benefits of using lxml is that it supports richer xpath syntax +than the standard ElementTree and enables using `Evaluate Xpath` keyword. +It also preserves the doctype and possible namespace prefixes saving XML. + += Example = + +The following simple example demonstrates parsing XML and verifying its +contents both using keywords in this library and in _BuiltIn_ and +_Collections_ libraries. How to use xpath expressions to find elements +and what attributes the returned elements contain are discussed, with +more examples, in `Finding elements with xpath` and `Element attributes` +sections. + +In this example, as well as in many other examples in this documentation, +``${XML}`` refers to the following example XML document. In practice +``${XML}`` could either be a path to an XML file or it could contain the XML +itself. + +| <example> +| <first id="1">text</first> +| <second id="2"> +| <child/> +| </second> +| <third> +| <child>more text</child> +| <second id="child"/> +| <child><grandchild/></child> +| </third> +| <html> +| <p> +| Text with <b>bold</b> and <i>italics</i>. +| </p> +| </html> +| </example> + +| ${root} = | `Parse XML` | ${XML} | | | +| `Should Be Equal` | ${root.tag} | example | | | +| ${first} = | `Get Element` | ${root} | first | | +| `Should Be Equal` | ${first.text} | text | | | +| `Dictionary Should Contain Key` | ${first.attrib} | id | | +| `Element Text Should Be` | ${first} | text | | | +| `Element Attribute Should Be` | ${first} | id | 1 | | +| `Element Attribute Should Be` | ${root} | id | 1 | xpath=first | +| `Element Attribute Should Be` | ${XML} | id | 1 | xpath=first | + +Notice that in the example three last lines are equivalent. Which one to +use in practice depends on which other elements you need to get or verify. +If you only need to do one verification, using the last line alone would +suffice. If more verifications are needed, parsing the XML with `Parse XML` +only once would be more efficient. + += Finding elements with xpath = + +ElementTree, and thus also this library, supports finding elements using +xpath expressions. ElementTree does not, however, support the full xpath +standard. The supported xpath syntax is explained below and +[https://docs.python.org/library/xml.etree.elementtree.html#xpath-support| +ElementTree documentation] provides more details. In the examples +``${XML}`` refers to the same XML structure as in the earlier example. + +If lxml support is enabled when `importing` the library, the whole +[http://www.w3.org/TR/xpath/|xpath 1.0 standard] is supported. +That includes everything listed below but also lot of other useful +constructs. + +== Tag names == + +When just a single tag name is used, xpath matches all direct child +elements that have that tag name. + +| ${elem} = | `Get Element` | ${XML} | third | +| `Should Be Equal` | ${elem.tag} | third | | +| @{children} = | `Get Elements` | ${elem} | child | +| `Length Should Be` | ${children} | 2 | | + +== Paths == + +Paths are created by combining tag names with a forward slash (``/``). For +example, ``parent/child`` matches all ``child`` elements under ``parent`` +element. Notice that if there are multiple ``parent`` elements that all +have ``child`` elements, ``parent/child`` xpath will match all these +``child`` elements. + +| ${elem} = | `Get Element` | ${XML} | second/child | +| `Should Be Equal` | ${elem.tag} | child | | +| ${elem} = | `Get Element` | ${XML} | third/child/grandchild | +| `Should Be Equal` | ${elem.tag} | grandchild | | + +== Wildcards == + +An asterisk (``*``) can be used in paths instead of a tag name to denote +any element. + +| @{children} = | `Get Elements` | ${XML} | */child | +| `Length Should Be` | ${children} | 3 | | + +== Current element == + +The current element is denoted with a dot (``.``). Normally the current +element is implicit and does not need to be included in the xpath. + +== Parent element == + +The parent element of another element is denoted with two dots (``..``). +Notice that it is not possible to refer to the parent of the current +element. + +| ${elem} = | `Get Element` | ${XML} | */second/.. | +| `Should Be Equal` | ${elem.tag} | third | | + +== Search all sub elements == + +Two forward slashes (``//``) mean that all sub elements, not only the +direct children, are searched. If the search is started from the current +element, an explicit dot is required. + +| @{elements} = | `Get Elements` | ${XML} | .//second | +| `Length Should Be` | ${elements} | 2 | | +| ${b} = | `Get Element` | ${XML} | html//b | +| `Should Be Equal` | ${b.text} | bold | | + +== Predicates == + +Predicates allow selecting elements using also other criteria than tag +names, for example, attributes or position. They are specified after the +normal tag name or path using syntax ``path[predicate]``. The path can have +wildcards and other special syntax explained earlier. What predicates +the standard ElementTree supports is explained in the table below. + +| = Predicate = | = Matches = | = Example = | +| @attrib | Elements with attribute ``attrib``. | second[@id] | +| @attrib="value" | Elements with attribute ``attrib`` having value ``value``. | *[@id="2"] | +| position | Elements at the specified position. Position can be an integer (starting from 1), expression ``last()``, or relative expression like ``last() - 1``. | third/child[1] | +| tag | Elements with a child element named ``tag``. | third/child[grandchild] | + +Predicates can also be stacked like ``path[predicate1][predicate2]``. +A limitation is that possible position predicate must always be first. + += Element attributes = + +All keywords returning elements, such as `Parse XML`, and `Get Element`, +return ElementTree's +[http://docs.python.org/library/xml.etree.elementtree.html#element-objects|Element objects]. +These elements can be used as inputs for other keywords, but they also +contain several useful attributes that can be accessed directly using +the extended variable syntax. + +The attributes that are both useful and convenient to use in the test +data are explained below. Also other attributes, including methods, can +be accessed, but that is typically better to do in custom libraries than +directly in the test data. + +The examples use the same ``${XML}`` structure as the earlier examples. + +== tag == + +The tag of the element. + +| ${root} = | `Parse XML` | ${XML} | +| `Should Be Equal` | ${root.tag} | example | + +== text == + +The text that the element contains or Python ``None`` if the element has no +text. Notice that the text _does not_ contain texts of possible child +elements nor text after or between children. Notice also that in XML +whitespace is significant, so the text contains also possible indentation +and newlines. To get also text of the possible children, optionally +whitespace normalized, use `Get Element Text` keyword. + +| ${1st} = | `Get Element` | ${XML} | first | +| `Should Be Equal` | ${1st.text} | text | | +| ${2nd} = | `Get Element` | ${XML} | second/child | +| `Should Be Equal` | ${2nd.text} | ${NONE} | | +| ${p} = | `Get Element` | ${XML} | html/p | +| `Should Be Equal` | ${p.text} | \n${SPACE*6}Text with${SPACE} | + +== tail == + +The text after the element before the next opening or closing tag. Python +``None`` if the element has no tail. Similarly as with ``text``, also +``tail`` contains possible indentation and newlines. + +| ${b} = | `Get Element` | ${XML} | html/p/b | +| `Should Be Equal` | ${b.tail} | ${SPACE}and${SPACE} | + +== attrib == + +A Python dictionary containing attributes of the element. + +| ${2nd} = | `Get Element` | ${XML} | second | +| `Should Be Equal` | ${2nd.attrib['id']} | 2 | | +| ${3rd} = | `Get Element` | ${XML} | third | +| `Should Be Empty` | ${3rd.attrib} | | | + += Handling XML namespaces = + +ElementTree and lxml handle possible namespaces in XML documents by adding +the namespace URI to tag names in so called Clark Notation. That is +inconvenient especially with xpaths, and by default this library strips +those namespaces away and moves them to ``xmlns`` attribute instead. That +can be avoided by passing ``keep_clark_notation`` argument to `Parse XML` +keyword. Alternatively `Parse XML` supports stripping namespace information +altogether by using ``strip_namespaces`` argument. The pros and cons of +different approaches are discussed in more detail below. + +== How ElementTree handles namespaces == + +If an XML document has namespaces, ElementTree adds namespace information +to tag names in [http://www.jclark.com/xml/xmlns.htm|Clark Notation] +(e.g. ``{http://ns.uri}tag``) and removes original ``xmlns`` attributes. +This is done both with default namespaces and with namespaces with a prefix. +How it works in practice is illustrated by the following example, where +``${NS}`` variable contains this XML document: + +| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +| xmlns="http://www.w3.org/1999/xhtml"> +| <xsl:template match="/"> +| <html></html> +| </xsl:template> +| </xsl:stylesheet> + +| ${root} = | `Parse XML` | ${NS} | keep_clark_notation=yes | +| `Should Be Equal` | ${root.tag} | {http://www.w3.org/1999/XSL/Transform}stylesheet | +| `Element Should Exist` | ${root} | {http://www.w3.org/1999/XSL/Transform}template/{http://www.w3.org/1999/xhtml}html | +| `Should Be Empty` | ${root.attrib} | + +As you can see, including the namespace URI in tag names makes xpaths +really long and complex. + +If you save the XML, ElementTree moves namespace information back to +``xmlns`` attributes. Unfortunately it does not restore the original +prefixes: + +| <ns0:stylesheet xmlns:ns0="http://www.w3.org/1999/XSL/Transform"> +| <ns0:template match="/"> +| <ns1:html xmlns:ns1="http://www.w3.org/1999/xhtml"></ns1:html> +| </ns0:template> +| </ns0:stylesheet> + +The resulting output is semantically same as the original, but mangling +prefixes like this may still not be desirable. Notice also that the actual +output depends slightly on ElementTree version. + +== Default namespace handling == + +Because the way ElementTree handles namespaces makes xpaths so complicated, +this library, by default, strips namespaces from tag names and moves that +information back to ``xmlns`` attributes. How this works in practice is +shown by the example below, where ``${NS}`` variable contains the same XML +document as in the previous example. + +| ${root} = | `Parse XML` | ${NS} | +| `Should Be Equal` | ${root.tag} | stylesheet | +| `Element Should Exist` | ${root} | template/html | +| `Element Attribute Should Be` | ${root} | xmlns | http://www.w3.org/1999/XSL/Transform | +| `Element Attribute Should Be` | ${root} | xmlns | http://www.w3.org/1999/xhtml | xpath=template/html | + +Now that tags do not contain namespace information, xpaths are simple again. + +A minor limitation of this approach is that namespace prefixes are lost. +As a result the saved output is not exactly same as the original one in +this case either: + +| <stylesheet xmlns="http://www.w3.org/1999/XSL/Transform"> +| <template match="/"> +| <html xmlns="http://www.w3.org/1999/xhtml"></html> +| </template> +| </stylesheet> + +Also this output is semantically same as the original. If the original XML +had only default namespaces, the output would also look identical. + +== Namespaces when using lxml == + +This library handles namespaces same way both when `using lxml` and when +not using it. There are, however, differences how lxml internally handles +namespaces compared to the standard ElementTree. The main difference is +that lxml stores information about namespace prefixes and they are thus +preserved if XML is saved. Another visible difference is that lxml includes +namespace information in child elements got with `Get Element` if the +parent element has namespaces. + +== Stripping namespaces altogether == + +Because namespaces often add unnecessary complexity, `Parse XML` supports +stripping them altogether by using ``strip_namespaces=True``. When this +option is enabled, namespaces are not shown anywhere nor are they included +if XML is saved. + +== Attribute namespaces == + +Attributes in XML documents are, by default, in the same namespaces as +the element they belong to. It is possible to use different namespaces +by using prefixes, but this is pretty rare. + +If an attribute has a namespace prefix, ElementTree will replace it with +Clark Notation the same way it handles elements. Because stripping +namespaces from attributes could cause attribute conflicts, this library +does not handle attribute namespaces at all. Thus the following example +works the same way regardless how namespaces are handled. + +| ${root} = | `Parse XML` | <root id="1" ns:id="2" xmlns:ns="http://my.ns"/> | +| `Element Attribute Should Be` | ${root} | id | 1 | +| `Element Attribute Should Be` | ${root} | {http://my.ns}id | 2 | + += Boolean arguments = + +Some keywords accept arguments that are handled as Boolean values true or +false. If such an argument is given as a string, it is considered false if +it is an empty string or equal to ``FALSE``, ``NONE``, ``NO``, ``OFF`` or +``0``, case-insensitively. Other strings are considered true regardless +their value, and other argument types are tested using the same +[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. + +True examples: +| `Parse XML` | ${XML} | keep_clark_notation=True | # Strings are generally true. | +| `Parse XML` | ${XML} | keep_clark_notation=yes | # Same as the above. | +| `Parse XML` | ${XML} | keep_clark_notation=${TRUE} | # Python ``True`` is true. | +| `Parse XML` | ${XML} | keep_clark_notation=${42} | # Numbers other than 0 are true. | + +False examples: +| `Parse XML` | ${XML} | keep_clark_notation=False | # String ``false`` is false. | +| `Parse XML` | ${XML} | keep_clark_notation=no | # Also string ``no`` is false. | +| `Parse XML` | ${XML} | keep_clark_notation=${EMPTY} | # Empty string is false. | +| `Parse XML` | ${XML} | keep_clark_notation=${FALSE} | # Python ``False`` is false. | + +Considering string ``NONE`` false is new in Robot Framework 3.0.3 and +considering also ``OFF`` and ``0`` false is new in Robot Framework 3.1. + +== Pattern matching == + +Some keywords, for example `Elements Should Match`, support so called +[http://en.wikipedia.org/wiki/Glob_(programming)|glob patterns] where: + +| ``*`` | matches any string, even an empty string | +| ``?`` | matches any single character | +| ``[chars]`` | matches one character in the bracket | +| ``[!chars]`` | matches one character not in the bracket | +| ``[a-z]`` | matches one character from the range in the bracket | +| ``[!a-z]`` | matches one character not from the range in the bracket | + +Unlike with glob patterns normally, path separator characters ``/`` and +``\`` and the newline character ``\n`` are matches by the above +wildcards. + +Support for brackets like ``[abc]`` and ``[!a-z]`` is new in +Robot Framework 3.1 + + +use_lxml=False + +Import library with optionally lxml mode enabled. + +By default this library uses Python's standard +[http://docs.python.org/library/xml.etree.elementtree.html|ElementTree] +module for parsing XML. If ``use_lxml`` argument is given a true value +(see `Boolean arguments`), the library will use [http://lxml.de|lxml] +module instead. See `Using lxml` section for benefits provided by lxml. + +Using lxml requires that the lxml module is installed on the system. +If lxml mode is enabled but the module is not installed, this library +will emit a warning and revert back to using the standard ElementTree. + + + + + +source +element +index=None +xpath=. + +Adds a child element to the specified element. + +The element to whom to add the new element is specified using ``source`` +and ``xpath``. They have exactly the same semantics as with `Get Element` +keyword. The resulting XML structure is returned, and if the ``source`` +is an already parsed XML structure, it is also modified in place. + +The ``element`` to add can be specified as a path to an XML file or +as a string containing XML, or it can be an already parsed XML element. +The element is copied before adding so modifying either the original +or the added element has no effect on the other +. +The element is added as the last child by default, but a custom index +can be used to alter the position. Indices start from zero (0 = first +position, 1 = second position, etc.), and negative numbers refer to +positions at the end (-1 = second last position, -2 = third last, etc.). + +Examples using ``${XML}`` structure from `Example`: +| Add Element | ${XML} | <new id="x"><c1/></new> | +| Add Element | ${XML} | <c2/> | xpath=new | +| Add Element | ${XML} | <c3/> | index=1 | xpath=new | +| ${new} = | Get Element | ${XML} | new | +| Elements Should Be Equal | ${new} | <new id="x"><c1/><c3/><c2/></new> | + +Use `Remove Element` or `Remove Elements` to remove elements. + + + + + +source +xpath=. +clear_tail=False + +Clears the contents of the specified element. + +The element to clear is specified using ``source`` and ``xpath``. They +have exactly the same semantics as with `Get Element` keyword. +The resulting XML structure is returned, and if the ``source`` is +an already parsed XML structure, it is also modified in place. + +Clearing the element means removing its text, attributes, and children. +Element's tail text is not removed by default, but that can be changed +by giving ``clear_tail`` a true value (see `Boolean arguments`). See +`Element attributes` section for more information about tail in +general. + +Examples using ``${XML}`` structure from `Example`: +| Clear Element | ${XML} | xpath=first | +| ${first} = | Get Element | ${XML} | xpath=first | +| Elements Should Be Equal | ${first} | <first/> | +| Clear Element | ${XML} | xpath=html/p/b | clear_tail=yes | +| Element Text Should Be | ${XML} | Text with italics. | xpath=html/p | normalize_whitespace=yes | +| Clear Element | ${XML} | +| Elements Should Be Equal | ${XML} | <example/> | + +Use `Remove Element` to remove the whole element. + + + + + +source +xpath=. + +Returns a copy of the specified element. + +The element to copy is specified using ``source`` and ``xpath``. They +have exactly the same semantics as with `Get Element` keyword. + +If the copy or the original element is modified afterwards, the changes +have no effect on the other. + +Examples using ``${XML}`` structure from `Example`: +| ${elem} = | Get Element | ${XML} | xpath=first | +| ${copy1} = | Copy Element | ${elem} | +| ${copy2} = | Copy Element | ${XML} | xpath=first | +| Set Element Text | ${XML} | new text | xpath=first | +| Set Element Attribute | ${copy1} | id | new | +| Elements Should Be Equal | ${elem} | <first id="1">new text</first> | +| Elements Should Be Equal | ${copy1} | <first id="new">text</first> | +| Elements Should Be Equal | ${copy2} | <first id="1">text</first> | + + + + + +source +name +expected +xpath=. +message=None + +Verifies that the specified attribute is ``expected``. + +The element whose attribute is verified is specified using ``source`` +and ``xpath``. They have exactly the same semantics as with +`Get Element` keyword. + +The keyword passes if the attribute ``name`` of the element is equal to +the ``expected`` value, and otherwise it fails. The default error +message can be overridden with the ``message`` argument. + +To test that the element does not have a certain attribute, Python +``None`` (i.e. variable ``${NONE}``) can be used as the expected value. +A cleaner alternative is using `Element Should Not Have Attribute`. + +Examples using ``${XML}`` structure from `Example`: +| Element Attribute Should Be | ${XML} | id | 1 | xpath=first | +| Element Attribute Should Be | ${XML} | id | ${NONE} | | + +See also `Element Attribute Should Match` and `Get Element Attribute`. + + + + + +source +name +pattern +xpath=. +message=None + +Verifies that the specified attribute matches ``expected``. + +This keyword works exactly like `Element Attribute Should Be` except +that the expected value can be given as a pattern that the attribute of +the element must match. + +Pattern matching is similar as matching files in a shell with +``*``, ``?`` and ``[chars]`` acting as wildcards. See the +`Pattern matching` section for more information. + +Examples using ``${XML}`` structure from `Example`: +| Element Attribute Should Match | ${XML} | id | ? | xpath=first | +| Element Attribute Should Match | ${XML} | id | c*d | xpath=third/second | + + + + + +source +xpath=. +message=None + +Verifies that one or more element match the given ``xpath``. + +Arguments ``source`` and ``xpath`` have exactly the same semantics as +with `Get Elements` keyword. Keyword passes if the ``xpath`` matches +one or more elements in the ``source``. The default error message can +be overridden with the ``message`` argument. + +See also `Element Should Not Exist` as well as `Get Element Count` +that this keyword uses internally. + + + + + +source +xpath=. +message=None + +Verifies that no element match the given ``xpath``. + +Arguments ``source`` and ``xpath`` have exactly the same semantics as +with `Get Elements` keyword. Keyword fails if the ``xpath`` matches any +element in the ``source``. The default error message can be overridden +with the ``message`` argument. + +See also `Element Should Exist` as well as `Get Element Count` +that this keyword uses internally. + + + + + +source +name +xpath=. +message=None + +Verifies that the specified element does not have attribute ``name``. + +The element whose attribute is verified is specified using ``source`` +and ``xpath``. They have exactly the same semantics as with +`Get Element` keyword. + +The keyword fails if the specified element has attribute ``name``. The +default error message can be overridden with the ``message`` argument. + +Examples using ``${XML}`` structure from `Example`: +| Element Should Not Have Attribute | ${XML} | id | +| Element Should Not Have Attribute | ${XML} | xxx | xpath=first | + +See also `Get Element Attribute`, `Get Element Attributes`, +`Element Text Should Be` and `Element Text Should Match`. + + + + + +source +expected +xpath=. +normalize_whitespace=False +message=None + +Verifies that the text of the specified element is ``expected``. + +The element whose text is verified is specified using ``source`` and +``xpath``. They have exactly the same semantics as with `Get Element` +keyword. + +The text to verify is got from the specified element using the same +logic as with `Get Element Text`. This includes optional whitespace +normalization using the ``normalize_whitespace`` option. + +The keyword passes if the text of the element is equal to the +``expected`` value, and otherwise it fails. The default error message +can be overridden with the ``message`` argument. Use `Element Text +Should Match` to verify the text against a pattern instead of an exact +value. + +Examples using ``${XML}`` structure from `Example`: +| Element Text Should Be | ${XML} | text | xpath=first | +| Element Text Should Be | ${XML} | ${EMPTY} | xpath=second/child | +| ${paragraph} = | Get Element | ${XML} | xpath=html/p | +| Element Text Should Be | ${paragraph} | Text with bold and italics. | normalize_whitespace=yes | + + + + + +source +pattern +xpath=. +normalize_whitespace=False +message=None + +Verifies that the text of the specified element matches ``expected``. + +This keyword works exactly like `Element Text Should Be` except that +the expected value can be given as a pattern that the text of the +element must match. + +Pattern matching is similar as matching files in a shell with +``*``, ``?`` and ``[chars]`` acting as wildcards. See the +`Pattern matching` section for more information. + +Examples using ``${XML}`` structure from `Example`: +| Element Text Should Match | ${XML} | t??? | xpath=first | +| ${paragraph} = | Get Element | ${XML} | xpath=html/p | +| Element Text Should Match | ${paragraph} | Text with * and *. | normalize_whitespace=yes | + + + + + +source +xpath=. +encoding=None + +Returns the string representation of the specified element. + +The element to convert to a string is specified using ``source`` and +``xpath``. They have exactly the same semantics as with `Get Element` +keyword. + +By default the string is returned as Unicode. If ``encoding`` argument +is given any value, the string is returned as bytes in the specified +encoding. The resulting string never contains the XML declaration. + +See also `Log Element` and `Save XML`. + + + + + +source +expected +exclude_children=False +normalize_whitespace=False + +Verifies that the given ``source`` element is equal to ``expected``. + +Both ``source`` and ``expected`` can be given as a path to an XML file, +as a string containing XML, or as an already parsed XML element +structure. See `introduction` for more information about parsing XML in +general. + +The keyword passes if the ``source`` element and ``expected`` element +are equal. This includes testing the tag names, texts, and attributes +of the elements. By default also child elements are verified the same +way, but this can be disabled by setting ``exclude_children`` to a +true value (see `Boolean arguments`). + +All texts inside the given elements are verified, but possible text +outside them is not. By default texts must match exactly, but setting +``normalize_whitespace`` to a true value makes text verification +independent on newlines, tabs, and the amount of spaces. For more +details about handling text see `Get Element Text` keyword and +discussion about elements' `text` and `tail` attributes in the +`introduction`. + +Examples using ``${XML}`` structure from `Example`: +| ${first} = | Get Element | ${XML} | first | +| Elements Should Be Equal | ${first} | <first id="1">text</first> | +| ${p} = | Get Element | ${XML} | html/p | +| Elements Should Be Equal | ${p} | <p>Text with <b>bold</b> and <i>italics</i>.</p> | normalize_whitespace=yes | +| Elements Should Be Equal | ${p} | <p>Text with</p> | exclude | normalize | + +The last example may look a bit strange because the ``<p>`` element +only has text ``Text with``. The reason is that rest of the text +inside ``<p>`` actually belongs to the child elements. This includes +the ``.`` at the end that is the `tail` text of the ``<i>`` element. + +See also `Elements Should Match`. + + + + + +source +expected +exclude_children=False +normalize_whitespace=False + +Verifies that the given ``source`` element matches ``expected``. + +This keyword works exactly like `Elements Should Be Equal` except that +texts and attribute values in the expected value can be given as +patterns. + +Pattern matching is similar as matching files in a shell with +``*``, ``?`` and ``[chars]`` acting as wildcards. See the +`Pattern matching` section for more information. + +Examples using ``${XML}`` structure from `Example`: +| ${first} = | Get Element | ${XML} | first | +| Elements Should Match | ${first} | <first id="?">*</first> | + +See `Elements Should Be Equal` for more examples. + + + + + +source +expression +context=. + +Evaluates the given xpath expression and returns results. + +The element in which context the expression is executed is specified +using ``source`` and ``context`` arguments. They have exactly the same +semantics as ``source`` and ``xpath`` arguments have with `Get Element` +keyword. + +The xpath expression to evaluate is given as ``expression`` argument. +The result of the evaluation is returned as-is. + +Examples using ``${XML}`` structure from `Example`: +| ${count} = | Evaluate Xpath | ${XML} | count(third/*) | +| Should Be Equal | ${count} | ${3} | +| ${text} = | Evaluate Xpath | ${XML} | string(descendant::second[last()]/@id) | +| Should Be Equal | ${text} | child | +| ${bold} = | Evaluate Xpath | ${XML} | boolean(preceding-sibling::*[1] = 'bold') | context=html/p/i | +| Should Be Equal | ${bold} | ${True} | + +This keyword works only if lxml mode is taken into use when `importing` +the library. + + + + + +source +xpath=. + +Returns the child elements of the specified element as a list. + +The element whose children to return is specified using ``source`` and +``xpath``. They have exactly the same semantics as with `Get Element` +keyword. + +All the direct child elements of the specified element are returned. +If the element has no children, an empty list is returned. + +Examples using ``${XML}`` structure from `Example`: +| ${children} = | Get Child Elements | ${XML} | | +| Length Should Be | ${children} | 4 | | +| ${children} = | Get Child Elements | ${XML} | xpath=first | +| Should Be Empty | ${children} | | | + + + + + +source +xpath=. + +Returns an element in the ``source`` matching the ``xpath``. + +The ``source`` can be a path to an XML file, a string containing XML, or +an already parsed XML element. The ``xpath`` specifies which element to +find. See the `introduction` for more details about both the possible +sources and the supported xpath syntax. + +The keyword fails if more, or less, than one element matches the +``xpath``. Use `Get Elements` if you want all matching elements to be +returned. + +Examples using ``${XML}`` structure from `Example`: +| ${element} = | Get Element | ${XML} | second | +| ${child} = | Get Element | ${element} | child | + +`Parse XML` is recommended for parsing XML when the whole structure +is needed. It must be used if there is a need to configure how XML +namespaces are handled. + +Many other keywords use this keyword internally, and keywords modifying +XML are typically documented to both to modify the given source and +to return it. Modifying the source does not apply if the source is +given as a string. The XML structure parsed based on the string and +then modified is nevertheless returned. + + + + + +source +name +xpath=. +default=None + +Returns the named attribute of the specified element. + +The element whose attribute to return is specified using ``source`` and +``xpath``. They have exactly the same semantics as with `Get Element` +keyword. + +The value of the attribute ``name`` of the specified element is returned. +If the element does not have such element, the ``default`` value is +returned instead. + +Examples using ``${XML}`` structure from `Example`: +| ${attribute} = | Get Element Attribute | ${XML} | id | xpath=first | +| Should Be Equal | ${attribute} | 1 | | | +| ${attribute} = | Get Element Attribute | ${XML} | xx | xpath=first | default=value | +| Should Be Equal | ${attribute} | value | | | + +See also `Get Element Attributes`, `Element Attribute Should Be`, +`Element Attribute Should Match` and `Element Should Not Have Attribute`. + + + + + +source +xpath=. + +Returns all attributes of the specified element. + +The element whose attributes to return is specified using ``source`` and +``xpath``. They have exactly the same semantics as with `Get Element` +keyword. + +Attributes are returned as a Python dictionary. It is a copy of the +original attributes so modifying it has no effect on the XML structure. + +Examples using ``${XML}`` structure from `Example`: +| ${attributes} = | Get Element Attributes | ${XML} | first | +| Dictionary Should Contain Key | ${attributes} | id | | +| ${attributes} = | Get Element Attributes | ${XML} | third | +| Should Be Empty | ${attributes} | | | + +Use `Get Element Attribute` to get the value of a single attribute. + + + + + +source +xpath=. + +Returns and logs how many elements the given ``xpath`` matches. + +Arguments ``source`` and ``xpath`` have exactly the same semantics as +with `Get Elements` keyword that this keyword uses internally. + +See also `Element Should Exist` and `Element Should Not Exist`. + + + + + +source +xpath=. +normalize_whitespace=False + +Returns all text of the element, possibly whitespace normalized. + +The element whose text to return is specified using ``source`` and +``xpath``. They have exactly the same semantics as with `Get Element` +keyword. + +This keyword returns all the text of the specified element, including +all the text its children and grandchildren contain. If the element +has no text, an empty string is returned. The returned text is thus not +always the same as the `text` attribute of the element. + +By default all whitespace, including newlines and indentation, inside +the element is returned as-is. If ``normalize_whitespace`` is given +a true value (see `Boolean arguments`), then leading and trailing +whitespace is stripped, newlines and tabs converted to spaces, and +multiple spaces collapsed into one. This is especially useful when +dealing with HTML data. + +Examples using ``${XML}`` structure from `Example`: +| ${text} = | Get Element Text | ${XML} | first | +| Should Be Equal | ${text} | text | | +| ${text} = | Get Element Text | ${XML} | second/child | +| Should Be Empty | ${text} | | | +| ${paragraph} = | Get Element | ${XML} | html/p | +| ${text} = | Get Element Text | ${paragraph} | normalize_whitespace=yes | +| Should Be Equal | ${text} | Text with bold and italics. | + +See also `Get Elements Texts`, `Element Text Should Be` and +`Element Text Should Match`. + + + + + +source +xpath + +Returns a list of elements in the ``source`` matching the ``xpath``. + +The ``source`` can be a path to an XML file, a string containing XML, or +an already parsed XML element. The ``xpath`` specifies which element to +find. See the `introduction` for more details. + +Elements matching the ``xpath`` are returned as a list. If no elements +match, an empty list is returned. Use `Get Element` if you want to get +exactly one match. + +Examples using ``${XML}`` structure from `Example`: +| ${children} = | Get Elements | ${XML} | third/child | +| Length Should Be | ${children} | 2 | | +| ${children} = | Get Elements | ${XML} | first/child | +| Should Be Empty | ${children} | | | + + + + + +source +xpath +normalize_whitespace=False + +Returns text of all elements matching ``xpath`` as a list. + +The elements whose text to return is specified using ``source`` and +``xpath``. They have exactly the same semantics as with `Get Elements` +keyword. + +The text of the matched elements is returned using the same logic +as with `Get Element Text`. This includes optional whitespace +normalization using the ``normalize_whitespace`` option. + +Examples using ``${XML}`` structure from `Example`: +| @{texts} = | Get Elements Texts | ${XML} | third/child | +| Length Should Be | ${texts} | 2 | | +| Should Be Equal | @{texts}[0] | more text | | +| Should Be Equal | @{texts}[1] | ${EMPTY} | | + + + + + +source +level=INFO +xpath=. + +Logs the string representation of the specified element. + +The element specified with ``source`` and ``xpath`` is first converted +into a string using `Element To String` keyword internally. The +resulting string is then logged using the given ``level``. + +The logged string is also returned. + + + + + +source +keep_clark_notation=False +strip_namespaces=False + +Parses the given XML file or string into an element structure. + +The ``source`` can either be a path to an XML file or a string +containing XML. In both cases the XML is parsed into ElementTree +[http://docs.python.org/library/xml.etree.elementtree.html#element-objects|element structure] +and the root element is returned. Possible comments and processing +instructions in the source XML are removed. + +As discussed in `Handling XML namespaces` section, this keyword, by +default, removes namespace information ElementTree has added to tag +names and moves it into ``xmlns`` attributes. This typically eases +handling XML documents with namespaces considerably. If you do not +want that to happen, or want to avoid the small overhead of going +through the element structure when your XML does not have namespaces, +you can disable this feature by giving ``keep_clark_notation`` argument +a true value (see `Boolean arguments`). + +If you want to strip namespace information altogether so that it is +not included even if XML is saved, you can give a true value to +``strip_namespaces`` argument. This functionality is new in Robot +Framework 3.0.2. + +Examples: +| ${root} = | Parse XML | <root><child/></root> | +| ${xml} = | Parse XML | ${CURDIR}/test.xml | keep_clark_notation=True | +| ${xml} = | Parse XML | ${CURDIR}/test.xml | strip_namespaces=True | + +Use `Get Element` keyword if you want to get a certain element and not +the whole structure. See `Parsing XML` section for more details and +examples. + + + + + +source +xpath= +remove_tail=False + +Removes the element matching ``xpath`` from the ``source`` structure. + +The element to remove from the ``source`` is specified with ``xpath`` +using the same semantics as with `Get Element` keyword. The resulting +XML structure is returned, and if the ``source`` is an already parsed +XML structure, it is also modified in place. + +The keyword fails if ``xpath`` does not match exactly one element. +Use `Remove Elements` to remove all matched elements. + +Element's tail text is not removed by default, but that can be changed +by giving ``remove_tail`` a true value (see `Boolean arguments`). See +`Element attributes` section for more information about `tail` in +general. + +Examples using ``${XML}`` structure from `Example`: +| Remove Element | ${XML} | xpath=second | +| Element Should Not Exist | ${XML} | xpath=second | +| Remove Element | ${XML} | xpath=html/p/b | remove_tail=yes | +| Element Text Should Be | ${XML} | Text with italics. | xpath=html/p | normalize_whitespace=yes | + + + + + +source +name +xpath=. + +Removes attribute ``name`` from the specified element. + +The element whose attribute to remove is specified using ``source`` and +``xpath``. They have exactly the same semantics as with `Get Element` +keyword. The resulting XML structure is returned, and if the ``source`` +is an already parsed XML structure, it is also modified in place. + +It is not a failure to remove a non-existing attribute. Use `Remove +Element Attributes` to remove all attributes and `Set Element Attribute` +to set them. + +Examples using ``${XML}`` structure from `Example`: +| Remove Element Attribute | ${XML} | id | xpath=first | +| Element Should Not Have Attribute | ${XML} | id | xpath=first | + +Can only remove an attribute from a single element. Use `Remove Elements +Attribute` to remove an attribute of multiple elements in one call. + + + + + +source +xpath=. + +Removes all attributes from the specified element. + +The element whose attributes to remove is specified using ``source`` and +``xpath``. They have exactly the same semantics as with `Get Element` +keyword. The resulting XML structure is returned, and if the ``source`` +is an already parsed XML structure, it is also modified in place. + +Use `Remove Element Attribute` to remove a single attribute and +`Set Element Attribute` to set them. + +Examples using ``${XML}`` structure from `Example`: +| Remove Element Attributes | ${XML} | xpath=first | +| Element Should Not Have Attribute | ${XML} | id | xpath=first | + +Can only remove attributes from a single element. Use `Remove Elements +Attributes` to remove all attributes of multiple elements in one call. + + + + + +source +xpath= +remove_tail=False + +Removes all elements matching ``xpath`` from the ``source`` structure. + +The elements to remove from the ``source`` are specified with ``xpath`` +using the same semantics as with `Get Elements` keyword. The resulting +XML structure is returned, and if the ``source`` is an already parsed +XML structure, it is also modified in place. + +It is not a failure if ``xpath`` matches no elements. Use `Remove +Element` to remove exactly one element. + +Element's tail text is not removed by default, but that can be changed +by using ``remove_tail`` argument similarly as with `Remove Element`. + +Examples using ``${XML}`` structure from `Example`: +| Remove Elements | ${XML} | xpath=*/child | +| Element Should Not Exist | ${XML} | xpath=second/child | +| Element Should Not Exist | ${XML} | xpath=third/child | + + + + + +source +name +xpath=. + +Removes attribute ``name`` from the specified elements. + +Like `Remove Element Attribute` but removes the attribute of all +elements matching the given ``xpath``. + + + + + +source +xpath=. + +Removes all attributes from the specified elements. + +Like `Remove Element Attributes` but removes all attributes of all +elements matching the given ``xpath``. + + + + + +source +path +encoding=UTF-8 + +Saves the given element to the specified file. + +The element to save is specified with ``source`` using the same +semantics as with `Get Element` keyword. + +The file where the element is saved is denoted with ``path`` and the +encoding to use with ``encoding``. The resulting file always contains +the XML declaration. + +The resulting XML file may not be exactly the same as the original: +- Comments and processing instructions are always stripped. +- Possible doctype and namespace prefixes are only preserved when + `using lxml`. +- Other small differences are possible depending on the ElementTree + or lxml version. + +Use `Element To String` if you just need a string representation of +the element. + + + + + +source +name +value +xpath=. + +Sets attribute ``name`` of the specified element to ``value``. + +The element whose attribute to set is specified using ``source`` and +``xpath``. They have exactly the same semantics as with `Get Element` +keyword. The resulting XML structure is returned, and if the ``source`` +is an already parsed XML structure, it is also modified in place. + +It is possible to both set new attributes and to overwrite existing. +Use `Remove Element Attribute` or `Remove Element Attributes` for +removing them. + +Examples using ``${XML}`` structure from `Example`: +| Set Element Attribute | ${XML} | attr | value | +| Element Attribute Should Be | ${XML} | attr | value | +| Set Element Attribute | ${XML} | id | new | xpath=first | +| Element Attribute Should Be | ${XML} | id | new | xpath=first | + +Can only set an attribute of a single element. Use `Set Elements +Attribute` to set an attribute of multiple elements in one call. + + + + + +source +tag +xpath=. + +Sets the tag of the specified element. + +The element whose tag to set is specified using ``source`` and +``xpath``. They have exactly the same semantics as with `Get Element` +keyword. The resulting XML structure is returned, and if the ``source`` +is an already parsed XML structure, it is also modified in place. + +Examples using ``${XML}`` structure from `Example`: +| Set Element Tag | ${XML} | newTag | +| Should Be Equal | ${XML.tag} | newTag | +| Set Element Tag | ${XML} | xxx | xpath=second/child | +| Element Should Exist | ${XML} | second/xxx | +| Element Should Not Exist | ${XML} | second/child | + +Can only set the tag of a single element. Use `Set Elements Tag` to set +the tag of multiple elements in one call. + + + + + +source +text=None +tail=None +xpath=. + +Sets text and/or tail text of the specified element. + +The element whose text to set is specified using ``source`` and +``xpath``. They have exactly the same semantics as with `Get Element` +keyword. The resulting XML structure is returned, and if the ``source`` +is an already parsed XML structure, it is also modified in place. + +Element's text and tail text are changed only if new ``text`` and/or +``tail`` values are given. See `Element attributes` section for more +information about `text` and `tail` in general. + +Examples using ``${XML}`` structure from `Example`: +| Set Element Text | ${XML} | new text | xpath=first | +| Element Text Should Be | ${XML} | new text | xpath=first | +| Set Element Text | ${XML} | tail=& | xpath=html/p/b | +| Element Text Should Be | ${XML} | Text with bold&italics. | xpath=html/p | normalize_whitespace=yes | +| Set Element Text | ${XML} | slanted | !! | xpath=html/p/i | +| Element Text Should Be | ${XML} | Text with bold&slanted!! | xpath=html/p | normalize_whitespace=yes | + +Can only set the text/tail of a single element. Use `Set Elements Text` +to set the text/tail of multiple elements in one call. + + + + + +source +name +value +xpath=. + +Sets attribute ``name`` of the specified elements to ``value``. + +Like `Set Element Attribute` but sets the attribute of all elements +matching the given ``xpath``. + + + + + +source +tag +xpath=. + +Sets the tag of the specified elements. + +Like `Set Element Tag` but sets the tag of all elements matching +the given ``xpath``. + + + + + +source +text=None +tail=None +xpath=. + +Sets text and/or tail text of the specified elements. + +Like `Set Element Text` but sets the text or tail of all elements +matching the given ``xpath``. + + + + -- GitLab From 4dc140a19b0519f88accb9e140f9057a06336c94 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 28 Jul 2020 10:27:11 +0500 Subject: [PATCH 429/580] Added Test Cases for IndiviualPmJob.robot --- .../IndividualPmJob.robot | 204 ++++++++++++++++++ .../environment/IndividualPmJob.txt | 6 + libspecs/Easter.libspec | 2 +- libspecs/Reserved.libspec | 2 +- 4 files changed, 212 insertions(+), 2 deletions(-) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot create mode 100644 SOL009/NFVMANOPerformanceManagement-API/environment/IndividualPmJob.txt diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot new file mode 100644 index 000000000..0d4415b42 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot @@ -0,0 +1,204 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library JSONLibrary +Resource environment/IndividualPmJob.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false + +*** Test Cases *** +GET individual NFV-MANO Performance Job + [Documentation] Test ID: 8.3.2.2.1 + ... Test title: Get individual NFV-MANO Performance Job + ... Test objective: The objective is to test the retrieval of an individual performance monitoring job and perform a JSON schema and content validation of the collected job data structure + ... Pre-conditions: A NFV-MANO instance is instantiated. + ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET individual NFV-MANO Performance Job + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJob + Check HTTP Response Body Pm Job Identifier matches the requested Pm Job + +GET individual NFV-MANO Performance Job with invalid resource identifier + [Documentation] Test ID: 8.3.2.2.2 + ... Test title: Get individual NFV-MANO Performance Job with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of an individual performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET individual NFV-MANO Performance Job with invalid resource identifier + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +DELETE Individual NFV-MANO Performance Job + [Documentation] Test ID: 8.3.2.2.3 + ... Test title: Delete Individual NFV-MANO Performance Job + ... Test objective: The objective is to test the deletion of an individual performance monitoring job + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO Performance Job is no more available. + Send Delete request for individual NFV-MANO Performance Job + Check HTTP Response Status Code Is 204 + Check Postcondition NFV-MANO Pm Job is Deleted + +DELETE Individual NFV-MANO Performance Job with invalid resource identifier + [Documentation] Test ID: 8.3.2.2.4 + ... Test title: Delete individual NFV-MANO Performance Job with invalid resource identifier + ... Test objective: The objective is to test that the deletion of an individual NFV-MANO performance monitoring job fails when using an invalid resource identifier + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for individual NFV-MANO Performance Job with invalid resource identifier + Check HTTP Response Status Code Is 404 + +POST Individual NFV-MANO Performance Job - Method not implemented + [Documentation] Test ID: 8.3.2.2.5 + ... Test title: POST Individual NFV-MANO Performance Job - method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO Performance Monitoring Job + ... Pre-conditions: A NFV-MANO instance is instantiated + ... Reference: clause 6.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO Performance Job is not created on the NFV-MANO + Send Post request for individual NFV-MANO Performance Job + Check HTTP Response Status Code Is 405 + Check Postcondition NFV-MANO Performance Job is not Created + +PUT Individual NFV-MANO Performance Job - Method not implemented + [Documentation] Test ID: 8.3.2.2.6 + ... Test title: PUT Individual NFV-MANO Performance Job - method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an existing NFV-MANO Performance Monitoring Job + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO Performance Job is not modified by the operation + Send Put request for individual NFV-MANO Performance Job + Check HTTP Response Status Code Is 405 + Check Postcondition NFV-MANO Performance Job is Unmodified (Implicit) + +PATCH Individual NFV-MANO Performance Job - Method not implemented + [Documentation] Test ID: 8.3.2.2.7 + ... Test title: PATCH Individual NFV-MANO Performance Job - method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new NFV-MANO Performance Monitoring Job + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO Performance Job is not modified by the operation + Send Patch request for individual NFV-MANO Performance Job + Check HTTP Response Status Code Is 405 + Check Postcondition NFV-MANO Performance Job is Unmodified (Implicit) + +*** Keywords *** +GET individual NFV-MANO Performance Job + Log Trying to get a Pm Job + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET individual NFV-MANO Performance Job with invalid resource identifier + Log Trying to perform a negative get, using erroneous PM Job identifier + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for individual NFV-MANO Performance Job + Log Trying to delete an existing PM Job + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for individual NFV-MANO Performance Job with invalid resource identifier + Log Trying to perform a negative delete, using erroneous PM Job identifier + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Post request for individual NFV-MANO Performance Job + 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}/pm_jobs/${newPmJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Put request for individual NFV-MANO Performance Job + 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}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch request for individual NFV-MANO Performance Job + 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}/pm_jobs/${pmJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition NFV-MANO Performance Job is not Created + Log Trying to get a new Pm Job + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 404 + +Check Postcondition NFV-MANO Performance Job is Unmodified (Implicit) + Log Check Postcondition NFV-MANO PM job is not modified + GET individual NFV-MANO Performance Job + Log Check Response matches original NFV-MANO Pm Job + ${pmJob}= evaluate json.loads('''${response['body']}''') json + Should Be Equal ${origresponse['body']['id']} ${pmJob.id} + Should Be Equal ${origresponse['body']['criteria']} ${pmJob.criteria} + Should Be Equal ${origresponse['body']['_links']} ${pmJob._links} + +Check Postcondition NFV-MANO Pm Job is Deleted + Log Check Postcondition + GET individual NFV-MANO Performance Job + Check HTTP Response Status Code Is 404 + +Check HTTP Response Body Pm Job Identifier matches the requested Pm Job + Log Going to validate Pm Job info retrieved + Should Be Equal ${response['body']['id']} ${pmJobId} + Log Pm Job identifier as expected + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + ${status}= Convert To Integer ${expected_status} + Should Be Equal ${response['status']} ${status} + Log Status code validated + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + Should Contain ${response['headers']['Content-Type']} application/json + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/IndividualPmJob.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/IndividualPmJob.txt new file mode 100644 index 000000000..b3616b30f --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/IndividualPmJob.txt @@ -0,0 +1,6 @@ +*** Variables *** +${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e +${erroneousPmJobId} erroneousPmJobId +${newPmJobId} newPmJobId +${response}= httpresponse +${OrigResponse}= httpresponse \ No newline at end of file diff --git a/libspecs/Easter.libspec b/libspecs/Easter.libspec index 90df83ed3..7df17c107 100644 --- a/libspecs/Easter.libspec +++ b/libspecs/Easter.libspec @@ -1,5 +1,5 @@ - + global yes diff --git a/libspecs/Reserved.libspec b/libspecs/Reserved.libspec index b093decf0..1ca259b8d 100644 --- a/libspecs/Reserved.libspec +++ b/libspecs/Reserved.libspec @@ -1,5 +1,5 @@ - + global yes -- GitLab From c6ef32568472a16a7484a403251714c5f24fbc2b Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 28 Jul 2020 12:01:53 +0500 Subject: [PATCH 430/580] Added Test Cases for IndiviualReport.robot --- .../IndividualReport.robot | 174 ++++++++++++++++++ .../environment/reports.txt | 7 + 2 files changed, 181 insertions(+) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot create mode 100644 SOL009/NFVMANOPerformanceManagement-API/environment/reports.txt diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot new file mode 100644 index 000000000..d0c7d0234 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot @@ -0,0 +1,174 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Resource environment/reports.txt +Library JSONLibrary +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false + +*** Test Cases *** +Get Individual Performance Report + [Documentation] Test ID: 8.3.2.3.1 + ... Test title: Get Individual Performance Report + ... Test objective: The objective is to test the retrieval of an individual performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. + ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Performance Report + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PerformanceReport + +Get Individual Performance Report with invalid resource endpoint + [Documentation] Test ID: 8.3.2.3.2 + ... Test title: Get Individual Performance Report with invalid resource endpoint + ... Test objective: The objective is to test that the retrieval of an individual NFV-MANO performance report associated to a monitoring job fails when using an invalid resource endpoint. + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. + ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Performance Report with invalid resource endpoint + Check HTTP Response Status Code Is 404 + +POST Individual Performance Report - Method not implemented + [Documentation] Test ID: 8.3.2.3.3 + ... Test title: POST Individual Performance Report - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO performance report within a monitoring job. + ... Pre-conditions: A NFV-MANO instance is instantiated. + ... Reference: clause 6.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO performance report is not created. + Send Post request for Individual Performance Report + Check HTTP Response Status Code Is 405 + Check Postcondition NFV-MANO Individual Performance Report is not Created + +PUT Individual Performance Report - Method not implemented + [Documentation] Test ID: 8.3.2.3.4 + ... Test title: PUT Individual Performance Report - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an existing NFV-MANO performance report within a monitoring job. + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. + ... Reference: clause 6.5.5.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO performance report is not modified by the operation + Send Put request for Individual Performance Report + Check HTTP Response Status Code Is 405 + Check Postcondition NFV-MANO Individual Performance Report is Unmodified (Implicit) + +PATCH Individual Performance Report - Method not implemented + [Documentation] Test ID: 8.3.2.3.5 + ... Test title: PATCH Individual Performance Report - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NFV-MANO performance report within a monitoring job. + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. + ... Reference: clause 6.5.5.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO performance report is not modified by the operation + Send Patch request for Individual Performance Report + Check HTTP Response Status Code Is 405 + Check Postcondition NFV-MANO Individual Performance Report is Unmodified (Implicit) + +DELETE Individual Performance Report - Method not implemented + [Documentation] Test ID: 8.3.2.3.6 + ... Test title: DELETE Individual Performance Report - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing NFV-MANO performance report within a monitoring job + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job in the NFV-MANOM. + ... Reference: clause 6.5.5.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANOM + ... Applicability: none + ... Post-Conditions: The NFV-MANO performance report is not deleted by the operation + Send Delete request for Individual Performance Report + Check HTTP Response Status Code Is 405 + Check Postcondition NFV-MANO Individual Performance Report Exists + +*** Keywords *** +Get Individual Performance Report + Log Trying to get a performance report present in the NFV-MANOM + Set Headers {"Accept": "${ACCEPT_JSON}"} + 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} + +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}"} + 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}"} + 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}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch request for Individual Performance Report + Log Trying to update performance report + 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} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for Individual Performance Report + Log Trying to delete performance report + 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} + +Check Postcondition NFV-MANO Individual Performance Report Exists + Log Checking that report still exists + Get Individual Performance Report + +Check Postcondition NFV-MANO Individual Performance Report is not Created + Log Trying to get a new report + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${newReportId} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 404 + +Check Postcondition NFV-MANO Individual Performance Report is Unmodified (Implicit) + Log Check Postcondition NFV-MANO PM job is not modified + Get Individual Performance Report + Log Check Response matches original NFV-MANO report + ${report}= evaluate json.loads('''${response['body']}''') json + Should Be Equal ${origResponse['body']['entries'][0]['objectInstanceId']} ${report['entries'][0]['objectInstanceId']} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + ${status}= Convert To Integer ${expected_status} + Should Be Equal ${response['status']} ${status} + Log Status code validated + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + Should Contain ${response['headers']['Content-Type']} application/json + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK + diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/reports.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/reports.txt new file mode 100644 index 000000000..6ac5f7c0b --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/reports.txt @@ -0,0 +1,7 @@ +*** Variables *** +${pmJobId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 +${erroneousReportId} erroneousReportId +${newReportId} newReportId +${response}= httpresponse +${OrigResponse}= httpresponse -- GitLab From 1c9dc67081a10212afdcc41e7ea670ca0a49fa71 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 28 Jul 2020 12:09:13 +0500 Subject: [PATCH 431/580] Added Schema file PerformanceReport --- .../schemas/PerformanceReport.schema.json | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/schemas/PerformanceReport.schema.json diff --git a/SOL009/NFVMANOPerformanceManagement-API/schemas/PerformanceReport.schema.json b/SOL009/NFVMANOPerformanceManagement-API/schemas/PerformanceReport.schema.json new file mode 100644 index 000000000..9ca35fcfa --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/schemas/PerformanceReport.schema.json @@ -0,0 +1,92 @@ +{ + "description": "This type defines the format of a performance report provided by the NFV-MANO functional entity to the API consumer as a result of collecting performance information as part of a PM job. \n", + "type": "object", + "properties": { + "entries": { + "description": "List of performance information entries. Each performance report entry is for a given metric of a given object (i.e. measured object instance) corresponding to the related measured object types, but can include multiple collected values.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "objectType": { + "description": "Type of measured object. The applicable measured object type for a measurement is defined in clause 8.2 of ETSI GS NFV-IFA 031.\n", + "type": "string" + }, + "objectInstanceId": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + }, + "subObjectInstanceId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + }, + "performanceMetric": { + "description": "Name of the metric collected. This attribute shall contain the related \"Measurement Name\" value as defined in clause 8.4 of ETSI GS NFV-IFA 031.\n", + "type": "string" + }, + "performanceValues": { + "description": "List of performance values with associated timestamp.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "value": { + "description": "Value of the metric collected. The type of this attribute shall correspond to the related \"Measurement Unit\" as defined in clause 8.4 of ETSI GS NFV-IFA 031.\n" + }, + "context": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + }, + "required": [ + "timeStamp", + "value" + ] + }, + "minItems": 1 + } + }, + "required": [ + "objectType", + "objectInstanceId", + "performanceMetric", + "performanceValues" + ] + }, + "minItems": 1 + } + }, + "required": [ + "entries" + ] + } \ No newline at end of file -- GitLab From 78c05037d316d59c2a2b1d93f77c07cdc4123335 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 28 Jul 2020 19:24:49 +0500 Subject: [PATCH 432/580] Added Test Cases for Thresholds.robot --- .../Thresholds.robot | 229 ++++++++++++++++++ .../environment/thresholds.txt | 4 + .../jsons/CreateThresholdRequest.json | 13 + 3 files changed, 246 insertions(+) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot create mode 100644 SOL009/NFVMANOPerformanceManagement-API/environment/thresholds.txt create mode 100644 SOL009/NFVMANOPerformanceManagement-API/jsons/CreateThresholdRequest.json diff --git a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot new file mode 100644 index 000000000..815bad6c4 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot @@ -0,0 +1,229 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library JSONLibrary +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Resource environment/thresholds.txt +Library OperatingSystem + +*** Test Cases *** +GET All Performance Thresholds + [Documentation] Test ID: 8.3.2.4.1 + ... Test title: GET All Performance Thresholds + ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance thresholds and perform a JSON schema validation of the collected thresholds data structure. + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET all Performance Thresholds + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Thresholds + +GET Performance Thresholds with attribute-based filter + [Documentation] Test ID: 8.3.2.4.2 + ... Test title: GET Performance Thresholds with attribute-based filter + ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Performance Thresholds with attribute-based filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Thresholds + Check HTTP Response Body Thresholds match the requested attribute-based filter + +GET Performance Threshold with Paged Response + [Documentation] Test ID: 8.3.2.4.3 + ... Test title: GET Performance Threshold with Paged Response + ... Test objective: The objective is to query information about NFV-MANO Performance Thresholds to get Paged Response. + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: + GET all Performance Thresholds + Check HTTP Response Status Code Is 200 + Check LINK in Header + +GET Performance Thresholds - Invalid attribute-based filter + [Documentation] Test ID: 8.3.2.4.4 + ... Test title: GET Performance Thresholds - Invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of NFV-MANO performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Performance Thresholds with invalid attribute-based filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Performance Threshold - Bad Request Response too Big + [Documentation] Test ID: 8.3.2.4.5 + ... Test title: GET Performance Threshold - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of NFV-MANO performance thresholds fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_VNFM + ... Applicability: + ... Post-Conditions: + GET all Performance Thresholds + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +Create new Performance Threshold + [Documentation] Test ID: 8.3.2.4.6 + ... Test title: Create new Performance Threshold + ... Test objective: The objective is to test the creation of a new NFV-MANO performance threshold and perform the JSON schema validation of the returned threshold data structure. + ... Pre-conditions: A NFV-MANO instance is instantiated. + ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO Performance Threshold is successfully created on the NFV-MANO + Send Post Request Create new Performance Threshold + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is Threshold + Check HTTP Response Header Contains Location + Check Postcondition Threshold Exists + +PUT Performance Thresholds - Method not implemented + [Documentation] Test ID: 8.3.2.4.6 + ... Test title: PUT Performance Thresholds - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Thresholds + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. + ... Reference: clause 6.5.6.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send PUT Request for all Performance Thresholds + Check HTTP Response Status Code Is 405 + +PATCH Performance Thresholds - Method not implemented + [Documentation] Test ID: 8.3.2.4.7 + ... Test title: PATCH Performance Thresholds - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify NFV-MANO Performance Thresholds + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. + ... Reference: clause 6.5.6.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Request for all Performance Thresholds + Check HTTP Response Status Code Is 405 + +DELETE Performance Thresholds - Method not implemented + [Documentation] Test ID: 8.3.2.4.8 + ... Test title: DELETE Performance Thresholds - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Thresholds + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. + ... Reference: clause 6.5.6.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO performance thresholds are not deleted by the failed operation + Send DELETE Request for all Performance Thresholds + Check HTTP Response Status Code Is 405 + Check Postcondition Thresholds Exist + +*** Keywords *** +GET all Performance Thresholds + Log Trying to get all thresholds present in the NFV-MANO + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Performance Thresholds with attribute-based filter + Log Trying to get thresholds present in the NFV-MANO with filter + Set Headers {"Accept": "${ACCEPT_JSON}"} + 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} + +GET Performance Thresholds with invalid attribute-based filter + Log Trying to get thresholds present in the NFV-MANO with invalid filter + Set Headers {"Accept": "${ACCEPT_JSON}"} + 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} + +Send Post Request Create new Performance Threshold + Log Creating a new THreshold + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + ${request}= Get File jsons/CreateThresholdRequest.json + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${request} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PUT Request for all Performance Thresholds + Log PUT THresholds + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PATCH Request for all Performance Thresholds + Log PUT THresholds + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send DELETE Request for all Performance Thresholds + Log DELETE THresholds + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition Thresholds Exist + Log Checking that Thresholds still exists + GET all Performance Thresholds + +Check Postcondition Threshold Exists + Log Checking that Threshold exists + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${response['body']['id']} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Threshold + +Check HTTP Response Body Thresholds match the requested attribute-based filter + Log Checking that attribute-based filter is matched + #todo + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + ${status}= Convert To Integer ${expected_status} + Should Be Equal ${response['status']} ${status} + Log Status code validated + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + Should Contain ${response['headers']['Content-Type']} application/json + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK + +Check LINK in Header + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + + + diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/thresholds.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/thresholds.txt new file mode 100644 index 000000000..a2b025eef --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/thresholds.txt @@ -0,0 +1,4 @@ +*** Variables *** +${FILTER_OK} objectInstanceId=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${FILTER_KO} criterias=erroneousFilter +${response}= httpresponse \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/jsons/CreateThresholdRequest.json b/SOL009/NFVMANOPerformanceManagement-API/jsons/CreateThresholdRequest.json new file mode 100644 index 000000000..3bcd017e9 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/jsons/CreateThresholdRequest.json @@ -0,0 +1,13 @@ +{ + "objectType":"", + "objectInstanceIds" : "", + "criteria" : { + "performanceMetric": "cpu_util", + "thresholdType": "SIMPLE", + "simpleThresholdDetails": { + "thresholdValue": 10, + "hysteresis": 50 + } + + } +} \ No newline at end of file -- GitLab From 65c68d067d36f7c69a1e161972ca9f95d14db7f1 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 29 Jul 2020 09:15:22 +0500 Subject: [PATCH 433/580] Schemas Added --- .../schemas/Threshold.schema.json | 108 +++++++++++++++++ .../schemas/Thresholds.schema.json | 111 ++++++++++++++++++ .../schemas/criteria.schema.json | 34 ++++++ .../schemas/links.schema.json | 35 ++++++ 4 files changed, 288 insertions(+) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/schemas/Threshold.schema.json create mode 100644 SOL009/NFVMANOPerformanceManagement-API/schemas/Thresholds.schema.json create mode 100644 SOL009/NFVMANOPerformanceManagement-API/schemas/criteria.schema.json create mode 100644 SOL009/NFVMANOPerformanceManagement-API/schemas/links.schema.json diff --git a/SOL009/NFVMANOPerformanceManagement-API/schemas/Threshold.schema.json b/SOL009/NFVMANOPerformanceManagement-API/schemas/Threshold.schema.json new file mode 100644 index 000000000..024546173 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/schemas/Threshold.schema.json @@ -0,0 +1,108 @@ +{ + "description": "", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectType": { + "description": "Type of measured object. The applicable measured object type for a measurement is defined in clause 8.2 of ETSI GS NFV-IFA 031.", + "type": "string" + }, + "objectInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subjObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance associated with this threshold. May be present if a sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the related measured object type. If this attribute is absent and a sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the related measured object type, thresholds are set for all sub-object instances of the measured object instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "criteria": { + "description": "This type represents criteria that define a threshold.\n", + "type": "object", + "properties": { + "performanceMetric": { + "description": "Defines the performance metric associated with the threshold. This attribute’s value shall contain the related \"Measurement Name\" values as defined in clause 8.4 of ETSI GS NFV-IFA 031 \n", + "type": "string" + }, + "thresholdType": { + "description": "Type of threshold. This attribute determines which other attributes are present in the data structure. Permitted values:\n - SIMPLE: Single-valued static threshold\n\nIn the present document, simple thresholds are defined. The definition of additional threshold types is left for future specification.\n", + "type": "string", + "enum": [ + "SIMPLE" + ] + }, + "simpleThresholdDetails": { + "description": "Details of a simple threshold. Shall be present if thresholdType=\"SIMPLE\".\n", + "type": "object", + "properties": { + "thresholdValue": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hysteresis": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "required": [ + "thresholdValue", + "hysteresis" + ] + } + }, + "required": [ + "performanceMetric", + "thresholdType" + ] + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "object": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + }, + "required": [ + "self" + ] + } + }, + "required": [ + "id", + "objectType", + "objectInstanceId", + "subjObjectInstanceIds", + "criteria", + "_links" + ] + } \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/schemas/Thresholds.schema.json b/SOL009/NFVMANOPerformanceManagement-API/schemas/Thresholds.schema.json new file mode 100644 index 000000000..4b1ce8981 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/schemas/Thresholds.schema.json @@ -0,0 +1,111 @@ +{ + "type": "array", + "items": { + "description": "", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectType": { + "description": "Type of measured object. The applicable measured object type for a measurement is defined in clause 8.2 of ETSI GS NFV-IFA 031.", + "type": "string" + }, + "objectInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subjObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance associated with this threshold. May be present if a sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the related measured object type. If this attribute is absent and a sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the related measured object type, thresholds are set for all sub-object instances of the measured object instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "criteria": { + "description": "This type represents criteria that define a threshold.\n", + "type": "object", + "properties": { + "performanceMetric": { + "description": "Defines the performance metric associated with the threshold. This attribute’s value shall contain the related \"Measurement Name\" values as defined in clause 8.4 of ETSI GS NFV-IFA 031 \n", + "type": "string" + }, + "thresholdType": { + "description": "Type of threshold. This attribute determines which other attributes are present in the data structure. Permitted values:\n - SIMPLE: Single-valued static threshold\n\nIn the present document, simple thresholds are defined. The definition of additional threshold types is left for future specification.\n", + "type": "string", + "enum": [ + "SIMPLE" + ] + }, + "simpleThresholdDetails": { + "description": "Details of a simple threshold. Shall be present if thresholdType=\"SIMPLE\".\n", + "type": "object", + "properties": { + "thresholdValue": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hysteresis": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "required": [ + "thresholdValue", + "hysteresis" + ] + } + }, + "required": [ + "performanceMetric", + "thresholdType" + ] + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "object": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + }, + "required": [ + "self" + ] + } + }, + "required": [ + "id", + "objectType", + "objectInstanceId", + "subjObjectInstanceIds", + "criteria", + "_links" + ] + } +} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/schemas/criteria.schema.json b/SOL009/NFVMANOPerformanceManagement-API/schemas/criteria.schema.json new file mode 100644 index 000000000..319d15f53 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/schemas/criteria.schema.json @@ -0,0 +1,34 @@ +{ + "description": "Criteria of the collection of performance information.\n", + "type": "object", + "required": ["collectionPeriod", "reportingPeriod"], + "properties": { + "performanceMetric": { + "description": "This defines the types of performance metrics for the specified object instances, as specified in ETSI GS NFV-IFA 027). At least one of the two attributes (performance metric or group) shall be present.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "performanceMetricGroup": { + "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the producer that it can decompose to individual metrics. At least one of the two attributes (performance metric or group) shall be present.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "collectionPeriod": { + "description": "Specifies the periodicity at which the producer will collect performance information. The unit shall be seconds. At the end of each reportingPeriod, the producer will inform the consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n", + "type": "integer" + }, + "reportingPeriod": { + "description": "Specifies the periodicity at which the producer will report to the consumer. about performance information. The unit shall be seconds. At the end of each reportingPeriod, the producer will inform the consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n", + "type": "integer" + }, + "reportingBoundary": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + } + } +} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/schemas/links.schema.json b/SOL009/NFVMANOPerformanceManagement-API/schemas/links.schema.json new file mode 100644 index 000000000..ef262a8c8 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/schemas/links.schema.json @@ -0,0 +1,35 @@ +{ + "description": "Links for 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" + } + } + }, + "objects": { + "description": "Links to resources representing the VNF instances for which performance information is collected. Shall be present if the VNF instance information is accessible as a resource.\n", + "type": "array", + "items": { + "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 -- GitLab From 36314c678970915b7fe5159462119c2706ce80d0 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 29 Jul 2020 10:01:10 +0500 Subject: [PATCH 434/580] Added Test Cases for individualThresholds.robot --- .../IndividualThreshold.robot | 203 ++++++++++++++++++ .../environment/individualThresholds.txt | 6 + 2 files changed, 209 insertions(+) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot create mode 100644 SOL009/NFVMANOPerformanceManagement-API/environment/individualThresholds.txt diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot new file mode 100644 index 000000000..a228d9a17 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot @@ -0,0 +1,203 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library JSONLibrary +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library OperatingSystem +Resource environment/individualThresholds.txt + +*** Test Cases *** +GET Individual Threshold + [Documentation] Test ID: 8.3.2.5.1 + ... Test title: GET Individual Threshold + ... Test objective: The objective is to test the retrieval of an individual NFV-MANO performance threshold and perform a JSON schema and content validation of the collected threshold data structure + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. + ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET individual Performance Threshold + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Threshold + Check HTTP Response Body Threshold Identifier matches the requested Threshold + +GET Individual Threshold with invalid resource identifier + [Documentation] Test ID: 8.3.2.5.2 + ... Test title: GET Individual Threshold with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of an individual performance threshold fails when using an invalid resource identifier + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance jobs are set. + ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET individual Performance Threshold with invalid resource identifier + Check HTTP Response Status Code Is 404 + +DELETE Individual Threshold + [Documentation] Test ID: 8.3.2.5.3 + ... Test title: DELETE Individual Threshold + ... Test objective: The objective is to test the deletion of an individual performance threshold + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. + ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Performance Threshold is not available anymore in the NFV-MANO + Send Delete request for individual Performance Threshold + Check HTTP Response Status Code Is 204 + Check Postcondition Performance Threshold is Deleted + +DELETE Individual Threshold with invalid resource identifier + [Documentation] Test ID: 8.3.2.5.4 + ... Test title: DELETE Individual Threshold with invalid resource identifier + ... Test objective: The objective is to test the deletion of an individual performance threshold + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. + ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for individual Performance Threshold with invalid resource identifier + Check HTTP Response Status Code Is 404 + +POST Individual Threshold - Method not implemented + [Documentation] Test ID: 8.3.2.5.5 + ... Test title: POST Individual Threshold - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new Performance Threshold + ... Pre-conditions: A NFV-MANO instance is instantiated + ... Reference: clause 6.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Performance Threshold is not created on the NFV-MANO + Send Post request for individual Performance Threshold + Check HTTP Response Status Code Is 405 + Check Postcondition Performance Threshold is not Created + +PUT Individual Threshold - Method not implemented + [Documentation] Test ID: 8.3.2.5.6 + ... Test title: PUT Individual Threshold - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an existing Performance threshold + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. + ... Reference: clause 6.5.7.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Performance Threshold is not modified by the operation + Send Put request for individual Performance Threshold + Check HTTP Response Status Code Is 405 + Check Postcondition Performance Threshold is Unmodified (Implicit) + +PATCH Individual Threshold - Method not implemented + [Documentation] Test ID: 8.3.2.5.7 + ... Test title: PATCH Individual Threshold - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing Performance threshold + ... Pre-conditions: A instance is instantiated. One or more performance thresholds are set. + ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Performance Threshold is not modified by the operation + Send Patch request for individual Performance Threshold + Check HTTP Response Status Code Is 405 + Check Postcondition Performance Threshold is Unmodified (Implicit) + +*** Keywords *** +GET Individual Performance Threshold + Log Trying to get a Threhsold present in the NFV-MANO + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +GET individual 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}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${erroneousThresholdId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Send Delete request for individual Performance Threshold + Log Trying to delete a Threhsold in the NFV-MANO + 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 Performance Threshold with invalid resource identifier + Log Trying to delete a Threhsold in the NFV-MANO with invalid id + 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 Performance Threshold + Log Trying to create new threshold + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Send Put request for individual Performance Threshold + Log Trying to PUT threshold + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Send Patch request for individual Performance Threshold + Log Trying to PUT threshold + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Check Postcondition Performance Threshold is Unmodified (Implicit) + Log Check postconidtion threshold not modified + GET individual Performance Threshold + Log Check Response matches original Threshold + ${threshold}= evaluate json.loads('''${response['body']}''') json + Should Be Equal ${origresponse['body']['id']} ${threshold.id} + Should Be Equal ${origresponse['body']['criteria']} ${threshold.criteria} + +Check Postcondition Performance Threshold is not Created + Log Trying to get a new Threshold + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} + ${output}= Output response + Set Suite Variable @{response} ${output} + Check HTTP Response Status Code Is 404 + +Check Postcondition Performance Threshold is Deleted + Log Check Postcondition Threshold is deleted + GET individual Performance Threshold + Check HTTP Response Status Code Is 404 + +Check HTTP Response Body Threshold Identifier matches the requested Threshold + Log Trying to check response ID + Should Be Equal ${response['body']['id']} ${thresholdId} + Log Pm Job identifier as expected + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + ${status}= Convert To Integer ${expected_status} + Should Be Equal ${response['status']} ${status} + Log Status code validated + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + Should Contain ${response['headers']['Content-Type']} application/json + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/individualThresholds.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/individualThresholds.txt new file mode 100644 index 000000000..1efba79c6 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/individualThresholds.txt @@ -0,0 +1,6 @@ +*** Variables *** +${thresholdId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${erroneousThresholdId} erroneousThresholdId +${newThresholdId} newThresholdId +${response}= httpresponse +${origResponse}= httpresponse \ No newline at end of file -- GitLab From 080f53ed701aad6df052a41c8b0bf88d626d007d Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 29 Jul 2020 14:08:37 +0500 Subject: [PATCH 435/580] Added Test Cases for Subscriptions.robot --- .../Subscriptions.robot | 324 ++++++++++++++++++ .../environment/subscriptions.txt | 7 + .../environment/variables.txt | 4 +- .../jsons/subscriptions.json | 6 + 4 files changed, 340 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot create mode 100644 SOL009/NFVMANOPerformanceManagement-API/environment/subscriptions.txt create mode 100644 SOL009/NFVMANOPerformanceManagement-API/jsons/subscriptions.json diff --git a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot new file mode 100644 index 000000000..14b2ffd39 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot @@ -0,0 +1,324 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Resource environment/subscriptions.txt +Library MockServerLibrary +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true + +*** Test Cases *** +GET all Performance Subscriptions + [Documentation] Test ID: 8.3.2.6.1 + ... Test title: GET all Performance Subscriptions + ... Test objective: The objective is to test the retrieval of all performance subscriptions and perform a JSON schema validation of the returned subscriptions data structure. + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get all Performance Subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmSubscriptions + +GET Performance Subscriptions with attribute-based filter + [Documentation] Test ID: 8.3.2.6.2 + ... Test title: GET Performance Subscriptions with attribute-based filter + ... Test objective: The objective is to test the retrieval of performance subscriptions using attribute-based filter, perform a JSON schema validation of the collected indicators data structure. + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Performance Subscriptions with attribute-based filters + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmSubscriptions + +GET Performance Management Subscriptions with Paged Response + [Documentation] Test ID: 8.3.2.6.3 + ... Test title: GET Performance Management Subscriptions with Paged Response + ... Test objective: The objective is to query information about NFV-MANO Performance Subscriptions to get Paged Response. + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. + ... Reference: clauseclause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get all Performance Subscriptions + Check HTTP Response Status Code Is 200 + Check LINK in Header + +GET Performance Subscriptions with invalid attribute-based filter + [Documentation] Test ID: 8.3.2.6.4 + ... Test title: GET Performance Subscriptions with invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of performance subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Performance Subscriptions with invalid attribute-based filters + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Performance Subscriptions - Bad Request Response too Big + [Documentation] Test ID: 8.3.2.6.5 + ... Test title: GET Performance Subscriptions - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of NFV-MANO performance subscriptions fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get all Performance Subscriptions + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Performance Subscriptions with invalid resource endpoint + [Documentation] Test ID: 8.3.2.6.6 + ... Test title: GET Performance Subscriptions with invalid resource endpoint + ... Test objective: The objective is to test that the retrieval of all performance subscriptions fails when using invalid resource endpoint. + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Performance Subscriptions with invalid resource endpoint + Check HTTP Response Status Code Is 404 + +Create new Performance subscription + [Documentation] Test ID 8.3.2.6.7 + ... Test title: Create new Performance subscription + ... Test objective: The objective is to test the creation of a new performance subscription and perform a JSON schema and content validation of the returned subscription data structure. + ... Pre-conditions: An instance is instantiated. + ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The performance subscription is successfully set and it matches the issued subscription. + Send Post Request for Performance Subscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PmSubscription + Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription + Check Postcondition Performance Subscription Is Set + + +Create duplicated Performance subscription with NFV-MANO not creating duplicated subscriptions + [Tags] no-duplicated-subs + [Documentation] Test ID 8.3.2.6.8 + ... Test title: Create duplicated Performance subscription with NFV-MANO not creating duplicated subscriptions + ... Test objective: The objective is to test the attempt of a creation of a duplicated performance subscription and check that no new subscription is created by the NFV-MANO and a link to the original subscription is returned + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO does not support the creation of duplicated subscriptions + ... Post-Conditions: The existing performance subscription returned is available in the NFV-MANO + Send Post Request for Duplicated Performance Subscription + Check HTTP Response Status Code Is 303 + Check HTTP Response Body Is Empty + Check HTTP Response Header Contains Location + Check Postcondition Subscription Resource Returned in Location Header Is Available + +Create duplicated Performance subscription with NFV-MANO creating duplicated subscriptions + [Tags] duplicated-subs + [Documentation] Test ID 8.3.2.6.9 + ... Test title: Create duplicated Performance subscription with NFV-MANO creating duplicated subscriptions + ... Test objective: The objective is to test the creation of a duplicated performance subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure. + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO supports the creation of duplicated subscriptions + ... Post-Conditions: The duplicated performance subscription is successfully set and it matches the issued subscription + Send Post Request for Duplicated Performance Subscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PmSubscription + Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription + Check Postcondition Performance Subscription Is Set + +PUT Performance Subscriptions - Method not implemented + [Documentation] Test ID 8.3.2.6.10 + ... Test title: PUT Performance Subscriptions - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify performance subscriptions + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Reference: clause 6.5.8.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put Request for Performance Subscriptions + Check HTTP Response Status Code Is 405 + +PATCH Performance Subscriptions - Method not implemented + [Documentation] Test ID 8.3.2.6.11 + ... Test title: PATCH Performance Subscriptions - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update performance subscriptions + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Reference: clause 6.5.8.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Patch Request for Performance Subscriptions + Check HTTP Response Status Code Is 405 + +DELETE Performance Subscriptions - Method not implemented + [Documentation] Test ID 8.3.2.6.12 + ... Test title: DELETE Performance Subscriptions - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete performance subscriptions + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Reference: clause 6.5.8.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The performance subscriptions are not deleted by the failed operation + Send Delete Request for Performance Subscriptions + Check HTTP Response Status Code Is 405 + Check Postcondition Performance Subscriptions Exists + +*** Keywords *** + +Create Sessions + Pass Execution If ${NFVMANO_CHECKS_NOTIF_ENDPOINT} == 0 MockServer not necessary to run + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} + +Check Notification Endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + +Check HTTP Response Body Subscription Identifier matches the requested Subscription + Log Trying to check response ID + Should Be Equal As Strings ${response['body']['id']} ${subscriptionId} + Log Subscription identifier as expected + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check LINK in Header + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + Should Contain ${response['headers']['Content-Type']} application/json + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK + + +Check HTTP Response Body Is Empty + Should Be Empty ${response['body']} + Log No json schema is provided. Validation OK + +Get all Performance Subscriptions + Set headers {"Accept": "application/json"} + Set headers {"Content-Type": "application/json"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + + Get Performance Subscriptions with attribute-based filters + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Performance Subscriptions with invalid attribute-based filters + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Performance Subscriptions with invalid resource endpoint + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Post Request for Performance Subscription + Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + ${body_request}= Get File jsons/subscriptions.json + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + ${output}= Output response + Set Suite Variable ${response} ${output} + Run Keyword If ${NFVMANO_CHECKS_NOTIF_ENDPOINT} == 1 + ... Check Notification Endpoint + +Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription + Log Check Response matches subscription + ${body}= Get File jsons/subscriptions.json + ${subscription}= evaluate json.loads('''${body}''') json + Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} + +Check Postcondition Performance Subscription Is Set + Log Check Postcondition subscription exist + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 200 + +Send Post Request for Duplicated Performance Subscription + Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + ${body_request}= Get File jsons/subscriptions.json + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +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']} + Integer response status 200 + Log Received a 200 OK as expected + ${contentType}= Output response headers Content-Type + Should Contain ${contentType} application/json + ${result}= Output response body + Validate Json PmSubscription.schema.json ${result} + Log Validated PmSubscription schema + +Send Put Request for Performance Subscriptions + [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method + ... Not Allowed" response as defined in clause 4.3.5.4. + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch Request for Performance Subscriptions + [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method + ... Not Allowed" response as defined in clause 4.3.5.4. + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete Request for Performance Subscriptions + [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method + ... Not Allowed" response as defined in clause 4.3.5.4. + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition Performance Subscriptions Exists + Log Checking that subscriptions exists + Get all Performance Subscriptions \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/subscriptions.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/subscriptions.txt new file mode 100644 index 000000000..49e695b6e --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/subscriptions.txt @@ -0,0 +1,7 @@ +*** Variables *** +${callbackUri} http://172.22.1.7:9091/nfvmanopm/subscriptions +${filter_ok} callbackUri=${callbackUri} +${filter_ko} erroneousFilter=erroneous +${total_polling_time} 2 min +${polling_interval} 10 sec +${response} httpresponse diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt index 3ea92791d..28bd7e49e 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt @@ -28,4 +28,6 @@ ${sleep_interval} 20s ${total_polling_time} 2 min ${polling_interval} 10 sec -${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar \ No newline at end of file +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/jsons/subscriptions.json b/SOL009/NFVMANOPerformanceManagement-API/jsons/subscriptions.json new file mode 100644 index 000000000..8ceab118a --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/jsons/subscriptions.json @@ -0,0 +1,6 @@ +{ + "callbackUri": "http://172.22.1.7:9091/nfvmanopm/subscriptions", + "filter": { + "notificationTypes": ["ThresholdCrossedNotification"] + } +} \ No newline at end of file -- GitLab From 98e785d17f87a8c1596b678d134cde0444028919 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 29 Jul 2020 14:09:42 +0500 Subject: [PATCH 436/580] fixed issue in Threshold --- SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot index 815bad6c4..a218a2155 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot @@ -40,7 +40,7 @@ GET Performance Threshold with Paged Response ... Test objective: The objective is to query information about NFV-MANO Performance Thresholds to get Paged Response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: GET all Performance Thresholds @@ -66,7 +66,7 @@ GET Performance Threshold - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NFV-MANO performance thresholds fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: GET all Performance Thresholds -- GitLab From b0b13392f4fded44a4ee92d047c443b4ca5c46d8 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 29 Jul 2020 14:44:12 +0500 Subject: [PATCH 437/580] Subscription Schemas Added --- .../schemas/PmSubscription.schema.json | 110 +++++++++++++++++ .../schemas/PmSubscriptions.schema.json | 113 ++++++++++++++++++ 2 files changed, 223 insertions(+) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/schemas/PmSubscription.schema.json create mode 100644 SOL009/NFVMANOPerformanceManagement-API/schemas/PmSubscriptions.schema.json diff --git a/SOL009/NFVMANOPerformanceManagement-API/schemas/PmSubscription.schema.json b/SOL009/NFVMANOPerformanceManagement-API/schemas/PmSubscription.schema.json new file mode 100644 index 000000000..848628dcc --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/schemas/PmSubscription.schema.json @@ -0,0 +1,110 @@ +{ + "description": "This type represents a subscription. \n", + "type": "object", + "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. 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": { + "pmSubscriptionFilter": { + "description": "This type represents subscription filter criteria to match NFV-MANO functional entities and their associated managed objects. \n", + "type": "object", + "properties": { + "manoEntityId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "manoServiceIds": { + "description": "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceNames": { + "description": "If present, match NFV-MANO services with an NFV-MANO service name listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "manoServiceInterfaceIds": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance identifier listed in this attribute.\nThe attributes \"manoServiceInterfaceIds\" and \"manoServiceInterfaceNames\" are alternatives to reference to NFV-MANO functional entity produced interfaces 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 that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceInterfaceNames": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance Name listed in this attribute.\nThe attributes \"manoServiceInterfaceIds\" and \"manoServiceInterfaceNames\" are alternatives to reference to NFV-MANO functional entity produced interfaces 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" + } + }, + "consumedManoInterfaceIds": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance identifier listed in this attribute.\nThe attributes \"consumedManoInterfaceIds\" and \"consumedManoInterfaceNames\" are alternatives to reference to NFV-MANO functional entity consumed interfaces 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" + } + }, + "consumedManoInterfaceNames": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance Name listed in this attribute.\nThe attributes \"consumedManoInterfaceIds\" and \"consumedManoInterfaceNames\" are alternatives to reference to NFV-MANO functional entity consumed interfaces 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:\n - ThresholdCrossedNotification\n - PerformanceInformationAvailableNotification\n\nThe 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": "object", + "properties": { + "links": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + }, + "required": [ + "links", + "self" + ] + } + }, + "required": [ + "id", + "callbackUri" + ] + } \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/schemas/PmSubscriptions.schema.json b/SOL009/NFVMANOPerformanceManagement-API/schemas/PmSubscriptions.schema.json new file mode 100644 index 000000000..50d8ef1dd --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/schemas/PmSubscriptions.schema.json @@ -0,0 +1,113 @@ +{ +"type": "array", + "items": { + "description": "This type represents a subscription. \n", + "type": "object", + "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. 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": { + "pmSubscriptionFilter": { + "description": "This type represents subscription filter criteria to match NFV-MANO functional entities and their associated managed objects. \n", + "type": "object", + "properties": { + "manoEntityId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "manoServiceIds": { + "description": "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceNames": { + "description": "If present, match NFV-MANO services with an NFV-MANO service name listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "manoServiceInterfaceIds": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance identifier listed in this attribute.\nThe attributes \"manoServiceInterfaceIds\" and \"manoServiceInterfaceNames\" are alternatives to reference to NFV-MANO functional entity produced interfaces 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 that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceInterfaceNames": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance Name listed in this attribute.\nThe attributes \"manoServiceInterfaceIds\" and \"manoServiceInterfaceNames\" are alternatives to reference to NFV-MANO functional entity produced interfaces 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" + } + }, + "consumedManoInterfaceIds": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance identifier listed in this attribute.\nThe attributes \"consumedManoInterfaceIds\" and \"consumedManoInterfaceNames\" are alternatives to reference to NFV-MANO functional entity consumed interfaces 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" + } + }, + "consumedManoInterfaceNames": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance Name listed in this attribute.\nThe attributes \"consumedManoInterfaceIds\" and \"consumedManoInterfaceNames\" are alternatives to reference to NFV-MANO functional entity consumed interfaces 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:\n - ThresholdCrossedNotification\n - PerformanceInformationAvailableNotification\n\nThe 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": "object", + "properties": { + "links": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + }, + "required": [ + "links", + "self" + ] + } + }, + "required": [ + "id", + "callbackUri" + ] + } +} \ No newline at end of file -- GitLab From 836d7330e9befb04b70f3cd5dde56c48846d0cef Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 29 Jul 2020 17:02:06 +0500 Subject: [PATCH 438/580] Added Test Cases for individualSubscription.robot --- .../IndividualSubscription.robot | 191 ++++++++++++++++++ .../environment/individualSubscription.txt | 5 + 2 files changed, 196 insertions(+) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot create mode 100644 SOL009/NFVMANOPerformanceManagement-API/environment/individualSubscription.txt diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot new file mode 100644 index 000000000..5f51a6a2c --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot @@ -0,0 +1,191 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Resource environment/individualSubscription.txt + +*** Test Cases *** +GET Individual Performance Subscription + [Documentation] Test ID: 8.3.2.7.1 + ... Test title: GET Individual Performance Subscription + ... Test objective: The objective is to test the retrieval of individual performance subscription and perform a JSON schema and content validation of the returned subscription data structure. + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Reference: clause 6.5.9.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Performance Subscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmSubscription + Check HTTP Response Body Subscription Identifier matches the requested Subscription + +GET Individual Performance Subscription with invalid resource identifier + [Documentation] Test ID: 8.3.2.7.2 + ... Test title: GET Individual Performance Subscription with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of an individual performance subscription fails when using an invalid resource identifier. + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Reference: clause 6.5.9.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET individual Performance Subscription with invalid resource identifier + Check HTTP Response Status Code Is 404 + +DELETE Individual Performance Subscription + [Documentation] Test ID: 8.3.2.7.3 + ... Test title: DELETE Individual Performance Subscription + ... Test objective: The objective is to test the deletion of an individual performance subscription + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Reference: clause 6.5.9.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Performance Subscription is not available anymore in the NFV-MANO + Send Delete request for individual Performance Subscription + Check HTTP Response Status Code Is 204 + Check Postcondition Performance Subscription is Deleted + +DELETE Individual Performance Subscription with invalid resource identifier + [Documentation] Test ID: 8.3.2.7.4 + ... Test title: DELETE Individual Performance Subscription with invalid resource identifier + ... Test objective: The objective is to test that the deletion of an individual performance subscription fails when using an invalid resource identifier. + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Reference: clause 6.5.9.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for individual Performance Subscription with invalid resource identifier + Check HTTP Response Status Code Is 404 + +POST Individual Performance Subscription - Method not implemented + [Documentation] Test ID: 8.3.2.7.5 + ... Test title: POST Individual Performance Subscription - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new Performance Subscription + ... Pre-conditions: An instance is instantiated + ... Reference: clause 6.5.9.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Performance Subscription is not created on the NFV-MANO + Send Post request for individual Performance Subscription + Check HTTP Response Status Code Is 405 + Check Postcondition Performance Subscription is not Created + +PUT Individual Performance Subscription - Method not implemented + [Documentation] Test ID: 8.3.2.7.6 + ... Test title: PUT Individual Performance Subscription - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an existing Performance subscription. + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Reference: clause 6.5.9.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Performance subscription is not modified by the operation + Send Put request for individual Performance Threshold + Check HTTP Response Status Code Is 405 + Check Postcondition Performance Subscription is Unmodified (Implicit) + +PATCH Individual Performance Subscription - Method not implemented + [Documentation] Test ID: 8.3.2.7.7 + ... Test title: PATCH Individual Performance Subscription - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing Performance subscription + ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Reference: clause 6.5.9.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Performance subscription is not modified by the operation + Send Patch request for individual Performance Threshold + Check HTTP Response Status Code Is 405 + Check Postcondition Performance Subscription is Unmodified (Implicit) + + +*** Keywords *** +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + Should Contain ${response['headers']['Content-Type']} application/json + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK + +Get Individual Performance Subscription + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check HTTP Response Body Subscription Identifier matches the requested Subscription + Log Trying to check response ID + Should Be Equal As Strings ${response['body']['id']} ${subscriptionId} + Log Subscription identifier as expected + +GET individual Performance Subscription with invalid resource identifier + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for individual Performance Subscription + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for individual Performance Subscription with invalid resource identifier + Log Trying to delete a subscription in the NFV-MANO with invalid id + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Check Postcondition Performance Subscription is Deleted + Log Check Postcondition Subscription is deleted + GET individual Performance Subscription + Check HTTP Response Status Code Is 404 + +Send Post request for individual Performance Subscription + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Check Postcondition Performance 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} + ${output}= Output response + Set Suite Variable @{response} ${output} + Check HTTP Response Status Code Is 404 + +Send Put request for individual Performance Threshold + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Send Patch request for individual Performance Threshold + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Check Postcondition Performance Subscription is Unmodified (Implicit) + Log Check postconidtion subscription not modified + GET individual Performance Subscription + Log Check Response matches original Subscription + ${subscription}= evaluate json.loads('''${response['body']}''') json + Should Be Equal As Strings ${origResponse['body']['id']} ${subscription.id} + Should Be Equal As Strings ${origResponse['body']['callbackUri']} ${subscription.callbackUri} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/individualSubscription.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/individualSubscription.txt new file mode 100644 index 000000000..945e4c67f --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/individualSubscription.txt @@ -0,0 +1,5 @@ +*** Variables *** +${erroneousSubscriptionId} erroneousSubscriptionId +${newSubscriptionId} newSubsciptionId +${response} httpresponse +${origResponse} httpresponse \ No newline at end of file -- GitLab From 7b951530b4fda486ab9d0f3fb5068255b30ac161 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 29 Jul 2020 17:12:26 +0500 Subject: [PATCH 439/580] Added Test Cases for NotificationEndpoint.robot --- .../PerformanceManagementNotification.robot | 113 ++++++++++++++++++ .../environment/notifications.txt | 12 ++ ...formationAvailableNotification.schema.json | 105 ++++++++++++++++ .../ThresholdCrossedNotification.schema.json | 113 ++++++++++++++++++ 4 files changed, 343 insertions(+) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/PerformanceManagementNotification.robot create mode 100644 SOL009/NFVMANOPerformanceManagement-API/environment/notifications.txt create mode 100644 SOL009/NFVMANOPerformanceManagement-API/schemas/PerformanceInformationAvailableNotification.schema.json create mode 100644 SOL009/NFVMANOPerformanceManagement-API/schemas/ThresholdCrossedNotification.schema.json diff --git a/SOL009/NFVMANOPerformanceManagement-API/PerformanceManagementNotification.robot b/SOL009/NFVMANOPerformanceManagement-API/PerformanceManagementNotification.robot new file mode 100644 index 000000000..fe84432d6 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/PerformanceManagementNotification.robot @@ -0,0 +1,113 @@ +*** Setting *** +Resource environment/notifications.txt +Resource environment/variables.txt +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true +Library MockServerLibrary +Library Process +Library OperatingSystem +Library BuiltIn +Library Collections +Library String + + +*** Test Cases *** +Performance Information Availability Notification + [Documentation] Test ID: 8.3.2.8.1 + ... Test title: Performance Information Availability Notification + ... Test objective: The objective is to test the dispatch of Performance Information Availability Notification when new performance information is available in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A performance job is created, and a subscription for information availability notifications is available in the NFV-MANO. + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Trigger the availability of Performance Information (external action) + Check Performance Information Available Notification Http POST Request Body Json Schema Is PerformanceInformationAvailableNotification + Check Performance Information Available Notification Http POST Request Body notificationType attribute Is PerformanceInformationAvailableNotification + +Threshold Crossed Notification + [Documentation] Test ID: 8.3.2.8.2 + ... Test title: Threshold Crossed Notification + ... Test objective: The objective is to test the dispatch of Threshold Crossed Notification when a previously set performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A performance job is created, and a threshold subscription is available in the NFV-MANO. + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Trigger the cross of Performance Threshold (external action) + Check Threshold Crossed Notification Http POST Request Body Json Schema Is ThresholdCrossedNotification + Check Threshold Crossed Notification Http POST Request Body notificationType attribute Is ThresholdCrossedNotification + + +*** Keywords *** +Trigger the availability of Performance Information (external action) + #do nothing + Log do nothing + +Trigger the cross of Performance Threshold (external action) + #do nothing + Log do nothing + +Check Performance Information Available Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + +Check Performance Information Available Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification Performance Information Available Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + +Check Threshold Crossed Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + + +Check Threshold Crossed Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification Threshold Crossed Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + + +Check Threshold Crossed Notification Http POST Request Body changeType attribute Is + [Arguments] ${type} + #do nothing + Log do nothing + + +Configure Notification Performance Information Available Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Configure Notification Threshold Crossed Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Configure Notification Forward + [Arguments] ${schema} ${endpoint} ${endpoint_fwd} + Log Creating mock Http POST forward to handle ${schema} + &{notification_tmp}= Create Mock Request Matcher POST ${endpoint} body_type="JSON_SCHEMA" body=${schema} + &{notification_fwd}= Create Mock Http Forward ${endpoint_fwd} + Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} + +Create Sessions + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/notifications.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/notifications.txt new file mode 100644 index 000000000..cd1193ae5 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/notifications.txt @@ -0,0 +1,12 @@ +*** Variables *** +${callback_uri} http://localhost +${callback_port} 9091 +${callback_endpoint} /endpoint +${callback_endpoint_fwd} /endpoint/check +${callback_endpoint_error} /endpoint_404 +${sleep_interval} 20s +${total_polling_time} 2 min +${polling_interval} 10 sec + +${notification_request} [] +${notification_response} [] \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/schemas/PerformanceInformationAvailableNotification.schema.json b/SOL009/NFVMANOPerformanceManagement-API/schemas/PerformanceInformationAvailableNotification.schema.json new file mode 100644 index 000000000..04ae7ead4 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/schemas/PerformanceInformationAvailableNotification.schema.json @@ -0,0 +1,105 @@ +{ + "description": "This notification informs the receiver that performance information is available. The timing of sending this notification is determined by the capability of the producing entity to evaluate the threshold crossing condition. The notification shall be triggered by the VNFM when new performance information collected by a PM job is available.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "objectInstanceId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"PerformanceInformationAvailableNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "PerformanceInformationAvailableNotification" + ] + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "objectInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "type": "object", + "required": [ + "subscription", + "pmJob", + "performanceReport" + ], + "properties": { + "subscription": { + "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" + } + } + }, + "objectInstance": { + "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" + } + } + }, + "pmJob": { + "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" + } + } + }, + "performanceReport": { + "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 diff --git a/SOL009/NFVMANOPerformanceManagement-API/schemas/ThresholdCrossedNotification.schema.json b/SOL009/NFVMANOPerformanceManagement-API/schemas/ThresholdCrossedNotification.schema.json new file mode 100644 index 000000000..e5cec2303 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/schemas/ThresholdCrossedNotification.schema.json @@ -0,0 +1,113 @@ +{ + "description": "This type represents a notification that is sent when a threshold has been crossed. The notification shall be triggered by the VNFM when a threshold has been crossed.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "thresholdId", + "crossingDirection", + "objectInstanceId", + "performanceMetric", + "performanceValue", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"ThresholdCrossedNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "ThresholdCrossedNotification" + ] + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "thresholdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "crossingDirection": { + "type": "string", + "enum": [ + "UP", + "DOWN" + ] + }, + "objectInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric associated with the threshold.\n", + "type": "string" + }, + "performanceValue": { + "description": "Value of the metric that resulted in threshold crossing. The type of the \"performanceValue\" attribute (i.e. scalar, structure (Object in JSON), or array (of scalars, arrays or structures / Objects)) is assumed to be defined in the external measurement specification (see ETSI GS NFV-IFA 027).\n", + "type": "object" + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "type": "object", + "required": [ + "subscription", + "threshold" + ], + "properties": { + "subscription": { + "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" + } + } + }, + "objectInstance": { + "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" + } + } + }, + "threshold": { + "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 -- GitLab From ba87f69e76686b3b5d4142cd7f5a36279bb3f98a Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 10 Aug 2020 09:48:13 +0500 Subject: [PATCH 440/580] Added API for NFV-MANO Performance Management --- ...L009-NFVMANOPerformanceManagement-API.yaml | 20940 ++++++++++++++++ libspecs/Easter.libspec | 2 +- libspecs/Reserved.libspec | 2 +- 3 files changed, 20942 insertions(+), 2 deletions(-) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/SOL009-NFVMANOPerformanceManagement-API.yaml diff --git a/SOL009/NFVMANOPerformanceManagement-API/SOL009-NFVMANOPerformanceManagement-API.yaml b/SOL009/NFVMANOPerformanceManagement-API/SOL009-NFVMANOPerformanceManagement-API.yaml new file mode 100644 index 000000000..38e44fa0c --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/SOL009-NFVMANOPerformanceManagement-API.yaml @@ -0,0 +1,20940 @@ +openapi: 3.0.2 +info: + version: '1.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1' + title: SOL009 - NFV-MANO Performance Management Interface + description: > + SOL009 - NFV-MANO Performance Management Interface + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to and has not been + approved by the ETSI NFV ISG. In case of discrepancies the published ETSI + Group Specification takes precedence. Please report bugs to + https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis + license: + name: ETSI Forge copyright notice + url: 'https://forge.etsi.org/etsi-forge-copyright-notice.txt' + contact: + name: NFV-SOL WG +externalDocs: + description: ETSI GS NFV-SOL 009 V3.3.1 + url: >- + https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/009/03.03.01_60/gs_NFV-SOL009v030301p.pdf +servers: + - url: 'http://0.0.0.0/nfvmanopm/v1' + description: | + API HTTP Server + - url: 'https://0.0.0.0/nfvmanopm/v1' + description: | + API HTTPS Server +paths: + /api_versions: + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: false + schema: + type: string + - name: Authorization + description: 'The authorization token for the request. Reference: IETF RFC 7235' + in: header + required: false + schema: + type: string + get: + summary: Retrieve API version information + description: > + The GET method reads API version information. This method shall follow + the provisions specified in table 4.6.3.3.3.2-1 for request and response + data structures, and response codes. URI query parameters are not + supported. + responses: + '200': + description: > + 200 OK + + API version information was read successfully. The response body + shall contain 4.4 API version information, as defined in clause + 4.4.1.13. + content: + application/json: + schema: + description: | + This type represents API version information. + type: object + required: + - uriPrefix + - apiVersions + properties: + uriPrefix: + description: > + Specifies the URI prefix for the API, in the following + form {apiRoot}/{apiName}/{apiMajorVersion}/. + type: string + apiVersions: + description: > + Version(s) supported for the API signaled by the uriPrefix + attribute. + type: array + items: + type: object + required: + - version + properties: + version: + description: > + Identifies a supported version. The value of the + version attribute shall be a version identifier as + specified in clause 9.1 (SOL013). + type: string + isDeprecated: + description: > + If such information is available, this attribute + indicates whether use of the version signaled by the + version attribute is deprecated (true) or not + (false). + + A deprecated version is still supported by the API + producer but is recommended not to be used any + longer. When a version is no longer supported, it + does not appear in the response body. + type: boolean + retirementDate: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: The used API version. + schema: + type: string + maximum: 1 + minimum: 1 + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '413': + description: > + 413 PAYLOAD TOO LARGE + + If the payload body of a request is larger than the amount of data + the API producer is willing or able to process, it shall respond + with this response code, following the provisions in IETF RFC 7231 + for the use of the "Retry-After" HTTP header and for closing the + connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '414': + description: > + 414 URI TOO LONG + + If the request URI of a request is longer than the API producer is + willing or able to process, it shall respond with this response + code. This condition can e.g. be caused by passing long queries in + the request URI of a GET request. The "ProblemDetails" structure may + be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '416': + description: | + 416 Range Not Satisfiable + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '429': + description: > + 429 TOO MANY REQUESTS + + If the API consumer has sent too many requests in a defined period + of time and the API producer is able to detect that condition ("rate + limiting"), the API producer shall respond with this response code, + following the provisions in IETF RFC 6585 [17] for the use of the + "Retry-After" HTTP header. The "ProblemDetails" structure shall be + provided and shall include in the "detail" attribute more + information about the source of the problem. + + The period of time and allowed number of requests are configured + within the API producer by means outside the scope of the present + document. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + /pm_jobs: + post: + description: > + Creates a PM job. + + This method shall follow the provisions specified in the tables + 6.5.3.3.1-1 and 6.5.3.3.1-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + requestBody: + description: | + PM job creation request. + content: + application/json: + schema: + description: | + This type represents a request to create a PM job. + type: object + properties: + objectType: + description: > + Type of measured object. The applicable measured object type + for a measurement is defined in clause 8.2 of ETSI GS + NFV-IFA 031. + type: string + objectInstanceIds: + description: > + Identifiers of the measured object instance for which + performance information is requested to be collected. This + attribute shall contain the identifier of the instance of + the measure object according to their type. See also + definitions in clause 8.2 of ETSI GS NFV-IFA 031. If more + than one identifier is provided, values shall all refer to + measured object instances of the same type, for which the + same criteria is then applicable. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + minItems: 1 + subObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured + object instance for which performance information is + requested to be collected. May be present if a sub-object + is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the + related measured object type. If this attribute is present, + the cardinality of the "objectInstanceIds" attribute shall + be 1. If this attribute is absent and a sub-object is + defined in clause 8.2 of ETSI GS NFV-IFA 031 for the + related measured object type, measurements will be taken + for all sub-object instances of the measured object + instance. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + criteria: + description: | + This type represents collection criteria for PM jobs. + type: object + properties: + performanceMetric: + description: > + This defines the types of performance metrics for the + specified measured object(s). This attribute’s value + shall contain the related "Measurement Name" values as + defined in clause 8.4 of ETSI GS NFV-IFA 031. At least + one of the two attributes (performance metric or group) + shall be present. + type: array + items: + type: string + performanceMetricGroup: + description: > + Group of performance metrics. A metric group is a + pre-defined list of metrics, known to the producer that + it can decompose to individual metrics. This + attribute’s value shall contain the related + "Measurement Group" values as defined in clause 8.4 of + ETSI GS NFV-IFA 031. At least one of the two attributes + (performance metric or group) shall be present. + type: array + items: + type: string + collectionPeriod: + description: > + Specifies the periodicity at which the producer will + collect performance information. The unit shall be + seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed + collection period during this reportingPeriod. The + reportingPeriod should be equal to or a multiple of the + collectionPeriod. In the latter case, the performance + data for the collection periods within one reporting + period are reported together. + + In particular when choosing short collection and + reporting periods, the number of PM jobs that can be + supported depends on the capability of the producing + entity. + type: integer + reportingPeriod: + description: > + Specifies the periodicity at which the producer will + report to the API consumer about performance + information. The unit shall be seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed + collection period during this reportingPeriod. The + reportingPeriod should be equal to or a multiple of the + collectionPeriod. In the latter case, the performance + data for the collection periods within one reporting + period are reported together. + + In particular when choosing short collection and + reporting periods, the number of PM jobs that can be + supported depends on the capability of the producing + entity. + type: integer + reportingBoundary: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + required: + - collectionPeriod + - reportingPeriod + required: + - objectType + - objectInstanceIds + - criteria + required: true + responses: + '201': + description: > + 201 CREATED + + Shall be returned when the PM job has been created successfully. + + The response body shall contain a representation of the created + "Individual PM job" resource, as defined in clause 6.6.2.7. + + The HTTP response shall include a "Location" HTTP header that + points to the created "Individual PM job" resource. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: | + This type represents a PM job. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectType: + description: > + Type of measured object. The applicable measured object + type for a measurement is defined in clause 8.2 of ETSI + GS NFV-IFA 031. + type: string + objectInstanceIds: + description: > + Identifiers of the measured object instance for which + performance information is collected. This attribute + shall contain the identifier of the instance of the + measure object according to their type. See also + definitions in clause 8.2 of ETSI GS NFV-IFA 031. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + minItems: 1 + subObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured + object instance for which performance information is + requested to be collected. May be present if a sub-object + is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the + related measured object type. If this attribute is + present, the cardinality of the "objectInstanceIds" + attribute shall be 1. If this attribute is absent and a + sub-object is defined in clause 8.2 of ETSI GS NFV-IFA + 031 for the related measured object type, measurements + will be taken for all sub-object instances of the + measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + criteria: + description: | + This type represents collection criteria for PM jobs. + type: object + properties: + performanceMetric: + description: > + This defines the types of performance metrics for the + specified measured object(s). This attribute’s value + shall contain the related "Measurement Name" values + as defined in clause 8.4 of ETSI GS NFV-IFA 031. At + least one of the two attributes (performance metric or + group) shall be present. + type: array + items: + type: string + performanceMetricGroup: + description: > + Group of performance metrics. A metric group is a + pre-defined list of metrics, known to the producer + that it can decompose to individual metrics. This + attribute’s value shall contain the related + "Measurement Group" values as defined in clause 8.4 of + ETSI GS NFV-IFA 031. At least one of the two + attributes (performance metric or group) shall be + present. + type: array + items: + type: string + collectionPeriod: + description: > + Specifies the periodicity at which the producer will + collect performance information. The unit shall be + seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed + collection period during this reportingPeriod. The + reportingPeriod should be equal to or a multiple of + the collectionPeriod. In the latter case, the + performance data for the collection periods within one + reporting period are reported together. + + In particular when choosing short collection and + reporting periods, the number of PM jobs that can be + supported depends on the capability of the producing + entity. + type: integer + reportingPeriod: + description: > + Specifies the periodicity at which the producer will + report to the API consumer about performance + information. The unit shall be seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed + collection period during this reportingPeriod. The + reportingPeriod should be equal to or a multiple of + the collectionPeriod. In the latter case, the + performance data for the collection periods within one + reporting period are reported together. + + In particular when choosing short collection and + reporting periods, the number of PM jobs that can be + supported depends on the capability of the producing + entity. + type: integer + reportingBoundary: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + required: + - collectionPeriod + - reportingPeriod + reports: + description: > + Information about available reports collected by this PM + job. + type: array + items: + type: object + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + readyTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + expiryTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + fileSize: + description: | + Unsigned integer + type: number + required: + - href + - readyTime + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: > + Links to resources representing the measured object + instances for which performance information is + collected. Shall be present if the measured object + instance information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceIds + - criteria + - _links + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + get: + description: | + The client can use this method to retrieve information about PM jobs. + parameters: + - name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of + ETSI GS NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this + parameter as part of the URI query string. The API consumer may + supply this parameter. + + All attribute names that appear in the PmJob and in data types + referenced from it shall be supported by the NFV-MANO functional + entity in the expression. + in: query + required: false + schema: + type: string + - name: all_fields + description: > + Include all complex attributes in the response. See clause 5.3 of + ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support + this parameter. + in: query + required: false + schema: + type: string + - name: fields + description: > + Complex attributes to be included into the response. See clause 5.3 + of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity + should support this parameter. + in: query + required: false + schema: + type: string + - name: exclude_fields + description: > + Complex attributes to be excluded from the response. See clause 5.3 + of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity + should support this parameter. + in: query + required: false + schema: + type: string + - name: exclude_default + description: > + Indicates to exclude the following complex attributes from the + response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The + NFV-MANO functional entity shall support this parameter. + + The following attributes shall be excluded from the PmJob structure + in the response body if this parameter is provided, or none of the + parameters "all_fields," "fields", "exclude_fields", + "exclude_default" are provided: - none + in: query + required: false + schema: + type: string + - name: nextpage_opaque_marker + description: > + Marker to obtain the next page of a paged response. Shall be + supported by the NFV-MANO functional entity if the entity supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS + NFV-SOL 013 for this resource. + in: query + required: false + schema: + type: string + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when information about zero or more PM jobs has + been queried successfully. + + The response body shall contain in an array the representations of + zero or more PM jobs, as defined in clause 6.6.2.7. + + If the "filter" URI parameter or one of the "all_fields", "fields" + (if supported), "exclude_fields" (if supported) or + "exclude_default" URI parameters was supplied in the request, the + data in the response body shall have been transformed according to + the rules specified in clauses 5.2.2 and 5.3.2 of ETSI GS NFV-SOL + 013, respectively. + + If the NFV-MANO functional entity supports alternative 2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this + resource, inclusion of the Link HTTP header in this response shall + follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013 . + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Link: + description: > + Reference to other resources. Link HTTP header in this response + shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL + 013. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: | + This type represents a PM job. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + objectType: + description: > + Type of measured object. The applicable measured object + type for a measurement is defined in clause 8.2 of ETSI + GS NFV-IFA 031. + type: string + objectInstanceIds: + description: > + Identifiers of the measured object instance for which + performance information is collected. This attribute + shall contain the identifier of the instance of the + measure object according to their type. See also + definitions in clause 8.2 of ETSI GS NFV-IFA 031. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + minItems: 1 + subObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured + object instance for which performance information is + requested to be collected. May be present if a + sub-object is defined in clause 8.2 of ETSI GS NFV-IFA + 031 for the related measured object type. If this + attribute is present, the cardinality of the + "objectInstanceIds" attribute shall be 1. If this + attribute is absent and a sub-object is defined in + clause 8.2 of ETSI GS NFV-IFA 031 for the related + measured object type, measurements will be taken for + all sub-object instances of the measured object + instance. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + criteria: + description: | + This type represents collection criteria for PM jobs. + type: object + properties: + performanceMetric: + description: > + This defines the types of performance metrics for + the specified measured object(s). This attribute’s + value shall contain the related "Measurement Name" + values as defined in clause 8.4 of ETSI GS NFV-IFA + 031. At least one of the two attributes + (performance metric or group) shall be present. + type: array + items: + type: string + performanceMetricGroup: + description: > + Group of performance metrics. A metric group is a + pre-defined list of metrics, known to the producer + that it can decompose to individual metrics. This + attribute’s value shall contain the related + "Measurement Group" values as defined in clause 8.4 + of ETSI GS NFV-IFA 031. At least one of the two + attributes (performance metric or group) shall be + present. + type: array + items: + type: string + collectionPeriod: + description: > + Specifies the periodicity at which the producer will + collect performance information. The unit shall be + seconds. + + At the end of each reportingPeriod, the producer + will inform the API consumer about availability of + the performance data collected for each completed + collection period during this reportingPeriod. The + reportingPeriod should be equal to or a multiple of + the collectionPeriod. In the latter case, the + performance data for the collection periods within + one reporting period are reported together. + + In particular when choosing short collection and + reporting periods, the number of PM jobs that can + be supported depends on the capability of the + producing entity. + type: integer + reportingPeriod: + description: > + Specifies the periodicity at which the producer will + report to the API consumer about performance + information. The unit shall be seconds. + + At the end of each reportingPeriod, the producer + will inform the API consumer about availability of + the performance data collected for each completed + collection period during this reportingPeriod. The + reportingPeriod should be equal to or a multiple of + the collectionPeriod. In the latter case, the + performance data for the collection periods within + one reporting period are reported together. + + In particular when choosing short collection and + reporting periods, the number of PM jobs that can + be supported depends on the capability of the + producing entity. + type: integer + reportingBoundary: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + required: + - collectionPeriod + - reportingPeriod + reports: + description: > + Information about available reports collected by this PM + job. + type: array + items: + type: object + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + readyTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + expiryTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + fileSize: + description: | + Unsigned integer + type: number + required: + - href + - readyTime + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: > + Links to resources representing the measured object + instances for which performance information is + collected. Shall be present if the measured object + instance information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceIds + - criteria + - _links + '400': + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Invalid attribute selector. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/pm_jobs/{pmJobId}': + parameters: + - name: pmJobId + in: path + description: Identifier of the PM Job + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + get: + description: | + The client can use this method for reading an individual PM job. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when information about an individual PM job has + been read successfully. + + The response body shall contain a representation of the "Individual + PM job" resource, as defined in clause 6.6.2.7. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: | + This type represents a PM job. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectType: + description: > + Type of measured object. The applicable measured object + type for a measurement is defined in clause 8.2 of ETSI + GS NFV-IFA 031. + type: string + objectInstanceIds: + description: > + Identifiers of the measured object instance for which + performance information is collected. This attribute + shall contain the identifier of the instance of the + measure object according to their type. See also + definitions in clause 8.2 of ETSI GS NFV-IFA 031. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + minItems: 1 + subObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured + object instance for which performance information is + requested to be collected. May be present if a sub-object + is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the + related measured object type. If this attribute is + present, the cardinality of the "objectInstanceIds" + attribute shall be 1. If this attribute is absent and a + sub-object is defined in clause 8.2 of ETSI GS NFV-IFA + 031 for the related measured object type, measurements + will be taken for all sub-object instances of the + measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + criteria: + description: | + This type represents collection criteria for PM jobs. + type: object + properties: + performanceMetric: + description: > + This defines the types of performance metrics for the + specified measured object(s). This attribute’s value + shall contain the related "Measurement Name" values + as defined in clause 8.4 of ETSI GS NFV-IFA 031. At + least one of the two attributes (performance metric or + group) shall be present. + type: array + items: + type: string + performanceMetricGroup: + description: > + Group of performance metrics. A metric group is a + pre-defined list of metrics, known to the producer + that it can decompose to individual metrics. This + attribute’s value shall contain the related + "Measurement Group" values as defined in clause 8.4 of + ETSI GS NFV-IFA 031. At least one of the two + attributes (performance metric or group) shall be + present. + type: array + items: + type: string + collectionPeriod: + description: > + Specifies the periodicity at which the producer will + collect performance information. The unit shall be + seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed + collection period during this reportingPeriod. The + reportingPeriod should be equal to or a multiple of + the collectionPeriod. In the latter case, the + performance data for the collection periods within one + reporting period are reported together. + + In particular when choosing short collection and + reporting periods, the number of PM jobs that can be + supported depends on the capability of the producing + entity. + type: integer + reportingPeriod: + description: > + Specifies the periodicity at which the producer will + report to the API consumer about performance + information. The unit shall be seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed + collection period during this reportingPeriod. The + reportingPeriod should be equal to or a multiple of + the collectionPeriod. In the latter case, the + performance data for the collection periods within one + reporting period are reported together. + + In particular when choosing short collection and + reporting periods, the number of PM jobs that can be + supported depends on the capability of the producing + entity. + type: integer + reportingBoundary: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + required: + - collectionPeriod + - reportingPeriod + reports: + description: > + Information about available reports collected by this PM + job. + type: array + items: + type: object + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + readyTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + expiryTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + fileSize: + description: | + Unsigned integer + type: number + required: + - href + - readyTime + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: > + Links to resources representing the measured object + instances for which performance information is + collected. Shall be present if the measured object + instance information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceIds + - criteria + - _links + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + delete: + description: | + This method terminates an individual PM job. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '204': + description: | + 204 NO CONTENT + Shall be returned when the PM job has been deleted successfully. + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/pm_jobs/{pmJobId}/reports/{reportId}': + parameters: + - name: pmJobId + in: path + description: Identifier of the PM Job + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + - name: reportId + in: path + description: Identifier of the PM report + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + get: + description: > + The client can use this method for reading an individual performance + report. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when information of an individual performance + report has been read successfully. + + The response body shall contain a representation of the "Individual + performance report" resource, as defined in clause 6.6.2.10. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type defines the format of a performance report provided + by the NFV-MANO functional entity to the API consumer as a + result of collecting performance information as part of a PM + job. + type: object + properties: + entries: + description: > + List of performance information entries. Each performance + report entry is for a given metric of a given object + (i.e. measured object instance) corresponding to the + related measured object types, but can include multiple + collected values. + type: array + items: + type: object + properties: + objectType: + description: > + Type of measured object. The applicable measured + object type for a measurement is defined in clause + 8.2 of ETSI GS NFV-IFA 031. + type: string + objectInstanceId: + description: > + This type represents the identifier to reference a + managed object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable + if attribute "manoEntityComponents" in + "ManoEntity" is supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being + globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + required: + - type + - objectId + subObjectInstanceId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + performanceMetric: + description: > + Name of the metric collected. This attribute shall + contain the related "Measurement Name" value as + defined in clause 8.4 of ETSI GS NFV-IFA 031. + type: string + performanceValues: + description: > + List of performance values with associated + timestamp. + type: array + items: + type: object + properties: + timeStamp: + description: > + Date-time stamp. Representation: String + formatted according to IETF RFC 3339. + type: string + format: date-time + value: + description: > + Value of the metric collected. The type of + this attribute shall correspond to the + related "Measurement Unit" as defined in + clause 8.4 of ETSI GS NFV-IFA 031. + context: + description: > + This type represents a list of key-value + pairs. The order of the pairs in the list is + not significant. In JSON, a set of keyvalue + pairs is represented as an object. It shall + comply with the provisions defined in clause 4 + of IETF RFC 8259. In the following example, a + list of key-value pairs with four keys + ("aString", "aNumber", "anArray" and + "anObject") is provided to illustrate that the + values associated with different keys can be + of different type. + type: object + required: + - timeStamp + - value + minItems: 1 + required: + - objectType + - objectInstanceId + - performanceMetric + - performanceValues + minItems: 1 + required: + - entries + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + /thresholds: + post: + description: | + The POST method can be used by the client to create a threshold. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + requestBody: + description: | + Request parameters to create a threshold. + content: + application/json: + schema: + description: | + This type represents a request to create a threshold. + type: object + properties: + objectType: + description: > + Type of measured object. The applicable measured object type + for a measurement is defined in clause 8.2 of ETSI GS + NFV-IFA 031. + type: string + objectInstanceId: + description: | + An identifier with the intention of being globally unique. + type: string + subjObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured + object instance associated with this threshold. May be + present if a sub-object is defined in clause 8.2 of ETSI GS + NFV-IFA 031 for the related measured object type. If this + attribute is absent and a sub-object is defined in clause + 8.2 of ETSI GS NFV-IFA 031 for the related measured object + type, thresholds will be set for all sub-object instances + of the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + criteria: + description: | + This type represents criteria that define a threshold. + type: object + properties: + performanceMetric: + description: > + Defines the performance metric associated with the + threshold. This attribute’s value shall contain the + related "Measurement Name" values as defined in clause + 8.4 of ETSI GS NFV-IFA 031 + type: string + thresholdType: + description: > + Type of threshold. This attribute determines which other + attributes are present in the data structure. Permitted + values: + - SIMPLE: Single-valued static threshold + + In the present document, simple thresholds are defined. + The definition of additional threshold types is left + for future specification. + type: string + enum: + - SIMPLE + simpleThresholdDetails: + description: > + Details of a simple threshold. Shall be present if + thresholdType="SIMPLE". + type: object + properties: + thresholdValue: + description: | + A number defined in IETF RFC 8259. + type: number + hysteresis: + description: | + A number defined in IETF RFC 8259. + type: number + required: + - thresholdValue + - hysteresis + required: + - performanceMetric + - thresholdType + required: + - objectType + - objectInstanceId + - criteria + required: true + responses: + '201': + description: > + 201 CREATED + + Shall be returned when a threshold has been created successfully. + + The response body shall contain a representation of the created + "Individual threshold" resource, as defined in clause 6.6.2.9. + + The HTTP response shall include a "Location" HTTP header that + contains the resource URI of the created "Individual threshold" + resource. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The resource URI of the created "Individual change state + operation occurence" resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + content: + application/json: + schema: + description: '' + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectType: + description: >- + Type of measured object. The applicable measured object + type for a measurement is defined in clause 8.2 of ETSI GS + NFV-IFA 031. + type: string + objectInstanceId: + description: | + An identifier with the intention of being globally unique. + type: string + subjObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured + object instance associated with this threshold. May be + present if a sub-object is defined in clause 8.2 of ETSI + GS NFV-IFA 031 for the related measured object type. If + this attribute is absent and a sub-object is defined in + clause 8.2 of ETSI GS NFV-IFA 031 for the related + measured object type, thresholds are set for all + sub-object instances of the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + criteria: + description: | + This type represents criteria that define a threshold. + type: object + properties: + performanceMetric: + description: > + Defines the performance metric associated with the + threshold. This attribute’s value shall contain the + related "Measurement Name" values as defined in + clause 8.4 of ETSI GS NFV-IFA 031 + type: string + thresholdType: + description: > + Type of threshold. This attribute determines which + other attributes are present in the data structure. + Permitted values: + - SIMPLE: Single-valued static threshold + + In the present document, simple thresholds are + defined. The definition of additional threshold types + is left for future specification. + type: string + enum: + - SIMPLE + simpleThresholdDetails: + description: > + Details of a simple threshold. Shall be present if + thresholdType="SIMPLE". + type: object + properties: + thresholdValue: + description: | + A number defined in IETF RFC 8259. + type: number + hysteresis: + description: | + A number defined in IETF RFC 8259. + type: number + required: + - thresholdValue + - hysteresis + required: + - performanceMetric + - thresholdType + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + object: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceId + - subjObjectInstanceIds + - criteria + - _links + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + get: + description: | + The client can use this method to query information about thresholds. + parameters: + - name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of + ETSI GS NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this + parameter as part of the URI query string. The API consumer may + supply this parameter. + + All attribute names that appear in the Threshold and in data types + referenced from it shall be supported by the NFV-MANO functional + entity in the expression. + in: query + required: false + schema: + type: string + - name: nextpage_opaque_marker + description: > + Marker to obtain the next page of a paged response. Shall be + supported by the NFV-MANO functional entity if the entity supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS + NFV-SOL 013 for this resource. + in: query + required: false + schema: + type: string + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when information about zero or more thresholds + has been queried successfully. + + The response body shall contain in an array the representations of + zero or more thresholds, as defined in clause 6.6.2.9. + + If the "filter" URI parameter was supplied in the request, the data + in the response body shall have been transformed according to the + rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013. + + If the NFV-MANO functional entity supports alternative 2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this + resource, inclusion of the Link HTTP header in this response shall + follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + type: array + items: + description: '' + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + objectType: + description: >- + Type of measured object. The applicable measured object + type for a measurement is defined in clause 8.2 of ETSI + GS NFV-IFA 031. + type: string + objectInstanceId: + description: > + An identifier with the intention of being globally + unique. + type: string + subjObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured + object instance associated with this threshold. May be + present if a sub-object is defined in clause 8.2 of ETSI + GS NFV-IFA 031 for the related measured object type. If + this attribute is absent and a sub-object is defined in + clause 8.2 of ETSI GS NFV-IFA 031 for the related + measured object type, thresholds are set for all + sub-object instances of the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + criteria: + description: | + This type represents criteria that define a threshold. + type: object + properties: + performanceMetric: + description: > + Defines the performance metric associated with the + threshold. This attribute’s value shall contain the + related "Measurement Name" values as defined in + clause 8.4 of ETSI GS NFV-IFA 031 + type: string + thresholdType: + description: > + Type of threshold. This attribute determines which + other attributes are present in the data structure. + Permitted values: + - SIMPLE: Single-valued static threshold + + In the present document, simple thresholds are + defined. The definition of additional threshold + types is left for future specification. + type: string + enum: + - SIMPLE + simpleThresholdDetails: + description: > + Details of a simple threshold. Shall be present if + thresholdType="SIMPLE". + type: object + properties: + thresholdValue: + description: | + A number defined in IETF RFC 8259. + type: number + hysteresis: + description: | + A number defined in IETF RFC 8259. + type: number + required: + - thresholdValue + - hysteresis + required: + - performanceMetric + - thresholdType + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + object: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceId + - subjObjectInstanceIds + - criteria + - _links + '400': + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/thresholds/{thresholdId}': + parameters: + - name: thresholdId + in: path + description: Identifier of the PM threshold + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + get: + description: | + The client can use this method for reading an individual threshold + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when information about an individual threshold + has been read successfully. + + The response body shall contain a representation of the threshold, + as defined in clause 6.6.2.9. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: '' + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectType: + description: >- + Type of measured object. The applicable measured object + type for a measurement is defined in clause 8.2 of ETSI GS + NFV-IFA 031. + type: string + objectInstanceId: + description: | + An identifier with the intention of being globally unique. + type: string + subjObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured + object instance associated with this threshold. May be + present if a sub-object is defined in clause 8.2 of ETSI + GS NFV-IFA 031 for the related measured object type. If + this attribute is absent and a sub-object is defined in + clause 8.2 of ETSI GS NFV-IFA 031 for the related + measured object type, thresholds are set for all + sub-object instances of the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + criteria: + description: | + This type represents criteria that define a threshold. + type: object + properties: + performanceMetric: + description: > + Defines the performance metric associated with the + threshold. This attribute’s value shall contain the + related "Measurement Name" values as defined in + clause 8.4 of ETSI GS NFV-IFA 031 + type: string + thresholdType: + description: > + Type of threshold. This attribute determines which + other attributes are present in the data structure. + Permitted values: + - SIMPLE: Single-valued static threshold + + In the present document, simple thresholds are + defined. The definition of additional threshold types + is left for future specification. + type: string + enum: + - SIMPLE + simpleThresholdDetails: + description: > + Details of a simple threshold. Shall be present if + thresholdType="SIMPLE". + type: object + properties: + thresholdValue: + description: | + A number defined in IETF RFC 8259. + type: number + hysteresis: + description: | + A number defined in IETF RFC 8259. + type: number + required: + - thresholdValue + - hysteresis + required: + - performanceMetric + - thresholdType + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + object: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceId + - subjObjectInstanceIds + - criteria + - _links + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + delete: + description: | + This method allows to delete a threshold. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '204': + description: | + 204 NO CONTENT + Shall be returned when the threshold has been deleted successfully. + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + /subscriptions: + post: + description: | + The POST method creates a new subscription. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + requestBody: + description: | + Details of the subscription to be created. + content: + application/json: + schema: + description: | + This type represents a subscription request. + type: object + properties: + filter: + description: > + This type represents a filter that can be used to subscribe + for notifications related to performance management + events. 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). + type: object + properties: + pmSubscriptionFilter: + description: > + This type represents subscription filter criteria to + match NFV-MANO functional entities and their associated + managed objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + + The attributes "manoServiceIds" and + "manoServiceNames" are alternatives to reference to + NFV-MANO services in a filter. They should not be + used together in the same filter instance, but one + alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance Name listed in + this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name listed in + this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + 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. + type: string + enum: + - ThresholdCrossedNotification + - PerformanceInformationAvailableNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + authentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization + which the API consumer is willing to accept when + receiving a notification. Permitted values: * BASIC: In + every HTTP request to the notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to + the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification + endpoint is sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + description: > + Parameters for authentication/authorization using BASIC. + Shall be present if authType is "BASIC" and the + contained information has not been provisioned out of + band. Shall be absent otherwise. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out + of band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out + of band. + type: string + paramsOauth2ClientCredentials: + description: > + Parameters for authentication/authorization using + OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType + is "OAUTH2_CLIENT_CREDENTIALS" and the contained + information has not been provisioned out of band. Shall + be absent otherwise. + type: object + properties: + clientId: + description: > + Client identifier to be used in the access token + request of the OAuth 2.0 client credentials grant + type. Shall be present if it has not been + provisioned out of band. The clientId and + clientPassword passed in a subscription shall not be + the same as the clientId and clientPassword that are + used to obtain authorization for API requests. + Client credentials may differ between subscriptions. + The value of clientPassword should be generated by a + random process. + type: string + clientPassword: + description: > + Client password to be used in the access token + request of the OAuth 2.0 client credentials grant + type. Shall be present if it has not been + provisioned out of band. The clientId and + clientPassword passed in a subscription shall not be + the same as the clientId and clientPassword that are + used to obtain authorization for API requests. + Client credentials may differ between subscriptions. + The value of clientPassword should be generated by a + random process. + type: string + tokenEndpoint: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - callbackUri + required: true + responses: + '201': + description: > + 201 CREATED + + Shall be returned when the subscription has been created + successfully. + + A representation of the created subscription resource shall be + returned in the response body, as defined in clause 6.6.2.3. + + The HTTP response shall include a "Location" HTTP header that + contains the resource URI of the created "Individual subscription" + resource. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The resource URI of the created "Individual change state + operation occurence" resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + content: + application/json: + schema: + description: | + This type represents a subscription. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a filter that can be used to + subscribe for notifications related to performance + management events. 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). + type: object + properties: + pmSubscriptionFilter: + description: > + This type represents subscription filter criteria to + match NFV-MANO functional entities and their + associated managed objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an + NFV-MANO service name listed in this attribute. + + The attributes "manoServiceIds" and + "manoServiceNames" are alternatives to reference + to NFV-MANO services in a filter. They should not + be used together in the same filter instance, but + one alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance Name listed + in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + description: > + An identifier with the intention of being + globally unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name listed + in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + 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. + type: string + enum: + - ThresholdCrossedNotification + - PerformanceInformationAvailableNotification + callbackUri: + description: | + The URI of the endpoint to send the notification to. + type: object + properties: + links: + description: | + String formatted according to IETF RFC 3986. + type: string + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - links + - self + required: + - id + - callbackUri + '303': + description: > + 303 SEE OTHER + + Shall be returned when a subscription with the same callbackURI and + the same filter already exists and the policy of the NFV-MANO + functional entity is to not create redundant subscriptions. + + The HTTP response shall include a "Location" HTTP header that + contains the resource URI of the existing "Individual subscription" + resource. + + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The resource URI of the created "Individual change state + operation occurence" resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + get: + description: > + The client can use this method to query the list of active + subscriptions to performance management notifications subscribed by the + client. + parameters: + - name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of + ETSI GS NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this + parameter as part of the URI query string. The API consumer may + supply this parameter. + + All attribute names that appear in the PmSubscription and in data + types referenced from it shall be supported by the NFV-MANO + functional entity in the expression. + in: query + required: false + schema: + type: string + - name: nextpage_opaque_marker + description: > + Marker to obtain the next page of a paged response. Shall be + supported by the NFV-MANO functional entity if the entity supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS + NFV-SOL 013 for this resource. + in: query + required: false + schema: + type: string + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + Shall be returned when the list of subscriptions has been queried + successfully. + + The response body shall contain in an array the representations of + all active subscriptions of the functional block that invokes the + method, i.e. zero or more representations of PM subscriptions as + defined in clause 6.6.2.3. + + If the "filter" URI parameter was supplied in the request, the data + in the response body shall have been transformed according to the + rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013. + + If the NFV-MANO functional entity supports alternative 2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this + resource, inclusion of the Link HTTP header in this response shall + follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + type: array + items: + description: | + This type represents a subscription. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + filter: + description: > + This type represents a filter that can be used to + subscribe for notifications related to performance + management events. 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). + type: object + properties: + pmSubscriptionFilter: + description: > + This type represents subscription filter criteria to + match NFV-MANO functional entities and their + associated managed objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being + globally unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the + respective type within a NFV-MANO functional + entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an + NFV-MANO service name listed in this attribute. + + The attributes "manoServiceIds" and + "manoServiceNames" are alternatives to + reference to NFV-MANO services in a filter. They + should not be used together in the same filter + instance, but one alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity + produced interfaces in a filter. They should + not be used both in the same filter instance, + but one alternative should be chosen. + type: array + items: + description: > + An identifier that is unique for the + respective type within a NFV-MANO functional + entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance Name + listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity + produced interfaces in a filter. They should + not be used both in the same filter instance, + but one alternative should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives + to reference to NFV-MANO functional entity + consumed interfaces in a filter. They should + not be used both in the same filter instance, + but one alternative should be chosen. + type: array + items: + description: > + An identifier with the intention of being + globally unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name + listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives + to reference to NFV-MANO functional entity + consumed interfaces in a filter. They should + not be used both in the same filter instance, + but one alternative should be chosen. + 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. + type: string + enum: + - ThresholdCrossedNotification + - PerformanceInformationAvailableNotification + callbackUri: + description: | + The URI of the endpoint to send the notification to. + type: object + properties: + links: + description: | + String formatted according to IETF RFC 3986. + type: string + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - links + - self + required: + - id + - callbackUri + '400': + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/subscriptions/{subscriptionId}': + parameters: + - name: subscriptionId + in: path + description: Identifier of the subscription + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + get: + description: > + The client can use this method for reading an individual subscription + about performance management notifications subscribed by the client. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when the subscription has been read successfully. + + The response body shall contain a representation of the "Individual + subscription" resource, as defined in clause 6.6.2.3. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: | + This type represents a subscription. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a filter that can be used to + subscribe for notifications related to performance + management events. 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). + type: object + properties: + pmSubscriptionFilter: + description: > + This type represents subscription filter criteria to + match NFV-MANO functional entities and their + associated managed objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an + NFV-MANO service name listed in this attribute. + + The attributes "manoServiceIds" and + "manoServiceNames" are alternatives to reference + to NFV-MANO services in a filter. They should not + be used together in the same filter instance, but + one alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance Name listed + in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + description: > + An identifier with the intention of being + globally unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name listed + in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + 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. + type: string + enum: + - ThresholdCrossedNotification + - PerformanceInformationAvailableNotification + callbackUri: + description: | + The URI of the endpoint to send the notification to. + type: object + properties: + links: + description: | + String formatted according to IETF RFC 3986. + type: string + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - links + - self + required: + - id + - callbackUri + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + delete: + description: | + This method terminates an individual subscription. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '204': + description: > + 204 NO CONTENT + + Shall be returned when the "Individual subscription" resource has + been deleted successfully. + + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI +components: + schemas: + PmSubscriptionRequest: + description: | + This type represents a subscription request. + type: object + properties: + filter: + description: > + This type represents a filter that can be used to subscribe for + notifications related to performance management events. 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). + type: object + properties: + pmSubscriptionFilter: + description: > + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. + type: object + properties: + manoEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO service + name listed in this attribute. + + The attributes "manoServiceIds" and "manoServiceNames" are + alternatives to reference to NFV-MANO services in a filter. + They should not be used together in the same filter + instance, but one alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to reference + to NFV-MANO functional entity produced interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to reference + to NFV-MANO functional entity produced interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to reference + to NFV-MANO functional entity consumed interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to reference + to NFV-MANO functional entity consumed interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + 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. + type: string + enum: + - ThresholdCrossedNotification + - PerformanceInformationAvailableNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + authentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization which the + API consumer is willing to accept when receiving a notification. + Permitted values: * BASIC: In every HTTP request to the + notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification endpoint is + sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + description: > + Parameters for authentication/authorization using BASIC. Shall + be present if authType is "BASIC" and the contained information + has not been provisioned out of band. Shall be absent otherwise. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + paramsOauth2ClientCredentials: + description: > + Parameters for authentication/authorization using + OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is + "OAUTH2_CLIENT_CREDENTIALS" and the contained information has + not been provisioned out of band. Shall be absent otherwise. + type: object + properties: + clientId: + description: > + Client identifier to be used in the access token request of + the OAuth 2.0 client credentials grant type. Shall be + present if it has not been provisioned out of band. The + clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are + used to obtain authorization for API requests. Client + credentials may differ between subscriptions. The value of + clientPassword should be generated by a random process. + type: string + clientPassword: + description: > + Client password to be used in the access token request of + the OAuth 2.0 client credentials grant type. Shall be + present if it has not been provisioned out of band. The + clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are + used to obtain authorization for API requests. Client + credentials may differ between subscriptions. The value of + clientPassword should be generated by a random process. + type: string + tokenEndpoint: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - callbackUri + PmSubscription: + description: | + This type represents a subscription. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a filter that can be used to subscribe for + notifications related to performance management events. 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). + type: object + properties: + pmSubscriptionFilter: + description: > + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. + type: object + properties: + manoEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO service + name listed in this attribute. + + The attributes "manoServiceIds" and "manoServiceNames" are + alternatives to reference to NFV-MANO services in a filter. + They should not be used together in the same filter + instance, but one alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to reference + to NFV-MANO functional entity produced interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to reference + to NFV-MANO functional entity produced interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to reference + to NFV-MANO functional entity consumed interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to reference + to NFV-MANO functional entity consumed interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + 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. + type: string + enum: + - ThresholdCrossedNotification + - PerformanceInformationAvailableNotification + callbackUri: + description: | + The URI of the endpoint to send the notification to. + type: object + properties: + links: + description: | + String formatted according to IETF RFC 3986. + type: string + self: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - links + - self + required: + - id + - callbackUri + CreatePmJobRequest: + description: | + This type represents a request to create a PM job. + type: object + properties: + objectType: + description: > + Type of measured object. The applicable measured object type for a + measurement is defined in clause 8.2 of ETSI GS NFV-IFA 031. + type: string + objectInstanceIds: + description: > + Identifiers of the measured object instance for which performance + information is requested to be collected. This attribute shall + contain the identifier of the instance of the measure object + according to their type. See also definitions in clause 8.2 of ETSI + GS NFV-IFA 031. If more than one identifier is provided, values + shall all refer to measured object instances of the same type, for + which the same criteria is then applicable. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + minItems: 1 + subObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured object + instance for which performance information is requested to be + collected. May be present if a sub-object is defined in clause 8.2 + of ETSI GS NFV-IFA 031 for the related measured object type. If this + attribute is present, the cardinality of the "objectInstanceIds" + attribute shall be 1. If this attribute is absent and a sub-object + is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the related + measured object type, measurements will be taken for all sub-object + instances of the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + criteria: + description: | + This type represents collection criteria for PM jobs. + type: object + properties: + performanceMetric: + description: > + This defines the types of performance metrics for the specified + measured object(s). This attribute’s value shall contain the + related "Measurement Name" values as defined in clause 8.4 of + ETSI GS NFV-IFA 031. At least one of the two attributes + (performance metric or group) shall be present. + type: array + items: + type: string + performanceMetricGroup: + description: > + Group of performance metrics. A metric group is a pre-defined + list of metrics, known to the producer that it can decompose to + individual metrics. This attribute’s value shall contain the + related "Measurement Group" values as defined in clause 8.4 of + ETSI GS NFV-IFA 031. At least one of the two attributes + (performance metric or group) shall be present. + type: array + items: + type: string + collectionPeriod: + description: > + Specifies the periodicity at which the producer will collect + performance information. The unit shall be seconds. + + At the end of each reportingPeriod, the producer will inform the + API consumer about availability of the performance data + collected for each completed collection period during this + reportingPeriod. The reportingPeriod should be equal to or a + multiple of the collectionPeriod. In the latter case, the + performance data for the collection periods within one reporting + period are reported together. + + In particular when choosing short collection and reporting + periods, the number of PM jobs that can be supported depends on + the capability of the producing entity. + type: integer + reportingPeriod: + description: > + Specifies the periodicity at which the producer will report to + the API consumer about performance information. The unit shall + be seconds. + + At the end of each reportingPeriod, the producer will inform the + API consumer about availability of the performance data + collected for each completed collection period during this + reportingPeriod. The reportingPeriod should be equal to or a + multiple of the collectionPeriod. In the latter case, the + performance data for the collection periods within one reporting + period are reported together. + + In particular when choosing short collection and reporting + periods, the number of PM jobs that can be supported depends on + the capability of the producing entity. + type: integer + reportingBoundary: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + required: + - collectionPeriod + - reportingPeriod + required: + - objectType + - objectInstanceIds + - criteria + PmJob: + description: | + This type represents a PM job. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectType: + description: > + Type of measured object. The applicable measured object type for a + measurement is defined in clause 8.2 of ETSI GS NFV-IFA 031. + type: string + objectInstanceIds: + description: > + Identifiers of the measured object instance for which performance + information is collected. This attribute shall contain the + identifier of the instance of the measure object according to their + type. See also definitions in clause 8.2 of ETSI GS NFV-IFA 031. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + minItems: 1 + subObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured object + instance for which performance information is requested to be + collected. May be present if a sub-object is defined in clause 8.2 + of ETSI GS NFV-IFA 031 for the related measured object type. If this + attribute is present, the cardinality of the "objectInstanceIds" + attribute shall be 1. If this attribute is absent and a sub-object + is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the related + measured object type, measurements will be taken for all sub-object + instances of the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + criteria: + description: | + This type represents collection criteria for PM jobs. + type: object + properties: + performanceMetric: + description: > + This defines the types of performance metrics for the specified + measured object(s). This attribute’s value shall contain the + related "Measurement Name" values as defined in clause 8.4 of + ETSI GS NFV-IFA 031. At least one of the two attributes + (performance metric or group) shall be present. + type: array + items: + type: string + performanceMetricGroup: + description: > + Group of performance metrics. A metric group is a pre-defined + list of metrics, known to the producer that it can decompose to + individual metrics. This attribute’s value shall contain the + related "Measurement Group" values as defined in clause 8.4 of + ETSI GS NFV-IFA 031. At least one of the two attributes + (performance metric or group) shall be present. + type: array + items: + type: string + collectionPeriod: + description: > + Specifies the periodicity at which the producer will collect + performance information. The unit shall be seconds. + + At the end of each reportingPeriod, the producer will inform the + API consumer about availability of the performance data + collected for each completed collection period during this + reportingPeriod. The reportingPeriod should be equal to or a + multiple of the collectionPeriod. In the latter case, the + performance data for the collection periods within one reporting + period are reported together. + + In particular when choosing short collection and reporting + periods, the number of PM jobs that can be supported depends on + the capability of the producing entity. + type: integer + reportingPeriod: + description: > + Specifies the periodicity at which the producer will report to + the API consumer about performance information. The unit shall + be seconds. + + At the end of each reportingPeriod, the producer will inform the + API consumer about availability of the performance data + collected for each completed collection period during this + reportingPeriod. The reportingPeriod should be equal to or a + multiple of the collectionPeriod. In the latter case, the + performance data for the collection periods within one reporting + period are reported together. + + In particular when choosing short collection and reporting + periods, the number of PM jobs that can be supported depends on + the capability of the producing entity. + type: integer + reportingBoundary: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + required: + - collectionPeriod + - reportingPeriod + reports: + description: | + Information about available reports collected by this PM job. + type: array + items: + type: object + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + readyTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + expiryTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + fileSize: + description: | + Unsigned integer + type: number + required: + - href + - readyTime + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: > + Links to resources representing the measured object instances + for which performance information is collected. Shall be + present if the measured object instance information is + accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an absolute + URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceIds + - criteria + - _links + CreateThresholdRequest: + description: | + This type represents a request to create a threshold. + type: object + properties: + objectType: + description: > + Type of measured object. The applicable measured object type for a + measurement is defined in clause 8.2 of ETSI GS NFV-IFA 031. + type: string + objectInstanceId: + description: | + An identifier with the intention of being globally unique. + type: string + subjObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured object + instance associated with this threshold. May be present if a + sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the + related measured object type. If this attribute is absent and a + sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the + related measured object type, thresholds will be set for all + sub-object instances of the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + criteria: + description: | + This type represents criteria that define a threshold. + type: object + properties: + performanceMetric: + description: > + Defines the performance metric associated with the threshold. + This attribute’s value shall contain the related "Measurement + Name" values as defined in clause 8.4 of ETSI GS NFV-IFA 031 + type: string + thresholdType: + description: > + Type of threshold. This attribute determines which other + attributes are present in the data structure. Permitted values: + - SIMPLE: Single-valued static threshold + + In the present document, simple thresholds are defined. The + definition of additional threshold types is left for future + specification. + type: string + enum: + - SIMPLE + simpleThresholdDetails: + description: > + Details of a simple threshold. Shall be present if + thresholdType="SIMPLE". + type: object + properties: + thresholdValue: + description: | + A number defined in IETF RFC 8259. + type: number + hysteresis: + description: | + A number defined in IETF RFC 8259. + type: number + required: + - thresholdValue + - hysteresis + required: + - performanceMetric + - thresholdType + required: + - objectType + - objectInstanceId + - criteria + Threshold: + description: '' + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectType: + description: >- + Type of measured object. The applicable measured object type for a + measurement is defined in clause 8.2 of ETSI GS NFV-IFA 031. + type: string + objectInstanceId: + description: | + An identifier with the intention of being globally unique. + type: string + subjObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured object + instance associated with this threshold. May be present if a + sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the + related measured object type. If this attribute is absent and a + sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the + related measured object type, thresholds are set for all sub-object + instances of the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + criteria: + description: | + This type represents criteria that define a threshold. + type: object + properties: + performanceMetric: + description: > + Defines the performance metric associated with the threshold. + This attribute’s value shall contain the related "Measurement + Name" values as defined in clause 8.4 of ETSI GS NFV-IFA 031 + type: string + thresholdType: + description: > + Type of threshold. This attribute determines which other + attributes are present in the data structure. Permitted values: + - SIMPLE: Single-valued static threshold + + In the present document, simple thresholds are defined. The + definition of additional threshold types is left for future + specification. + type: string + enum: + - SIMPLE + simpleThresholdDetails: + description: > + Details of a simple threshold. Shall be present if + thresholdType="SIMPLE". + type: object + properties: + thresholdValue: + description: | + A number defined in IETF RFC 8259. + type: number + hysteresis: + description: | + A number defined in IETF RFC 8259. + type: number + required: + - thresholdValue + - hysteresis + required: + - performanceMetric + - thresholdType + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + object: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceId + - subjObjectInstanceIds + - criteria + - _links + PerformanceReport: + description: > + This type defines the format of a performance report provided by the + NFV-MANO functional entity to the API consumer as a result of + collecting performance information as part of a PM job. + type: object + properties: + entries: + description: > + List of performance information entries. Each performance report + entry is for a given metric of a given object (i.e. measured object + instance) corresponding to the related measured object types, but + can include multiple collected values. + type: array + items: + type: object + properties: + objectType: + description: > + Type of measured object. The applicable measured object type + for a measurement is defined in clause 8.2 of ETSI GS NFV-IFA + 031. + type: string + objectInstanceId: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: | + An identifier with the intention of being globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + subObjectInstanceId: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + performanceMetric: + description: > + Name of the metric collected. This attribute shall contain the + related "Measurement Name" value as defined in clause 8.4 of + ETSI GS NFV-IFA 031. + type: string + performanceValues: + description: | + List of performance values with associated timestamp. + type: array + items: + type: object + properties: + timeStamp: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + value: + description: > + Value of the metric collected. The type of this + attribute shall correspond to the related "Measurement + Unit" as defined in clause 8.4 of ETSI GS NFV-IFA 031. + context: + description: > + This type represents a list of key-value pairs. The + order of the pairs in the list is not significant. In + JSON, a set of keyvalue pairs is represented as an + object. It shall comply with the provisions defined in + clause 4 of IETF RFC 8259. In the following example, a + list of key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided to + illustrate that the values associated with different + keys can be of different type. + type: object + required: + - timeStamp + - value + minItems: 1 + required: + - objectType + - objectInstanceId + - performanceMetric + - performanceValues + minItems: 1 + required: + - entries + PmNotificationsFilter: + description: > + This type represents a filter that can be used to subscribe for + notifications related to performance management events. 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). + type: object + properties: + pmSubscriptionFilter: + description: > + This type represents subscription filter criteria to match NFV-MANO + functional entities and their associated managed objects. + type: object + properties: + manoEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO service + name listed in this attribute. + + The attributes "manoServiceIds" and "manoServiceNames" are + alternatives to reference to NFV-MANO services in a filter. + They should not be used together in the same filter instance, + but one alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity produced interfaces + with an instance identifier listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to reference to + NFV-MANO functional entity produced interfaces in a filter. + They should not be used both in the same filter instance, but + one alternative should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity produced interfaces + with an instance Name listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to reference to + NFV-MANO functional entity produced interfaces in a filter. + They should not be used both in the same filter instance, but + one alternative should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity consumed interfaces + with an instance identifier listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to reference to + NFV-MANO functional entity consumed interfaces in a filter. + They should not be used both in the same filter instance, but + one alternative should be chosen. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity consumed interfaces + with an instance Name listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to reference to + NFV-MANO functional entity consumed interfaces in a filter. + They should not be used both in the same filter instance, but + one alternative should be chosen. + 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. + type: string + enum: + - ThresholdCrossedNotification + - PerformanceInformationAvailableNotification + PmJobCriteria: + description: | + This type represents collection criteria for PM jobs. + type: object + properties: + performanceMetric: + description: > + This defines the types of performance metrics for the specified + measured object(s). This attribute’s value shall contain the + related "Measurement Name" values as defined in clause 8.4 of ETSI + GS NFV-IFA 031. At least one of the two attributes (performance + metric or group) shall be present. + type: array + items: + type: string + performanceMetricGroup: + description: > + Group of performance metrics. A metric group is a pre-defined list + of metrics, known to the producer that it can decompose to + individual metrics. This attribute’s value shall contain the + related "Measurement Group" values as defined in clause 8.4 of ETSI + GS NFV-IFA 031. At least one of the two attributes (performance + metric or group) shall be present. + type: array + items: + type: string + collectionPeriod: + description: > + Specifies the periodicity at which the producer will collect + performance information. The unit shall be seconds. + + At the end of each reportingPeriod, the producer will inform the API + consumer about availability of the performance data collected for + each completed collection period during this reportingPeriod. The + reportingPeriod should be equal to or a multiple of the + collectionPeriod. In the latter case, the performance data for the + collection periods within one reporting period are reported + together. + + In particular when choosing short collection and reporting periods, + the number of PM jobs that can be supported depends on the + capability of the producing entity. + type: integer + reportingPeriod: + description: > + Specifies the periodicity at which the producer will report to the + API consumer about performance information. The unit shall be + seconds. + + At the end of each reportingPeriod, the producer will inform the API + consumer about availability of the performance data collected for + each completed collection period during this reportingPeriod. The + reportingPeriod should be equal to or a multiple of the + collectionPeriod. In the latter case, the performance data for the + collection periods within one reporting period are reported + together. + + In particular when choosing short collection and reporting periods, + the number of PM jobs that can be supported depends on the + capability of the producing entity. + type: integer + reportingBoundary: + description: > + Date-time stamp. Representation: String formatted according to IETF + RFC 3339. + type: string + format: date-time + required: + - collectionPeriod + - reportingPeriod + ThresholdCriteria: + description: | + This type represents criteria that define a threshold. + type: object + properties: + performanceMetric: + description: > + Defines the performance metric associated with the threshold. This + attribute’s value shall contain the related "Measurement Name" + values as defined in clause 8.4 of ETSI GS NFV-IFA 031 + type: string + thresholdType: + description: > + Type of threshold. This attribute determines which other attributes + are present in the data structure. Permitted values: + - SIMPLE: Single-valued static threshold + + In the present document, simple thresholds are defined. The + definition of additional threshold types is left for future + specification. + type: string + enum: + - SIMPLE + simpleThresholdDetails: + description: > + Details of a simple threshold. Shall be present if + thresholdType="SIMPLE". + type: object + properties: + thresholdValue: + description: | + A number defined in IETF RFC 8259. + type: number + hysteresis: + description: | + A number defined in IETF RFC 8259. + type: number + required: + - thresholdValue + - hysteresis + required: + - performanceMetric + - thresholdType + responses: + pm_jobs.post.201: + description: > + 201 CREATED + + Shall be returned when the PM job has been created successfully. + + The response body shall contain a representation of the created + "Individual PM job" resource, as defined in clause 6.6.2.7. + + The HTTP response shall include a "Location" HTTP header that points to + the created "Individual PM job" resource. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: | + This type represents a PM job. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectType: + description: > + Type of measured object. The applicable measured object type + for a measurement is defined in clause 8.2 of ETSI GS NFV-IFA + 031. + type: string + objectInstanceIds: + description: > + Identifiers of the measured object instance for which + performance information is collected. This attribute shall + contain the identifier of the instance of the measure object + according to their type. See also definitions in clause 8.2 of + ETSI GS NFV-IFA 031. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + minItems: 1 + subObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured object + instance for which performance information is requested to be + collected. May be present if a sub-object is defined in + clause 8.2 of ETSI GS NFV-IFA 031 for the related measured + object type. If this attribute is present, the cardinality of + the "objectInstanceIds" attribute shall be 1. If this + attribute is absent and a sub-object is defined in clause 8.2 + of ETSI GS NFV-IFA 031 for the related measured object type, + measurements will be taken for all sub-object instances of + the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type within + a NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + criteria: + description: | + This type represents collection criteria for PM jobs. + type: object + properties: + performanceMetric: + description: > + This defines the types of performance metrics for the + specified measured object(s). This attribute’s value + shall contain the related "Measurement Name" values as + defined in clause 8.4 of ETSI GS NFV-IFA 031. At least + one of the two attributes (performance metric or group) + shall be present. + type: array + items: + type: string + performanceMetricGroup: + description: > + Group of performance metrics. A metric group is a + pre-defined list of metrics, known to the producer that + it can decompose to individual metrics. This attribute’s + value shall contain the related "Measurement Group" + values as defined in clause 8.4 of ETSI GS NFV-IFA 031. + At least one of the two attributes (performance metric or + group) shall be present. + type: array + items: + type: string + collectionPeriod: + description: > + Specifies the periodicity at which the producer will + collect performance information. The unit shall be + seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed collection + period during this reportingPeriod. The reportingPeriod + should be equal to or a multiple of the collectionPeriod. + In the latter case, the performance data for the + collection periods within one reporting period are + reported together. + + In particular when choosing short collection and reporting + periods, the number of PM jobs that can be supported + depends on the capability of the producing entity. + type: integer + reportingPeriod: + description: > + Specifies the periodicity at which the producer will + report to the API consumer about performance information. + The unit shall be seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed collection + period during this reportingPeriod. The reportingPeriod + should be equal to or a multiple of the collectionPeriod. + In the latter case, the performance data for the + collection periods within one reporting period are + reported together. + + In particular when choosing short collection and reporting + periods, the number of PM jobs that can be supported + depends on the capability of the producing entity. + type: integer + reportingBoundary: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + required: + - collectionPeriod + - reportingPeriod + reports: + description: | + Information about available reports collected by this PM job. + type: array + items: + type: object + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + readyTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + expiryTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + fileSize: + description: | + Unsigned integer + type: number + required: + - href + - readyTime + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: > + Links to resources representing the measured object + instances for which performance information is collected. + Shall be present if the measured object instance + information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceIds + - criteria + - _links + pm_jobs.get.200: + description: > + 200 OK + + Shall be returned when information about zero or more PM jobs has been + queried successfully. + + The response body shall contain in an array the representations of zero + or more PM jobs, as defined in clause 6.6.2.7. + + If the "filter" URI parameter or one of the "all_fields", "fields" (if + supported), "exclude_fields" (if supported) or "exclude_default" URI + parameters was supplied in the request, the data in the response body + shall have been transformed according to the rules specified in clauses + 5.2.2 and 5.3.2 of ETSI GS NFV-SOL 013, respectively. + + If the NFV-MANO functional entity supports alternative 2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + inclusion of the Link HTTP header in this response shall follow the + provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013 . + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Link: + description: > + Reference to other resources. Link HTTP header in this response + shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL + 013. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: | + This type represents a PM job. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectType: + description: > + Type of measured object. The applicable measured object type + for a measurement is defined in clause 8.2 of ETSI GS + NFV-IFA 031. + type: string + objectInstanceIds: + description: > + Identifiers of the measured object instance for which + performance information is collected. This attribute shall + contain the identifier of the instance of the measure + object according to their type. See also definitions in + clause 8.2 of ETSI GS NFV-IFA 031. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + minItems: 1 + subObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured + object instance for which performance information is + requested to be collected. May be present if a sub-object + is defined in clause 8.2 of ETSI GS NFV-IFA 031 for the + related measured object type. If this attribute is present, + the cardinality of the "objectInstanceIds" attribute shall + be 1. If this attribute is absent and a sub-object is + defined in clause 8.2 of ETSI GS NFV-IFA 031 for the + related measured object type, measurements will be taken + for all sub-object instances of the measured object + instance. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + criteria: + description: | + This type represents collection criteria for PM jobs. + type: object + properties: + performanceMetric: + description: > + This defines the types of performance metrics for the + specified measured object(s). This attribute’s value + shall contain the related "Measurement Name" values as + defined in clause 8.4 of ETSI GS NFV-IFA 031. At least + one of the two attributes (performance metric or group) + shall be present. + type: array + items: + type: string + performanceMetricGroup: + description: > + Group of performance metrics. A metric group is a + pre-defined list of metrics, known to the producer that + it can decompose to individual metrics. This + attribute’s value shall contain the related + "Measurement Group" values as defined in clause 8.4 of + ETSI GS NFV-IFA 031. At least one of the two attributes + (performance metric or group) shall be present. + type: array + items: + type: string + collectionPeriod: + description: > + Specifies the periodicity at which the producer will + collect performance information. The unit shall be + seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed + collection period during this reportingPeriod. The + reportingPeriod should be equal to or a multiple of the + collectionPeriod. In the latter case, the performance + data for the collection periods within one reporting + period are reported together. + + In particular when choosing short collection and + reporting periods, the number of PM jobs that can be + supported depends on the capability of the producing + entity. + type: integer + reportingPeriod: + description: > + Specifies the periodicity at which the producer will + report to the API consumer about performance + information. The unit shall be seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed + collection period during this reportingPeriod. The + reportingPeriod should be equal to or a multiple of the + collectionPeriod. In the latter case, the performance + data for the collection periods within one reporting + period are reported together. + + In particular when choosing short collection and + reporting periods, the number of PM jobs that can be + supported depends on the capability of the producing + entity. + type: integer + reportingBoundary: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + required: + - collectionPeriod + - reportingPeriod + reports: + description: > + Information about available reports collected by this PM + job. + type: array + items: + type: object + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + readyTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + expiryTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + fileSize: + description: | + Unsigned integer + type: number + required: + - href + - readyTime + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: > + Links to resources representing the measured object + instances for which performance information is + collected. Shall be present if the measured object + instance information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceIds + - criteria + - _links + pm_jobs.get.400: + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Invalid attribute selector. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + pm_job.get.200: + description: > + 200 OK + + Shall be returned when information about an individual PM job has been + read successfully. + + The response body shall contain a representation of the "Individual PM + job" resource, as defined in clause 6.6.2.7. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: | + This type represents a PM job. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectType: + description: > + Type of measured object. The applicable measured object type + for a measurement is defined in clause 8.2 of ETSI GS NFV-IFA + 031. + type: string + objectInstanceIds: + description: > + Identifiers of the measured object instance for which + performance information is collected. This attribute shall + contain the identifier of the instance of the measure object + according to their type. See also definitions in clause 8.2 of + ETSI GS NFV-IFA 031. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + minItems: 1 + subObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured object + instance for which performance information is requested to be + collected. May be present if a sub-object is defined in + clause 8.2 of ETSI GS NFV-IFA 031 for the related measured + object type. If this attribute is present, the cardinality of + the "objectInstanceIds" attribute shall be 1. If this + attribute is absent and a sub-object is defined in clause 8.2 + of ETSI GS NFV-IFA 031 for the related measured object type, + measurements will be taken for all sub-object instances of + the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type within + a NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + criteria: + description: | + This type represents collection criteria for PM jobs. + type: object + properties: + performanceMetric: + description: > + This defines the types of performance metrics for the + specified measured object(s). This attribute’s value + shall contain the related "Measurement Name" values as + defined in clause 8.4 of ETSI GS NFV-IFA 031. At least + one of the two attributes (performance metric or group) + shall be present. + type: array + items: + type: string + performanceMetricGroup: + description: > + Group of performance metrics. A metric group is a + pre-defined list of metrics, known to the producer that + it can decompose to individual metrics. This attribute’s + value shall contain the related "Measurement Group" + values as defined in clause 8.4 of ETSI GS NFV-IFA 031. + At least one of the two attributes (performance metric or + group) shall be present. + type: array + items: + type: string + collectionPeriod: + description: > + Specifies the periodicity at which the producer will + collect performance information. The unit shall be + seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed collection + period during this reportingPeriod. The reportingPeriod + should be equal to or a multiple of the collectionPeriod. + In the latter case, the performance data for the + collection periods within one reporting period are + reported together. + + In particular when choosing short collection and reporting + periods, the number of PM jobs that can be supported + depends on the capability of the producing entity. + type: integer + reportingPeriod: + description: > + Specifies the periodicity at which the producer will + report to the API consumer about performance information. + The unit shall be seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed collection + period during this reportingPeriod. The reportingPeriod + should be equal to or a multiple of the collectionPeriod. + In the latter case, the performance data for the + collection periods within one reporting period are + reported together. + + In particular when choosing short collection and reporting + periods, the number of PM jobs that can be supported + depends on the capability of the producing entity. + type: integer + reportingBoundary: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + required: + - collectionPeriod + - reportingPeriod + reports: + description: | + Information about available reports collected by this PM job. + type: array + items: + type: object + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + readyTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + expiryTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + fileSize: + description: | + Unsigned integer + type: number + required: + - href + - readyTime + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: > + Links to resources representing the measured object + instances for which performance information is collected. + Shall be present if the measured object instance + information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceIds + - criteria + - _links + pm_job.delete.204: + description: | + 204 NO CONTENT + Shall be returned when the PM job has been deleted successfully. + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + pm_job.report.get.200: + description: > + 200 OK + + Shall be returned when information of an individual performance report + has been read successfully. + + The response body shall contain a representation of the "Individual + performance report" resource, as defined in clause 6.6.2.10. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type defines the format of a performance report provided by + the NFV-MANO functional entity to the API consumer as a result of + collecting performance information as part of a PM job. + type: object + properties: + entries: + description: > + List of performance information entries. Each performance + report entry is for a given metric of a given object (i.e. + measured object instance) corresponding to the related + measured object types, but can include multiple collected + values. + type: array + items: + type: object + properties: + objectType: + description: > + Type of measured object. The applicable measured object + type for a measurement is defined in clause 8.2 of ETSI + GS NFV-IFA 031. + type: string + objectInstanceId: + description: > + This type represents the identifier to reference a + managed object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + required: + - type + - objectId + subObjectInstanceId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + performanceMetric: + description: > + Name of the metric collected. This attribute shall + contain the related "Measurement Name" value as defined + in clause 8.4 of ETSI GS NFV-IFA 031. + type: string + performanceValues: + description: | + List of performance values with associated timestamp. + type: array + items: + type: object + properties: + timeStamp: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + value: + description: > + Value of the metric collected. The type of this + attribute shall correspond to the related + "Measurement Unit" as defined in clause 8.4 of + ETSI GS NFV-IFA 031. + context: + description: > + This type represents a list of key-value pairs. + The order of the pairs in the list is not + significant. In JSON, a set of keyvalue pairs is + represented as an object. It shall comply with the + provisions defined in clause 4 of IETF RFC 8259. + In the following example, a list of key-value + pairs with four keys ("aString", "aNumber", + "anArray" and "anObject") is provided to + illustrate that the values associated with + different keys can be of different type. + type: object + required: + - timeStamp + - value + minItems: 1 + required: + - objectType + - objectInstanceId + - performanceMetric + - performanceValues + minItems: 1 + required: + - entries + thresholds.post.201: + description: > + 201 CREATED + + Shall be returned when a threshold has been created successfully. + + The response body shall contain a representation of the created + "Individual threshold" resource, as defined in clause 6.6.2.9. + + The HTTP response shall include a "Location" HTTP header that contains + the resource URI of the created "Individual threshold" resource. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The resource URI of the created "Individual change state operation + occurence" resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + content: + application/json: + schema: + description: '' + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectType: + description: >- + Type of measured object. The applicable measured object type + for a measurement is defined in clause 8.2 of ETSI GS NFV-IFA + 031. + type: string + objectInstanceId: + description: | + An identifier with the intention of being globally unique. + type: string + subjObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured object + instance associated with this threshold. May be present if a + sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for + the related measured object type. If this attribute is absent + and a sub-object is defined in clause 8.2 of ETSI GS NFV-IFA + 031 for the related measured object type, thresholds are set + for all sub-object instances of the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type within + a NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + criteria: + description: | + This type represents criteria that define a threshold. + type: object + properties: + performanceMetric: + description: > + Defines the performance metric associated with the + threshold. This attribute’s value shall contain the + related "Measurement Name" values as defined in clause + 8.4 of ETSI GS NFV-IFA 031 + type: string + thresholdType: + description: > + Type of threshold. This attribute determines which other + attributes are present in the data structure. Permitted + values: + - SIMPLE: Single-valued static threshold + + In the present document, simple thresholds are defined. + The definition of additional threshold types is left for + future specification. + type: string + enum: + - SIMPLE + simpleThresholdDetails: + description: > + Details of a simple threshold. Shall be present if + thresholdType="SIMPLE". + type: object + properties: + thresholdValue: + description: | + A number defined in IETF RFC 8259. + type: number + hysteresis: + description: | + A number defined in IETF RFC 8259. + type: number + required: + - thresholdValue + - hysteresis + required: + - performanceMetric + - thresholdType + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + object: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceId + - subjObjectInstanceIds + - criteria + - _links + thresholds.get.200: + description: > + 200 OK + + Shall be returned when information about zero or more thresholds has + been queried successfully. + + The response body shall contain in an array the representations of zero + or more thresholds, as defined in clause 6.6.2.9. + + If the "filter" URI parameter was supplied in the request, the data in + the response body shall have been transformed according to the rules + specified in clause 5.2.2 of ETSI GS NFV-SOL 013. + + If the NFV-MANO functional entity supports alternative 2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + inclusion of the Link HTTP header in this response shall follow the + provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + type: array + items: + description: '' + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectType: + description: >- + Type of measured object. The applicable measured object type + for a measurement is defined in clause 8.2 of ETSI GS + NFV-IFA 031. + type: string + objectInstanceId: + description: | + An identifier with the intention of being globally unique. + type: string + subjObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured + object instance associated with this threshold. May be + present if a sub-object is defined in clause 8.2 of ETSI GS + NFV-IFA 031 for the related measured object type. If this + attribute is absent and a sub-object is defined in clause + 8.2 of ETSI GS NFV-IFA 031 for the related measured object + type, thresholds are set for all sub-object instances of + the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + criteria: + description: | + This type represents criteria that define a threshold. + type: object + properties: + performanceMetric: + description: > + Defines the performance metric associated with the + threshold. This attribute’s value shall contain the + related "Measurement Name" values as defined in clause + 8.4 of ETSI GS NFV-IFA 031 + type: string + thresholdType: + description: > + Type of threshold. This attribute determines which other + attributes are present in the data structure. Permitted + values: + - SIMPLE: Single-valued static threshold + + In the present document, simple thresholds are defined. + The definition of additional threshold types is left + for future specification. + type: string + enum: + - SIMPLE + simpleThresholdDetails: + description: > + Details of a simple threshold. Shall be present if + thresholdType="SIMPLE". + type: object + properties: + thresholdValue: + description: | + A number defined in IETF RFC 8259. + type: number + hysteresis: + description: | + A number defined in IETF RFC 8259. + type: number + required: + - thresholdValue + - hysteresis + required: + - performanceMetric + - thresholdType + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + object: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceId + - subjObjectInstanceIds + - criteria + - _links + thresholds.get.400: + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + threshold.get.200: + description: > + 200 OK + + Shall be returned when information about an individual threshold has + been read successfully. + + The response body shall contain a representation of the threshold, as + defined in clause 6.6.2.9. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: '' + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectType: + description: >- + Type of measured object. The applicable measured object type + for a measurement is defined in clause 8.2 of ETSI GS NFV-IFA + 031. + type: string + objectInstanceId: + description: | + An identifier with the intention of being globally unique. + type: string + subjObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured object + instance associated with this threshold. May be present if a + sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for + the related measured object type. If this attribute is absent + and a sub-object is defined in clause 8.2 of ETSI GS NFV-IFA + 031 for the related measured object type, thresholds are set + for all sub-object instances of the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type within + a NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + criteria: + description: | + This type represents criteria that define a threshold. + type: object + properties: + performanceMetric: + description: > + Defines the performance metric associated with the + threshold. This attribute’s value shall contain the + related "Measurement Name" values as defined in clause + 8.4 of ETSI GS NFV-IFA 031 + type: string + thresholdType: + description: > + Type of threshold. This attribute determines which other + attributes are present in the data structure. Permitted + values: + - SIMPLE: Single-valued static threshold + + In the present document, simple thresholds are defined. + The definition of additional threshold types is left for + future specification. + type: string + enum: + - SIMPLE + simpleThresholdDetails: + description: > + Details of a simple threshold. Shall be present if + thresholdType="SIMPLE". + type: object + properties: + thresholdValue: + description: | + A number defined in IETF RFC 8259. + type: number + hysteresis: + description: | + A number defined in IETF RFC 8259. + type: number + required: + - thresholdValue + - hysteresis + required: + - performanceMetric + - thresholdType + _links: + description: | + Links for this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + object: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - objectType + - objectInstanceId + - subjObjectInstanceIds + - criteria + - _links + threshold.delete.204: + description: | + 204 NO CONTENT + Shall be returned when the threshold has been deleted successfully. + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + subscriptions.post.201: + description: > + 201 CREATED + + Shall be returned when the subscription has been created successfully. + + A representation of the created subscription resource shall be returned + in the response body, as defined in clause 6.6.2.3. + + The HTTP response shall include a "Location" HTTP header that contains + the resource URI of the created "Individual subscription" resource. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The resource URI of the created "Individual change state operation + occurence" resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + content: + application/json: + schema: + description: | + This type represents a subscription. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a filter that can be used to subscribe + for notifications related to performance management events. + 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). + type: object + properties: + pmSubscriptionFilter: + description: > + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + + The attributes "manoServiceIds" and "manoServiceNames" + are alternatives to reference to NFV-MANO services in + a filter. They should not be used together in the + same filter instance, but one alternative should be + chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + 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. + type: string + enum: + - ThresholdCrossedNotification + - PerformanceInformationAvailableNotification + callbackUri: + description: | + The URI of the endpoint to send the notification to. + type: object + properties: + links: + description: | + String formatted according to IETF RFC 3986. + type: string + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - links + - self + required: + - id + - callbackUri + subscriptions.post.303: + description: > + 303 SEE OTHER + + Shall be returned when a subscription with the same callbackURI and the + same filter already exists and the policy of the NFV-MANO functional + entity is to not create redundant subscriptions. + + The HTTP response shall include a "Location" HTTP header that contains + the resource URI of the existing "Individual subscription" resource. + + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The resource URI of the created "Individual change state operation + occurence" resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + subscriptions.get.200: + description: > + Shall be returned when the list of subscriptions has been queried + successfully. + + The response body shall contain in an array the representations of all + active subscriptions of the functional block that invokes the method, + i.e. zero or more representations of PM subscriptions as defined in + clause 6.6.2.3. + + If the "filter" URI parameter was supplied in the request, the data in + the response body shall have been transformed according to the rules + specified in clause 5.2.2 of ETSI GS NFV-SOL 013. + + If the NFV-MANO functional entity supports alternative 2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + inclusion of the Link HTTP header in this response shall follow the + provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + type: array + items: + description: | + This type represents a subscription. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a filter that can be used to subscribe + for notifications related to performance management + events. 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). + type: object + properties: + pmSubscriptionFilter: + description: > + This type represents subscription filter criteria to + match NFV-MANO functional entities and their associated + managed objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + + The attributes "manoServiceIds" and + "manoServiceNames" are alternatives to reference to + NFV-MANO services in a filter. They should not be + used together in the same filter instance, but one + alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance Name listed in + this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name listed in + this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + 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. + type: string + enum: + - ThresholdCrossedNotification + - PerformanceInformationAvailableNotification + callbackUri: + description: | + The URI of the endpoint to send the notification to. + type: object + properties: + links: + description: | + String formatted according to IETF RFC 3986. + type: string + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - links + - self + required: + - id + - callbackUri + subscriptions.get.400: + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + subscription.get.200: + description: > + 200 OK + + Shall be returned when the subscription has been read successfully. + + The response body shall contain a representation of the "Individual + subscription" resource, as defined in clause 6.6.2.3. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: | + This type represents a subscription. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a filter that can be used to subscribe + for notifications related to performance management events. + 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). + type: object + properties: + pmSubscriptionFilter: + description: > + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + + The attributes "manoServiceIds" and "manoServiceNames" + are alternatives to reference to NFV-MANO services in + a filter. They should not be used together in the + same filter instance, but one alternative should be + chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + 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. + type: string + enum: + - ThresholdCrossedNotification + - PerformanceInformationAvailableNotification + callbackUri: + description: | + The URI of the endpoint to send the notification to. + type: object + properties: + links: + description: | + String formatted according to IETF RFC 3986. + type: string + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - links + - self + required: + - id + - callbackUri + subscription.delete.204: + description: > + 204 NO CONTENT + + Shall be returned when the "Individual subscription" resource has been + deleted successfully. + + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + parameters: + filter.PmJob: + name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of ETSI GS + NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this parameter + as part of the URI query string. The API consumer may supply this + parameter. + + All attribute names that appear in the PmJob and in data types + referenced from it shall be supported by the NFV-MANO functional entity + in the expression. + in: query + required: false + schema: + type: string + filter.Threshold: + name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of ETSI GS + NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this parameter + as part of the URI query string. The API consumer may supply this + parameter. + + All attribute names that appear in the Threshold and in data types + referenced from it shall be supported by the NFV-MANO functional entity + in the expression. + in: query + required: false + schema: + type: string + filter.PmSubscription: + name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of ETSI GS + NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this parameter + as part of the URI query string. The API consumer may supply this + parameter. + + All attribute names that appear in the PmSubscription and in data + types referenced from it shall be supported by the NFV-MANO functional + entity in the expression. + in: query + required: false + schema: + type: string + exclude_default.PmJob: + name: exclude_default + description: > + Indicates to exclude the following complex attributes from the + response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The + NFV-MANO functional entity shall support this parameter. + + The following attributes shall be excluded from the PmJob structure in + the response body if this parameter is provided, or none of the + parameters "all_fields," "fields", "exclude_fields", "exclude_default" + are provided: - none + in: query + required: false + schema: + type: string + subscriptionId: + name: subscriptionId + in: path + description: Identifier of the subscription + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + pmJobId: + name: pmJobId + in: path + description: Identifier of the PM Job + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + reportId: + name: reportId + in: path + description: Identifier of the PM report + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + thresholdId: + name: thresholdId + in: path + description: Identifier of the PM threshold + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + requestBodies: + CreatePMJobRequest: + description: | + PM job creation request. + content: + application/json: + schema: + description: | + This type represents a request to create a PM job. + type: object + properties: + objectType: + description: > + Type of measured object. The applicable measured object type + for a measurement is defined in clause 8.2 of ETSI GS NFV-IFA + 031. + type: string + objectInstanceIds: + description: > + Identifiers of the measured object instance for which + performance information is requested to be collected. This + attribute shall contain the identifier of the instance of the + measure object according to their type. See also definitions + in clause 8.2 of ETSI GS NFV-IFA 031. If more than one + identifier is provided, values shall all refer to measured + object instances of the same type, for which the same criteria + is then applicable. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + minItems: 1 + subObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured object + instance for which performance information is requested to be + collected. May be present if a sub-object is defined in + clause 8.2 of ETSI GS NFV-IFA 031 for the related measured + object type. If this attribute is present, the cardinality of + the "objectInstanceIds" attribute shall be 1. If this + attribute is absent and a sub-object is defined in clause 8.2 + of ETSI GS NFV-IFA 031 for the related measured object type, + measurements will be taken for all sub-object instances of + the measured object instance. + type: array + items: + description: > + An identifier that is unique for the respective type within + a NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + criteria: + description: | + This type represents collection criteria for PM jobs. + type: object + properties: + performanceMetric: + description: > + This defines the types of performance metrics for the + specified measured object(s). This attribute’s value + shall contain the related "Measurement Name" values as + defined in clause 8.4 of ETSI GS NFV-IFA 031. At least + one of the two attributes (performance metric or group) + shall be present. + type: array + items: + type: string + performanceMetricGroup: + description: > + Group of performance metrics. A metric group is a + pre-defined list of metrics, known to the producer that + it can decompose to individual metrics. This attribute’s + value shall contain the related "Measurement Group" + values as defined in clause 8.4 of ETSI GS NFV-IFA 031. + At least one of the two attributes (performance metric or + group) shall be present. + type: array + items: + type: string + collectionPeriod: + description: > + Specifies the periodicity at which the producer will + collect performance information. The unit shall be + seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed collection + period during this reportingPeriod. The reportingPeriod + should be equal to or a multiple of the collectionPeriod. + In the latter case, the performance data for the + collection periods within one reporting period are + reported together. + + In particular when choosing short collection and reporting + periods, the number of PM jobs that can be supported + depends on the capability of the producing entity. + type: integer + reportingPeriod: + description: > + Specifies the periodicity at which the producer will + report to the API consumer about performance information. + The unit shall be seconds. + + At the end of each reportingPeriod, the producer will + inform the API consumer about availability of the + performance data collected for each completed collection + period during this reportingPeriod. The reportingPeriod + should be equal to or a multiple of the collectionPeriod. + In the latter case, the performance data for the + collection periods within one reporting period are + reported together. + + In particular when choosing short collection and reporting + periods, the number of PM jobs that can be supported + depends on the capability of the producing entity. + type: integer + reportingBoundary: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + required: + - collectionPeriod + - reportingPeriod + required: + - objectType + - objectInstanceIds + - criteria + required: true + CreateThesholdRequest: + description: | + Request parameters to create a threshold. + content: + application/json: + schema: + description: | + This type represents a request to create a threshold. + type: object + properties: + objectType: + description: > + Type of measured object. The applicable measured object type + for a measurement is defined in clause 8.2 of ETSI GS NFV-IFA + 031. + type: string + objectInstanceId: + description: | + An identifier with the intention of being globally unique. + type: string + subjObjectInstanceIds: + description: > + Identifiers of the sub-object instances of the measured object + instance associated with this threshold. May be present if a + sub-object is defined in clause 8.2 of ETSI GS NFV-IFA 031 for + the related measured object type. If this attribute is absent + and a sub-object is defined in clause 8.2 of ETSI GS NFV-IFA + 031 for the related measured object type, thresholds will be + set for all sub-object instances of the measured object + instance. + type: array + items: + description: > + An identifier that is unique for the respective type within + a NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + criteria: + description: | + This type represents criteria that define a threshold. + type: object + properties: + performanceMetric: + description: > + Defines the performance metric associated with the + threshold. This attribute’s value shall contain the + related "Measurement Name" values as defined in clause + 8.4 of ETSI GS NFV-IFA 031 + type: string + thresholdType: + description: > + Type of threshold. This attribute determines which other + attributes are present in the data structure. Permitted + values: + - SIMPLE: Single-valued static threshold + + In the present document, simple thresholds are defined. + The definition of additional threshold types is left for + future specification. + type: string + enum: + - SIMPLE + simpleThresholdDetails: + description: > + Details of a simple threshold. Shall be present if + thresholdType="SIMPLE". + type: object + properties: + thresholdValue: + description: | + A number defined in IETF RFC 8259. + type: number + hysteresis: + description: | + A number defined in IETF RFC 8259. + type: number + required: + - thresholdValue + - hysteresis + required: + - performanceMetric + - thresholdType + required: + - objectType + - objectInstanceId + - criteria + required: true + CreateSubscriptionRequest: + description: | + Details of the subscription to be created. + content: + application/json: + schema: + description: | + This type represents a subscription request. + type: object + properties: + filter: + description: > + This type represents a filter that can be used to subscribe + for notifications related to performance management events. + 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). + type: object + properties: + pmSubscriptionFilter: + description: > + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + + The attributes "manoServiceIds" and "manoServiceNames" + are alternatives to reference to NFV-MANO services in + a filter. They should not be used together in the + same filter instance, but one alternative should be + chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + 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. + type: string + enum: + - ThresholdCrossedNotification + - PerformanceInformationAvailableNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + authentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization which + the API consumer is willing to accept when receiving a + notification. Permitted values: * BASIC: In every HTTP + request to the notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification + endpoint is sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + description: > + Parameters for authentication/authorization using BASIC. + Shall be present if authType is "BASIC" and the contained + information has not been provisioned out of band. Shall be + absent otherwise. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out of + band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out of + band. + type: string + paramsOauth2ClientCredentials: + description: > + Parameters for authentication/authorization using + OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is + "OAUTH2_CLIENT_CREDENTIALS" and the contained information + has not been provisioned out of band. Shall be absent + otherwise. + type: object + properties: + clientId: + description: > + Client identifier to be used in the access token + request of the OAuth 2.0 client credentials grant + type. Shall be present if it has not been provisioned + out of band. The clientId and clientPassword passed in + a subscription shall not be the same as the clientId + and clientPassword that are used to obtain + authorization for API requests. Client credentials may + differ between subscriptions. The value of + clientPassword should be generated by a random + process. + type: string + clientPassword: + description: > + Client password to be used in the access token request + of the OAuth 2.0 client credentials grant type. Shall + be present if it has not been provisioned out of band. + The clientId and clientPassword passed in a + subscription shall not be the same as the clientId and + clientPassword that are used to obtain authorization + for API requests. Client credentials may differ + between subscriptions. The value of clientPassword + should be generated by a random process. + type: string + tokenEndpoint: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - callbackUri + required: true + diff --git a/libspecs/Easter.libspec b/libspecs/Easter.libspec index 7df17c107..d90dc3046 100644 --- a/libspecs/Easter.libspec +++ b/libspecs/Easter.libspec @@ -1,5 +1,5 @@ - + global yes diff --git a/libspecs/Reserved.libspec b/libspecs/Reserved.libspec index 1ca259b8d..b12ed7c4b 100644 --- a/libspecs/Reserved.libspec +++ b/libspecs/Reserved.libspec @@ -1,5 +1,5 @@ - + global yes -- GitLab From a2d67d298b85fc4f1abbc0aebc8f9514be1cf326 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 17 Aug 2020 12:27:46 +0500 Subject: [PATCH 441/580] Added Test Cases for ApiVersion.robot --- .../ApiVersion.robot | 211 ++++++++++++++++++ .../environment/variables.txt | 4 +- libspecs/Easter.libspec | 2 +- libspecs/Reserved.libspec | 2 +- 4 files changed, 216 insertions(+), 3 deletions(-) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/ApiVersion.robot diff --git a/SOL009/NFVMANOPerformanceManagement-API/ApiVersion.robot b/SOL009/NFVMANOPerformanceManagement-API/ApiVersion.robot new file mode 100644 index 000000000..104a87b26 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/ApiVersion.robot @@ -0,0 +1,211 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 8.3.2.9.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 8.3.2.9.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 8.3.2.9.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 8.3.2.9.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 8.3.2.9.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.2.9.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 8.3.2.9.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.2.9.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.2.9.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.2.9.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt index 28bd7e49e..b0859eb29 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt @@ -30,4 +30,6 @@ ${polling_interval} 10 sec ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa \ No newline at end of file +${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa + +${response} \ No newline at end of file diff --git a/libspecs/Easter.libspec b/libspecs/Easter.libspec index d90dc3046..f3e45a830 100644 --- a/libspecs/Easter.libspec +++ b/libspecs/Easter.libspec @@ -1,5 +1,5 @@ - + global yes diff --git a/libspecs/Reserved.libspec b/libspecs/Reserved.libspec index b12ed7c4b..8e7ea8957 100644 --- a/libspecs/Reserved.libspec +++ b/libspecs/Reserved.libspec @@ -1,5 +1,5 @@ - + global yes -- GitLab From 5638272c7acbd152505598c7598175b1c8baa3b5 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 20 Aug 2020 10:41:07 +0500 Subject: [PATCH 442/580] fixed issues in PMJobs --- .../PMJobs.robot | 104 ++++++++++++------ libspecs/Easter.libspec | 2 +- libspecs/Reserved.libspec | 2 +- 3 files changed, 70 insertions(+), 38 deletions(-) diff --git a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot index 3b28a5740..fc68c61ea 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot @@ -8,8 +8,22 @@ Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} Library MockServerLibrary *** Test Cases *** -GET all NFV-MANO Performance Monitoring Jobs +Create new NFV-MANO Performance Monitoring Job [Documentation] Test ID: 8.3.2.1.1 + ... Test title: Create a new NFV-MANO Performance Monitoring Job + ... Test objective: The objective is to test the creation of a new NFV-MANO performance monitoring job and perform the JSON schema validation of the returned job data structure + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO Performance Job is successfully created on the NFV-MANO + Send Post Request Create new NFV-MANO Performance Monitoring Job + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PmJob + Check Postcondition PmJob Exists + +GET all NFV-MANO Performance Monitoring Jobs + [Documentation] Test ID: 8.3.2.1.2 ... Test title: GET all NFV-MANO Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance monitoring jobs and perform a JSON schema validation ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -22,7 +36,7 @@ GET all NFV-MANO Performance Monitoring Jobs Check HTTP Response Body Json Schema Is PmJobs GET NFV-MANO Performance Monitoring Jobs with attribute-based filter - [Documentation] Test ID: 8.3.2.1.2 + [Documentation] Test ID: 8.3.2.1.3 ... Test title: GET all NFV-MANO Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of NFV-MANO performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -35,7 +49,7 @@ GET NFV-MANO Performance Monitoring Jobs with attribute-based filter Check HTTP Response Body Json Schema Is PmJobs GET all NFV-MANO Performance Monitoring Jobs with all_fields attribute selector - [Documentation] Test ID: 8.3.2.1.3 + [Documentation] Test ID: 8.3.2.1.4 ... Test title: GET all NFV-MANO Performance Monitoring Jobs with all_fields attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs all_fields attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -48,7 +62,7 @@ GET all NFV-MANO Performance Monitoring Jobs with all_fields attribute selector Check HTTP Response Body Json Schema Is PmJobs GET all NFV-MANO Performance Monitoring Jobs with exclude_default attribute selector - [Documentation] Test ID: 8.3.2.1.4 + [Documentation] Test ID: 8.3.2.1.5 ... Test title: GET all NFV-MANO Performance Monitoring Jobs with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -61,7 +75,7 @@ GET all NFV-MANO Performance Monitoring Jobs with exclude_default attribute sele Check HTTP Response Body Json Schema Is PmJobs GET all NFV-MANO Performance Monitoring Jobs with fields attribute selector - [Documentation] Test ID: 8.3.2.1.5 + [Documentation] Test ID: 8.3.2.1.6 ... Test title: GET all NFV-MANO Performance Monitoring Jobs with fields attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs fields attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -74,7 +88,7 @@ GET all NFV-MANO Performance Monitoring Jobs with fields attribute selector Check HTTP Response Body Json Schema Is PmJobs GET all NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selector - [Documentation] Test ID: 8.3.2.1.6 + [Documentation] Test ID: 8.3.2.1.7 ... Test title: GET all NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs exclude_fields attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -87,7 +101,7 @@ GET all NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selec Check HTTP Response Body Json Schema Is PmJobs GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter - [Documentation] Test ID: 8.3.2.1.7 + [Documentation] Test ID: 8.3.2.1.8 ... Test title: GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NFV-MANO performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -99,34 +113,47 @@ GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET NFV-MANO Performance Monitoring Jobs with invalid resource endpoint - [Documentation] Test ID: 8.3.2.1.8 +GET NFV-MANO Performance Monitoring Jobs with invalid attribute selector + [Documentation] Test ID: 8.3.2.1.9 ... Test title: GET NFV-MANO Performance Monitoring Jobs with invalid resource endpoint - ... Test objective: The objective is to test that the retrieval of NFV-MANO performance monitoring jobs fails when using invalid resource endpoint + ... Test objective: The objective is to test that the retrieval of NFV-MANO performance monitoring jobs fails with invalid attribute selector ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - GET NFV-MANO Performance Monitoring Jobs with invalid resource endpoint - Check HTTP Response Status Code Is 404 - -Create new NFV-MANO Performance Monitoring Job - [Documentation] Test ID: 8.3.2.1.9 - ... Test title: Create a new NFV-MANO Performance Monitoring Job - ... Test objective: The objective is to test the creation of a new NFV-MANO performance monitoring job and perform the JSON schema validation of the returned job data structure - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + GET NFV-MANO Performance Monitoring Jobs with invalid attribute selector + Check HTTP Response Status Code Is 400 + +GET information about multiple Performance Monitoring Jobs to get Paged Response + [Documentation] Test ID: 8.3.2.1.10 + ... Test title: GET information about multiple Performance Monitoring Jobs to get Paged Response + ... Test objective: The objective is to retrieve information about the performance monitoring jobs to get paged response + ... Pre-conditions: + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The NFV-MANO Performance Job is successfully created on the NFV-MANO - Send Post Request Create new NFV-MANO Performance Monitoring Job - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is PmJob - Check Postcondition PmJob Exists + ... Applicability: + ... Post-Conditions: + GET all NFV-MANO Performance Monitoring Jobs + Check HTTP Response Status Code Is 200 + Check LINK in Header + +GET information about multiple Performance Monitoring Jobs for Bad Request Response too big + [Documentation] Test ID: 8.3.2.1.11 + ... Test title: GET information about multiple Performance Monitoring Jobs for Bad Request Response too big + ... Test objective: The objective is to test that GET method fail retrieving status information about performance monitoring jobs when Response is too big, and perform the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET all NFV-MANO Performance Monitoring Jobs + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented - [Documentation] Test ID: 8.3.2.1.10 + [Documentation] Test ID: 8.3.2.1.12 ... Test title: PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Monitoring Jobs ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -138,7 +165,7 @@ PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented Check HTTP Response Status Code Is 405 PATCH all NFV-MANO Performance Monitoring Jobs - (Method not implemented) - [Documentation] Test ID: 8.3.2.1.11 + [Documentation] Test ID: 8.3.2.1.13 ... Test title: PATCH all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NFV-MANO Performance Monitoring Jobs ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -150,7 +177,7 @@ PATCH all NFV-MANO Performance Monitoring Jobs - (Method not implemented) Check HTTP Response Status Code Is 405 DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented - [Documentation] Test ID: 8.3.2.1.12 + [Documentation] Test ID: 8.3.2.1.14 ... Test title: DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Monitoring Jobs ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -221,13 +248,14 @@ GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter ${output}= Output response Set Suite Variable ${response} ${output} -GET NFV-MANO Performance Monitoring Jobs 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}/pm_job # wrong URI /pm_job instead of /pm_jobs - ${output}= Output response - Set Suite Variable ${response} ${output} +GET NFV-MANO Performance Monitoring Jobs with invalid attribute selector + Log Query VNF The GET method queries information about multiple VNF instances. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=wrong_field + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Send Post Request Create new NFV-MANO Performance Monitoring Job Log Creating a new PM Job @@ -293,4 +321,8 @@ Check HTTP Response Body Json Schema Is Check Postcondition NFV-MANO Performance Monitoring Jobs Exist Log Checking that Pm Job still exists - GET all NFV-MANO Performance Monitoring Jobs \ No newline at end of file + GET all NFV-MANO Performance Monitoring Jobs + +Check LINK in Header + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} \ No newline at end of file diff --git a/libspecs/Easter.libspec b/libspecs/Easter.libspec index f3e45a830..4dbffca8f 100644 --- a/libspecs/Easter.libspec +++ b/libspecs/Easter.libspec @@ -1,5 +1,5 @@ - + global yes diff --git a/libspecs/Reserved.libspec b/libspecs/Reserved.libspec index 8e7ea8957..6e8618267 100644 --- a/libspecs/Reserved.libspec +++ b/libspecs/Reserved.libspec @@ -1,5 +1,5 @@ - + global yes -- GitLab From 9e5523350e4034cbecbb4c6330ece15753756c55 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 20 Aug 2020 10:51:43 +0500 Subject: [PATCH 443/580] change test cases allignment and fix minor issues --- .../IndividualPmJob.robot | 86 +++++++++---------- .../IndividualReport.robot | 30 +++---- .../IndividualThreshold.robot | 84 +++++++++--------- .../Thresholds.robot | 56 ++++++------ 4 files changed, 128 insertions(+), 128 deletions(-) diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot index 0d4415b42..94e7cffff 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot @@ -6,8 +6,21 @@ Resource environment/IndividualPmJob.txt Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false *** Test Cases *** -GET individual NFV-MANO Performance Job +POST Individual NFV-MANO Performance Job - Method not implemented [Documentation] Test ID: 8.3.2.2.1 + ... Test title: POST Individual NFV-MANO Performance Job - method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO Performance Monitoring Job + ... Pre-conditions: A NFV-MANO instance is instantiated + ... Reference: clause 6.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO Performance Job is not created on the NFV-MANO + Send Post request for individual NFV-MANO Performance Job + Check HTTP Response Status Code Is 405 + Check Postcondition NFV-MANO Performance Job is not Created + +GET individual NFV-MANO Performance Job + [Documentation] Test ID: 8.3.2.2.2 ... Test title: Get individual NFV-MANO Performance Job ... Test objective: The objective is to test the retrieval of an individual performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A NFV-MANO instance is instantiated. @@ -21,7 +34,7 @@ GET individual NFV-MANO Performance Job Check HTTP Response Body Pm Job Identifier matches the requested Pm Job GET individual NFV-MANO Performance Job with invalid resource identifier - [Documentation] Test ID: 8.3.2.2.2 + [Documentation] Test ID: 8.3.2.2.3 ... Test title: Get individual NFV-MANO Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -32,47 +45,9 @@ GET individual NFV-MANO Performance Job with invalid resource identifier GET individual NFV-MANO Performance Job with invalid resource identifier Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails - -DELETE Individual NFV-MANO Performance Job - [Documentation] Test ID: 8.3.2.2.3 - ... Test title: Delete Individual NFV-MANO Performance Job - ... Test objective: The objective is to test the deletion of an individual performance monitoring job - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The NFV-MANO Performance Job is no more available. - Send Delete request for individual NFV-MANO Performance Job - Check HTTP Response Status Code Is 204 - Check Postcondition NFV-MANO Pm Job is Deleted - -DELETE Individual NFV-MANO Performance Job with invalid resource identifier - [Documentation] Test ID: 8.3.2.2.4 - ... Test title: Delete individual NFV-MANO Performance Job with invalid resource identifier - ... Test objective: The objective is to test that the deletion of an individual NFV-MANO performance monitoring job fails when using an invalid resource identifier - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for individual NFV-MANO Performance Job with invalid resource identifier - Check HTTP Response Status Code Is 404 - -POST Individual NFV-MANO Performance Job - Method not implemented - [Documentation] Test ID: 8.3.2.2.5 - ... Test title: POST Individual NFV-MANO Performance Job - method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO Performance Monitoring Job - ... Pre-conditions: A NFV-MANO instance is instantiated - ... Reference: clause 6.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The NFV-MANO Performance Job is not created on the NFV-MANO - Send Post request for individual NFV-MANO Performance Job - Check HTTP Response Status Code Is 405 - Check Postcondition NFV-MANO Performance Job is not Created - + PUT Individual NFV-MANO Performance Job - Method not implemented - [Documentation] Test ID: 8.3.2.2.6 + [Documentation] Test ID: 8.3.2.2.4 ... Test title: PUT Individual NFV-MANO Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NFV-MANO Performance Monitoring Job ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -85,7 +60,7 @@ PUT Individual NFV-MANO Performance Job - Method not implemented Check Postcondition NFV-MANO Performance Job is Unmodified (Implicit) PATCH Individual NFV-MANO Performance Job - Method not implemented - [Documentation] Test ID: 8.3.2.2.7 + [Documentation] Test ID: 8.3.2.2.5 ... Test title: PATCH Individual NFV-MANO Performance Job - method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new NFV-MANO Performance Monitoring Job ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -96,6 +71,31 @@ PATCH Individual NFV-MANO Performance Job - Method not implemented Send Patch request for individual NFV-MANO Performance Job Check HTTP Response Status Code Is 405 Check Postcondition NFV-MANO Performance Job is Unmodified (Implicit) + +DELETE Individual NFV-MANO Performance Job + [Documentation] Test ID: 8.3.2.2.6 + ... Test title: Delete Individual NFV-MANO Performance Job + ... Test objective: The objective is to test the deletion of an individual performance monitoring job + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO Performance Job is no more available. + Send Delete request for individual NFV-MANO Performance Job + Check HTTP Response Status Code Is 204 + Check Postcondition NFV-MANO Pm Job is Deleted + +DELETE Individual NFV-MANO Performance Job with invalid resource identifier + [Documentation] Test ID: 8.3.2.2.7 + ... Test title: Delete individual NFV-MANO Performance Job with invalid resource identifier + ... Test objective: The objective is to test that the deletion of an individual NFV-MANO performance monitoring job fails when using an invalid resource identifier + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for individual NFV-MANO Performance Job with invalid resource identifier + Check HTTP Response Status Code Is 404 *** Keywords *** GET individual NFV-MANO Performance Job diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot index d0c7d0234..4f0a2a2f7 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot @@ -6,8 +6,21 @@ Library JSONLibrary Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false *** Test Cases *** -Get Individual Performance Report +POST Individual Performance Report - Method not implemented [Documentation] Test ID: 8.3.2.3.1 + ... Test title: POST Individual Performance Report - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO performance report within a monitoring job. + ... Pre-conditions: A NFV-MANO instance is instantiated. + ... Reference: clause 6.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO performance report is not created. + Send Post request for Individual Performance Report + Check HTTP Response Status Code Is 405 + Check Postcondition NFV-MANO Individual Performance Report is not Created + +Get Individual Performance Report + [Documentation] Test ID: 8.3.2.3.2 ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. @@ -20,7 +33,7 @@ Get Individual Performance Report Check HTTP Response Body Json Schema Is PerformanceReport Get Individual Performance Report with invalid resource endpoint - [Documentation] Test ID: 8.3.2.3.2 + [Documentation] Test ID: 8.3.2.3.3 ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual NFV-MANO performance report associated to a monitoring job fails when using an invalid resource endpoint. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. @@ -31,19 +44,6 @@ Get Individual Performance Report with invalid resource endpoint Get Individual Performance Report with invalid resource endpoint Check HTTP Response Status Code Is 404 -POST Individual Performance Report - Method not implemented - [Documentation] Test ID: 8.3.2.3.3 - ... Test title: POST Individual Performance Report - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO performance report within a monitoring job. - ... Pre-conditions: A NFV-MANO instance is instantiated. - ... Reference: clause 6.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The NFV-MANO performance report is not created. - Send Post request for Individual Performance Report - Check HTTP Response Status Code Is 405 - Check Postcondition NFV-MANO Individual Performance Report is not Created - PUT Individual Performance Report - Method not implemented [Documentation] Test ID: 8.3.2.3.4 ... Test title: PUT Individual Performance Report - Method not implemented diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot index a228d9a17..0f2911c03 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot @@ -7,8 +7,21 @@ Library OperatingSystem Resource environment/individualThresholds.txt *** Test Cases *** -GET Individual Threshold +POST Individual Threshold - Method not implemented [Documentation] Test ID: 8.3.2.5.1 + ... Test title: POST Individual Threshold - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new Performance Threshold + ... Pre-conditions: A NFV-MANO instance is instantiated + ... Reference: clause 6.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Performance Threshold is not created on the NFV-MANO + Send Post request for individual Performance Threshold + Check HTTP Response Status Code Is 405 + Check Postcondition Performance Threshold is not Created + +GET Individual Threshold + [Documentation] Test ID: 8.3.2.5.2 ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual NFV-MANO performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. @@ -22,7 +35,7 @@ GET Individual Threshold Check HTTP Response Body Threshold Identifier matches the requested Threshold GET Individual Threshold with invalid resource identifier - [Documentation] Test ID: 8.3.2.5.2 + [Documentation] Test ID: 8.3.2.5.3 ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual performance threshold fails when using an invalid resource identifier ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance jobs are set. @@ -33,46 +46,8 @@ GET Individual Threshold with invalid resource identifier GET individual Performance Threshold with invalid resource identifier Check HTTP Response Status Code Is 404 -DELETE Individual Threshold - [Documentation] Test ID: 8.3.2.5.3 - ... Test title: DELETE Individual Threshold - ... Test objective: The objective is to test the deletion of an individual performance threshold - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The Performance Threshold is not available anymore in the NFV-MANO - Send Delete request for individual Performance Threshold - Check HTTP Response Status Code Is 204 - Check Postcondition Performance Threshold is Deleted - -DELETE Individual Threshold with invalid resource identifier - [Documentation] Test ID: 8.3.2.5.4 - ... Test title: DELETE Individual Threshold with invalid resource identifier - ... Test objective: The objective is to test the deletion of an individual performance threshold - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for individual Performance Threshold with invalid resource identifier - Check HTTP Response Status Code Is 404 - -POST Individual Threshold - Method not implemented - [Documentation] Test ID: 8.3.2.5.5 - ... Test title: POST Individual Threshold - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new Performance Threshold - ... Pre-conditions: A NFV-MANO instance is instantiated - ... Reference: clause 6.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The Performance Threshold is not created on the NFV-MANO - Send Post request for individual Performance Threshold - Check HTTP Response Status Code Is 405 - Check Postcondition Performance Threshold is not Created - PUT Individual Threshold - Method not implemented - [Documentation] Test ID: 8.3.2.5.6 + [Documentation] Test ID: 8.3.2.5.4 ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing Performance threshold ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. @@ -85,7 +60,7 @@ PUT Individual Threshold - Method not implemented Check Postcondition Performance Threshold is Unmodified (Implicit) PATCH Individual Threshold - Method not implemented - [Documentation] Test ID: 8.3.2.5.7 + [Documentation] Test ID: 8.3.2.5.5 ... Test title: PATCH Individual Threshold - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing Performance threshold ... Pre-conditions: A instance is instantiated. One or more performance thresholds are set. @@ -96,6 +71,31 @@ PATCH Individual Threshold - Method not implemented Send Patch request for individual Performance Threshold Check HTTP Response Status Code Is 405 Check Postcondition Performance Threshold is Unmodified (Implicit) + +DELETE Individual Threshold + [Documentation] Test ID: 8.3.2.5.6 + ... Test title: DELETE Individual Threshold + ... Test objective: The objective is to test the deletion of an individual performance threshold + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. + ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Performance Threshold is not available anymore in the NFV-MANO + Send Delete request for individual Performance Threshold + Check HTTP Response Status Code Is 204 + Check Postcondition Performance Threshold is Deleted + +DELETE Individual Threshold with invalid resource identifier + [Documentation] Test ID: 8.3.2.5.7 + ... Test title: DELETE Individual Threshold with invalid resource identifier + ... Test objective: The objective is to test the deletion of an individual performance threshold + ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. + ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for individual Performance Threshold with invalid resource identifier + Check HTTP Response Status Code Is 404 *** Keywords *** GET Individual Performance Threshold diff --git a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot index a218a2155..2a0e962d4 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot @@ -7,8 +7,23 @@ Resource environment/thresholds.txt Library OperatingSystem *** Test Cases *** -GET All Performance Thresholds +Create new Performance Threshold [Documentation] Test ID: 8.3.2.4.1 + ... Test title: Create new Performance Threshold + ... Test objective: The objective is to test the creation of a new NFV-MANO performance threshold and perform the JSON schema validation of the returned threshold data structure. + ... Pre-conditions: A NFV-MANO instance is instantiated. + ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO Performance Threshold is successfully created on the NFV-MANO + Send Post Request Create new Performance Threshold + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is Threshold + Check HTTP Response Header Contains Location + Check Postcondition Threshold Exists + +GET All Performance Thresholds + [Documentation] Test ID: 8.3.2.4.2 ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance thresholds and perform a JSON schema validation of the collected thresholds data structure. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. @@ -21,7 +36,7 @@ GET All Performance Thresholds Check HTTP Response Body Json Schema Is Thresholds GET Performance Thresholds with attribute-based filter - [Documentation] Test ID: 8.3.2.4.2 + [Documentation] Test ID: 8.3.2.4.3 ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. @@ -35,20 +50,20 @@ GET Performance Thresholds with attribute-based filter Check HTTP Response Body Thresholds match the requested attribute-based filter GET Performance Threshold with Paged Response - [Documentation] Test ID: 8.3.2.4.3 + [Documentation] Test ID: 8.3.2.4.4 ... Test title: GET Performance Threshold with Paged Response ... Test objective: The objective is to query information about NFV-MANO Performance Thresholds to get Paged Response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET all Performance Thresholds Check HTTP Response Status Code Is 200 Check LINK in Header GET Performance Thresholds - Invalid attribute-based filter - [Documentation] Test ID: 8.3.2.4.4 + [Documentation] Test ID: 8.3.2.4.5 ... Test title: GET Performance Thresholds - Invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NFV-MANO performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. @@ -61,35 +76,20 @@ GET Performance Thresholds - Invalid attribute-based filter Check HTTP Response Body Json Schema Is ProblemDetails GET Performance Threshold - Bad Request Response too Big - [Documentation] Test ID: 8.3.2.4.5 + [Documentation] Test ID: 8.3.2.4.6 ... Test title: GET Performance Threshold - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NFV-MANO performance thresholds fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET all Performance Thresholds Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails - -Create new Performance Threshold - [Documentation] Test ID: 8.3.2.4.6 - ... Test title: Create new Performance Threshold - ... Test objective: The objective is to test the creation of a new NFV-MANO performance threshold and perform the JSON schema validation of the returned threshold data structure. - ... Pre-conditions: A NFV-MANO instance is instantiated. - ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The NFV-MANO Performance Threshold is successfully created on the NFV-MANO - Send Post Request Create new Performance Threshold - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is Threshold - Check HTTP Response Header Contains Location - Check Postcondition Threshold Exists - + PUT Performance Thresholds - Method not implemented - [Documentation] Test ID: 8.3.2.4.6 + [Documentation] Test ID: 8.3.2.4.7 ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Thresholds ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. @@ -101,7 +101,7 @@ PUT Performance Thresholds - Method not implemented Check HTTP Response Status Code Is 405 PATCH Performance Thresholds - Method not implemented - [Documentation] Test ID: 8.3.2.4.7 + [Documentation] Test ID: 8.3.2.4.8 ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify NFV-MANO Performance Thresholds ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. @@ -113,7 +113,7 @@ PATCH Performance Thresholds - Method not implemented Check HTTP Response Status Code Is 405 DELETE Performance Thresholds - Method not implemented - [Documentation] Test ID: 8.3.2.4.8 + [Documentation] Test ID: 8.3.2.4.9 ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Thresholds ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. -- GitLab From 08e8d76ab34c27754fbb96ea8df82386ec44b659 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 3 Sep 2020 09:46:45 +0200 Subject: [PATCH 444/580] updated gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3667399ca..1b6e272e0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ /red.xml build/ dist/ -/libspecs/ +libspecs/ -- GitLab From 1b6f45ddd607a4196f14383c0db44cc1d1100f40 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 14 Sep 2020 08:08:03 +0500 Subject: [PATCH 445/580] added authorization testcases --- .../PMJobs.robot | 70 ++++++++++++++++++- .../environment/variables.txt | 1 + libspecs/Easter.libspec | 2 +- libspecs/Reserved.libspec | 2 +- 4 files changed, 70 insertions(+), 5 deletions(-) diff --git a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot index fc68c61ea..bb4a28796 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot @@ -151,9 +151,44 @@ GET information about multiple Performance Monitoring Jobs for Bad Request Respo Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails +Get information about multiple Performance Monitoring Jobs with malformed authorization token + [Documentation] Test ID: 8.3.2.1.12 + ... Test title: Get information about multiple Performance Monitoring Jobs with malformed authorization token + ... Test objective: The objective is to test that the retrieval of information about Performance Monitoring Jobs fails when using malformed authorization token + ... Pre-conditions: none + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Performance Monitoring Jobs with malformed authorization token + Check HTTP Response Status Code Is 400 + +Get information about multiple Performance Monitoring Jobs without authorization token + [Documentation] Test ID: 8.3.2.1.13 + ... Test title: Get information about multiple Performance Monitoring Jobs without authorization token + ... Test objective: The objective is to test that the retrieval of information about Performance Monitoring Jobs fails when omitting the authorization token + ... Pre-conditions: none + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [3] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Performance Monitoring Jobs without authorization token + Check HTTP Response Status Code Is 401 + +GET information about multiple Performance Monitoring Jobs with expired or revoked authorization token + [Documentation] Test ID: 8.3.2.1.14 + ... Test title: GET information about multiple Performance Monitoring Jobs with expired or revoked authorization token + ... Test objective: The objective is to test that the retrieval of information about Performance Monitoring Jobs fails when using expired or revoked authorization token + ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [3] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Performance Monitoring Jobs with expired or revoked authorization token + Check HTTP Response Status Code Is 401 PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented - [Documentation] Test ID: 8.3.2.1.12 + [Documentation] Test ID: 8.3.2.1.15 ... Test title: PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Monitoring Jobs ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -165,7 +200,7 @@ PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented Check HTTP Response Status Code Is 405 PATCH all NFV-MANO Performance Monitoring Jobs - (Method not implemented) - [Documentation] Test ID: 8.3.2.1.13 + [Documentation] Test ID: 8.3.2.1.16 ... Test title: PATCH all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NFV-MANO Performance Monitoring Jobs ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -177,7 +212,7 @@ PATCH all NFV-MANO Performance Monitoring Jobs - (Method not implemented) Check HTTP Response Status Code Is 405 DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented - [Documentation] Test ID: 8.3.2.1.14 + [Documentation] Test ID: 8.3.2.1.17 ... Test title: DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Monitoring Jobs ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -197,7 +232,36 @@ GET all NFV-MANO Performance Monitoring Jobs GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} + +GET Performance Monitoring Jobs with malformed authorization token + Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting authentication + Log The GET method queries using invalid token + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs + ${output}= Output response + Set Suite Variable ${response} ${output} +GET Performance Monitoring Jobs without authorization token + Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication + Log The GET method queries omitting token + Set Headers {"Accept": "${ACCEPT_JSON}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Performance Monitoring Jobs with expired or revoked authorization token + Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication + Log The GET method queries using invalid token + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs + ${output}= Output response + Set Suite Variable ${response} ${output} + GET NFV-MANO Performance Monitoring Jobs with attribute-based filter Log Trying to get all PM Jobs present in the NFV-MANO, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt index b0859eb29..7f2bab92d 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt @@ -6,6 +6,7 @@ ${NFVMANO_SCHEMA} https ${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${NEG_AUTHORIZATION} Bearer negativetoken +${BAD_AUTHORIZATION} Bear sometoken ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json diff --git a/libspecs/Easter.libspec b/libspecs/Easter.libspec index 4dbffca8f..32914eb5e 100644 --- a/libspecs/Easter.libspec +++ b/libspecs/Easter.libspec @@ -1,5 +1,5 @@ - + global yes diff --git a/libspecs/Reserved.libspec b/libspecs/Reserved.libspec index 6e8618267..49406f6a9 100644 --- a/libspecs/Reserved.libspec +++ b/libspecs/Reserved.libspec @@ -1,5 +1,5 @@ - + global yes -- GitLab From e7529d2a9ea0738276140c39ee2f647f5059eafa Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 14 Sep 2020 09:04:07 +0500 Subject: [PATCH 446/580] templating, minor bugs fix and new testcases added --- .../IndividualSubscription.robot | 1 - .../PMJobs.robot | 51 ++++++++++++++----- .../Subscriptions.robot | 23 +++++---- .../Thresholds.robot | 17 +++---- .../environment/variables.txt | 4 +- .../jsons/CreatePmJobRequest.json | 12 +++-- .../jsons/CreateThresholdRequest.json | 14 ++--- .../jsons/subscriptions.json | 10 ++-- 8 files changed, 81 insertions(+), 51 deletions(-) diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot index 5f51a6a2c..c00a2b6bc 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot @@ -97,7 +97,6 @@ PATCH Individual Performance Subscription - Method not implemented Check HTTP Response Status Code Is 405 Check Postcondition Performance Subscription is Unmodified (Implicit) - *** Keywords *** Check HTTP Response Status Code Is [Arguments] ${expected_status} diff --git a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot index bb4a28796..63793592f 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot @@ -1,4 +1,5 @@ *** Settings *** +Library String Library JSONSchemaLibrary schemas/ Resource environment/variables.txt Resource environment/pmJobs.txt @@ -129,11 +130,11 @@ GET information about multiple Performance Monitoring Jobs to get Paged Response [Documentation] Test ID: 8.3.2.1.10 ... Test title: GET information about multiple Performance Monitoring Jobs to get Paged Response ... Test objective: The objective is to retrieve information about the performance monitoring jobs to get paged response - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET all NFV-MANO Performance Monitoring Jobs Check HTTP Response Status Code Is 200 Check LINK in Header @@ -142,17 +143,30 @@ GET information about multiple Performance Monitoring Jobs for Bad Request Respo [Documentation] Test ID: 8.3.2.1.11 ... Test title: GET information about multiple Performance Monitoring Jobs for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about performance monitoring jobs when Response is too big, and perform the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET all NFV-MANO Performance Monitoring Jobs Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple Performance Monitoring Jobs with "fields" and "exclude_default" attribute selector + [Documentation] Test ID: 8.3.2.1.12 + ... Test title: GET all NFV-MANO Performance Monitoring Jobs with "fields" and "exclude_default" attribute selector + ... Test objective: The objective is to retrieve all performance monitoring jobs with fields and exclude default attribute selector, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET NFV-MANO Performance Monitoring Jobs with fields and exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJobs Get information about multiple Performance Monitoring Jobs with malformed authorization token - [Documentation] Test ID: 8.3.2.1.12 + [Documentation] Test ID: 8.3.2.1.13 ... Test title: Get information about multiple Performance Monitoring Jobs with malformed authorization token ... Test objective: The objective is to test that the retrieval of information about Performance Monitoring Jobs fails when using malformed authorization token ... Pre-conditions: none @@ -164,7 +178,7 @@ Get information about multiple Performance Monitoring Jobs with malformed author Check HTTP Response Status Code Is 400 Get information about multiple Performance Monitoring Jobs without authorization token - [Documentation] Test ID: 8.3.2.1.13 + [Documentation] Test ID: 8.3.2.1.14 ... Test title: Get information about multiple Performance Monitoring Jobs without authorization token ... Test objective: The objective is to test that the retrieval of information about Performance Monitoring Jobs fails when omitting the authorization token ... Pre-conditions: none @@ -176,7 +190,7 @@ Get information about multiple Performance Monitoring Jobs without authorization Check HTTP Response Status Code Is 401 GET information about multiple Performance Monitoring Jobs with expired or revoked authorization token - [Documentation] Test ID: 8.3.2.1.14 + [Documentation] Test ID: 8.3.2.1.15 ... Test title: GET information about multiple Performance Monitoring Jobs with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information about Performance Monitoring Jobs fails when using expired or revoked authorization token ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO @@ -188,7 +202,7 @@ GET information about multiple Performance Monitoring Jobs with expired or revok Check HTTP Response Status Code Is 401 PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented - [Documentation] Test ID: 8.3.2.1.15 + [Documentation] Test ID: 8.3.2.1.16 ... Test title: PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Monitoring Jobs ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -200,7 +214,7 @@ PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented Check HTTP Response Status Code Is 405 PATCH all NFV-MANO Performance Monitoring Jobs - (Method not implemented) - [Documentation] Test ID: 8.3.2.1.16 + [Documentation] Test ID: 8.3.2.1.17 ... Test title: PATCH all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NFV-MANO Performance Monitoring Jobs ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -212,7 +226,7 @@ PATCH all NFV-MANO Performance Monitoring Jobs - (Method not implemented) Check HTTP Response Status Code Is 405 DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented - [Documentation] Test ID: 8.3.2.1.17 + [Documentation] Test ID: 8.3.2.1.18 ... Test title: DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Monitoring Jobs ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. @@ -294,6 +308,15 @@ GET NFV-MANO Performance Monitoring Jobs with fields attribute selector GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} + +GET NFV-MANO Performance Monitoring Jobs with fields and exclude_default attribute selector + Log Trying to get all NFV-MANO Packages present in the NFV-MANO, using filter params + Pass Execution If ${FIELD_USAGE} == 0 Skipping test as NFV-MANO is not supporting 'fields' + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?exclude_default&fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} GET NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selector Log Trying to get all NFV-MANO Packages present in the NFV-MANO, using filter params @@ -326,7 +349,9 @@ Send Post Request Create new NFV-MANO Performance Monitoring Job Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/CreatePmJobRequest.json + ${template}= Get File jsons/CreatePmJobRequest.json + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot index 14b2ffd39..070607c5e 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot @@ -1,4 +1,5 @@ *** Settings *** +Library String Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false @@ -44,11 +45,11 @@ GET Performance Management Subscriptions with Paged Response ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. ... Reference: clauseclause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get all Performance Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Link GET Performance Subscriptions with invalid attribute-based filter [Documentation] Test ID: 8.3.2.6.4 @@ -198,7 +199,7 @@ Check HTTP Response Status Code Is Should Be Equal As Strings ${response['status']} ${expected_status} Log Status code validated -Check LINK in Header +Check HTTP Response Header Contains Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} @@ -209,7 +210,6 @@ Check HTTP Response Body Json Schema Is Validate Json ${schema} ${response['body']} Log Json Schema Validation OK - Check HTTP Response Body Is Empty Should Be Empty ${response['body']} Log No json schema is provided. Validation OK @@ -247,8 +247,9 @@ Send Post Request for Performance Subscription Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - ${body_request}= Get File jsons/subscriptions.json - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${NFVMANO_CHECKS_NOTIF_ENDPOINT} == 1 @@ -256,7 +257,8 @@ Send Post Request for Performance Subscription Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription Log Check Response matches subscription - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} ${subscription}= evaluate json.loads('''${body}''') json Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} @@ -273,8 +275,9 @@ Send Post Request for Duplicated Performance Subscription Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - ${body_request}= Get File jsons/subscriptions.json - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot index 2a0e962d4..c0a605ad8 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot @@ -1,4 +1,5 @@ *** Settings *** +Library String Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters Library JSONLibrary @@ -60,8 +61,8 @@ GET Performance Threshold with Paged Response ... Post-Conditions: none GET all Performance Thresholds Check HTTP Response Status Code Is 200 - Check LINK in Header - + Check HTTP Response Header Contains Link + GET Performance Thresholds - Invalid attribute-based filter [Documentation] Test ID: 8.3.2.4.5 ... Test title: GET Performance Thresholds - Invalid attribute-based filter @@ -155,8 +156,9 @@ Send Post Request Create new Performance Threshold Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${request}= Get File jsons/CreateThresholdRequest.json - POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${request} + ${template}= Get File jsons/CreateThresholdRequest.json + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -221,9 +223,6 @@ Check HTTP Response Body Json Schema Is Validate Json ${schema} ${response['body']} Log Json Schema Validation OK -Check LINK in Header +Check HTTP Response Header Contains Link ${linkURL}= Get Value From Json ${response['headers']} $..Link - Should Not Be Empty ${linkURL} - - - + Should Not Be Empty ${linkURL} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt index 7f2bab92d..0d578a276 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt @@ -33,4 +33,6 @@ ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies. ${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa -${response} \ No newline at end of file +${response} + +${objectInstanceIds} daca910b0-00d4f1a2b675d-604257e42 \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/jsons/CreatePmJobRequest.json b/SOL009/NFVMANOPerformanceManagement-API/jsons/CreatePmJobRequest.json index 026d55498..b69b9f03f 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/jsons/CreatePmJobRequest.json +++ b/SOL009/NFVMANOPerformanceManagement-API/jsons/CreatePmJobRequest.json @@ -1,10 +1,12 @@ -{ +{{ "objectType":"dummy", - "objectInstanceIds" : ["1f50d68b-82e8-4deb-bd40-c934d4d1ac0a"], - "criteria" : { + "objectInstanceIds" : [ + "{objectInstanceIds}" + ], + "criteria" : {{ "performanceMetric": [], "performanceMetricGroup": [], "collectionPeriod": 10, "reportingPeriod": 30 - } -} \ No newline at end of file + }} +}} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/jsons/CreateThresholdRequest.json b/SOL009/NFVMANOPerformanceManagement-API/jsons/CreateThresholdRequest.json index 3bcd017e9..1162190f7 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/jsons/CreateThresholdRequest.json +++ b/SOL009/NFVMANOPerformanceManagement-API/jsons/CreateThresholdRequest.json @@ -1,13 +1,13 @@ -{ +{{ "objectType":"", - "objectInstanceIds" : "", - "criteria" : { + "objectInstanceIds" : "{objectInstanceIds}", + "criteria" : {{ "performanceMetric": "cpu_util", "thresholdType": "SIMPLE", - "simpleThresholdDetails": { + "simpleThresholdDetails": {{ "thresholdValue": 10, "hysteresis": 50 - } + }} - } -} \ No newline at end of file + }} +}} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/jsons/subscriptions.json b/SOL009/NFVMANOPerformanceManagement-API/jsons/subscriptions.json index 8ceab118a..3ca4fc25a 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/jsons/subscriptions.json +++ b/SOL009/NFVMANOPerformanceManagement-API/jsons/subscriptions.json @@ -1,6 +1,6 @@ -{ - "callbackUri": "http://172.22.1.7:9091/nfvmanopm/subscriptions", - "filter": { +{{ + "callbackUri": "{callback_uri}{callback_endpoint}", + "filter": {{ "notificationTypes": ["ThresholdCrossedNotification"] - } -} \ No newline at end of file + }} +}} \ No newline at end of file -- GitLab From b3a5408760fe0f10e1bd1162ca712d85a5d42904 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 14 Sep 2020 13:06:07 +0500 Subject: [PATCH 447/580] minor bugs fixed and redundant post-conditions removed --- .../IndividualPmJob.robot | 29 +++-------------- .../IndividualReport.robot | 32 +++---------------- .../IndividualSubscription.robot | 30 +++-------------- .../IndividualThreshold.robot | 26 ++------------- .../PMJobs.robot | 12 +++---- .../Subscriptions.robot | 9 ++---- .../Thresholds.robot | 7 +--- libspecs/Easter.libspec | 2 +- libspecs/Reserved.libspec | 2 +- 9 files changed, 25 insertions(+), 124 deletions(-) diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot index 94e7cffff..5835ba44a 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot @@ -14,15 +14,14 @@ POST Individual NFV-MANO Performance Job - Method not implemented ... Reference: clause 6.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The NFV-MANO Performance Job is not created on the NFV-MANO + ... Post-Conditions: none Send Post request for individual NFV-MANO Performance Job Check HTTP Response Status Code Is 405 - Check Postcondition NFV-MANO Performance Job is not Created GET individual NFV-MANO Performance Job [Documentation] Test ID: 8.3.2.2.2 ... Test title: Get individual NFV-MANO Performance Job - ... Test objective: The objective is to test the retrieval of an individual performance monitoring job and perform a JSON schema and content validation of the collected job data structure + ... Test objective: The objective is to test the retrieval of an individual performance monitoring job and perform a JSON schema validation of the collected job data structure ... Pre-conditions: A NFV-MANO instance is instantiated. ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -54,10 +53,9 @@ PUT Individual NFV-MANO Performance Job - Method not implemented ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The NFV-MANO Performance Job is not modified by the operation + ... Post-Conditions: none Send Put request for individual NFV-MANO Performance Job Check HTTP Response Status Code Is 405 - Check Postcondition NFV-MANO Performance Job is Unmodified (Implicit) PATCH Individual NFV-MANO Performance Job - Method not implemented [Documentation] Test ID: 8.3.2.2.5 @@ -67,10 +65,9 @@ PATCH Individual NFV-MANO Performance Job - Method not implemented ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The NFV-MANO Performance Job is not modified by the operation + ... Post-Conditions: none Send Patch request for individual NFV-MANO Performance Job Check HTTP Response Status Code Is 405 - Check Postcondition NFV-MANO Performance Job is Unmodified (Implicit) DELETE Individual NFV-MANO Performance Job [Documentation] Test ID: 8.3.2.2.6 @@ -157,24 +154,6 @@ Send Patch request for individual NFV-MANO Performance Job ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition NFV-MANO Performance Job is not Created - Log Trying to get a new Pm Job - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - -Check Postcondition NFV-MANO Performance Job is Unmodified (Implicit) - Log Check Postcondition NFV-MANO PM job is not modified - GET individual NFV-MANO Performance Job - Log Check Response matches original NFV-MANO Pm Job - ${pmJob}= evaluate json.loads('''${response['body']}''') json - Should Be Equal ${origresponse['body']['id']} ${pmJob.id} - Should Be Equal ${origresponse['body']['criteria']} ${pmJob.criteria} - Should Be Equal ${origresponse['body']['_links']} ${pmJob._links} - Check Postcondition NFV-MANO Pm Job is Deleted Log Check Postcondition GET individual NFV-MANO Performance Job diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot index 4f0a2a2f7..0211b5545 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot @@ -14,10 +14,9 @@ POST Individual Performance Report - Method not implemented ... Reference: clause 6.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The NFV-MANO performance report is not created. + ... Post-Conditions: none Send Post request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition NFV-MANO Individual Performance Report is not Created Get Individual Performance Report [Documentation] Test ID: 8.3.2.3.2 @@ -52,10 +51,9 @@ PUT Individual Performance Report - Method not implemented ... Reference: clause 6.5.5.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The NFV-MANO performance report is not modified by the operation + ... Post-Conditions: none Send Put request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition NFV-MANO Individual Performance Report is Unmodified (Implicit) PATCH Individual Performance Report - Method not implemented [Documentation] Test ID: 8.3.2.3.5 @@ -65,10 +63,9 @@ PATCH Individual Performance Report - Method not implemented ... Reference: clause 6.5.5.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The NFV-MANO performance report is not modified by the operation + ... Post-Conditions: none Send Patch request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition NFV-MANO Individual Performance Report is Unmodified (Implicit) DELETE Individual Performance Report - Method not implemented [Documentation] Test ID: 8.3.2.3.6 @@ -78,10 +75,9 @@ DELETE Individual Performance Report - Method not implemented ... Reference: clause 6.5.5.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANOM ... Applicability: none - ... Post-Conditions: The NFV-MANO performance report is not deleted by the operation + ... Post-Conditions: none Send Delete request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition NFV-MANO Individual Performance Report Exists *** Keywords *** Get Individual Performance Report @@ -134,26 +130,6 @@ Send Delete request for Individual Performance Report ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition NFV-MANO Individual Performance Report Exists - Log Checking that report still exists - Get Individual Performance Report - -Check Postcondition NFV-MANO Individual Performance Report is not Created - Log Trying to get a new report - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${newReportId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - -Check Postcondition NFV-MANO Individual Performance Report is Unmodified (Implicit) - Log Check Postcondition NFV-MANO PM job is not modified - Get Individual Performance Report - Log Check Response matches original NFV-MANO report - ${report}= evaluate json.loads('''${response['body']}''') json - Should Be Equal ${origResponse['body']['entries'][0]['objectInstanceId']} ${report['entries'][0]['objectInstanceId']} - Check HTTP Response Status Code Is [Arguments] ${expected_status} ${status}= Convert To Integer ${expected_status} diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot index c00a2b6bc..2b7b4db88 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot @@ -10,7 +10,7 @@ Resource environment/individualSubscription.txt GET Individual Performance Subscription [Documentation] Test ID: 8.3.2.7.1 ... Test title: GET Individual Performance Subscription - ... Test objective: The objective is to test the retrieval of individual performance subscription and perform a JSON schema and content validation of the returned subscription data structure. + ... Test objective: The objective is to test the retrieval of individual performance subscription and perform a JSON schema validation of the returned subscription data structure. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. ... Reference: clause 6.5.9.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -66,10 +66,9 @@ POST Individual Performance Subscription - Method not implemented ... Reference: clause 6.5.9.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The Performance Subscription is not created on the NFV-MANO + ... Post-Conditions: none Send Post request for individual Performance Subscription Check HTTP Response Status Code Is 405 - Check Postcondition Performance Subscription is not Created PUT Individual Performance Subscription - Method not implemented [Documentation] Test ID: 8.3.2.7.6 @@ -79,10 +78,9 @@ PUT Individual Performance Subscription - Method not implemented ... Reference: clause 6.5.9.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The Performance subscription is not modified by the operation + ... Post-Conditions: none Send Put request for individual Performance Threshold Check HTTP Response Status Code Is 405 - Check Postcondition Performance Subscription is Unmodified (Implicit) PATCH Individual Performance Subscription - Method not implemented [Documentation] Test ID: 8.3.2.7.7 @@ -92,10 +90,9 @@ PATCH Individual Performance Subscription - Method not implemented ... Reference: clause 6.5.9.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The Performance subscription is not modified by the operation + ... Post-Conditions: none Send Patch request for individual Performance Threshold Check HTTP Response Status Code Is 405 - Check Postcondition Performance Subscription is Unmodified (Implicit) *** Keywords *** Check HTTP Response Status Code Is @@ -154,15 +151,6 @@ Send Post request for individual Performance Subscription ${output}= Output response Set Suite Variable @{response} ${output} -Check Postcondition Performance 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} - ${output}= Output response - Set Suite Variable @{response} ${output} - Check HTTP Response Status Code Is 404 - Send Put request for individual Performance Threshold Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} @@ -179,12 +167,4 @@ Send Patch request for individual Performance Threshold Set Suite Variable ${origResponse} ${origOutput} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response - Set Suite Variable @{response} ${output} - -Check Postcondition Performance Subscription is Unmodified (Implicit) - Log Check postconidtion subscription not modified - GET individual Performance Subscription - Log Check Response matches original Subscription - ${subscription}= evaluate json.loads('''${response['body']}''') json - Should Be Equal As Strings ${origResponse['body']['id']} ${subscription.id} - Should Be Equal As Strings ${origResponse['body']['callbackUri']} ${subscription.callbackUri} \ No newline at end of file + Set Suite Variable @{response} ${output} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot index 0f2911c03..b3a0ac64e 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot @@ -15,10 +15,9 @@ POST Individual Threshold - Method not implemented ... Reference: clause 6.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The Performance Threshold is not created on the NFV-MANO + ... Post-Conditions: none Send Post request for individual Performance Threshold Check HTTP Response Status Code Is 405 - Check Postcondition Performance Threshold is not Created GET Individual Threshold [Documentation] Test ID: 8.3.2.5.2 @@ -54,10 +53,9 @@ PUT Individual Threshold - Method not implemented ... Reference: clause 6.5.7.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The Performance Threshold is not modified by the operation + ... Post-Conditions: none Send Put request for individual Performance Threshold Check HTTP Response Status Code Is 405 - Check Postcondition Performance Threshold is Unmodified (Implicit) PATCH Individual Threshold - Method not implemented [Documentation] Test ID: 8.3.2.5.5 @@ -67,10 +65,9 @@ PATCH Individual Threshold - Method not implemented ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The Performance Threshold is not modified by the operation + ... Post-Conditions: none Send Patch request for individual Performance Threshold Check HTTP Response Status Code Is 405 - Check Postcondition Performance Threshold is Unmodified (Implicit) DELETE Individual Threshold [Documentation] Test ID: 8.3.2.5.6 @@ -157,23 +154,6 @@ Send Patch request for individual Performance Threshold ${output}= Output response Set Suite Variable @{response} ${output} -Check Postcondition Performance Threshold is Unmodified (Implicit) - Log Check postconidtion threshold not modified - GET individual Performance Threshold - Log Check Response matches original Threshold - ${threshold}= evaluate json.loads('''${response['body']}''') json - Should Be Equal ${origresponse['body']['id']} ${threshold.id} - Should Be Equal ${origresponse['body']['criteria']} ${threshold.criteria} - -Check Postcondition Performance Threshold is not Created - Log Trying to get a new Threshold - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} - ${output}= Output response - Set Suite Variable @{response} ${output} - Check HTTP Response Status Code Is 404 - Check Postcondition Performance Threshold is Deleted Log Check Postcondition Threshold is deleted GET individual Performance Threshold diff --git a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot index 63793592f..bf472e2f0 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot @@ -125,6 +125,7 @@ GET NFV-MANO Performance Monitoring Jobs with invalid attribute selector ... Post-Conditions: none GET NFV-MANO Performance Monitoring Jobs with invalid attribute selector Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails GET information about multiple Performance Monitoring Jobs to get Paged Response [Documentation] Test ID: 8.3.2.1.10 @@ -137,7 +138,7 @@ GET information about multiple Performance Monitoring Jobs to get Paged Response ... Post-Conditions: none GET all NFV-MANO Performance Monitoring Jobs Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Link GET information about multiple Performance Monitoring Jobs for Bad Request Response too big [Documentation] Test ID: 8.3.2.1.11 @@ -175,7 +176,7 @@ Get information about multiple Performance Monitoring Jobs with malformed author ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none GET Performance Monitoring Jobs with malformed authorization token - Check HTTP Response Status Code Is 400 + Check HTTP Response Status Code Is 401 Get information about multiple Performance Monitoring Jobs without authorization token [Documentation] Test ID: 8.3.2.1.14 @@ -236,7 +237,6 @@ DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Post-Conditions: none Send DELETE Request for all NFV-MANO Performance Monitoring Jobs Check HTTP Response Status Code Is 405 - Check Postcondition NFV-MANO Performance Monitoring Jobs Exist *** Keywords *** GET all NFV-MANO Performance Monitoring Jobs @@ -407,11 +407,7 @@ Check HTTP Response Body Json Schema Is ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK - -Check Postcondition NFV-MANO Performance Monitoring Jobs Exist - Log Checking that Pm Job still exists - GET all NFV-MANO Performance Monitoring Jobs -Check LINK in Header +Check HTTP Response Header Contains Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot index 070607c5e..f43e864f7 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot @@ -169,10 +169,9 @@ DELETE Performance Subscriptions - Method not implemented ... Reference: clause 6.5.8.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The performance subscriptions are not deleted by the failed operation + ... Post-Conditions: none Send Delete Request for Performance Subscriptions Check HTTP Response Status Code Is 405 - Check Postcondition Performance Subscriptions Exists *** Keywords *** @@ -320,8 +319,4 @@ Send Delete Request for Performance Subscriptions Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response - Set Suite Variable ${response} ${output} - -Check Postcondition Performance Subscriptions Exists - Log Checking that subscriptions exists - Get all Performance Subscriptions \ No newline at end of file + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot index c0a605ad8..f52a67ad6 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot @@ -121,10 +121,9 @@ DELETE Performance Thresholds - Method not implemented ... Reference: clause 6.5.6.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The NFV-MANO performance thresholds are not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for all Performance Thresholds Check HTTP Response Status Code Is 405 - Check Postcondition Thresholds Exist *** Keywords *** GET all Performance Thresholds @@ -186,10 +185,6 @@ Send DELETE Request for all Performance Thresholds DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition Thresholds Exist - Log Checking that Thresholds still exists - GET all Performance Thresholds Check Postcondition Threshold Exists Log Checking that Threshold exists diff --git a/libspecs/Easter.libspec b/libspecs/Easter.libspec index 32914eb5e..eda6655b5 100644 --- a/libspecs/Easter.libspec +++ b/libspecs/Easter.libspec @@ -1,5 +1,5 @@ - + global yes diff --git a/libspecs/Reserved.libspec b/libspecs/Reserved.libspec index 49406f6a9..28941a6c0 100644 --- a/libspecs/Reserved.libspec +++ b/libspecs/Reserved.libspec @@ -1,5 +1,5 @@ - + global yes -- GitLab From c2b6471a5d496dd8decc08d943a68295257438ba Mon Sep 17 00:00:00 2001 From: Sana Zulfiqar Date: Mon, 14 Sep 2020 11:08:27 +0200 Subject: [PATCH 448/580] pre-conditions updated --- .../NFVMANOPerformanceManagement-API/IndividualPmJob.robot | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot index 5835ba44a..e5aba09e6 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot @@ -10,7 +10,7 @@ POST Individual NFV-MANO Performance Job - Method not implemented [Documentation] Test ID: 8.3.2.2.1 ... Test title: POST Individual NFV-MANO Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO Performance Monitoring Job - ... Pre-conditions: A NFV-MANO instance is instantiated + ... Pre-conditions: none ... Reference: clause 6.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -49,7 +49,7 @@ PUT Individual NFV-MANO Performance Job - Method not implemented [Documentation] Test ID: 8.3.2.2.4 ... Test title: PUT Individual NFV-MANO Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NFV-MANO Performance Monitoring Job - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -61,7 +61,7 @@ PATCH Individual NFV-MANO Performance Job - Method not implemented [Documentation] Test ID: 8.3.2.2.5 ... Test title: PATCH Individual NFV-MANO Performance Job - method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new NFV-MANO Performance Monitoring Job - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none -- GitLab From 99209176767d4e843ec547ce62c012c559f8c5a3 Mon Sep 17 00:00:00 2001 From: Sana Zulfiqar Date: Mon, 14 Sep 2020 11:12:49 +0200 Subject: [PATCH 449/580] Pre-conditions updated --- .../IndividualReport.robot | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot index 0211b5545..f1f892f88 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot @@ -10,7 +10,7 @@ POST Individual Performance Report - Method not implemented [Documentation] Test ID: 8.3.2.3.1 ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO performance report within a monitoring job. - ... Pre-conditions: A NFV-MANO instance is instantiated. + ... Pre-conditions: none ... Reference: clause 6.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -47,7 +47,7 @@ PUT Individual Performance Report - Method not implemented [Documentation] Test ID: 8.3.2.3.4 ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NFV-MANO performance report within a monitoring job. - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. + ... Pre-conditions: none ... Reference: clause 6.5.5.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -59,7 +59,7 @@ PATCH Individual Performance Report - Method not implemented [Documentation] Test ID: 8.3.2.3.5 ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NFV-MANO performance report within a monitoring job. - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. + ... Pre-conditions: none ... Reference: clause 6.5.5.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -71,7 +71,7 @@ DELETE Individual Performance Report - Method not implemented [Documentation] Test ID: 8.3.2.3.6 ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing NFV-MANO performance report within a monitoring job - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job in the NFV-MANOM. + ... Pre-conditions: none ... Reference: clause 6.5.5.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANOM ... Applicability: none -- GitLab From 1b2c02703e2f006dedb18cc9664fc299c217a3b7 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 14 Sep 2020 15:14:04 +0500 Subject: [PATCH 450/580] pre-conditions updated --- .../IndividualSubscription.robot | 6 +++--- .../IndividualThreshold.robot | 6 +++--- SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot | 6 +++--- SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot | 6 +++--- SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot | 6 +++--- libspecs/Easter.libspec | 2 +- libspecs/Reserved.libspec | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot index 2b7b4db88..f85599102 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot @@ -62,7 +62,7 @@ POST Individual Performance Subscription - Method not implemented [Documentation] Test ID: 8.3.2.7.5 ... Test title: POST Individual Performance Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Performance Subscription - ... Pre-conditions: An instance is instantiated + ... Pre-conditions: none ... Reference: clause 6.5.9.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -74,7 +74,7 @@ PUT Individual Performance Subscription - Method not implemented [Documentation] Test ID: 8.3.2.7.6 ... Test title: PUT Individual Performance Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing Performance subscription. - ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 6.5.9.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -86,7 +86,7 @@ PATCH Individual Performance Subscription - Method not implemented [Documentation] Test ID: 8.3.2.7.7 ... Test title: PATCH Individual Performance Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing Performance subscription - ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 6.5.9.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot index b3a0ac64e..e4955607e 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot @@ -11,7 +11,7 @@ POST Individual Threshold - Method not implemented [Documentation] Test ID: 8.3.2.5.1 ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Performance Threshold - ... Pre-conditions: A NFV-MANO instance is instantiated + ... Pre-conditions: none ... Reference: clause 6.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -49,7 +49,7 @@ PUT Individual Threshold - Method not implemented [Documentation] Test ID: 8.3.2.5.4 ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing Performance threshold - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. + ... Pre-conditions: none ... Reference: clause 6.5.7.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -61,7 +61,7 @@ PATCH Individual Threshold - Method not implemented [Documentation] Test ID: 8.3.2.5.5 ... Test title: PATCH Individual Threshold - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing Performance threshold - ... Pre-conditions: A instance is instantiated. One or more performance thresholds are set. + ... Pre-conditions: none ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot index bf472e2f0..ece3fde86 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot @@ -206,7 +206,7 @@ PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented [Documentation] Test ID: 8.3.2.1.16 ... Test title: PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Monitoring Jobs - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 6.5.3.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -218,7 +218,7 @@ PATCH all NFV-MANO Performance Monitoring Jobs - (Method not implemented) [Documentation] Test ID: 8.3.2.1.17 ... Test title: PATCH all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NFV-MANO Performance Monitoring Jobs - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 6.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -230,7 +230,7 @@ DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented [Documentation] Test ID: 8.3.2.1.18 ... Test title: DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Monitoring Jobs - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 6.5.3.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot index f43e864f7..8d89041e2 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot @@ -141,7 +141,7 @@ PUT Performance Subscriptions - Method not implemented [Documentation] Test ID 8.3.2.6.10 ... Test title: PUT Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify performance subscriptions - ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 6.5.8.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -153,7 +153,7 @@ PATCH Performance Subscriptions - Method not implemented [Documentation] Test ID 8.3.2.6.11 ... Test title: PATCH Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update performance subscriptions - ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 6.5.8.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -165,7 +165,7 @@ DELETE Performance Subscriptions - Method not implemented [Documentation] Test ID 8.3.2.6.12 ... Test title: DELETE Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete performance subscriptions - ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 6.5.8.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot index f52a67ad6..05a668087 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot @@ -93,7 +93,7 @@ PUT Performance Thresholds - Method not implemented [Documentation] Test ID: 8.3.2.4.7 ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Thresholds - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 6.5.6.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -105,7 +105,7 @@ PATCH Performance Thresholds - Method not implemented [Documentation] Test ID: 8.3.2.4.8 ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify NFV-MANO Performance Thresholds - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 6.5.6.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -117,7 +117,7 @@ DELETE Performance Thresholds - Method not implemented [Documentation] Test ID: 8.3.2.4.9 ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Thresholds - ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 6.5.6.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none diff --git a/libspecs/Easter.libspec b/libspecs/Easter.libspec index eda6655b5..de6bc76ca 100644 --- a/libspecs/Easter.libspec +++ b/libspecs/Easter.libspec @@ -1,5 +1,5 @@ - + global yes diff --git a/libspecs/Reserved.libspec b/libspecs/Reserved.libspec index 28941a6c0..54f85645e 100644 --- a/libspecs/Reserved.libspec +++ b/libspecs/Reserved.libspec @@ -1,5 +1,5 @@ - + global yes -- GitLab From 5878f59f079697d0db776c74ac7b022e4f9408ca Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 22 Oct 2020 18:45:24 +0200 Subject: [PATCH 451/580] updated references --- .../IndividualPmJob.robot | 14 ++++---- .../IndividualReport.robot | 12 +++---- .../IndividualSubscription.robot | 14 ++++---- .../IndividualThreshold.robot | 14 ++++---- .../PMJobs.robot | 32 +++++++++---------- .../PerformanceManagementNotification.robot | 4 +-- .../Subscriptions.robot | 24 +++++++------- .../Thresholds.robot | 18 +++++------ 8 files changed, 66 insertions(+), 66 deletions(-) diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot index e5aba09e6..e1a351ae0 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot @@ -11,7 +11,7 @@ POST Individual NFV-MANO Performance Job - Method not implemented ... Test title: POST Individual NFV-MANO Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO Performance Monitoring Job ... Pre-conditions: none - ... Reference: clause 6.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.4.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET individual NFV-MANO Performance Job ... Test title: Get individual NFV-MANO Performance Job ... Test objective: The objective is to test the retrieval of an individual performance monitoring job and perform a JSON schema validation of the collected job data structure ... Pre-conditions: A NFV-MANO instance is instantiated. - ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ GET individual NFV-MANO Performance Job with invalid resource identifier ... Test title: Get individual NFV-MANO Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual NFV-MANO Performance Job - Method not implemented ... Test title: PUT Individual NFV-MANO Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NFV-MANO Performance Monitoring Job ... Pre-conditions: none - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual NFV-MANO Performance Job - Method not implemented ... Test title: PATCH Individual NFV-MANO Performance Job - method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new NFV-MANO Performance Monitoring Job ... Pre-conditions: none - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual NFV-MANO Performance Job ... Test title: Delete Individual NFV-MANO Performance Job ... Test objective: The objective is to test the deletion of an individual performance monitoring job ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO Performance Job is no more available. @@ -87,7 +87,7 @@ DELETE Individual NFV-MANO Performance Job with invalid resource identifier ... Test title: Delete individual NFV-MANO Performance Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual NFV-MANO performance monitoring job fails when using an invalid resource identifier ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot index f1f892f88..c3339721c 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot @@ -11,7 +11,7 @@ POST Individual Performance Report - Method not implemented ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO performance report within a monitoring job. ... Pre-conditions: none - ... Reference: clause 6.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.5.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. - ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual NFV-MANO performance report associated to a monitoring job fails when using an invalid resource endpoint. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. - ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PUT Individual Performance Report - Method not implemented ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NFV-MANO performance report within a monitoring job. ... Pre-conditions: none - ... Reference: clause 6.5.5.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.5.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ PATCH Individual Performance Report - Method not implemented ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NFV-MANO performance report within a monitoring job. ... Pre-conditions: none - ... Reference: clause 6.5.5.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.5.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ DELETE Individual Performance Report - Method not implemented ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing NFV-MANO performance report within a monitoring job ... Pre-conditions: none - ... Reference: clause 6.5.5.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.5.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANOM ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot index f85599102..14b777ec4 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual Performance Subscription ... Test title: GET Individual Performance Subscription ... Test objective: The objective is to test the retrieval of individual performance subscription and perform a JSON schema validation of the returned subscription data structure. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. - ... Reference: clause 6.5.9.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.9.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual Performance Subscription with invalid resource identifier ... Test title: GET Individual Performance Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual performance subscription fails when using an invalid resource identifier. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. - ... Reference: clause 6.5.9.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.9.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ DELETE Individual Performance Subscription ... Test title: DELETE Individual Performance Subscription ... Test objective: The objective is to test the deletion of an individual performance subscription ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. - ... Reference: clause 6.5.9.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.9.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Performance Subscription is not available anymore in the NFV-MANO @@ -51,7 +51,7 @@ DELETE Individual Performance Subscription with invalid resource identifier ... Test title: DELETE Individual Performance Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual performance subscription fails when using an invalid resource identifier. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. - ... Reference: clause 6.5.9.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.9.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ POST Individual Performance Subscription - Method not implemented ... Test title: POST Individual Performance Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Performance Subscription ... Pre-conditions: none - ... Reference: clause 6.5.9.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.9.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PUT Individual Performance Subscription - Method not implemented ... Test title: PUT Individual Performance Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing Performance subscription. ... Pre-conditions: none - ... Reference: clause 6.5.9.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.9.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ PATCH Individual Performance Subscription - Method not implemented ... Test title: PATCH Individual Performance Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing Performance subscription ... Pre-conditions: none - ... Reference: clause 6.5.9.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.9.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot index e4955607e..34f912e5c 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot @@ -12,7 +12,7 @@ POST Individual Threshold - Method not implemented ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Performance Threshold ... Pre-conditions: none - ... Reference: clause 6.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual NFV-MANO performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual performance threshold fails when using an invalid resource identifier ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance jobs are set. - ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual Threshold - Method not implemented ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing Performance threshold ... Pre-conditions: none - ... Reference: clause 6.5.7.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.7.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual Threshold - Method not implemented ... Test title: PATCH Individual Threshold - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing Performance threshold ... Pre-conditions: none - ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual Threshold ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual performance threshold ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Performance Threshold is not available anymore in the NFV-MANO @@ -87,7 +87,7 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual performance threshold ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot index ece3fde86..5e9129e49 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot @@ -14,7 +14,7 @@ Create new NFV-MANO Performance Monitoring Job ... Test title: Create a new NFV-MANO Performance Monitoring Job ... Test objective: The objective is to test the creation of a new NFV-MANO performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO Performance Job is successfully created on the NFV-MANO @@ -28,7 +28,7 @@ GET all NFV-MANO Performance Monitoring Jobs ... Test title: GET all NFV-MANO Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance monitoring jobs and perform a JSON schema validation ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET NFV-MANO Performance Monitoring Jobs with attribute-based filter ... Test title: GET all NFV-MANO Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of NFV-MANO performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET all NFV-MANO Performance Monitoring Jobs with all_fields attribute selector ... Test title: GET all NFV-MANO Performance Monitoring Jobs with all_fields attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs all_fields attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET all NFV-MANO Performance Monitoring Jobs with exclude_default attribute sele ... Test title: GET all NFV-MANO Performance Monitoring Jobs with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ GET all NFV-MANO Performance Monitoring Jobs with fields attribute selector ... Test title: GET all NFV-MANO Performance Monitoring Jobs with fields attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs fields attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the use of fields attribute selector ... Post-Conditions: none @@ -93,7 +93,7 @@ GET all NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selec ... Test title: GET all NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs exclude_fields attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -106,7 +106,7 @@ GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NFV-MANO performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -119,7 +119,7 @@ GET NFV-MANO Performance Monitoring Jobs with invalid attribute selector ... Test title: GET NFV-MANO Performance Monitoring Jobs with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of NFV-MANO performance monitoring jobs fails with invalid attribute selector ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -132,7 +132,7 @@ GET information about multiple Performance Monitoring Jobs to get Paged Response ... Test title: GET information about multiple Performance Monitoring Jobs to get Paged Response ... Test objective: The objective is to retrieve information about the performance monitoring jobs to get paged response ... Pre-conditions: none - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -145,7 +145,7 @@ GET information about multiple Performance Monitoring Jobs for Bad Request Respo ... Test title: GET information about multiple Performance Monitoring Jobs for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about performance monitoring jobs when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: none - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -158,7 +158,7 @@ GET information about multiple Performance Monitoring Jobs with "fields" and "ex ... Test title: GET all NFV-MANO Performance Monitoring Jobs with "fields" and "exclude_default" attribute selector ... Test objective: The objective is to retrieve all performance monitoring jobs with fields and exclude default attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -171,7 +171,7 @@ Get information about multiple Performance Monitoring Jobs with malformed author ... Test title: Get information about multiple Performance Monitoring Jobs with malformed authorization token ... Test objective: The objective is to test that the retrieval of information about Performance Monitoring Jobs fails when using malformed authorization token ... Pre-conditions: none - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -207,7 +207,7 @@ PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test title: PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: clause 6.5.3.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -219,7 +219,7 @@ PATCH all NFV-MANO Performance Monitoring Jobs - (Method not implemented) ... Test title: PATCH all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NFV-MANO Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: clause 6.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -231,7 +231,7 @@ DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test title: DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: clause 6.5.3.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.3.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/PerformanceManagementNotification.robot b/SOL009/NFVMANOPerformanceManagement-API/PerformanceManagementNotification.robot index fe84432d6..d864a87ea 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/PerformanceManagementNotification.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/PerformanceManagementNotification.robot @@ -17,7 +17,7 @@ Performance Information Availability Notification ... Test title: Performance Information Availability Notification ... Test objective: The objective is to test the dispatch of Performance Information Availability Notification when new performance information is available in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A performance job is created, and a subscription for information availability notifications is available in the NFV-MANO. - ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ Threshold Crossed Notification ... Test title: Threshold Crossed Notification ... Test objective: The objective is to test the dispatch of Threshold Crossed Notification when a previously set performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A performance job is created, and a threshold subscription is available in the NFV-MANO. - ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot index 8d89041e2..3af4db130 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot @@ -17,7 +17,7 @@ GET all Performance Subscriptions ... Test title: GET all Performance Subscriptions ... Test objective: The objective is to test the retrieval of all performance subscriptions and perform a JSON schema validation of the returned subscriptions data structure. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. - ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET Performance Subscriptions with attribute-based filter ... Test title: GET Performance Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of performance subscriptions using attribute-based filter, perform a JSON schema validation of the collected indicators data structure. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. - ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ GET Performance Management Subscriptions with Paged Response ... Test title: GET Performance Management Subscriptions with Paged Response ... Test objective: The objective is to query information about NFV-MANO Performance Subscriptions to get Paged Response. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. - ... Reference: clauseclause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clauseclause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET Performance Subscriptions with invalid attribute-based filter ... Test title: GET Performance Subscriptions with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of performance subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. - ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ GET Performance Subscriptions - Bad Request Response too Big ... Test title: GET Performance Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NFV-MANO performance subscriptions fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. - ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: @@ -82,7 +82,7 @@ GET Performance Subscriptions with invalid resource endpoint ... Test title: GET Performance Subscriptions with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all performance subscriptions fails when using invalid resource endpoint. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. - ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ Create new Performance subscription ... Test title: Create new Performance subscription ... Test objective: The objective is to test the creation of a new performance subscription and perform a JSON schema and content validation of the returned subscription data structure. ... Pre-conditions: An instance is instantiated. - ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The performance subscription is successfully set and it matches the issued subscription. @@ -111,7 +111,7 @@ Create duplicated Performance subscription with NFV-MANO not creating duplicated ... Test title: Create duplicated Performance subscription with NFV-MANO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated performance subscription and check that no new subscription is created by the NFV-MANO and a link to the original subscription is returned ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. - ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing performance subscription returned is available in the NFV-MANO @@ -127,7 +127,7 @@ Create duplicated Performance subscription with NFV-MANO creating duplicated sub ... Test title: Create duplicated Performance subscription with NFV-MANO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated performance subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. - ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated performance subscription is successfully set and it matches the issued subscription @@ -142,7 +142,7 @@ PUT Performance Subscriptions - Method not implemented ... Test title: PUT Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify performance subscriptions ... Pre-conditions: none - ... Reference: clause 6.5.8.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.8.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -154,7 +154,7 @@ PATCH Performance Subscriptions - Method not implemented ... Test title: PATCH Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update performance subscriptions ... Pre-conditions: none - ... Reference: clause 6.5.8.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.8.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ DELETE Performance Subscriptions - Method not implemented ... Test title: DELETE Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete performance subscriptions ... Pre-conditions: none - ... Reference: clause 6.5.8.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.8.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot index 05a668087..2cc794a63 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot @@ -13,7 +13,7 @@ Create new Performance Threshold ... Test title: Create new Performance Threshold ... Test objective: The objective is to test the creation of a new NFV-MANO performance threshold and perform the JSON schema validation of the returned threshold data structure. ... Pre-conditions: A NFV-MANO instance is instantiated. - ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO Performance Threshold is successfully created on the NFV-MANO @@ -28,7 +28,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance thresholds and perform a JSON schema validation of the collected thresholds data structure. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET Performance Threshold with Paged Response ... Test title: GET Performance Threshold with Paged Response ... Test objective: The objective is to query information about NFV-MANO Performance Thresholds to get Paged Response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ GET Performance Thresholds - Invalid attribute-based filter ... Test title: GET Performance Thresholds - Invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NFV-MANO performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ GET Performance Threshold - Bad Request Response too Big ... Test title: GET Performance Threshold - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NFV-MANO performance thresholds fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ PUT Performance Thresholds - Method not implemented ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Thresholds ... Pre-conditions: none - ... Reference: clause 6.5.6.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.6.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ PATCH Performance Thresholds - Method not implemented ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify NFV-MANO Performance Thresholds ... Pre-conditions: none - ... Reference: clause 6.5.6.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.6.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ DELETE Performance Thresholds - Method not implemented ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Thresholds ... Pre-conditions: none - ... Reference: clause 6.5.6.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.6.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none -- GitLab From 2800ac2b7b3a91636a8a815e6f698725e1a82d6a Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 5 Aug 2020 12:26:13 +0500 Subject: [PATCH 452/580] Added Test Cases for LoggingJobs.robot --- .../LoggingJobs.robot | 190 ++++++++++ .../NFVMANOLogManagementKeywords.robot | 133 +++++++ .../environment/variables.txt | 39 ++ .../jsons/createLoggingJobRequest.json | 6 + .../schemas/LoggingJob.schema.json | 353 +++++++++++++++++ .../schemas/LoggingJobs.schema.json | 356 ++++++++++++++++++ .../schemas/ProblemDetails.schema.json | 1 + 7 files changed, 1078 insertions(+) create mode 100644 SOL009/NFVMANOLogManagement-API/LoggingJobs.robot create mode 100644 SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot create mode 100644 SOL009/NFVMANOLogManagement-API/environment/variables.txt create mode 100644 SOL009/NFVMANOLogManagement-API/jsons/createLoggingJobRequest.json create mode 100644 SOL009/NFVMANOLogManagement-API/schemas/LoggingJob.schema.json create mode 100644 SOL009/NFVMANOLogManagement-API/schemas/LoggingJobs.schema.json create mode 100644 SOL009/NFVMANOLogManagement-API/schemas/ProblemDetails.schema.json diff --git a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot new file mode 100644 index 000000000..dc4b136d2 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot @@ -0,0 +1,190 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource NFVMANOLogManagementKeywords.robot +Library JSONLibrary +Library OperatingSystem +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false + +*** Test Cases *** +POST Create a new logging job + [Documentation] Test ID: 8.3.4.1.1 + ... Test title: POST Create a new logging job + ... Test objective: The objective is to create a new logging job + ... Pre-conditions: + ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: logging job created + POST Create a new logging job + Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location + Check HTTP Response Body Json Schema Is LoggingJob + +GET information about logging jobs + [Documentation] Test ID: 8.3.4.1.2 + ... Test title: GET information logging jobs + ... Test objective: The objective is to retrieve information about logging jobs + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Logging Jobs + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + + +GET Logging jobs - invalid attribute-based filter + [Documentation] Test ID: 8.3.4.1.3 + ... Test title: GET Logging jobs - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of logging jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Logging Job with invalid filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Logging jobs - invalid attribute selector + [Documentation] Test ID: 8.3.4.1.4 + ... Test title: GET Logging jobs - invalid attribute selector + ... Test objective: The objective is to test that the retrieval of logging jobs fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Logging Job with invalid selector + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Logging jobs - Bad Request Response too Big + [Documentation] Test ID: 8.3.4.1.5 + ... Test title: GET Logging jobs - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of Logging job fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Logging Jobs + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about logging jobs with attribute-based filter + [Documentation] Test ID: 8.3.4.1.6 + ... Test title: GET information about logging jobs with attribute-based filter + ... Test objective: The objective is to retrieve information about the logging jobs with attribute filters + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Logging Job with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + +GET information about logging jobs with "all_fields" attribute selector + [Documentation] Test ID: 8.3.4.1.7 + ... Test title: GET information about logging jobs with "all_fields" attribute selector + ... Test objective: The objective is to retrieve information about logging jobs with "all_fields" attribute selector + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Logging jobs with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + +GET information about Logging Jobs with exclude_default attribute selector + [Documentation] Test ID: 8.3.4.1.8 + ... Test title: GET information about Logging Jobs with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve information about logging jobs with "exclude_default" attribute selector + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Logging Jobs with exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + + +GET information about Logging Jobs with fields attribute selector + [Documentation] Test ID: 8.3.4.1.9 + ... Test title: GET information about Logging Jobs with fields attribute selector + ... Test objective: The objective is to retrieve information about Logging Jobs with fields attribute selector + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Logging Jobs with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + +GET information about Logging Jobs with "exclude_fields" attribute selector + [Documentation] Test ID: 8.3.4.1.10 + ... Test title: GET information about Logging Jobs with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve information about the Logging Jobs with "exclude_fields" attribute selector + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: none + GET Logging Jobs with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + +GET information about Logging Jobs with Paged Response + [Documentation] Test ID: 8.3.4.1.11 + ... Test title: GET information about Logging Jobs with Paged Response + ... Test objective: The objective is to query information about Logging Jobs to get Paged Response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + GET Logging Jobs + Check HTTP Response Status Code Is 200 + Check LINK in Header + +PUT Logging Jobs - Method not implemented + [Documentation] Test ID: 8.3.4.1.12 + ... Test title: PUT Logging Jobs - Method not implemented + ... Test objective: The objective is to test that the method is not implemented + ... Pre-conditions: + ... Reference: clause 8.5.3.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: none + PUT Logging Jobs + Check HTTP Response Status Code Is 405 + +PATCH Logging Jobs - Method not implemented + [Documentation] Test ID: 8.3.4.1.13 + ... Test title: PATCH Logging Jobs - Method not implemented + ... Test objective: The objective is to test that the method is not implemented + ... Pre-conditions: + ... Reference: clause 8.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: none + PATCH Logging Jobs + Check HTTP Response Status Code Is 405 + +DELETE Logging Jobs - Method not implemented + [Documentation] Test ID: 8.3.4.1.14 + ... Test title: DELETE Logging Jobs - Method not implemented + ... Test objective: The objective is to test that the method is not implemented + ... Pre-conditions: + ... Reference: clause 8.5.3.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: Logging Job is not deleted. + DELETE Logging Jobs + Check HTTP Response Status Code Is 405 diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot new file mode 100644 index 000000000..09b1b3c61 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -0,0 +1,133 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary +Library OperatingSystem +Library BuiltIn +Library JSONLibrary +Library Collections +Library JSONSchemaLibrary schemas/ +Library Process + + +*** Keywords *** + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + ${status}= Convert To Integer ${expected_status} + Should Be Equal ${response['status']} ${status} + Log Status code validated + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + Should Contain ${response['headers']['Content-Type']} application/json + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK + +POST Create a new logging job + Log Create a logging job + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/createLoggingJobRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +GET Logging Jobs + Log Query to GET information about logging jobs. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +GET Logging Job with invalid filter + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?attribute_not_exist=some_value + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +GET Logging Job with invalid selector + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?fields=wrong_field + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +GET Logging Job with filter + Log Query information about logging jobs with filters. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?${alarm_filter}=${filter_value} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +GET Logging jobs with all_fields attribute selector + Log Queries information about logging jobs, using all_fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Logging Jobs with exclude_default attribute selector + Log Queries information about logging jobs, using exclude_default + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Logging Jobs with fields attribute selector + Log Queries information about Logging Jobs, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Logging Jobs with exclude_fields attribute selector + Log Query VNF The GET method queries information about multiple alarms, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?exclude_fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check LINK in Header + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + +PUT Logging Jobs + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} +PATCH Logging Jobs + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} +DELETE Logging Jobs + log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/environment/variables.txt b/SOL009/NFVMANOLogManagement-API/environment/variables.txt new file mode 100644 index 000000000..f35315454 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/environment/variables.txt @@ -0,0 +1,39 @@ +*** Variables *** +${NFVMANOHOST} localhost +${NFVMANO_PORT} 8080 +${NFVMANO_SCHEMA} https + + +${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${NEG_AUTHORIZATION} Bearer negativetoken + +${CONTENT_TYPE} application/json +${CONTENT_TYPE_JSON} application/json +${ACCEPT_JSON} application/json +${ACCEPT} application/json +${AUTH_USAGE} 1 +${FIELD_USAGE} 1 +${NFVMANO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint + +${NFVMANO_ALLOWS_DUPLICATE_SUBS} 1 + +${apiRoot} / +${apiMajorVersion} v1 +${apiName} nfvmanologm + +${response} {} + +${callback_port} 9091 +${callback_uri} http://172.22.1.7:${callback_port} +${callback_endpoint} /nfvmanologm/subscriptions +${callback_endpoint_error} /subs_404 +${sleep_interval} 20s + +${total_polling_time} 2 min +${polling_interval} 10 sec + +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +${alarm_filter} id +${filter_value} 50daca910b000d4f1a2b675d604257e42 +${fields} \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/jsons/createLoggingJobRequest.json b/SOL009/NFVMANOLogManagement-API/jsons/createLoggingJobRequest.json new file mode 100644 index 000000000..77ec08188 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/jsons/createLoggingJobRequest.json @@ -0,0 +1,6 @@ +{ + "objectInstanceIds":[], + "jobCriteria":{ + "loggingType":"MESSAGES" + } +} \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/schemas/LoggingJob.schema.json b/SOL009/NFVMANOLogManagement-API/schemas/LoggingJob.schema.json new file mode 100644 index 000000000..d7dd8b5d5 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/schemas/LoggingJob.schema.json @@ -0,0 +1,353 @@ +{ + "description": "This type represents a logging job. It shall comply with the provisions defined in table 8.6.2.6-1.", + "type": "object", + "required": [ + "id", + "objectInstanceIds", + "jobCriteria", + "jobConfig", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectInstanceIds": { + "description": "Identifiers of the object instance for which logging information is collected. This attribute shall contain the identifier of the instance of the object that is logged according to their type.", + "type": "array", + "items": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + } + }, + "jobCriteria": { + "description": "This type represents collection criteria for logging jobs. It shall comply with the provisions defined in table 8.6.3.2-1.", + "type": "object", + "required": [ + "loggingType" + ], + "properties": { + "loggingType": { + "description": "Type of logging. This defines the types of logged information to collect.\nPermitted values: - MESSAGES: logged NFV-MANO service interface messages. - SERVICES: logged messages about processes pertaining to NFV-MANO services. - SYSTEM: logged messages about the NFV-MANO functional entity’s system enabled by the provider.", + "type": "string", + "enum": [ + "MESSAGES", + "SERVICES", + "SYSTEM" + ] + }, + "messagesLogDetail": { + "description": "This type represents criteria for logging jobs to collect logged messages on NFV-MANO service interfaces. It shall comply with the provisions defined in table 8.6.3.3-1.", + "type": "object", + "required": [ + "direction" + ], + "properties": { + "direction": { + "description": "The direction of the interface messages to match.\nPermitted values: - IN: input messages into the interface. - OUT: output messages from the interface. - ALL: both input and output messages into/from the interface.", + "type": "string", + "enum": [ + "IN", + "OUT", + "ALL" + ] + }, + "matchingPatterns": { + "description": "Patterns to be matched in the interface message. If provided, only messages that match all the values provided in the sub-attributes shall be logged. An API consumer can provide more than one \"matchingPattern\" if combinations of patterns are to be considered to match diverse sets of interface messages.", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "required": [ + "srcIpAddress" + ] + }, + { + "required": [ + "dstIpAddress" + ] + }, + { + "required": [ + "requestMethod" + ] + }, + { + "required": [ + "requestUriPattern" + ] + }, + { + "required": [ + "responseCodes" + ] + } + ], + "properties": { + "srcIpAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "requestMethod": { + "description": "HTTP request method to be matched. To match, the HTTP request method of the message shall be the same as the value of this attribute. Valid values are specified in IETF RFC 7231. The API producer shall support this attribute.", + "type": "string" + }, + "requestUriPattern": { + "description": "Substring to be matched in the request URI. To match, the request URI shall include the value of\n this attribute as a substring. This is typically used to match messages which associate to RESTful\n resources, or to a specific API (e.g., by using the \"apiName\" of the API). The API producer shall\n support this attribute.", + "type": "string" + }, + "dstIpAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "responseCodes": { + "description": "HTTP response codes or patterns to match. A list of all valid HTTP response codes and their specification documents can be obtained from the HTTP status code registry. In addition, if supported, the following patterns may be used (case-insensitive): - \"1XX\": for matching any kind of informational response. - \"2XX\": for matching any kind of success response. - \"3XX\": for matching any kind redirection response. - \"4XX\": for matching any kind of client error response. - \"5XX\": for matching any kind of server error response.\nThe API producer shall support this attribute", + "type": "array", + "items": { + "type": "string" + } + }, + "headerField": { + "description": "Name of the header field to be matched. The header field name shall be one of the supported fields in a request message as defined in clause 4.2.2 of ETSI GS NFV-SOL 013 or in a response message as defined in clause 4.2.3 of ETSI GS NFV-SOL 013, in accordance with the \"direction\" criteria input. The API producer may support this attribute.", + "type": "string" + }, + "headerValue": { + "description": "Value in the header to be matched. To match, the value in the header field indicated by \"headerField\" shall be the same as in this attribute. Shall be provided if a \"headerField\" is provided. The API producer may support this attribute.", + "type": "string" + }, + "bodyValues": { + "description": "A list of strings to be matched in the body part of the interface message (e.g., the body of an HTTP message). If provided, only messages with text in the body part containing all the values from the list shall match the filter. In addition to a matching filter for the body of the message, a corresponding \"headerField\" filter shall also be provided, with \"headerField\" set to \"Content-Type\", to restrict matching to appropriate textual payloads such as \"application/json\" or \"text/plain\". The API producer may support this attribute", + "type": "string" + } + } + } + } + } + }, + "servicesLogDetail": { + "description": "This type represents criteria for logging jobs to collect logged messages about processes pertaining to NFV-MANO services. It shall comply with the provisions defined in table 8.6.3.4-1.", + "type": "object", + "properties": { + "logGarbageCollection": { + "description": "Indicates to collect logged information about garbage collection processes associated to NFV-MANO services.", + "type": "boolean" + } + } + }, + "systemLogDetail": { + "description": "This type represents criteria for logging jobs to collect logged system events of the NFV-MANO functional entity. It shall comply with the provisions defined in table 8.6.3.5-1.", + "type": "object", + "required": [ + "systemLogs", + "severityLevel" + ], + "properties": { + "systemLogs": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "severityLevelScheme": { + "description": "Identifies a severity level scheme. The default value is \"rfc5424\", which represents the set of values specified in the clause 6.2.1, table 2 of IETF RFC 5424. Other values may be used to signal different schemes.", + "type": "string" + }, + "severityLevel": { + "description": "The severity level, which determines the severity of the system messages to collect. The NFV-MANO functional entity shall collect system log messages, as indicated by the \"systemLogs\" attribute, with severity levels lower (i.e., more severe) or equal to the value provided by this present attribute.", + "type": "number" + } + } + } + } + }, + "jobConfig": { + "description": "This type represents configuration data for a logging job. It shall comply with the provisions defined in table 8.6.3.6-1. NOTE: The present document version does not specify the support for \"log compilation and reporting based on events\" as specified in clause 6.6.2.2 of ETSI GS NFV-IFA 031.", + "type": "object", + "required": [ + "reportingCondition", + "securityConf" + ], + "properties": { + "startTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "reportingCondition": { + "description": "Specifies the condition under which the producer will report to the consumer about the compiled log data.", + "required": [ + "reportingType" + ], + "properties": { + "reportingType": { + "description": "Specifies the type of reporting condition. Permitted values: - REPORTING_ON_COMPILATION: the producer shall notify the consumer once the compilation of the\n collected logging data into a file is completed and a new log report is available.\n- NO_REPORTING: no reporting is requested (the consumer can query the logging jobs to know about the\n availability of new log reports).", + "type": "string", + "enum": [ + "REPORTING_ON_COMPILATION", + "NO_REPORTING" + ] + }, + "minimumReportingPeriod": { + "description": "Specifies the minimum periodicity at which the producer will report to the consumer about the collected log information, in seconds.", + "type": "integer", + "format": "int32" + } + } + }, + "compileBySizeValue": { + "description": "An indicative size threshold for compiling the collected log data, in bytes. It is used when the compilation is based on the size of the collected log data. If not present, a default value as specified with the \"defaultLogCompileBySizeValue\" configuration in the \"ManoEntityConfigurableParams\" shall be used", + "type": "integer", + "format": "int32" + }, + "compileByTimerValue": { + "description": "The periodicity threshold for compiling the filtered log, in seconds. It is used when the compilation is based on a timer (e.g., every 24 hours). If not present, a default value as specified with the \"defaultLogCompileByTimerValue\" configuration in the \"ManoEntityConfigurableParams\" shall be used", + "type": "integer", + "format": "int32" + }, + "securityConf": { + "description": "Configuration about the security aspects of the logging job.", + "type": "object", + "properties": { + "logFileEncryption": { + "description": "Information about the encryption of the compiled log files. Shall be present if the log file is requested to be encrypted.", + "required": [ + "encryptionCertificate", + "cipherAlgorithm" + ], + "type": "object", + "properties": { + "encryptionCertificate": { + "description": "X.509 certificate with the public key to use for the encryption of the compiled log file.", + "type": "string" + }, + "cipherAlgorithm": { + "description": "Cryptographic algorithm to be used for the encryption of the compiled log file. More than one algorithm can be provided from higher (lower array index) to lower (higher array index) precedence. Valid values are: \"AES-CBC-128\", \"AES-GCM-128\", \"AES-CBC-256\", and \"AES-GCM-256\", as specified in clause 6.5 of ETSI GS NFV-SEC 012", + "type": "array", + "items": { + "type": "string", + "minItems": 1 + } + }, + "encryptAndSignOrder": { + "description": "Indication about the order in signing and encrypting the compiled log file. Valid values are: \"encryptFirst\", to apply the order \"first encrypt, then sign\", and \"signFirst\" for the order \"first sign, then encrypt\". Default value is \"encryptFirst\".", + "type": "string" + } + } + }, + "logTransferSecurity": { + "description": "Information about the security measures for retrieving/accessing the compiled log files.", + "type": "object", + "properties": { + "publicKey": { + "description": "The public key of the API consumer used for the client authentication with the file server. Shall be provided if required by the type of transfer protocol. May be omitted if the key has been provided to the API producer by other means, or if it has already been provided in some previous CreateLoggingJobRequest issued by the same API consumer, whose public key has not changed.", + "type": "string" + } + } + } + } + } + } + }, + "logReports": { + "description": "Information about available log reports created by the logging job.", + "type": "array", + "items": { + "type": "object", + "required": [ + "logReportId", + "logReportLoc" + ], + "properties": { + "logReportId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "logReportLoc": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + }, + "_links": { + "description": "Links for this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objects": { + "description": "Links to resources representing the object instances that are logged. Shall be present if the logged object instance information is accessible as a resource.", + "type": "array", + "items": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/schemas/LoggingJobs.schema.json b/SOL009/NFVMANOLogManagement-API/schemas/LoggingJobs.schema.json new file mode 100644 index 000000000..92df600dc --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/schemas/LoggingJobs.schema.json @@ -0,0 +1,356 @@ +{ + "type": "array", + "items": { + "description": "This type represents a logging job. It shall comply with the provisions defined in table 8.6.2.6-1.", + "type": "object", + "required": [ + "id", + "objectInstanceIds", + "jobCriteria", + "jobConfig", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectInstanceIds": { + "description": "Identifiers of the object instance for which logging information is collected. This attribute shall contain the identifier of the instance of the object that is logged according to their type.", + "type": "array", + "items": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + } + }, + "jobCriteria": { + "description": "This type represents collection criteria for logging jobs. It shall comply with the provisions defined in table 8.6.3.2-1.", + "type": "object", + "required": [ + "loggingType" + ], + "properties": { + "loggingType": { + "description": "Type of logging. This defines the types of logged information to collect.\nPermitted values: - MESSAGES: logged NFV-MANO service interface messages. - SERVICES: logged messages about processes pertaining to NFV-MANO services. - SYSTEM: logged messages about the NFV-MANO functional entity’s system enabled by the provider.", + "type": "string", + "enum": [ + "MESSAGES", + "SERVICES", + "SYSTEM" + ] + }, + "messagesLogDetail": { + "description": "This type represents criteria for logging jobs to collect logged messages on NFV-MANO service interfaces. It shall comply with the provisions defined in table 8.6.3.3-1.", + "type": "object", + "required": [ + "direction" + ], + "properties": { + "direction": { + "description": "The direction of the interface messages to match.\nPermitted values: - IN: input messages into the interface. - OUT: output messages from the interface. - ALL: both input and output messages into/from the interface.", + "type": "string", + "enum": [ + "IN", + "OUT", + "ALL" + ] + }, + "matchingPatterns": { + "description": "Patterns to be matched in the interface message. If provided, only messages that match all the values provided in the sub-attributes shall be logged. An API consumer can provide more than one \"matchingPattern\" if combinations of patterns are to be considered to match diverse sets of interface messages.", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "required": [ + "srcIpAddress" + ] + }, + { + "required": [ + "dstIpAddress" + ] + }, + { + "required": [ + "requestMethod" + ] + }, + { + "required": [ + "requestUriPattern" + ] + }, + { + "required": [ + "responseCodes" + ] + } + ], + "properties": { + "srcIpAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "requestMethod": { + "description": "HTTP request method to be matched. To match, the HTTP request method of the message shall be the same as the value of this attribute. Valid values are specified in IETF RFC 7231. The API producer shall support this attribute.", + "type": "string" + }, + "requestUriPattern": { + "description": "Substring to be matched in the request URI. To match, the request URI shall include the value of\n this attribute as a substring. This is typically used to match messages which associate to RESTful\n resources, or to a specific API (e.g., by using the \"apiName\" of the API). The API producer shall\n support this attribute.", + "type": "string" + }, + "dstIpAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "responseCodes": { + "description": "HTTP response codes or patterns to match. A list of all valid HTTP response codes and their specification documents can be obtained from the HTTP status code registry. In addition, if supported, the following patterns may be used (case-insensitive): - \"1XX\": for matching any kind of informational response. - \"2XX\": for matching any kind of success response. - \"3XX\": for matching any kind redirection response. - \"4XX\": for matching any kind of client error response. - \"5XX\": for matching any kind of server error response.\nThe API producer shall support this attribute", + "type": "array", + "items": { + "type": "string" + } + }, + "headerField": { + "description": "Name of the header field to be matched. The header field name shall be one of the supported fields in a request message as defined in clause 4.2.2 of ETSI GS NFV-SOL 013 or in a response message as defined in clause 4.2.3 of ETSI GS NFV-SOL 013, in accordance with the \"direction\" criteria input. The API producer may support this attribute.", + "type": "string" + }, + "headerValue": { + "description": "Value in the header to be matched. To match, the value in the header field indicated by \"headerField\" shall be the same as in this attribute. Shall be provided if a \"headerField\" is provided. The API producer may support this attribute.", + "type": "string" + }, + "bodyValues": { + "description": "A list of strings to be matched in the body part of the interface message (e.g., the body of an HTTP message). If provided, only messages with text in the body part containing all the values from the list shall match the filter. In addition to a matching filter for the body of the message, a corresponding \"headerField\" filter shall also be provided, with \"headerField\" set to \"Content-Type\", to restrict matching to appropriate textual payloads such as \"application/json\" or \"text/plain\". The API producer may support this attribute", + "type": "string" + } + } + } + } + } + }, + "servicesLogDetail": { + "description": "This type represents criteria for logging jobs to collect logged messages about processes pertaining to NFV-MANO services. It shall comply with the provisions defined in table 8.6.3.4-1.", + "type": "object", + "properties": { + "logGarbageCollection": { + "description": "Indicates to collect logged information about garbage collection processes associated to NFV-MANO services.", + "type": "boolean" + } + } + }, + "systemLogDetail": { + "description": "This type represents criteria for logging jobs to collect logged system events of the NFV-MANO functional entity. It shall comply with the provisions defined in table 8.6.3.5-1.", + "type": "object", + "required": [ + "systemLogs", + "severityLevel" + ], + "properties": { + "systemLogs": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "severityLevelScheme": { + "description": "Identifies a severity level scheme. The default value is \"rfc5424\", which represents the set of values specified in the clause 6.2.1, table 2 of IETF RFC 5424. Other values may be used to signal different schemes.", + "type": "string" + }, + "severityLevel": { + "description": "The severity level, which determines the severity of the system messages to collect. The NFV-MANO functional entity shall collect system log messages, as indicated by the \"systemLogs\" attribute, with severity levels lower (i.e., more severe) or equal to the value provided by this present attribute.", + "type": "number" + } + } + } + } + }, + "jobConfig": { + "description": "This type represents configuration data for a logging job. It shall comply with the provisions defined in table 8.6.3.6-1. NOTE: The present document version does not specify the support for \"log compilation and reporting based on events\" as specified in clause 6.6.2.2 of ETSI GS NFV-IFA 031.", + "type": "object", + "required": [ + "reportingCondition", + "securityConf" + ], + "properties": { + "startTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "reportingCondition": { + "description": "Specifies the condition under which the producer will report to the consumer about the compiled log data.", + "required": [ + "reportingType" + ], + "properties": { + "reportingType": { + "description": "Specifies the type of reporting condition. Permitted values: - REPORTING_ON_COMPILATION: the producer shall notify the consumer once the compilation of the\n collected logging data into a file is completed and a new log report is available.\n- NO_REPORTING: no reporting is requested (the consumer can query the logging jobs to know about the\n availability of new log reports).", + "type": "string", + "enum": [ + "REPORTING_ON_COMPILATION", + "NO_REPORTING" + ] + }, + "minimumReportingPeriod": { + "description": "Specifies the minimum periodicity at which the producer will report to the consumer about the collected log information, in seconds.", + "type": "integer", + "format": "int32" + } + } + }, + "compileBySizeValue": { + "description": "An indicative size threshold for compiling the collected log data, in bytes. It is used when the compilation is based on the size of the collected log data. If not present, a default value as specified with the \"defaultLogCompileBySizeValue\" configuration in the \"ManoEntityConfigurableParams\" shall be used", + "type": "integer", + "format": "int32" + }, + "compileByTimerValue": { + "description": "The periodicity threshold for compiling the filtered log, in seconds. It is used when the compilation is based on a timer (e.g., every 24 hours). If not present, a default value as specified with the \"defaultLogCompileByTimerValue\" configuration in the \"ManoEntityConfigurableParams\" shall be used", + "type": "integer", + "format": "int32" + }, + "securityConf": { + "description": "Configuration about the security aspects of the logging job.", + "type": "object", + "properties": { + "logFileEncryption": { + "description": "Information about the encryption of the compiled log files. Shall be present if the log file is requested to be encrypted.", + "required": [ + "encryptionCertificate", + "cipherAlgorithm" + ], + "type": "object", + "properties": { + "encryptionCertificate": { + "description": "X.509 certificate with the public key to use for the encryption of the compiled log file.", + "type": "string" + }, + "cipherAlgorithm": { + "description": "Cryptographic algorithm to be used for the encryption of the compiled log file. More than one algorithm can be provided from higher (lower array index) to lower (higher array index) precedence. Valid values are: \"AES-CBC-128\", \"AES-GCM-128\", \"AES-CBC-256\", and \"AES-GCM-256\", as specified in clause 6.5 of ETSI GS NFV-SEC 012", + "type": "array", + "items": { + "type": "string", + "minItems": 1 + } + }, + "encryptAndSignOrder": { + "description": "Indication about the order in signing and encrypting the compiled log file. Valid values are: \"encryptFirst\", to apply the order \"first encrypt, then sign\", and \"signFirst\" for the order \"first sign, then encrypt\". Default value is \"encryptFirst\".", + "type": "string" + } + } + }, + "logTransferSecurity": { + "description": "Information about the security measures for retrieving/accessing the compiled log files.", + "type": "object", + "properties": { + "publicKey": { + "description": "The public key of the API consumer used for the client authentication with the file server. Shall be provided if required by the type of transfer protocol. May be omitted if the key has been provided to the API producer by other means, or if it has already been provided in some previous CreateLoggingJobRequest issued by the same API consumer, whose public key has not changed.", + "type": "string" + } + } + } + } + } + } + }, + "logReports": { + "description": "Information about available log reports created by the logging job.", + "type": "array", + "items": { + "type": "object", + "required": [ + "logReportId", + "logReportLoc" + ], + "properties": { + "logReportId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "logReportLoc": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + }, + "_links": { + "description": "Links for this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objects": { + "description": "Links to resources representing the object instances that are logged. Shall be present if the logged object instance information is accessible as a resource.", + "type": "array", + "items": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/schemas/ProblemDetails.schema.json b/SOL009/NFVMANOLogManagement-API/schemas/ProblemDetails.schema.json new file mode 100644 index 000000000..2af3ef9b3 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/schemas/ProblemDetails.schema.json @@ -0,0 +1 @@ +{ "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", "type": "object", "required": [ "status", "detail" ], "properties": { "type": { "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", "type": "string", "format": "URI" }, "title": { "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", "type": "string" }, "status": { "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", "type": "integer" }, "detail": { "description": "A human-readable explanation specific to this occurrence of the problem.\n", "type": "string" }, "instance": { "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", "type": "string", "format": "URI" } }} \ No newline at end of file -- GitLab From 0ffe876aa492d161d4f83433040aecc58ddbe54f Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 5 Aug 2020 15:16:37 +0500 Subject: [PATCH 453/580] Added Test Cases for IndividualLoggingJob.robot --- .../IndividualLoggingJob.robot | 97 +++++++++++++++++++ .../NFVMANOLogManagementKeywords.robot | 83 +++++++++++++++- .../environment/variables.txt | 5 +- 3 files changed, 183 insertions(+), 2 deletions(-) create mode 100644 SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot diff --git a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot new file mode 100644 index 000000000..2d3891671 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot @@ -0,0 +1,97 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource NFVMANOLogManagementKeywords.robot +Library JSONLibrary +Library OperatingSystem +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false + +*** Test Cases *** +POST Individual Logging Job - Method not implemented + [Documentation] Test ID: 8.3.4.2.1 + ... Test title: POST Individual Logging Job - method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create an Indiviual Logging + ... Pre-conditions: + ... Reference: clause 8.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Logging Job is not created on the NFV-MANO + Send Post request for individual Logging Job + Check HTTP Response Status Code Is 405 + Check Postcondition Logging Job is not Created + +GET individual Logging Job + [Documentation] Test ID: 8.3.4.2.2 + ... Test title: Get individual Logging Job + ... Test objective: The objective is to test the retrieval of an individual logging job and perform a JSON schema and content validation of the collected job data structure + ... Pre-conditions: Logging Job is already created. + ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET individual Logging Job + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJob + Check HTTP Response Body Logging Job Identifier matches the requested Logging Job + +GET individual Logging Job with invalid resource identifier + [Documentation] Test ID: 8.3.4.2.3 + ... Test title: Get individual Logging Job with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of an individual logging job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: Logging Job is already created. + ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET individual Logging Job with invalid resource identifier + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Individual Logging Job - Method not implemented + [Documentation] Test ID: 8.3.4.2.4 + ... Test title: PUT Individual Logging Job - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an existing Logging Job + ... Pre-conditions: Logging Job is already created. + ... Reference: clause 8.5.4.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Logging Job is not modified by the operation + Send Put request for individual Logging Job + Check HTTP Response Status Code Is 405 + +PATCH Individual Logging Job - Method not implemented + [Documentation] Test ID: 8.3.4.2.5 + ... Test title: PATCH Individual Logging Job - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new Logging Job + ... Pre-conditions: Logging Job is already created. + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Logging Job is not modified by the operation + Send Patch request for individual Logging Job + Check HTTP Response Status Code Is 405 + +DELETE Individual Logging Job + [Documentation] Test ID: 8.3.4.2.6 + ... Test title: DELETE Individual Logging Job + ... Test objective: The objective is to test the deletion of an individual logging job + ... Pre-conditions: Logging Job is already created. + ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Logging Job is no more available. + Send Delete request for individual Logging Job + Check HTTP Response Status Code Is 204 + Check Postcondition Logging Job is Deleted + +DELETE Individual Logging Job with invalid resource identifier + [Documentation] Test ID: 8.3.4.2.7 + ... Test title: DELETE Individual Logging Job with invalid resource identifier + ... Test objective: The objective is to test that the deletion of an individual logging job fails when using an invalid resource identifier + ... Pre-conditions: Logging Job is already created. + ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for individual Logging Job with invalid resource identifier + Check HTTP Response Status Code Is 404 diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index 09b1b3c61..6da78859e 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -130,4 +130,85 @@ DELETE Logging Jobs Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs ${outputResponse}= Output response - Set Global Variable @{response} ${outputResponse} \ No newline at end of file + Set Global Variable @{response} ${outputResponse} + +Send Post request for individual Logging Job + 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}/log_jobs/${logJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition Logging Job is not Created + Log Trying to get a new Logging Job + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 404 + +GET individual Logging Job + Log Trying to get a Pm Job + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check HTTP Response Body Logging Job Identifier matches the requested Logging Job + Log Going to validate Logging Job info retrieved + Should Be Equal ${response['body']['id']} ${logJobId} + Log Logging Job identifier as expected + + +GET individual Logging Job with invalid resource identifier + Log Trying to perform a negative get, using erroneous logging Job identifier + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Put request for individual Logging Job + 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}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch request for individual Logging Job + 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}/log_jobs/${logJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Send Delete request for individual Logging Job + Log Trying to delete an existing logging Job + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition Logging Job is Deleted + Log Check Postcondition + GET individual Logging Job + Check HTTP Response Status Code Is 404 + + +Send Delete request for individual Logging Job with invalid resource identifier + Log Trying to perform a negative delete, using erroneous Logging Job identifier + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${erroneousLogJobId} + ${output}= Output response + Set Suite Variable ${response} ${output} diff --git a/SOL009/NFVMANOLogManagement-API/environment/variables.txt b/SOL009/NFVMANOLogManagement-API/environment/variables.txt index f35315454..c2921c8a4 100644 --- a/SOL009/NFVMANOLogManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOLogManagement-API/environment/variables.txt @@ -3,6 +3,9 @@ ${NFVMANOHOST} localhost ${NFVMANO_PORT} 8080 ${NFVMANO_SCHEMA} https +${logJobId} 0b000d4f1a2b67 +${erroneousLogJobId} wrongID + ${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${NEG_AUTHORIZATION} Bearer negativetoken @@ -36,4 +39,4 @@ ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies. ${alarm_filter} id ${filter_value} 50daca910b000d4f1a2b675d604257e42 -${fields} \ No newline at end of file +${fields} -- GitLab From 2810f79a528e4887a4e5fa97688166530f26fa96 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 6 Aug 2020 11:21:48 +0500 Subject: [PATCH 454/580] Added Test Cases for IndividualReport.robot --- .../IndividualReport.robot | 97 ++++++++++ .../NFVMANOLogManagementKeywords.robot | 72 ++++++- .../environment/variables.txt | 5 + .../schemas/LogReport.schema.json | 176 ++++++++++++++++++ 4 files changed, 349 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVMANOLogManagement-API/IndividualReport.robot create mode 100644 SOL009/NFVMANOLogManagement-API/schemas/LogReport.schema.json diff --git a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot new file mode 100644 index 000000000..66a8e04a3 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot @@ -0,0 +1,97 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource NFVMANOLogManagementKeywords.robot +Library JSONLibrary +Library OperatingSystem +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false + +*** Test Cases *** +POST Individual Log Report - Method not implemented + [Documentation] Test ID: 8.3.4.3.1 + ... Test title: POST Individual Log Report - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new log report. + ... Pre-conditions: Logging Job is already created. + ... Reference: clause 8.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The log report is not created. + Send Post request for Individual Log Report + Check HTTP Response Status Code Is 405 + Check Postcondition Individual Log Report is not Created + +Get Individual Log Report + [Documentation] Test ID: 8.3.4.3.2 + ... Test title: Get Individual Log Report + ... Test objective: The objective is to test the retrieval of an individual log report and perform a JSON schema validation of the collected report data structure + ... Pre-conditions: One or more log reports are set. + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Log Report + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LogReport + +Get Individual Log Report (asynchronous) + [Documentation] Test ID: 8.3.4.3.3 + ... Test title: Get Individual Log Report (asynchronous) + ... Test objective: The objective is to test the retrieval of an individual log report is ongoing and no log report is available yet. + ... Pre-conditions: One or more log reports are set. + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Log Report + Check HTTP Response Status Code Is 202 + +Get Individual Log Report with invalid resource endpoint + [Documentation] Test ID: 8.3.4.3.4 + ... Test title: Get Individual Log Report with invalid resource endpoint + ... Test objective: The objective is to test that the retrieval of an individual log report fails when using an invalid resource endpoint. + ... Pre-conditions: One or more log reports are set. + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Log Report with invalid resource endpoint + Check HTTP Response Status Code Is 404 + +PUT Individual Log Report - Method not implemented + [Documentation] Test ID: 8.3.4.3.5 + ... Test title: PUT Individual Log Report - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an existing log report. + ... Pre-conditions: One or more log reports are set. + ... Reference: clause 8.5.5.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO log report is not modified by the operation + Send Put request for Individual Log Report + Check HTTP Response Status Code Is 405 + Check Postcondition Individual Log Report is Unmodified (Implicit) + +PATCH Individual Log Report - Method not implemented + [Documentation] Test ID: 8.3.4.3.6 + ... Test title: PATCH Individual Log Report - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existinglog report. + ... Pre-conditions: One or more log reports are set. + ... Reference: clause 8.5.5.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The log report is not modified by the operation + Send Patch request for Individual Log Report + Check HTTP Response Status Code Is 405 + Check Postcondition Individual Log Report is Unmodified (Implicit) + +DELETE Individual Log Report - Method not implemented + [Documentation] Test ID: 8.3.4.3.7 + ... Test title: DELETE Individual Log Report - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing log report. + ... Pre-conditions: One or more log reports are set. + ... Reference: clause 8.5.5.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The log report is not deleted by the operation + Send Delete request for Individual Log Report + Check HTTP Response Status Code Is 405 + Check Postcondition Individual Log Report Exists diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index 6da78859e..ec0aab6af 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -204,7 +204,6 @@ Check Postcondition Logging Job is Deleted GET individual Logging Job Check HTTP Response Status Code Is 404 - Send Delete request for individual Logging Job with invalid resource identifier Log Trying to perform a negative delete, using erroneous Logging Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -212,3 +211,74 @@ Send Delete request for individual Logging Job with invalid resource identifier DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${erroneousLogJobId} ${output}= Output response Set Suite Variable ${response} ${output} + +Send Post request for Individual Log Report + Log Trying to create new log report + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${newReportId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition Individual Log Report is not Created + Log Trying to get a new report + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${newReportId} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 404 + +Get Individual Log Report + Log Trying to get log report + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${reportId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Individual Log Report with invalid resource endpoint + Log Trying to get a log report with invalid resource endpoint + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${erroneousReportId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Put request for Individual Log Report + Log Trying to update log report + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${reportId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${reportId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch request for Individual Log Report + Log Trying to update log report + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${reportId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${reportId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for Individual Log Report + Log Trying to delete log report + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${reportId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition Individual Log Report is Unmodified (Implicit) + Log Check Postcondition Log job is not modified + Get Individual Log Report + Log Check Response matches original report + ${report}= evaluate json.loads('''${response['body']}''') json + Should Be Equal ${origResponse['body']['readyTime']} ${report['readyTime']} + +Check Postcondition Individual Log Report Exists + Log Checking that report still exists + Get Individual Log Report + Check HTTP Response Status Code Is 200 diff --git a/SOL009/NFVMANOLogManagement-API/environment/variables.txt b/SOL009/NFVMANOLogManagement-API/environment/variables.txt index c2921c8a4..56e95e15e 100644 --- a/SOL009/NFVMANOLogManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOLogManagement-API/environment/variables.txt @@ -25,6 +25,7 @@ ${apiMajorVersion} v1 ${apiName} nfvmanologm ${response} {} +${origResponse} {} ${callback_port} 9091 ${callback_uri} http://172.22.1.7:${callback_port} @@ -40,3 +41,7 @@ ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies. ${alarm_filter} id ${filter_value} 50daca910b000d4f1a2b675d604257e42 ${fields} + +${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 +${erroneousReportId} erroneousReportId +${newReportId} newReportId diff --git a/SOL009/NFVMANOLogManagement-API/schemas/LogReport.schema.json b/SOL009/NFVMANOLogManagement-API/schemas/LogReport.schema.json new file mode 100644 index 000000000..3e2d3219f --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/schemas/LogReport.schema.json @@ -0,0 +1,176 @@ +{ + "description": "This type represents a log report, which provides information about a compiled log and how to obtain it. It shall comply with the provisions defined in table 8.6.2.7-1.\n", + "type": "object", + "required": [ + "id", + "objectInstanceId", + "compilationTrigger", + "readyTime", + "fileFormat", + "fileLocationInfo", + "securityAndIntegrityInfo", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectInstanceId": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + }, + "compilationTrigger": { + "description": "The trigger for the compilation of the log file.\nPermitted values: - ON_DEMAND: created based on explicit request by a client. - AUTOMATIC: created according to the logging job compilation configuration.", + "type": "string", + "enum": [ + "ON_DEMAND", + "AUTOMATIC" + ] + }, + "readyTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "expiryTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "fileSize": { + "description": "The size of the compiled log file in bytes, if known.", + "type": "integer", + "format": "int32" + }, + "fileFormat": { + "description": "The encoding used by the file.", + "type": "string" + }, + "fileLocationInfo": { + "description": "Location and address information of the compiled log file. The consumer can use this information to obtain the compiled log file.", + "type": "object", + "required": [ + "protocol", + "fileEndpoint" + ], + "properties": { + "protocol": { + "description": "Protocol over which the compiled log file can be retrieved.\nPermitted values: - HTTPS: transmission over HTTP Secure (HTTPS). - SFTP: transmission over SSH file transfer protocol (SFTP). - SCP: transmission over secure copy protocol (SCP). - FTPS: transmission over file transfer protocol secure (FTPS), as specified in IETF RFC 2228 [i.11],\n using explicit mode as specified in IETF RFC 4217 [i.12]. If FTPS is supported, \"private\" protection level shall be used.\n\nHTTPS shall be supported, and other protocols may be supported.", + "type": "string", + "enum": [ + "HTTPS", + "SFTP", + "SCP", + "FTPS" + ] + }, + "fileEndpoint": { + "description": "The host name (or IP address), optionally a port number (if the host with the compile log file uses a non-standard port number as per the supported transmission protocol), a valid file directory path, and the file name of the compiled log file, or a valid URL.", + "type": "string", + "format": "URI" + } + } + }, + "securityAndIntegrityInfo": { + "description": "Security and integrity information for the compilation of the log files.", + "type": "object", + "required": [ + "algorithm", + "hash", + "logFileSignature", + "signingCertificate" + ], + "properties": { + "algorithm": { + "description": "Algorithm used to generate the hash of the compiled log file. Only SHA-256 and SHA-512 shall be used", + "type": "string" + }, + "hash": { + "description": "The hexadecimal value of the hash of the compiled log file. The hash shall be computed from the encrypted compiled log file, in case the encryption applies.", + "type": "string" + }, + "encryptionPublicKey": { + "description": "Public key used for the encryption of the compiled log file. Shall be present if the compiled log file is encrypted.", + "type": "string" + }, + "cipherAlgorithm": { + "description": "The cryptographic algorithm used for the encryption. Shall be present if the compiled log file is encrypted. Valid values are: \"AES-CBC-128\", \"AES-GCM-128\", \"AES-CBC-256\", and \"AES-GCM-256\", as specified in clause 6.5 of ETSI GS NFV-SEC 012 [14].", + "type": "string" + }, + "logFileSignature": { + "description": "Signature to the compiled log file generated with the NFV-MANO functional entity’s private key, which is used to ensure the authenticity of the compiled log file. The signature shall be applied according to the \"encryptAndSignOrder\" of the \"LoggingJobConfig\".", + "type": "string" + }, + "signingCertificate": { + "description": "X.509 certificate with the NFV-MANO functional entity’s public key used for verifying the log report and compiled log file signatures.", + "type": "string" + } + } + }, + "_links": { + "description": "Links for this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objects": { + "description": "Links to resources representing the object instances that are logged. Shall be present if the logged object instance information is accessible as a resource.", + "type": "array", + "items": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } \ No newline at end of file -- GitLab From 2d75f3a68bcade5f9d9b28988be828bf14f7a50e Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 6 Aug 2020 16:35:07 +0500 Subject: [PATCH 455/580] Added Test Cases for CompileLogTask.robot --- .../CompileLogTask.robot | 113 ++++++++++++++++++ .../NFVMANOLogManagementKeywords.robot | 84 +++++++++++++ .../environment/variables.txt | 6 + .../jsons/compileLogRequest.json | 3 + .../jsons/createLoggingJobRequest.json | 12 +- 5 files changed, 212 insertions(+), 6 deletions(-) create mode 100644 SOL009/NFVMANOLogManagement-API/CompileLogTask.robot create mode 100644 SOL009/NFVMANOLogManagement-API/jsons/compileLogRequest.json diff --git a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot new file mode 100644 index 000000000..d7a15dae4 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot @@ -0,0 +1,113 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource NFVMANOLogManagementKeywords.robot +Library JSONLibrary +Library OperatingSystem +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false + + +*** Test Cases *** +Request to compile the logged data into a file - Synchronous mode + [Documentation] Test ID: 8.3.4.4.1 + ... Test title: Request to compile the logged data into a file - Synchronous mode + ... Test objective: The objective is to request to compile the logged data into a file in synchronous mode and perform a JSON schema validation on the returned log report data structure + ... Pre-conditions: + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO can decide immediately what to respond to a compile request + ... Post-Conditions: The compiled log information is available. + Send Log data Request in Synchronous mode + Check HTTP Response Status Code Is 201 + Check Operation Occurrence Id + Check HTTP Response Body Json Schema Is LogReport + + +Request to compile the logged data into a file - Asynchronous mode + [Documentation] Test ID: 8.3.4.4.2 + ... Test title: Request to compile the logged data into a file - Asynchronous mode + ... Test objective: The objective is to request to compile the logged data into a file in asynchronous mode and perform a JSON schema validation on the returned log report data structure + ... Pre-conditions: + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO can not decide immediately what to respond to a compile request + ... Post-Conditions: The compiled log information is available. + Send Log data Request in Asynchronous mode + Check HTTP Response Status Code Is 202 + Check Operation Occurrence Id + Wait for compilation success notification + +Request to compile the logged data into a file - Already Processing + [Documentation] Test ID: 8.3.4.4.3 + ... Test title: Request to compile the logged data into a file - Already Processing + ... Test objective: The objective is to request to compile the logged data into a file when a log data compilation and report creation is already ongoing, or a log report has just been created, for the specified logging job at the time of processing the request and perform a JSON schema validation on the returned log report data structure + ... Pre-conditions: + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Send Log data Request + Check HTTP Response Status Code Is 303 + Check Operation Occurrence Id + +Request to compile the logged data into a file with unprocessable entity + [Documentation] Test ID: 8.3.4.4.4 + ... Test title: Request to compile the logged data into a file with unprocessable entity + ... Test objective: The objective is to test that the rrequest to compile the logged data into a file fails when error in request body. + ... Pre-conditions: + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Log data Request + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Compiled Log Data - Method not implemented + [Documentation] Test ID: 8.3.4.4.5 + ... Test title: GET Compiled Log Data - Method not implemented + ... Test objective: The objective is to test that GET method is not allowed to retrieve compiled log data. + ... Pre-conditions: + ... Reference: clause 8.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Get Compiled Log Data + Check HTTP Response Status Code Is 405 + +PUT Compiled Log Data - Method not implemented + [Documentation] Test ID: 8.3.4.4.6 + ... Test title: PUT Compiled Log Data - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update compiled log data. + ... Pre-conditions: + ... Reference: clause 8.5.6.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send PUT Compiled Log Data + Check HTTP Response Status Code Is 405 + +PATCH Compiled Log Data - Method not implemented + [Documentation] Test ID: 8.3.4.4.7 + ... Test title: PATCH Compiled Log Data - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update compiled log data. + ... Pre-conditions: + ... Reference: clause 8.5.6.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send PATCH Compiled Log Data + Check HTTP Response Status Code Is 405 + +DELETE Compiled Log Data - Method not implemented + [Documentation] Test ID: 8.3.4.4.8 + ... Test title: DELETE Compiled Log Data - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to update compiled log data. + ... Pre-conditions: + ... Reference: clause 8.5.6.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send DELETE Compiled Log Data + Check HTTP Response Status Code Is 405 + \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index ec0aab6af..43b19ceca 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -282,3 +282,87 @@ Check Postcondition Individual Log Report Exists Log Checking that report still exists Get Individual Log Report Check HTTP Response Status Code Is 200 + +Send Log data Request in Synchronous mode + Log Request to compile the logged data into a file Synchronous mode + Pass Execution If ${SYNC_MODE} == 0 The compile process is asynchronous mode. Skipping the test + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body}= Get File jsons/compileLogRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${body} + ${body}= Output response + Set Suite Variable &{response} ${body} + +Check Operation Occurrence Id + ${vnfLcmOpOccId}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${vnfLcmOpOccId} + +Send Log data Request in Asynchronous mode + Log Request to compile the logged data into a file Asynchronous mode + Pass Execution If ${SYNC_MODE} == 1 The compile process is synchronous mode. Skipping the test + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body}= Get File jsons/compileLogRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${body} + ${body}= Output response + Set Suite Variable &{response} ${body} + + Wait for compilation success notification + Wait Until Keyword Succeeds ${retry} ${polling} Get success notification + +Get Success notification + log Trying to read an compiled file + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${response['headers']['Location']} + Log Validate Status code + Integer response status 200 + ${result} Output response body + Validate Json LogReport.schema.json ${result} + Log Validation OK + +Send Log data Request + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/createLoggingJobRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send Get Compiled Log Data + Log Trying to delete log report + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Put Compiled Log Data + Log Trying to update log report + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch Compiled Log Data + Log Trying to update log report + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete Compiled Log Data + Log Trying to delete log report + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log + ${output}= Output response + Set Suite Variable ${response} ${output} + \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/environment/variables.txt b/SOL009/NFVMANOLogManagement-API/environment/variables.txt index 56e95e15e..f60078d7d 100644 --- a/SOL009/NFVMANOLogManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOLogManagement-API/environment/variables.txt @@ -45,3 +45,9 @@ ${fields} ${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 ${erroneousReportId} erroneousReportId ${newReportId} newReportId + +${SYNC_MODE} 1 + +${retry} 2 min +${polling} 10 sec + diff --git a/SOL009/NFVMANOLogManagement-API/jsons/compileLogRequest.json b/SOL009/NFVMANOLogManagement-API/jsons/compileLogRequest.json new file mode 100644 index 000000000..2d3240611 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/jsons/compileLogRequest.json @@ -0,0 +1,3 @@ +{ + "objectInstanceId":"" +} \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/jsons/createLoggingJobRequest.json b/SOL009/NFVMANOLogManagement-API/jsons/createLoggingJobRequest.json index 77ec08188..a7d36a3e9 100644 --- a/SOL009/NFVMANOLogManagement-API/jsons/createLoggingJobRequest.json +++ b/SOL009/NFVMANOLogManagement-API/jsons/createLoggingJobRequest.json @@ -1,6 +1,6 @@ -{ - "objectInstanceIds":[], - "jobCriteria":{ - "loggingType":"MESSAGES" - } -} \ No newline at end of file +{ + "objectInstanceIds":[], + "jobCriteria":{ + "loggingType":"MESSAGES" + } +} -- GitLab From f805ef3d6867b5eeb26544e28f78d94753088282 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 7 Aug 2020 10:55:00 +0500 Subject: [PATCH 456/580] Added Test Cases for Subscriptions.robot --- .../NFVMANOLogManagementKeywords.robot | 122 +++++++++++- .../Subscriptions.robot | 176 ++++++++++++++++++ .../environment/variables.txt | 2 + .../jsons/subscriptions.json | 6 + 4 files changed, 305 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVMANOLogManagement-API/Subscriptions.robot create mode 100644 SOL009/NFVMANOLogManagement-API/jsons/subscriptions.json diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index 43b19ceca..d6efb3ecc 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -365,4 +365,124 @@ Send Delete Compiled Log Data DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${output}= Output response Set Suite Variable ${response} ${output} - \ No newline at end of file + +Create Sessions + Pass Execution If ${NFVMANO_CHECKS_NOTIF_ENDPOINT} == 0 MockServer not necessary to run + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} + +Check Notification Endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + + +Get all Subscriptions + [Documentation] The api consumer can use this method to query the list of active subscriptions to log management notifications + Set headers {"Accept": "application/json"} + Set headers {"Content-Type": "application/json"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + + Get Subscriptions with attribute-based filters + [Documentation] The api consumer can use this method to query the list of active subscriptions to log management notifications + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Subscriptions with invalid attribute-based filters + [Documentation] The api consumer can use this method to query the list of active subscriptions to log management notifications + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Post Request for Subscription + Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + ${body_request}= Get File jsons/subscriptions.json + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + ${output}= Output response + Set Suite Variable ${response} ${output} + Run Keyword If ${NFVMANO_CHECKS_NOTIF_ENDPOINT} == 1 + ... Check Notification Endpoint + +Check HTTP Response Body LogmSubscription Attributes Values Match the Issued Subscription + Log Check Response matches subscription + ${body}= Get File jsons/subscriptions.json + ${subscription}= evaluate json.loads('''${body}''') json + Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} + +Check Postcondition Subscription Is Set + Log Check Postcondition subscription exist + Set Headers {"Accept": "${ACCEPT_JSON}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 200 + +Send Post Request for Duplicated Subscription + Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body_request}= Get File jsons/subscriptions.json + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check HTTP Response Body Is Empty + Should Be Empty ${response['body']} + Log No json schema is provided. Validation OK + +Check Postcondition Subscription Resource Returned in Location Header Is Available + Log Going to check postcondition + GET ${response['headers']['Location']} + Integer response status 200 + Log Received a 200 OK as expected + ${contentType}= Output response headers Content-Type + Should Contain ${contentType} application/json + ${result}= Output response body + Validate Json LogmSubscription.schema.json ${result} + Log Validated LogmSubscription schema + ${body}= Get File jsons/subscriptions.json + ${subscription}= evaluate json.loads('''${body}''') json + Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} + Log Validated Issued subscription is same as original + +Send Put Request for Subscriptions + [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method + ... Not Allowed" response as defined in clause 4.3.5.4. + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch Request for Subscriptions + [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method + ... Not Allowed" response as defined in clause 4.3.5.4. + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete Request for Subscriptions + [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method + ... Not Allowed" response as defined in clause 4.3.5.4. + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition Subscriptions Exists + Log Checking that subscriptions exists + Get all Subscriptions + Check HTTP Response Status Code Is 200 \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot new file mode 100644 index 000000000..be4af31d6 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot @@ -0,0 +1,176 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Resource NFVMANOLogManagementKeywords.robot +Library MockServerLibrary +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true + +*** Test Cases *** +GET all Subscriptions + [Documentation] Test ID: 8.3.4.2.1 + ... Test title: GET all Subscriptions + ... Test objective: The objective is to test the retrieval list of active subscriptions list to log management notifications and perform a JSON schema validation of the returned subscriptions data structure + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get all Subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LogmSubscriptions + +GET Subscriptions with attribute-based filter + [Documentation] Test ID: 8.3.4.2.2 + ... Test title: GET Subscriptions with attribute-based filter + ... Test objective: The objective is to test the retrieval of active subscriptions list to log management notifications using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Subscriptions with attribute-based filters + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LogmSubscriptions + +GET Subscriptions with Paged Response + [Documentation] Test ID: 8.3.4.2.2 + ... Test title: GET Subscriptions with Paged Response + ... Test objective: The objective is to query information of active subscriptions list to log management notifications to get Paged Response. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get all Subscriptions + Check HTTP Response Status Code Is 200 + Check LINK in Header + +GET Subscriptions - invalid attribute-based filter + [Documentation] Test ID: 8.3.4.2.4 + ... Test title: GET Subscriptions - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Subscriptions with invalid attribute-based filters + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + + +GET Subscriptions - Bad Request Response too Big + [Documentation] Test ID: 8.3.4.2.5 + ... Test title: GET Subscriptions - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get all Subscriptions + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Subscriptions - invalid resource endpoint + [Documentation] Test ID: 8.3.4.2.6 + ... Test title: GET Subscriptions - invalid resource endpoint + ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when using invalid resource endpoint. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get all Subscriptions + Check HTTP Response Status Code Is 404 + + +Create new Subscription + [Documentation] Test ID 8.3.4.2.7 + ... Test title: Create new Subscription + ... Test objective: The objective is to test the creation of a new subscription to log management notification and perform a JSON schema and content validation of the returned subscription data structure + ... Pre-conditions: + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The subscription is successfully set and it matches the issued subscription + Send Post Request for Subscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is LogmSubscription + Check HTTP Response Body LogmSubscription Attributes Values Match the Issued Subscription + Check Postcondition Subscription Is Set + + +Create request for duplicated Subscription not creating duplicated subscriptions + [Tags] no-duplicated-subs + [Documentation] Test ID 8.3.4.2.8 + ... Test title: Create request for duplicated Subscription not creating duplicated subscriptions + ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO does not support the creation of duplicated subscriptions + ... Post-Conditions: The existing Subscription returned is available in the NFV-MANO + Send Post Request for Duplicated Subscription + Check HTTP Response Status Code Is 303 + Check HTTP Response Body Is Empty + Check HTTP Response Header Contains Location + Check Postcondition Subscription Resource Returned in Location Header Is Available + +Create request for duplicated Subscription creating duplicated subscriptions + [Tags] duplicated-subs + [Documentation] Test ID 8.3.4.2.9 + ... Test title: Create request for duplicated Subscription creating duplicated subscriptions + ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO supports the creation of duplicated subscriptions + ... Post-Conditions: The duplicated subscription is successfully set and it matches the issued subscription + Send Post Request for Duplicated Subscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PmSubscription + Check HTTP Response Body LogmSubscription Attributes Values Match the Issued Subscription + Check Postcondition Subscription Is Set + +PUT Subscriptions - Method not implemented + [Documentation] Test ID 8.3.4.2.10 + ... Test title: PUT Subscriptions - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.7.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put Request for Subscriptions + Check HTTP Response Status Code Is 405 + +PATCH Subscriptions - Method not implemented + [Documentation] Test ID 8.3.4.2.11 + ... Test title: PATCH Subscriptions - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.7.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Patch Request for Subscriptions + Check HTTP Response Status Code Is 405 + +DELETE Subscriptions - Method not implemented + [Documentation] Test ID 8.3.4.2.12 + ... Test title: DELETE Subscriptions - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The subscriptions are not deleted by the failed operation + Send Delete Request for Subscriptions + Check HTTP Response Status Code Is 405 + Check Postcondition Subscriptions Exists diff --git a/SOL009/NFVMANOLogManagement-API/environment/variables.txt b/SOL009/NFVMANOLogManagement-API/environment/variables.txt index f60078d7d..dd59dda33 100644 --- a/SOL009/NFVMANOLogManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOLogManagement-API/environment/variables.txt @@ -30,6 +30,8 @@ ${origResponse} {} ${callback_port} 9091 ${callback_uri} http://172.22.1.7:${callback_port} ${callback_endpoint} /nfvmanologm/subscriptions +${filter_ok} callbackUri=${callbackUri} +${filter_ko} erroneousFilter=erroneous ${callback_endpoint_error} /subs_404 ${sleep_interval} 20s diff --git a/SOL009/NFVMANOLogManagement-API/jsons/subscriptions.json b/SOL009/NFVMANOLogManagement-API/jsons/subscriptions.json new file mode 100644 index 000000000..3fcc4e59b --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/jsons/subscriptions.json @@ -0,0 +1,6 @@ +{ + "callbackUri": "http://127.0.0.1/subscribe", + "filter": { + "notificationTypes": ["ThresholdCrossedNotification"] + } +} \ No newline at end of file -- GitLab From 69438f067dc7199067272fedec1db5f9b61eb87b Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 7 Aug 2020 10:57:49 +0500 Subject: [PATCH 457/580] fix TIDs --- .../Subscriptions.robot | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot index be4af31d6..2e92a3ab6 100644 --- a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot @@ -12,7 +12,7 @@ Suite Teardown Terminate All Processes kill=true *** Test Cases *** GET all Subscriptions - [Documentation] Test ID: 8.3.4.2.1 + [Documentation] Test ID: 8.3.4.5.1 ... Test title: GET all Subscriptions ... Test objective: The objective is to test the retrieval list of active subscriptions list to log management notifications and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -25,7 +25,7 @@ GET all Subscriptions Check HTTP Response Body Json Schema Is LogmSubscriptions GET Subscriptions with attribute-based filter - [Documentation] Test ID: 8.3.4.2.2 + [Documentation] Test ID: 8.3.4.5.2 ... Test title: GET Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of active subscriptions list to log management notifications using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -38,7 +38,7 @@ GET Subscriptions with attribute-based filter Check HTTP Response Body Json Schema Is LogmSubscriptions GET Subscriptions with Paged Response - [Documentation] Test ID: 8.3.4.2.2 + [Documentation] Test ID: 8.3.4.5.3 ... Test title: GET Subscriptions with Paged Response ... Test objective: The objective is to query information of active subscriptions list to log management notifications to get Paged Response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -51,7 +51,7 @@ GET Subscriptions with Paged Response Check LINK in Header GET Subscriptions - invalid attribute-based filter - [Documentation] Test ID: 8.3.4.2.4 + [Documentation] Test ID: 8.3.4.5.4 ... Test title: GET Subscriptions - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -65,7 +65,7 @@ GET Subscriptions - invalid attribute-based filter GET Subscriptions - Bad Request Response too Big - [Documentation] Test ID: 8.3.4.2.5 + [Documentation] Test ID: 8.3.4.5.5 ... Test title: GET Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -78,7 +78,7 @@ GET Subscriptions - Bad Request Response too Big Check HTTP Response Body Json Schema Is ProblemDetails GET Subscriptions - invalid resource endpoint - [Documentation] Test ID: 8.3.4.2.6 + [Documentation] Test ID: 8.3.4.5.6 ... Test title: GET Subscriptions - invalid resource endpoint ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when using invalid resource endpoint. ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -91,7 +91,7 @@ GET Subscriptions - invalid resource endpoint Create new Subscription - [Documentation] Test ID 8.3.4.2.7 + [Documentation] Test ID 8.3.4.5.7 ... Test title: Create new Subscription ... Test objective: The objective is to test the creation of a new subscription to log management notification and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: @@ -108,7 +108,7 @@ Create new Subscription Create request for duplicated Subscription not creating duplicated subscriptions [Tags] no-duplicated-subs - [Documentation] Test ID 8.3.4.2.8 + [Documentation] Test ID 8.3.4.5.8 ... Test title: Create request for duplicated Subscription not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -124,7 +124,7 @@ Create request for duplicated Subscription not creating duplicated subscriptions Create request for duplicated Subscription creating duplicated subscriptions [Tags] duplicated-subs - [Documentation] Test ID 8.3.4.2.9 + [Documentation] Test ID 8.3.4.5.9 ... Test title: Create request for duplicated Subscription creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -139,7 +139,7 @@ Create request for duplicated Subscription creating duplicated subscriptions Check Postcondition Subscription Is Set PUT Subscriptions - Method not implemented - [Documentation] Test ID 8.3.4.2.10 + [Documentation] Test ID 8.3.4.5.10 ... Test title: PUT Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -151,7 +151,7 @@ PUT Subscriptions - Method not implemented Check HTTP Response Status Code Is 405 PATCH Subscriptions - Method not implemented - [Documentation] Test ID 8.3.4.2.11 + [Documentation] Test ID 8.3.4.5.11 ... Test title: PATCH Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -163,7 +163,7 @@ PATCH Subscriptions - Method not implemented Check HTTP Response Status Code Is 405 DELETE Subscriptions - Method not implemented - [Documentation] Test ID 8.3.4.2.12 + [Documentation] Test ID 8.3.4.5.12 ... Test title: DELETE Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -173,4 +173,4 @@ DELETE Subscriptions - Method not implemented ... Post-Conditions: The subscriptions are not deleted by the failed operation Send Delete Request for Subscriptions Check HTTP Response Status Code Is 405 - Check Postcondition Subscriptions Exists + Check Postcondition Subscriptions Exists \ No newline at end of file -- GitLab From 5c2e123bec3f333c17256db575ee0405762db1f9 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 7 Aug 2020 11:12:38 +0500 Subject: [PATCH 458/580] LogmSchema Added --- .../schemas/LogmSubscription.schema.json | 153 +++++++++++++++++ .../schemas/LogmSubscriptions.schema.json | 155 ++++++++++++++++++ 2 files changed, 308 insertions(+) create mode 100644 SOL009/NFVMANOLogManagement-API/schemas/LogmSubscription.schema.json create mode 100644 SOL009/NFVMANOLogManagement-API/schemas/LogmSubscriptions.schema.json diff --git a/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscription.schema.json b/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscription.schema.json new file mode 100644 index 000000000..607b69aea --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscription.schema.json @@ -0,0 +1,153 @@ +{ + "description": "This type represents a subscription. It shall comply with the provisions defined in table 8.6.2.3-1.", + "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 log management events. It shall comply with the provisions defined in table 8.6.3.7-1. 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).", + "type": "object", + "properties": { + "objectInstanceFilter": { + "description": "This type represents subscription filter criteria to match NFV-MANO functional entities and their associated managed objects. It shall comply with the provisions defined in Table 4.3.2.2-1.", + "type": "object", + "anyOf": [ + { + "oneOf": [ + { + "required": [ + "manoServiceIds" + ] + }, + { + "required": [ + "manoServiceNames" + ] + } + ] + }, + { + "oneOf": [ + { + "required": [ + "manoServiceInterfaceIds" + ] + }, + { + "required": [ + "manoServiceInterfaceNames" + ] + } + ] + }, + { + "oneOf": [ + { + "required": [ + "consumedManoInterfaceIds" + ] + }, + { + "required": [ + "consumedManoInterfaceNames" + ] + } + ] + } + ], + "properties": { + "manoEntityId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "manoServiceIds": { + "description": "If present, match NFV-MANO services with an instance identifier listed in this attribute.", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceNames": { + "description": "If present, match NFV-MANO services with an NFV-MANO service name listed in this attribute.", + "type": "array", + "items": { + "type": "string" + } + }, + "manoServiceInterfaceIds": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance identifier listed in this attribute.", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceInterfaceNames": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance Name listed in this attribute.", + "type": "array", + "items": { + "type": "string" + } + }, + "consumedManoInterfaceIds": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance identifier listed in this attribute.", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "consumedManoInterfaceNames": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance Name listed in this attribute.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "notificationTypes": { + "description": "Match particular notification types. Permitted values: - LogReportAvailableNotification", + "type": "string", + "enum": [ + "LogReportAvailableNotification" + ] + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscriptions.schema.json b/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscriptions.schema.json new file mode 100644 index 000000000..75c0daedd --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscriptions.schema.json @@ -0,0 +1,155 @@ +{ "type": "array", + "items": { + "description": "This type represents a subscription. It shall comply with the provisions defined in table 8.6.2.3-1.", + "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 log management events. It shall comply with the provisions defined in table 8.6.3.7-1. 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).", + "type": "object", + "properties": { + "objectInstanceFilter": { + "description": "This type represents subscription filter criteria to match NFV-MANO functional entities and their associated managed objects. It shall comply with the provisions defined in Table 4.3.2.2-1.", + "type": "object", + "anyOf": [ + { + "oneOf": [ + { + "required": [ + "manoServiceIds" + ] + }, + { + "required": [ + "manoServiceNames" + ] + } + ] + }, + { + "oneOf": [ + { + "required": [ + "manoServiceInterfaceIds" + ] + }, + { + "required": [ + "manoServiceInterfaceNames" + ] + } + ] + }, + { + "oneOf": [ + { + "required": [ + "consumedManoInterfaceIds" + ] + }, + { + "required": [ + "consumedManoInterfaceNames" + ] + } + ] + } + ], + "properties": { + "manoEntityId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "manoServiceIds": { + "description": "If present, match NFV-MANO services with an instance identifier listed in this attribute.", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceNames": { + "description": "If present, match NFV-MANO services with an NFV-MANO service name listed in this attribute.", + "type": "array", + "items": { + "type": "string" + } + }, + "manoServiceInterfaceIds": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance identifier listed in this attribute.", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceInterfaceNames": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance Name listed in this attribute.", + "type": "array", + "items": { + "type": "string" + } + }, + "consumedManoInterfaceIds": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance identifier listed in this attribute.", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "consumedManoInterfaceNames": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance Name listed in this attribute.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "notificationTypes": { + "description": "Match particular notification types. Permitted values: - LogReportAvailableNotification", + "type": "string", + "enum": [ + "LogReportAvailableNotification" + ] + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } +} \ No newline at end of file -- GitLab From 09a0485034a6fffea28a779174563e01bb7059b6 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 7 Aug 2020 14:27:40 +0500 Subject: [PATCH 459/580] Added Test Cases for IndividualSubscription.robot --- .../IndividualSubscription.robot | 98 +++++++++++++++++++ .../NFVMANOLogManagementKeywords.robot | 81 ++++++++++++++- .../environment/variables.txt | 3 + 3 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot diff --git a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot new file mode 100644 index 000000000..22585149a --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot @@ -0,0 +1,98 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Resource NFVMANOLogManagementKeywords.robot + +*** Test Cases *** +GET Individual Subscription + [Documentation] Test ID: 8.3.4.6.1 + ... Test title: GET Individual Subscription + ... Test objective: The objective is to test the retrieval of individual subscription and perform a JSON schema and content validation of the returned subscription data structure + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Subscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LogmSubscription + Check HTTP Response Body Subscription Identifier matches the requested Subscription + +GET Individual Subscription - invalid resource identifier + [Documentation] Test ID: 8.3.4.6.2 + ... Test title: GET Individual Subscription - invalid resource identifier + ... Test objective: The objective is to test that the retrieval of an individual subscription fails when using an invalid resource identifier + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET individual Subscription with invalid resource identifier + Check HTTP Response Status Code Is 404 + +DELETE Individual Subscription + [Documentation] Test ID: 8.3.4.6.3 + ... Test title: DELETE Individual Subscription + ... Test objective: The objective is to test the deletion of an individual subscription + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The is not available anymore in the NFV-MANO + Send Delete request for individual Subscription + Check HTTP Response Status Code Is 204 + Check Postcondition Subscription is Deleted + +DELETE Individual Subscription - invalid resource identifier + [Documentation] Test ID: 8.3.4.6.4 + ... Test title: DELETE Individual Subscription - invalid resource identifier + ... Test objective: The objective is to test that the deletion of an individual subscription fails when using an invalid resource identifier + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for individual Subscription with invalid resource identifier + Check HTTP Response Status Code Is 404 + +POST Individual Subscription - Method not implemented + [Documentation] Test ID: 8.3.4.6.5 + ... Test title: POST Individual Subscription - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new Subscription + ... Pre-conditions: + ... Reference: clause 8.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The VNF Performance Subscription is not created on the NFV-MANO + Send Post request for individual Subscription + Check HTTP Response Status Code Is 405 + Check Postcondition Subscription is not Created + +PUT Individual Subscription - Method not implemented + [Documentation] Test ID: 8.3.4.6.6 + ... Test title: PUT Individual Subscription - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an existing subscription + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.8.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The subscription is not modified by the operation + Send Put request for individual Subscription + Check HTTP Response Status Code Is 405 + Check Postcondition Subscription is Unmodified (Implicit) + +PATCH Individual Subscription - Method not implemented + [Documentation] Test ID: 8.3.4.6.7 + ... Test title: PATCH Individual Subscription - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing subscription + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 8.5.8.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The subscription is not modified by the operation + Send Patch request for individual Threshold + Check HTTP Response Status Code Is 405 + Check Postcondition Subscription is Unmodified (Implicit) \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index d6efb3ecc..198f96f6e 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -485,4 +485,83 @@ Send Delete Request for Subscriptions Check Postcondition Subscriptions Exists Log Checking that subscriptions exists Get all Subscriptions - Check HTTP Response Status Code Is 200 \ No newline at end of file + Check HTTP Response Status Code Is 200 + +Get Individual Subscription + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check HTTP Response Body Subscription Identifier matches the requested Subscription + Log Trying to check response ID + Should Be Equal As Strings ${response['body']['id']} ${subscriptionId} + Log Subscription identifier as expected + +GET individual Subscription with invalid resource identifier + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for individual Subscription + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition Subscription is Deleted + Log Check Postcondition Subscription is deleted + GET individual Subscription + Check HTTP Response Status Code Is 404 + +Send Delete request for individual Subscription with invalid resource identifier + Log Trying to delete a subscription in the VNFM with invalid id + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Send Post request for individual Subscription + 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 Subscription + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Send Patch request for individual Threshold + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Check Postcondition Subscription is Unmodified (Implicit) + Log Check postconidtion subscription not modified + GET individual Subscription + Log Check Response matches original Subscription + ${subscription}= evaluate json.loads('''${response['body']}''') json + Should Be Equal As Strings ${origResponse['body']['id']} ${subscription.id} + Should Be Equal As Strings ${origResponse['body']['callbackUri']} ${subscription.callbackUri} + +Check Postcondition 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} + ${output}= Output response + Set Suite Variable @{response} ${output} + Check HTTP Response Status Code Is 404 \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/environment/variables.txt b/SOL009/NFVMANOLogManagement-API/environment/variables.txt index dd59dda33..27017b956 100644 --- a/SOL009/NFVMANOLogManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOLogManagement-API/environment/variables.txt @@ -53,3 +53,6 @@ ${SYNC_MODE} 1 ${retry} 2 min ${polling} 10 sec +${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa +${erroneousSubscriptionId} erroneousSubscriptionId +${newSubscriptionId} newSubsciptionId \ No newline at end of file -- GitLab From 8e6d2e877fd744604209f720c7b1d3adab71b362 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 10 Aug 2020 09:36:57 +0500 Subject: [PATCH 460/580] Added Test Cases for NotificationEndpoint.robot --- SOL009/NFVMANOLogManagement-API/environment/variables.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/SOL009/NFVMANOLogManagement-API/environment/variables.txt b/SOL009/NFVMANOLogManagement-API/environment/variables.txt index 27017b956..5bdb72512 100644 --- a/SOL009/NFVMANOLogManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOLogManagement-API/environment/variables.txt @@ -32,12 +32,16 @@ ${callback_uri} http://172.22.1.7:${callback_port} ${callback_endpoint} /nfvmanologm/subscriptions ${filter_ok} callbackUri=${callbackUri} ${filter_ko} erroneousFilter=erroneous +${callback_endpoint_fwd} /endpoint/check ${callback_endpoint_error} /subs_404 ${sleep_interval} 20s ${total_polling_time} 2 min ${polling_interval} 10 sec +${notification_request} [] +${notification_response} [] + ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar ${alarm_filter} id -- GitLab From ea456d0e73ff30b2711febf28f73a6d4f5a495ab Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 10 Aug 2020 09:40:27 +0500 Subject: [PATCH 461/580] Added Schema and file for NotificationEndpoint.robot --- .../NotificationEndpoint.robot | 73 ++++++++++ ...LogReportAvailableNotification.schema.json | 126 ++++++++++++++++++ 2 files changed, 199 insertions(+) create mode 100644 SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot create mode 100644 SOL009/NFVMANOLogManagement-API/schemas/LogReportAvailableNotification.schema.json diff --git a/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot new file mode 100644 index 000000000..8ebf99df1 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot @@ -0,0 +1,73 @@ +*** Setting *** +Resource environment/variables.txt +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true +Library MockServerLibrary +Library Process +Library OperatingSystem +Library BuiltIn +Library Collections +Library String + + +*** Test Cases *** +Log Report Avaliable Notification + [Documentation] Test ID: 8.3.4.7.1 + ... Test title: Log Report Avaliable Notification + ... Test objective: The objective is to test the dispatch of Log Report Avaliable Notification when new log report is available in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: + ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Trigger the availability of Log Report (external action) + Check Log Report Available Notification Http POST Request Body Json Schema Is LogReportAvailableNotification + Check Log Report Available Notification Http POST Request Body notificationType attribute Is LogReportAvailableNotification + + +*** Keywords *** +Trigger the availability of Log Report (external action) + #do nothing + Log do nothing + + +Check Log Report Available Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + +Check Log Report Available Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification Log Report Available Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + +Check Threshold Crossed Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + + +Configure Notification Log Report Available Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + + +Configure Notification Forward + [Arguments] ${schema} ${endpoint} ${endpoint_fwd} + Log Creating mock Http POST forward to handle ${schema} + &{notification_tmp}= Create Mock Request Matcher POST ${endpoint} body_type="JSON_SCHEMA" body=${schema} + &{notification_fwd}= Create Mock Http Forward ${endpoint_fwd} + Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} + +Create Sessions + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/schemas/LogReportAvailableNotification.schema.json b/SOL009/NFVMANOLogManagement-API/schemas/LogReportAvailableNotification.schema.json new file mode 100644 index 000000000..e1d684399 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/schemas/LogReportAvailableNotification.schema.json @@ -0,0 +1,126 @@ +{ + "description": "This notification informs the receiver that the log report of the NFV-MANO functional entity is available. It shall comply with the provisions defined in table 8.6.2.4-1. The notification shall be triggered by the NFV-MANO functional entity when log information has been collected by the logging job and the log report is available.", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "objectInstanceId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"LogReportAvailableNotification\" for this notification type.", + "type": "string" + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "objectInstanceId": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + }, + "_links": { + "description": "Links to resources related to this notification.", + "type": "object", + "required": [ + "subscription", + "logReports" + ], + "properties": { + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objectInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "LoggingJob": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "logReports": { + "description": "Link from which the available log report can be obtained. Due to the relationship of the logging job compilation and the logging information availability reporting, more than one logReport notification link can be provided.", + "type": "array", + "items": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } + } \ No newline at end of file -- GitLab From c812fa60a6140700043a81704b65f2a9e3cd3286 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 10 Aug 2020 09:42:47 +0500 Subject: [PATCH 462/580] Added API for NFV-MANO Log Management --- .../SOL009-NFVMANOLogManagement-API.yaml | 25442 ++++++++++++++++ 1 file changed, 25442 insertions(+) create mode 100644 SOL009/NFVMANOLogManagement-API/SOL009-NFVMANOLogManagement-API.yaml diff --git a/SOL009/NFVMANOLogManagement-API/SOL009-NFVMANOLogManagement-API.yaml b/SOL009/NFVMANOLogManagement-API/SOL009-NFVMANOLogManagement-API.yaml new file mode 100644 index 000000000..481efd043 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/SOL009-NFVMANOLogManagement-API.yaml @@ -0,0 +1,25442 @@ +openapi: 3.0.2 +info: + version: '1.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1' + title: SOL009 - NFV-MANO Log Management interface + description: > + SOL009 - NFV-MANO Log Management interface + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification + it refers to. In case of discrepancies the published ETSI Group Specification takes precedence. + + Please report bugs to + https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis&list_id=61&product=NFV&resolution= + license: + name: ETSI Forge copyright notice + url: 'https://forge.etsi.org/etsi-forge-copyright-notice.txt' +externalDocs: + description: ETSI GS NFV-SOL 009 V3.3.1 + url: >- + https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/009/03.03.01_60/gs_NFV-SOL009v030301p.pdf +security: + - OauthSecurity: + - all +servers: + - url: 'http://127.0.0.1/nfvmanologm/v1' + - url: 'https://127.0.0.1/nfvmanologm/v1' +paths: + /api_versions: + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: false + schema: + type: string + - name: Authorization + description: 'The authorization token for the request. Reference: IETF RFC 7235' + in: header + required: false + schema: + type: string + get: + summary: Retrieve API version information + description: > + The GET method reads API version information. This method shall follow + the provisions specified in table 4.6.3.3.3.2-1 for request and response + data structures, and response codes. URI query parameters are not + supported. + responses: + '200': + description: > + 200 OK + + API version information was read successfully. The response body + shall contain 4.4 API version information, as defined in clause + 4.4.1.13. + content: + application/json: + schema: + description: | + This type represents API version information. + type: object + required: + - uriPrefix + - apiVersions + properties: + uriPrefix: + description: > + Specifies the URI prefix for the API, in the following + form {apiRoot}/{apiName}/{apiMajorVersion}/. + type: string + apiVersions: + description: > + Version(s) supported for the API signaled by the uriPrefix + attribute. + type: array + items: + type: object + required: + - version + properties: + version: + description: > + Identifies a supported version. The value of the + version attribute shall be a version identifier as + specified in clause 9.1 (SOL013). + type: string + isDeprecated: + description: > + If such information is available, this attribute + indicates whether use of the version signaled by the + version attribute is deprecated (true) or not + (false). + + A deprecated version is still supported by the API + producer but is recommended not to be used any + longer. When a version is no longer supported, it + does not appear in the response body. + type: boolean + retirementDate: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: The used API version. + schema: + type: string + maximum: 1 + minimum: 1 + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '413': + description: > + 413 PAYLOAD TOO LARGE + + If the payload body of a request is larger than the amount of data + the API producer is willing or able to process, it shall respond + with this response code, following the provisions in IETF RFC 7231 + for the use of the "Retry-After" HTTP header and for closing the + connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '414': + description: > + 414 URI TOO LONG + + If the request URI of a request is longer than the API producer is + willing or able to process, it shall respond with this response + code. This condition can e.g. be caused by passing long queries in + the request URI of a GET request. The "ProblemDetails" structure may + be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '416': + description: | + 416 Range Not Satisfiable + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '429': + description: > + 429 TOO MANY REQUESTS + + If the API consumer has sent too many requests in a defined period + of time and the API producer is able to detect that condition ("rate + limiting"), the API producer shall respond with this response code, + following the provisions in IETF RFC 6585 [17] for the use of the + "Retry-After" HTTP header. The "ProblemDetails" structure shall be + provided and shall include in the "detail" attribute more + information about the source of the problem. + + The period of time and allowed number of requests are configured + within the API producer by means outside the scope of the present + document. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + /log_jobs: + description: >- + This resource represents logging jobs. The API consumer can use this + resource to create and query logging jobs. + post: + description: >- + The POST method creates a logging job. This method shall follow the + provisions specified in the tables 8.5.3.3.1-1 and 8.5.3.3.1-2 for URI + query parameters, request and response data structures, and response + codes. As the result of successfully executing this method, a new + "Individual logging job" resource as defined in clause 9.5.4 shall have + been created. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Content-Type + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + requestBody: + description: >- + This type represents a request to create a logging job. It shall + comply with the provisions defined in table 8.6.2.5-1. + content: + application/json: + schema: + description: Information on application context created by the MEC system + type: object + required: + - objectInstanceIds + - jobCriteria + - jobConfig + properties: + objectInstanceIds: + description: >- + Identifiers of the object instance for which logging + information is requested to be collected. This attribute + shall contain the identifier of the instance of the object + to be logged according to their type. If more than one + identifier is provided, values shall all refer to object + instances of the same type, for which the same criteria is + then applicable. + type: array + minItems: 1 + items: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + jobCriteria: + description: >- + This type represents collection criteria for logging jobs. + It shall comply with the provisions defined in table + 8.6.3.2-1. + type: object + required: + - loggingType + properties: + loggingType: + description: >- + Type of logging. This defines the types of logged + information to collect. + + Permitted values: - MESSAGES: logged NFV-MANO service + interface messages. - SERVICES: logged messages about + processes pertaining to NFV-MANO services. - SYSTEM: + logged messages about the NFV-MANO functional entity’s + system enabled by the provider. + type: string + enum: + - MESSAGES + - SERVICES + - SYSTEM + messagesLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged messages on NFV-MANO service interfaces. + It shall comply with the provisions defined in table + 8.6.3.3-1. + type: object + required: + - direction + properties: + direction: + description: >- + The direction of the interface messages to match. + + Permitted values: - IN: input messages into the + interface. - OUT: output messages from the + interface. - ALL: both input and output messages + into/from the interface. + type: string + enum: + - IN + - OUT + - ALL + matchingPatterns: + description: >- + Patterns to be matched in the interface message. If + provided, only messages that match all the values + provided in the sub-attributes shall be logged. An + API consumer can provide more than one + "matchingPattern" if combinations of patterns are to + be considered to match diverse sets of interface + messages. + type: array + items: + type: object + anyOf: + - required: + - srcIpAddress + - required: + - dstIpAddress + - required: + - requestMethod + - required: + - requestUriPattern + - required: + - responseCodes + properties: + srcIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In + case of an IPV4 address, string that consists + of four decimal integers separated by dots, + each integer ranging from 0 to 255. In case of + an IPV6 address, string that consists of + groups of zero to four hexadecimal digits, + separated by colons. + type: string + format: IP + requestMethod: + description: >- + HTTP request method to be matched. To match, + the HTTP request method of the message shall + be the same as the value of this attribute. + Valid values are specified in IETF RFC 7231. + The API producer shall support this attribute. + type: string + requestUriPattern: + description: >- + Substring to be matched in the request URI. To + match, the request URI shall include the value + of + this attribute as a substring. This is typically used to match messages which associate to RESTful + resources, or to a specific API (e.g., by using the "apiName" of the API). The API producer shall + support this attribute. + type: string + dstIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In + case of an IPV4 address, string that consists + of four decimal integers separated by dots, + each integer ranging from 0 to 255. In case of + an IPV6 address, string that consists of + groups of zero to four hexadecimal digits, + separated by colons. + type: string + format: IP + responseCodes: + description: >- + HTTP response codes or patterns to match. A + list of all valid HTTP response codes and + their specification documents can be obtained + from the HTTP status code registry. In + addition, if supported, the following patterns + may be used (case-insensitive): - "1XX": for + matching any kind of informational response. - + "2XX": for matching any kind of success + response. - "3XX": for matching any kind + redirection response. - "4XX": for matching + any kind of client error response. - "5XX": + for matching any kind of server error + response. + + The API producer shall support this attribute + type: array + items: + type: string + headerField: + description: >- + Name of the header field to be matched. The + header field name shall be one of the + supported fields in a request message as + defined in clause 4.2.2 of ETSI GS NFV-SOL 013 + or in a response message as defined in clause + 4.2.3 of ETSI GS NFV-SOL 013, in accordance + with the "direction" criteria input. The API + producer may support this attribute. + type: string + headerValue: + description: >- + Value in the header to be matched. To match, + the value in the header field indicated by + "headerField" shall be the same as in this + attribute. Shall be provided if a + "headerField" is provided. The API producer + may support this attribute. + type: string + bodyValues: + description: >- + A list of strings to be matched in the body + part of the interface message (e.g., the body + of an HTTP message). If provided, only + messages with text in the body part containing + all the values from the list shall match the + filter. In addition to a matching filter for + the body of the message, a corresponding + "headerField" filter shall also be provided, + with "headerField" set to "Content-Type", to + restrict matching to appropriate textual + payloads such as "application/json" or + "text/plain". The API producer may support + this attribute + type: string + servicesLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged messages about processes pertaining to + NFV-MANO services. It shall comply with the provisions + defined in table 8.6.3.4-1. + type: object + properties: + logGarbageCollection: + description: >- + Indicates to collect logged information about + garbage collection processes associated to NFV-MANO + services. + type: boolean + systemLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged system events of the NFV-MANO functional + entity. It shall comply with the provisions defined in + table 8.6.3.5-1. + type: object + required: + - systemLogs + - severityLevel + properties: + systemLogs: + description: > + This type represents a list of key-value pairs. The + order of the pairs in the list is not significant. + In JSON, a set of keyvalue pairs is represented as + an object. It shall comply with the provisions + defined in clause 4 of IETF RFC 8259. In the + following example, a list of key-value pairs with + four keys ("aString", "aNumber", "anArray" and + "anObject") is provided to illustrate that the + values associated with different keys can be of + different type. + type: object + severityLevelScheme: + description: >- + Identifies a severity level scheme. The default + value is "rfc5424", which represents the set of + values specified in the clause 6.2.1, table 2 of + IETF RFC 5424. Other values may be used to signal + different schemes. + type: string + severityLevel: + description: >- + The severity level, which determines the severity of + the system messages to collect. The NFV-MANO + functional entity shall collect system log messages, + as indicated by the "systemLogs" attribute, with + severity levels lower (i.e., more severe) or equal + to the value provided by this present attribute. + type: number + jobConfig: + description: >- + This type represents configuration data for a logging job. + It shall comply with the provisions defined in table + 8.6.3.6-1. NOTE: The present document version does not + specify the support for "log compilation and reporting based + on events" as specified in clause 6.6.2.2 of ETSI GS NFV-IFA + 031. + type: object + required: + - reportingCondition + - securityConf + properties: + startTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + endTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + reportingCondition: + description: >- + Specifies the condition under which the producer will + report to the consumer about the compiled log data. + required: + - reportingType + properties: + reportingType: + description: >- + Specifies the type of reporting condition. Permitted + values: - REPORTING_ON_COMPILATION: the producer + shall notify the consumer once the compilation of + the + collected logging data into a file is completed and a new log report is available. + - NO_REPORTING: no reporting is requested (the + consumer can query the logging jobs to know about + the + availability of new log reports). + type: string + enum: + - REPORTING_ON_COMPILATION + - NO_REPORTING + minimumReportingPeriod: + description: >- + Specifies the minimum periodicity at which the + producer will report to the consumer about the + collected log information, in seconds. + type: integer + format: int32 + compileBySizeValue: + description: >- + An indicative size threshold for compiling the collected + log data, in bytes. It is used when the compilation is + based on the size of the collected log data. If not + present, a default value as specified with the + "defaultLogCompileBySizeValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + compileByTimerValue: + description: >- + The periodicity threshold for compiling the filtered + log, in seconds. It is used when the compilation is + based on a timer (e.g., every 24 hours). If not present, + a default value as specified with the + "defaultLogCompileByTimerValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + securityConf: + description: >- + Configuration about the security aspects of the logging + job. + type: object + properties: + logFileEncryption: + description: >- + Information about the encryption of the compiled log + files. Shall be present if the log file is requested + to be encrypted. + required: + - encryptionCertificate + - cipherAlgorithm + type: object + properties: + encryptionCertificate: + description: >- + X.509 certificate with the public key to use for + the encryption of the compiled log file. + type: string + cipherAlgorithm: + description: >- + Cryptographic algorithm to be used for the + encryption of the compiled log file. More than + one algorithm can be provided from higher (lower + array index) to lower (higher array index) + precedence. Valid values are: "AES-CBC-128", + "AES-GCM-128", "AES-CBC-256", and "AES-GCM-256", + as specified in clause 6.5 of ETSI GS NFV-SEC + 012 + type: array + items: + type: string + minItems: 1 + encryptAndSignOrder: + description: >- + Indication about the order in signing and + encrypting the compiled log file. Valid values + are: "encryptFirst", to apply the order "first + encrypt, then sign", and "signFirst" for the + order "first sign, then encrypt". Default value + is "encryptFirst". + type: string + logTransferSecurity: + description: >- + Information about the security measures for + retrieving/accessing the compiled log files. + type: object + properties: + publicKey: + description: >- + The public key of the API consumer used for the + client authentication with the file server. + Shall be provided if required by the type of + transfer protocol. May be omitted if the key has + been provided to the API producer by other + means, or if it has already been provided in + some previous CreateLoggingJobRequest issued by + the same API consumer, whose public key has not + changed. + type: string + required: true + responses: + '201': + description: >- + The response body contains the Application Context as it was created + by the MEC system + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: >- + This type represents a logging job. It shall comply with the + provisions defined in table 8.6.2.6-1. + type: object + required: + - id + - objectInstanceIds + - jobCriteria + - jobConfig + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectInstanceIds: + description: >- + Identifiers of the object instance for which logging + information is collected. This attribute shall contain the + identifier of the instance of the object that is logged + according to their type. + type: array + items: + description: > + This type represents the identifier to reference a + managed object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + required: + - type + - objectId + jobCriteria: + description: >- + This type represents collection criteria for logging jobs. + It shall comply with the provisions defined in table + 8.6.3.2-1. + type: object + required: + - loggingType + properties: + loggingType: + description: >- + Type of logging. This defines the types of logged + information to collect. + + Permitted values: - MESSAGES: logged NFV-MANO service + interface messages. - SERVICES: logged messages about + processes pertaining to NFV-MANO services. - SYSTEM: + logged messages about the NFV-MANO functional entity’s + system enabled by the provider. + type: string + enum: + - MESSAGES + - SERVICES + - SYSTEM + messagesLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged messages on NFV-MANO service + interfaces. It shall comply with the provisions + defined in table 8.6.3.3-1. + type: object + required: + - direction + properties: + direction: + description: >- + The direction of the interface messages to match. + + Permitted values: - IN: input messages into the + interface. - OUT: output messages from the + interface. - ALL: both input and output messages + into/from the interface. + type: string + enum: + - IN + - OUT + - ALL + matchingPatterns: + description: >- + Patterns to be matched in the interface message. + If provided, only messages that match all the + values provided in the sub-attributes shall be + logged. An API consumer can provide more than one + "matchingPattern" if combinations of patterns are + to be considered to match diverse sets of + interface messages. + type: array + items: + type: object + anyOf: + - required: + - srcIpAddress + - required: + - dstIpAddress + - required: + - requestMethod + - required: + - requestUriPattern + - required: + - responseCodes + properties: + srcIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In + case of an IPV4 address, string that + consists of four decimal integers separated + by dots, each integer ranging from 0 to 255. + In case of an IPV6 address, string that + consists of groups of zero to four + hexadecimal digits, separated by colons. + type: string + format: IP + requestMethod: + description: >- + HTTP request method to be matched. To match, + the HTTP request method of the message shall + be the same as the value of this attribute. + Valid values are specified in IETF RFC 7231. + The API producer shall support this + attribute. + type: string + requestUriPattern: + description: >- + Substring to be matched in the request URI. + To match, the request URI shall include the + value of + this attribute as a substring. This is typically used to match messages which associate to RESTful + resources, or to a specific API (e.g., by using the "apiName" of the API). The API producer shall + support this attribute. + type: string + dstIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In + case of an IPV4 address, string that + consists of four decimal integers separated + by dots, each integer ranging from 0 to 255. + In case of an IPV6 address, string that + consists of groups of zero to four + hexadecimal digits, separated by colons. + type: string + format: IP + responseCodes: + description: >- + HTTP response codes or patterns to match. A + list of all valid HTTP response codes and + their specification documents can be + obtained from the HTTP status code registry. + In addition, if supported, the following + patterns may be used (case-insensitive): - + "1XX": for matching any kind of + informational response. - "2XX": for + matching any kind of success response. - + "3XX": for matching any kind redirection + response. - "4XX": for matching any kind of + client error response. - "5XX": for matching + any kind of server error response. + + The API producer shall support this + attribute + type: array + items: + type: string + headerField: + description: >- + Name of the header field to be matched. The + header field name shall be one of the + supported fields in a request message as + defined in clause 4.2.2 of ETSI GS NFV-SOL + 013 or in a response message as defined in + clause 4.2.3 of ETSI GS NFV-SOL 013, in + accordance with the "direction" criteria + input. The API producer may support this + attribute. + type: string + headerValue: + description: >- + Value in the header to be matched. To match, + the value in the header field indicated by + "headerField" shall be the same as in this + attribute. Shall be provided if a + "headerField" is provided. The API producer + may support this attribute. + type: string + bodyValues: + description: >- + A list of strings to be matched in the body + part of the interface message (e.g., the + body of an HTTP message). If provided, only + messages with text in the body part + containing all the values from the list + shall match the filter. In addition to a + matching filter for the body of the message, + a corresponding "headerField" filter shall + also be provided, with "headerField" set to + "Content-Type", to restrict matching to + appropriate textual payloads such as + "application/json" or "text/plain". The API + producer may support this attribute + type: string + servicesLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged messages about processes pertaining to + NFV-MANO services. It shall comply with the provisions + defined in table 8.6.3.4-1. + type: object + properties: + logGarbageCollection: + description: >- + Indicates to collect logged information about + garbage collection processes associated to + NFV-MANO services. + type: boolean + systemLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged system events of the NFV-MANO + functional entity. It shall comply with the provisions + defined in table 8.6.3.5-1. + type: object + required: + - systemLogs + - severityLevel + properties: + systemLogs: + description: > + This type represents a list of key-value pairs. + The order of the pairs in the list is not + significant. In JSON, a set of keyvalue pairs is + represented as an object. It shall comply with the + provisions defined in clause 4 of IETF RFC 8259. + In the following example, a list of key-value + pairs with four keys ("aString", "aNumber", + "anArray" and "anObject") is provided to + illustrate that the values associated with + different keys can be of different type. + type: object + severityLevelScheme: + description: >- + Identifies a severity level scheme. The default + value is "rfc5424", which represents the set of + values specified in the clause 6.2.1, table 2 of + IETF RFC 5424. Other values may be used to signal + different schemes. + type: string + severityLevel: + description: >- + The severity level, which determines the severity + of the system messages to collect. The NFV-MANO + functional entity shall collect system log + messages, as indicated by the "systemLogs" + attribute, with severity levels lower (i.e., more + severe) or equal to the value provided by this + present attribute. + type: number + jobConfig: + description: >- + This type represents configuration data for a logging job. + It shall comply with the provisions defined in table + 8.6.3.6-1. NOTE: The present document version does not + specify the support for "log compilation and reporting + based on events" as specified in clause 6.6.2.2 of ETSI GS + NFV-IFA 031. + type: object + required: + - reportingCondition + - securityConf + properties: + startTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + endTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + reportingCondition: + description: >- + Specifies the condition under which the producer will + report to the consumer about the compiled log data. + required: + - reportingType + properties: + reportingType: + description: >- + Specifies the type of reporting condition. + Permitted values: - REPORTING_ON_COMPILATION: the + producer shall notify the consumer once the + compilation of the + collected logging data into a file is completed and a new log report is available. + - NO_REPORTING: no reporting is requested (the + consumer can query the logging jobs to know about + the + availability of new log reports). + type: string + enum: + - REPORTING_ON_COMPILATION + - NO_REPORTING + minimumReportingPeriod: + description: >- + Specifies the minimum periodicity at which the + producer will report to the consumer about the + collected log information, in seconds. + type: integer + format: int32 + compileBySizeValue: + description: >- + An indicative size threshold for compiling the + collected log data, in bytes. It is used when the + compilation is based on the size of the collected log + data. If not present, a default value as specified + with the "defaultLogCompileBySizeValue" configuration + in the "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + compileByTimerValue: + description: >- + The periodicity threshold for compiling the filtered + log, in seconds. It is used when the compilation is + based on a timer (e.g., every 24 hours). If not + present, a default value as specified with the + "defaultLogCompileByTimerValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + securityConf: + description: >- + Configuration about the security aspects of the + logging job. + type: object + properties: + logFileEncryption: + description: >- + Information about the encryption of the compiled + log files. Shall be present if the log file is + requested to be encrypted. + required: + - encryptionCertificate + - cipherAlgorithm + type: object + properties: + encryptionCertificate: + description: >- + X.509 certificate with the public key to use + for the encryption of the compiled log file. + type: string + cipherAlgorithm: + description: >- + Cryptographic algorithm to be used for the + encryption of the compiled log file. More than + one algorithm can be provided from higher + (lower array index) to lower (higher array + index) precedence. Valid values are: + "AES-CBC-128", "AES-GCM-128", "AES-CBC-256", + and "AES-GCM-256", as specified in clause 6.5 + of ETSI GS NFV-SEC 012 + type: array + items: + type: string + minItems: 1 + encryptAndSignOrder: + description: >- + Indication about the order in signing and + encrypting the compiled log file. Valid values + are: "encryptFirst", to apply the order "first + encrypt, then sign", and "signFirst" for the + order "first sign, then encrypt". Default + value is "encryptFirst". + type: string + logTransferSecurity: + description: >- + Information about the security measures for + retrieving/accessing the compiled log files. + type: object + properties: + publicKey: + description: >- + The public key of the API consumer used for + the client authentication with the file + server. Shall be provided if required by the + type of transfer protocol. May be omitted if + the key has been provided to the API producer + by other means, or if it has already been + provided in some previous + CreateLoggingJobRequest issued by the same API + consumer, whose public key has not changed. + type: string + logReports: + description: >- + Information about available log reports created by the + logging job. + type: array + items: + type: object + required: + - logReportId + - logReportLoc + properties: + logReportId: + description: > + An identifier with the intention of being globally + unique. + type: string + logReportLoc: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: >- + Links to resources representing the object instances + that are logged. Shall be present if the logged object + instance information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + get: + description: >- + The API consumer can use this method to retrieve information about + logging jobs. This method shall follow the provisions specified in the + tables 8.5.3.3.2-1 and 8.5.3.3.2-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of ETSI + GS NFV-SOL 013. The NFV-MANO functional entity shall support + receiving this parameter as part of the URI query string. The API + consumer may supply this parameter. All attribute names that appear + in the FmSubscription and in data types referenced from it shall be + supported by the NFV-MANO functional entity in the filter + expression. + in: query + required: false + schema: + type: string + - name: all_fields + description: > + Include all complex attributes in the response. See clause 5.3 of + ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support + this parameter. + in: query + required: false + schema: + type: string + - name: fields + description: > + Complex attributes to be included into the response. See clause 5.3 + of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity + should support this parameter. + in: query + required: false + schema: + type: string + - name: exclude_fields + description: > + Complex attributes to be excluded from the response. See clause 5.3 + of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity + should support this parameter. + in: query + required: false + schema: + type: string + - name: exclude_default + in: query + description: >- + Indicates to exclude the following complex attributes from the + response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The + NFV-MANO functional entity shall support this parameter. + required: false + schema: + type: string + - name: nextpage_opaque_marker + description: > + Marker to obtain the next page of a paged response. Shall be + supported by the NFV-MANO functional entity if the entity supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS + NFV-SOL 013 for this resource. + in: query + required: false + schema: + type: string + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: >- + Shall be returned when information about zero or more logging jobs + has been queried successfully. + + The response body shall contain in an array the representations of + zero or more logging jobs, as defined in clause 8.6.2.6. + + If the "filter" URI parameter or one of the "all_fields", "fields" + (if supported), "exclude_fields" (if supported) or "exclude_default" + URI parameters was supplied in the request, the data in the response + body shall have been transformed according to the rules specified in + clauses 5.2.2 and 5.3.2 of ETSI GS NFV-SOL 013, respectively. + + If the NFV-MANO functional entity supports alternative 2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this + resource, inclusion of the Link HTTP header in this response shall + follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + type: array + items: + description: >- + This type represents a logging job. It shall comply with the + provisions defined in table 8.6.2.6-1. + type: object + required: + - id + - objectInstanceIds + - jobCriteria + - jobConfig + - _links + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + objectInstanceIds: + description: >- + Identifiers of the object instance for which logging + information is collected. This attribute shall contain + the identifier of the instance of the object that is + logged according to their type. + type: array + items: + description: > + This type represents the identifier to reference a + managed object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" + is supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + required: + - type + - objectId + jobCriteria: + description: >- + This type represents collection criteria for logging + jobs. It shall comply with the provisions defined in + table 8.6.3.2-1. + type: object + required: + - loggingType + properties: + loggingType: + description: >- + Type of logging. This defines the types of logged + information to collect. + + Permitted values: - MESSAGES: logged NFV-MANO + service interface messages. - SERVICES: logged + messages about processes pertaining to NFV-MANO + services. - SYSTEM: logged messages about the + NFV-MANO functional entity’s system enabled by the + provider. + type: string + enum: + - MESSAGES + - SERVICES + - SYSTEM + messagesLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged messages on NFV-MANO service + interfaces. It shall comply with the provisions + defined in table 8.6.3.3-1. + type: object + required: + - direction + properties: + direction: + description: >- + The direction of the interface messages to + match. + + Permitted values: - IN: input messages into the + interface. - OUT: output messages from the + interface. - ALL: both input and output messages + into/from the interface. + type: string + enum: + - IN + - OUT + - ALL + matchingPatterns: + description: >- + Patterns to be matched in the interface message. + If provided, only messages that match all the + values provided in the sub-attributes shall be + logged. An API consumer can provide more than + one "matchingPattern" if combinations of + patterns are to be considered to match diverse + sets of interface messages. + type: array + items: + type: object + anyOf: + - required: + - srcIpAddress + - required: + - dstIpAddress + - required: + - requestMethod + - required: + - requestUriPattern + - required: + - responseCodes + properties: + srcIpAddress: + description: > + An IPV4 or IPV6 address. Representation: + In case of an IPV4 address, string that + consists of four decimal integers + separated by dots, each integer ranging + from 0 to 255. In case of an IPV6 address, + string that consists of groups of zero to + four hexadecimal digits, separated by + colons. + type: string + format: IP + requestMethod: + description: >- + HTTP request method to be matched. To + match, the HTTP request method of the + message shall be the same as the value of + this attribute. Valid values are specified + in IETF RFC 7231. The API producer shall + support this attribute. + type: string + requestUriPattern: + description: >- + Substring to be matched in the request + URI. To match, the request URI shall + include the value of + this attribute as a substring. This is typically used to match messages which associate to RESTful + resources, or to a specific API (e.g., by using the "apiName" of the API). The API producer shall + support this attribute. + type: string + dstIpAddress: + description: > + An IPV4 or IPV6 address. Representation: + In case of an IPV4 address, string that + consists of four decimal integers + separated by dots, each integer ranging + from 0 to 255. In case of an IPV6 address, + string that consists of groups of zero to + four hexadecimal digits, separated by + colons. + type: string + format: IP + responseCodes: + description: >- + HTTP response codes or patterns to match. + A list of all valid HTTP response codes + and their specification documents can be + obtained from the HTTP status code + registry. In addition, if supported, the + following patterns may be used + (case-insensitive): - "1XX": for matching + any kind of informational response. - + "2XX": for matching any kind of success + response. - "3XX": for matching any kind + redirection response. - "4XX": for + matching any kind of client error + response. - "5XX": for matching any kind + of server error response. + + The API producer shall support this + attribute + type: array + items: + type: string + headerField: + description: >- + Name of the header field to be matched. + The header field name shall be one of the + supported fields in a request message as + defined in clause 4.2.2 of ETSI GS NFV-SOL + 013 or in a response message as defined in + clause 4.2.3 of ETSI GS NFV-SOL 013, in + accordance with the "direction" criteria + input. The API producer may support this + attribute. + type: string + headerValue: + description: >- + Value in the header to be matched. To + match, the value in the header field + indicated by "headerField" shall be the + same as in this attribute. Shall be + provided if a "headerField" is provided. + The API producer may support this + attribute. + type: string + bodyValues: + description: >- + A list of strings to be matched in the + body part of the interface message (e.g., + the body of an HTTP message). If provided, + only messages with text in the body part + containing all the values from the list + shall match the filter. In addition to a + matching filter for the body of the + message, a corresponding "headerField" + filter shall also be provided, with + "headerField" set to "Content-Type", to + restrict matching to appropriate textual + payloads such as "application/json" or + "text/plain". The API producer may support + this attribute + type: string + servicesLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged messages about processes pertaining + to NFV-MANO services. It shall comply with the + provisions defined in table 8.6.3.4-1. + type: object + properties: + logGarbageCollection: + description: >- + Indicates to collect logged information about + garbage collection processes associated to + NFV-MANO services. + type: boolean + systemLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged system events of the NFV-MANO + functional entity. It shall comply with the + provisions defined in table 8.6.3.5-1. + type: object + required: + - systemLogs + - severityLevel + properties: + systemLogs: + description: > + This type represents a list of key-value pairs. + The order of the pairs in the list is not + significant. In JSON, a set of keyvalue pairs is + represented as an object. It shall comply with + the provisions defined in clause 4 of IETF RFC + 8259. In the following example, a list of + key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided + to illustrate that the values associated with + different keys can be of different type. + type: object + severityLevelScheme: + description: >- + Identifies a severity level scheme. The default + value is "rfc5424", which represents the set of + values specified in the clause 6.2.1, table 2 of + IETF RFC 5424. Other values may be used to + signal different schemes. + type: string + severityLevel: + description: >- + The severity level, which determines the + severity of the system messages to collect. The + NFV-MANO functional entity shall collect system + log messages, as indicated by the "systemLogs" + attribute, with severity levels lower (i.e., + more severe) or equal to the value provided by + this present attribute. + type: number + jobConfig: + description: >- + This type represents configuration data for a logging + job. It shall comply with the provisions defined in + table 8.6.3.6-1. NOTE: The present document version does + not specify the support for "log compilation and + reporting based on events" as specified in clause + 6.6.2.2 of ETSI GS NFV-IFA 031. + type: object + required: + - reportingCondition + - securityConf + properties: + startTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + endTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + reportingCondition: + description: >- + Specifies the condition under which the producer + will report to the consumer about the compiled log + data. + required: + - reportingType + properties: + reportingType: + description: >- + Specifies the type of reporting condition. + Permitted values: - REPORTING_ON_COMPILATION: + the producer shall notify the consumer once the + compilation of the + collected logging data into a file is completed and a new log report is available. + - NO_REPORTING: no reporting is requested (the + consumer can query the logging jobs to know + about the + availability of new log reports). + type: string + enum: + - REPORTING_ON_COMPILATION + - NO_REPORTING + minimumReportingPeriod: + description: >- + Specifies the minimum periodicity at which the + producer will report to the consumer about the + collected log information, in seconds. + type: integer + format: int32 + compileBySizeValue: + description: >- + An indicative size threshold for compiling the + collected log data, in bytes. It is used when the + compilation is based on the size of the collected + log data. If not present, a default value as + specified with the "defaultLogCompileBySizeValue" + configuration in the "ManoEntityConfigurableParams" + shall be used + type: integer + format: int32 + compileByTimerValue: + description: >- + The periodicity threshold for compiling the filtered + log, in seconds. It is used when the compilation is + based on a timer (e.g., every 24 hours). If not + present, a default value as specified with the + "defaultLogCompileByTimerValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + securityConf: + description: >- + Configuration about the security aspects of the + logging job. + type: object + properties: + logFileEncryption: + description: >- + Information about the encryption of the compiled + log files. Shall be present if the log file is + requested to be encrypted. + required: + - encryptionCertificate + - cipherAlgorithm + type: object + properties: + encryptionCertificate: + description: >- + X.509 certificate with the public key to use + for the encryption of the compiled log file. + type: string + cipherAlgorithm: + description: >- + Cryptographic algorithm to be used for the + encryption of the compiled log file. More + than one algorithm can be provided from + higher (lower array index) to lower (higher + array index) precedence. Valid values are: + "AES-CBC-128", "AES-GCM-128", "AES-CBC-256", + and "AES-GCM-256", as specified in clause + 6.5 of ETSI GS NFV-SEC 012 + type: array + items: + type: string + minItems: 1 + encryptAndSignOrder: + description: >- + Indication about the order in signing and + encrypting the compiled log file. Valid + values are: "encryptFirst", to apply the + order "first encrypt, then sign", and + "signFirst" for the order "first sign, then + encrypt". Default value is "encryptFirst". + type: string + logTransferSecurity: + description: >- + Information about the security measures for + retrieving/accessing the compiled log files. + type: object + properties: + publicKey: + description: >- + The public key of the API consumer used for + the client authentication with the file + server. Shall be provided if required by the + type of transfer protocol. May be omitted if + the key has been provided to the API + producer by other means, or if it has + already been provided in some previous + CreateLoggingJobRequest issued by the same + API consumer, whose public key has not + changed. + type: string + logReports: + description: >- + Information about available log reports created by the + logging job. + type: array + items: + type: object + required: + - logReportId + - logReportLoc + properties: + logReportId: + description: > + An identifier with the intention of being globally + unique. + type: string + logReportLoc: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: >- + Links to resources representing the object instances + that are logged. Shall be present if the logged + object instance information is accessible as a + resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/log_jobs/{logJobId}': + description: >- + This resource represents an individual logging job. The API consumer can + use this resource to delete and read the underlying logging job. + parameters: + - name: logJobId + in: path + description: Identifier of the logging job. + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + get: + description: >- + The API consumer can use this method for reading an individual logging + job. This method shall follow the provisions specified in the tables + 8.5.4.3.2-1 and 8.5.4.3.2-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: >- + Shall be returned when information about an individual logging job + has been read successfully. The response body shall contain a + representation of the "Individual logging job" resource, as defined + in clause 8.6.2.6. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: >- + This type represents a logging job. It shall comply with the + provisions defined in table 8.6.2.6-1. + type: object + required: + - id + - objectInstanceIds + - jobCriteria + - jobConfig + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectInstanceIds: + description: >- + Identifiers of the object instance for which logging + information is collected. This attribute shall contain the + identifier of the instance of the object that is logged + according to their type. + type: array + items: + description: > + This type represents the identifier to reference a + managed object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + required: + - type + - objectId + jobCriteria: + description: >- + This type represents collection criteria for logging jobs. + It shall comply with the provisions defined in table + 8.6.3.2-1. + type: object + required: + - loggingType + properties: + loggingType: + description: >- + Type of logging. This defines the types of logged + information to collect. + + Permitted values: - MESSAGES: logged NFV-MANO service + interface messages. - SERVICES: logged messages about + processes pertaining to NFV-MANO services. - SYSTEM: + logged messages about the NFV-MANO functional entity’s + system enabled by the provider. + type: string + enum: + - MESSAGES + - SERVICES + - SYSTEM + messagesLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged messages on NFV-MANO service + interfaces. It shall comply with the provisions + defined in table 8.6.3.3-1. + type: object + required: + - direction + properties: + direction: + description: >- + The direction of the interface messages to match. + + Permitted values: - IN: input messages into the + interface. - OUT: output messages from the + interface. - ALL: both input and output messages + into/from the interface. + type: string + enum: + - IN + - OUT + - ALL + matchingPatterns: + description: >- + Patterns to be matched in the interface message. + If provided, only messages that match all the + values provided in the sub-attributes shall be + logged. An API consumer can provide more than one + "matchingPattern" if combinations of patterns are + to be considered to match diverse sets of + interface messages. + type: array + items: + type: object + anyOf: + - required: + - srcIpAddress + - required: + - dstIpAddress + - required: + - requestMethod + - required: + - requestUriPattern + - required: + - responseCodes + properties: + srcIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In + case of an IPV4 address, string that + consists of four decimal integers separated + by dots, each integer ranging from 0 to 255. + In case of an IPV6 address, string that + consists of groups of zero to four + hexadecimal digits, separated by colons. + type: string + format: IP + requestMethod: + description: >- + HTTP request method to be matched. To match, + the HTTP request method of the message shall + be the same as the value of this attribute. + Valid values are specified in IETF RFC 7231. + The API producer shall support this + attribute. + type: string + requestUriPattern: + description: >- + Substring to be matched in the request URI. + To match, the request URI shall include the + value of + this attribute as a substring. This is typically used to match messages which associate to RESTful + resources, or to a specific API (e.g., by using the "apiName" of the API). The API producer shall + support this attribute. + type: string + dstIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In + case of an IPV4 address, string that + consists of four decimal integers separated + by dots, each integer ranging from 0 to 255. + In case of an IPV6 address, string that + consists of groups of zero to four + hexadecimal digits, separated by colons. + type: string + format: IP + responseCodes: + description: >- + HTTP response codes or patterns to match. A + list of all valid HTTP response codes and + their specification documents can be + obtained from the HTTP status code registry. + In addition, if supported, the following + patterns may be used (case-insensitive): - + "1XX": for matching any kind of + informational response. - "2XX": for + matching any kind of success response. - + "3XX": for matching any kind redirection + response. - "4XX": for matching any kind of + client error response. - "5XX": for matching + any kind of server error response. + + The API producer shall support this + attribute + type: array + items: + type: string + headerField: + description: >- + Name of the header field to be matched. The + header field name shall be one of the + supported fields in a request message as + defined in clause 4.2.2 of ETSI GS NFV-SOL + 013 or in a response message as defined in + clause 4.2.3 of ETSI GS NFV-SOL 013, in + accordance with the "direction" criteria + input. The API producer may support this + attribute. + type: string + headerValue: + description: >- + Value in the header to be matched. To match, + the value in the header field indicated by + "headerField" shall be the same as in this + attribute. Shall be provided if a + "headerField" is provided. The API producer + may support this attribute. + type: string + bodyValues: + description: >- + A list of strings to be matched in the body + part of the interface message (e.g., the + body of an HTTP message). If provided, only + messages with text in the body part + containing all the values from the list + shall match the filter. In addition to a + matching filter for the body of the message, + a corresponding "headerField" filter shall + also be provided, with "headerField" set to + "Content-Type", to restrict matching to + appropriate textual payloads such as + "application/json" or "text/plain". The API + producer may support this attribute + type: string + servicesLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged messages about processes pertaining to + NFV-MANO services. It shall comply with the provisions + defined in table 8.6.3.4-1. + type: object + properties: + logGarbageCollection: + description: >- + Indicates to collect logged information about + garbage collection processes associated to + NFV-MANO services. + type: boolean + systemLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged system events of the NFV-MANO + functional entity. It shall comply with the provisions + defined in table 8.6.3.5-1. + type: object + required: + - systemLogs + - severityLevel + properties: + systemLogs: + description: > + This type represents a list of key-value pairs. + The order of the pairs in the list is not + significant. In JSON, a set of keyvalue pairs is + represented as an object. It shall comply with the + provisions defined in clause 4 of IETF RFC 8259. + In the following example, a list of key-value + pairs with four keys ("aString", "aNumber", + "anArray" and "anObject") is provided to + illustrate that the values associated with + different keys can be of different type. + type: object + severityLevelScheme: + description: >- + Identifies a severity level scheme. The default + value is "rfc5424", which represents the set of + values specified in the clause 6.2.1, table 2 of + IETF RFC 5424. Other values may be used to signal + different schemes. + type: string + severityLevel: + description: >- + The severity level, which determines the severity + of the system messages to collect. The NFV-MANO + functional entity shall collect system log + messages, as indicated by the "systemLogs" + attribute, with severity levels lower (i.e., more + severe) or equal to the value provided by this + present attribute. + type: number + jobConfig: + description: >- + This type represents configuration data for a logging job. + It shall comply with the provisions defined in table + 8.6.3.6-1. NOTE: The present document version does not + specify the support for "log compilation and reporting + based on events" as specified in clause 6.6.2.2 of ETSI GS + NFV-IFA 031. + type: object + required: + - reportingCondition + - securityConf + properties: + startTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + endTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + reportingCondition: + description: >- + Specifies the condition under which the producer will + report to the consumer about the compiled log data. + required: + - reportingType + properties: + reportingType: + description: >- + Specifies the type of reporting condition. + Permitted values: - REPORTING_ON_COMPILATION: the + producer shall notify the consumer once the + compilation of the + collected logging data into a file is completed and a new log report is available. + - NO_REPORTING: no reporting is requested (the + consumer can query the logging jobs to know about + the + availability of new log reports). + type: string + enum: + - REPORTING_ON_COMPILATION + - NO_REPORTING + minimumReportingPeriod: + description: >- + Specifies the minimum periodicity at which the + producer will report to the consumer about the + collected log information, in seconds. + type: integer + format: int32 + compileBySizeValue: + description: >- + An indicative size threshold for compiling the + collected log data, in bytes. It is used when the + compilation is based on the size of the collected log + data. If not present, a default value as specified + with the "defaultLogCompileBySizeValue" configuration + in the "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + compileByTimerValue: + description: >- + The periodicity threshold for compiling the filtered + log, in seconds. It is used when the compilation is + based on a timer (e.g., every 24 hours). If not + present, a default value as specified with the + "defaultLogCompileByTimerValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + securityConf: + description: >- + Configuration about the security aspects of the + logging job. + type: object + properties: + logFileEncryption: + description: >- + Information about the encryption of the compiled + log files. Shall be present if the log file is + requested to be encrypted. + required: + - encryptionCertificate + - cipherAlgorithm + type: object + properties: + encryptionCertificate: + description: >- + X.509 certificate with the public key to use + for the encryption of the compiled log file. + type: string + cipherAlgorithm: + description: >- + Cryptographic algorithm to be used for the + encryption of the compiled log file. More than + one algorithm can be provided from higher + (lower array index) to lower (higher array + index) precedence. Valid values are: + "AES-CBC-128", "AES-GCM-128", "AES-CBC-256", + and "AES-GCM-256", as specified in clause 6.5 + of ETSI GS NFV-SEC 012 + type: array + items: + type: string + minItems: 1 + encryptAndSignOrder: + description: >- + Indication about the order in signing and + encrypting the compiled log file. Valid values + are: "encryptFirst", to apply the order "first + encrypt, then sign", and "signFirst" for the + order "first sign, then encrypt". Default + value is "encryptFirst". + type: string + logTransferSecurity: + description: >- + Information about the security measures for + retrieving/accessing the compiled log files. + type: object + properties: + publicKey: + description: >- + The public key of the API consumer used for + the client authentication with the file + server. Shall be provided if required by the + type of transfer protocol. May be omitted if + the key has been provided to the API producer + by other means, or if it has already been + provided in some previous + CreateLoggingJobRequest issued by the same API + consumer, whose public key has not changed. + type: string + logReports: + description: >- + Information about available log reports created by the + logging job. + type: array + items: + type: object + required: + - logReportId + - logReportLoc + properties: + logReportId: + description: > + An identifier with the intention of being globally + unique. + type: string + logReportLoc: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: >- + Links to resources representing the object instances + that are logged. Shall be present if the logged object + instance information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + delete: + description: >- + This method terminates an individual logging job. This method shall + follow the provisions specified in the tables 8.5.4.3.5-1 and + 8.5.4.3.5-2 for URI query parameters, request and response data + structures, and response codes. As the result of successfully executing + this method, the "Individual logging job" resource shall not exist any + longer + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '204': + description: >- + Shall be returned when the logging job has been deleted + successfully. The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: Version of the API used in the response. + schema: + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/log_jobs/{logJobId}/log_reports/{logReportId}': + description: "This resource represents an individual log report. The API consumer can use this resource to read information about a log report. The log report provides metadata information about a log and location information of the log file from where it can be obtained. NOTE:\tThe present document does not specify the mechanism how to retrieve the log files." + parameters: + - name: logJobId + in: path + description: Identifier of the logging job. + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + - name: logReportId + in: path + description: Identifier of the report. + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + get: + description: >- + The API consumer can use this method for reading an individual log + report. This method shall follow the provisions specified in the tables + 8.5.5.3.2-1 and 8.5.5.3.2-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: >- + Shall be returned when information of an individual log report has + been read successfully. The response body shall contain a + representation of the "Individual log report" resource, as defined + in clause 8.6.2.7. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type represents a log report, which provides information + about a compiled log and how to obtain it. It shall comply + with the provisions defined in table 8.6.2.7-1. + type: object + required: + - id + - objectInstanceId + - compilationTrigger + - readyTime + - fileFormat + - fileLocationInfo + - securityAndIntegrityInfo + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectInstanceId: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + compilationTrigger: + description: >- + The trigger for the compilation of the log file. + + Permitted values: - ON_DEMAND: created based on explicit + request by a client. - AUTOMATIC: created according to the + logging job compilation configuration. + type: string + enum: + - ON_DEMAND + - AUTOMATIC + readyTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + expiryTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + fileSize: + description: 'The size of the compiled log file in bytes, if known.' + type: integer + format: int32 + fileFormat: + description: The encoding used by the file. + type: string + fileLocationInfo: + description: >- + Location and address information of the compiled log file. + The consumer can use this information to obtain the + compiled log file. + type: object + required: + - protocol + - fileEndpoint + properties: + protocol: + description: >- + Protocol over which the compiled log file can be + retrieved. + + Permitted values: - HTTPS: transmission over HTTP + Secure (HTTPS). - SFTP: transmission over SSH file + transfer protocol (SFTP). - SCP: transmission over + secure copy protocol (SCP). - FTPS: transmission over + file transfer protocol secure (FTPS), as specified in + IETF RFC 2228 [i.11], + using explicit mode as specified in IETF RFC 4217 [i.12]. If FTPS is supported, "private" protection level shall be used. + + HTTPS shall be supported, and other protocols may be + supported. + type: string + enum: + - HTTPS + - SFTP + - SCP + - FTPS + fileEndpoint: + description: >- + The host name (or IP address), optionally a port + number (if the host with the compile log file uses a + non-standard port number as per the supported + transmission protocol), a valid file directory path, + and the file name of the compiled log file, or a valid + URL. + type: string + format: URI + securityAndIntegrityInfo: + description: >- + Security and integrity information for the compilation of + the log files. + type: object + required: + - algorithm + - hash + - logFileSignature + - signingCertificate + properties: + algorithm: + description: >- + Algorithm used to generate the hash of the compiled + log file. Only SHA-256 and SHA-512 shall be used + type: string + hash: + description: >- + The hexadecimal value of the hash of the compiled log + file. The hash shall be computed from the encrypted + compiled log file, in case the encryption applies. + type: string + encryptionPublicKey: + description: >- + Public key used for the encryption of the compiled log + file. Shall be present if the compiled log file is + encrypted. + type: string + cipherAlgorithm: + description: >- + The cryptographic algorithm used for the encryption. + Shall be present if the compiled log file is + encrypted. Valid values are: "AES-CBC-128", + "AES-GCM-128", "AES-CBC-256", and "AES-GCM-256", as + specified in clause 6.5 of ETSI GS NFV-SEC 012 [14]. + type: string + logFileSignature: + description: >- + Signature to the compiled log file generated with the + NFV-MANO functional entity’s private key, which is + used to ensure the authenticity of the compiled log + file. The signature shall be applied according to the + "encryptAndSignOrder" of the "LoggingJobConfig". + type: string + signingCertificate: + description: >- + X.509 certificate with the NFV-MANO functional + entity’s public key used for verifying the log report + and compiled log file signatures. + type: string + _links: + description: Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: >- + Links to resources representing the object instances + that are logged. Shall be present if the logged object + instance information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '202': + description: >- + Shall be returned if the creation of the log report is ongoing and + no log report is available yet (applicable in asynchronous mode of + the "Compile log task" resource). The response body shall be empty. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/log_jobs/{logJobId}/compile_log': + description: >- + This resource represents the "Compile log" operation. The API consumer can + use this resource to request compiling the logged data, collected via a + logging job, into a file and creating the associated log report. As the + result of successfully processing this request, a new "Individual log + report" resource shall be created. Two modes of operation, synchronous or + asynchronous, can take place depending on whether the NFV-MANO functional + entity can compile the log data and create the log report immediately. In + the synchronous case, which is indicated by responding with "201 Created", + the resource shall be created before the "201 Created" response is + returned. In the asynchronous case, which is indicated by responding with + "202 Accepted", the resource may be created after the response is + returned. + parameters: + - name: logJobId + in: path + description: Identifier of the logging job. + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + post: + description: >- + The POST method requests to compile the logged data into a file and + create an associated log report. This method shall follow the provisions + specified in the tables 8.5.6.3.1-1 and 8.5.6.3.1-2 for URI query + parameters, request and response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Content-Type + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + requestBody: + description: Log compilation request. + content: + application/json: + schema: + description: > + This type represents a request to compile the logged data + associated to an object instance. It shall comply with the + provisions defined in table 8.6.2.8-1. + type: object + properties: + objectInstanceId: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + required: true + responses: + '200': + description: >- + Shall be returned for a successful compilation of the log data and + creation of the associated log report (synchronous mode). The + response body shall contain a representation of the log report + resource, as defined in clause 8.6.2.7. The HTTP response shall + include a "Location" HTTP header that indicate the URI of the + "Individual log report" resource just created + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: | + URI of the "Individual log report" resource just created + schema: + type: string + content: + application/json: + schema: + description: > + This type represents a log report, which provides information + about a compiled log and how to obtain it. It shall comply + with the provisions defined in table 8.6.2.7-1. + type: object + required: + - id + - objectInstanceId + - compilationTrigger + - readyTime + - fileFormat + - fileLocationInfo + - securityAndIntegrityInfo + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectInstanceId: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + compilationTrigger: + description: >- + The trigger for the compilation of the log file. + + Permitted values: - ON_DEMAND: created based on explicit + request by a client. - AUTOMATIC: created according to the + logging job compilation configuration. + type: string + enum: + - ON_DEMAND + - AUTOMATIC + readyTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + expiryTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + fileSize: + description: 'The size of the compiled log file in bytes, if known.' + type: integer + format: int32 + fileFormat: + description: The encoding used by the file. + type: string + fileLocationInfo: + description: >- + Location and address information of the compiled log file. + The consumer can use this information to obtain the + compiled log file. + type: object + required: + - protocol + - fileEndpoint + properties: + protocol: + description: >- + Protocol over which the compiled log file can be + retrieved. + + Permitted values: - HTTPS: transmission over HTTP + Secure (HTTPS). - SFTP: transmission over SSH file + transfer protocol (SFTP). - SCP: transmission over + secure copy protocol (SCP). - FTPS: transmission over + file transfer protocol secure (FTPS), as specified in + IETF RFC 2228 [i.11], + using explicit mode as specified in IETF RFC 4217 [i.12]. If FTPS is supported, "private" protection level shall be used. + + HTTPS shall be supported, and other protocols may be + supported. + type: string + enum: + - HTTPS + - SFTP + - SCP + - FTPS + fileEndpoint: + description: >- + The host name (or IP address), optionally a port + number (if the host with the compile log file uses a + non-standard port number as per the supported + transmission protocol), a valid file directory path, + and the file name of the compiled log file, or a valid + URL. + type: string + format: URI + securityAndIntegrityInfo: + description: >- + Security and integrity information for the compilation of + the log files. + type: object + required: + - algorithm + - hash + - logFileSignature + - signingCertificate + properties: + algorithm: + description: >- + Algorithm used to generate the hash of the compiled + log file. Only SHA-256 and SHA-512 shall be used + type: string + hash: + description: >- + The hexadecimal value of the hash of the compiled log + file. The hash shall be computed from the encrypted + compiled log file, in case the encryption applies. + type: string + encryptionPublicKey: + description: >- + Public key used for the encryption of the compiled log + file. Shall be present if the compiled log file is + encrypted. + type: string + cipherAlgorithm: + description: >- + The cryptographic algorithm used for the encryption. + Shall be present if the compiled log file is + encrypted. Valid values are: "AES-CBC-128", + "AES-GCM-128", "AES-CBC-256", and "AES-GCM-256", as + specified in clause 6.5 of ETSI GS NFV-SEC 012 [14]. + type: string + logFileSignature: + description: >- + Signature to the compiled log file generated with the + NFV-MANO functional entity’s private key, which is + used to ensure the authenticity of the compiled log + file. The signature shall be applied according to the + "encryptAndSignOrder" of the "LoggingJobConfig". + type: string + signingCertificate: + description: >- + X.509 certificate with the NFV-MANO functional + entity’s public key used for verifying the log report + and compiled log file signatures. + type: string + _links: + description: Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: >- + Links to resources representing the object instances + that are logged. Shall be present if the logged object + instance information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '202': + description: >- + Shall be returned when the request has been accepted for processing, + and it is expected to take some time to compile the log file and + create the associated log report (asynchronous mode). The response + body shall be empty. The HTTP response shall include a "Location" + HTTP header that indicates the URI of the "Individual log report" + resource that will be created once the log file compilation is + completed. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The URI of the "Individual log report" resource that will be + created once the log file compilation is completed. + schema: + type: string + '303': + description: >- + Shall be returned when a log data compilation and report creation is + already ongoing, or a log report has just been created, for the + specified logging job at the time of processing the request. The + response body shall be empty. The HTTP response shall include a + "Location" HTTP header that contains the resource URI of the log + report resource just created, or to be created by the ongoing + compilation and report creation. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The URI of the log report resource just created, or to be + created by the ongoing compilation and report creation + schema: + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: >- + The general cause for this error and its handling is specified in + clause 6.4 of ETSI GS NFV-SOL 013, including rules for the presence + of the response body. Specifically, in case of this task resource, + the response code 422 shall also be returned if the + "objectInstanceId" value provided in the payload body of the request + does not correspond to an object instance for which log data is + being collected by the logging job represented by this resource. The + response body shall contain a ProblemDetails structure, in which the + "detail" attribute should convey more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + /subscriptions: + description: >- + This resource represents subscriptions. The client can use this resource + to subscribe to notifications related to NFV-MANO performance management + and to query its subscriptions. + post: + description: >- + The POST method creates a new subscription. This method shall follow the + provisions specified in the tables 8.5.7.3.1-1 and 8.5.7.3.1-2 for URI + query + parameters, request and response data structures, and response codes. + As the result of successfully executing this method, a new "Individual + subscription" resource as defined in clause 8.5.8 shall have been + created. This method shall not trigger any notification. Creation of two + "Individual subscription" resources with the same callbackURI and the + same filter can result in performance degradation and will provide + duplicates of notifications to the API consumer, and might make sense + only in very rare use cases. Consequently, the NFV-MANO functional + entity may either allow creating a new "Individual subscription" + resource if another "Individual subscription" resource with the same + filter and callbackUri already exists (in which case it shall return the + "201 Created" response code), or may decide to not create a duplicate + "Individual subscription" resource (in which case it shall return a "303 + See Other" response code referencing the existing "Individual + subscription" resource with the same filter and callbackUri). + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Content-Type + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + requestBody: + description: Details of the subscription to be created + content: + application/json: + schema: + description: >- + Information on application context created by the MEC system + type: object + required: + - callbackUri + type: object + properties: + filter: + description: >- + This type represents a filter that can be used to subscribe + for notifications related to log management events. It shall + comply with the provisions defined in table 8.6.3.7-1. 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). + type: object + properties: + objectInstanceFilter: + description: >- + This type represents subscription filter criteria to + match NFV-MANO functional entities and their associated + managed objects. It shall comply with the provisions + defined in Table 4.3.2.2-1. + type: object + anyOf: + - oneOf: + - required: + - manoServiceIds + - required: + - manoServiceNames + - oneOf: + - required: + - manoServiceInterfaceIds + - required: + - manoServiceInterfaceNames + - oneOf: + - required: + - consumedManoInterfaceIds + - required: + - consumedManoInterfaceNames + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: >- + If present, match NFV-MANO services with an instance + identifier listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + manoServiceNames: + description: >- + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + type: array + items: + type: string + manoServiceInterfaceIds: + description: >- + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + manoServiceInterfaceNames: + description: >- + If present, match NFV-MANO functional entity + produced interfaces with an instance Name listed in + this attribute. + type: array + items: + type: string + consumedManoInterfaceIds: + description: >- + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: >- + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name listed in + this attribute. + type: array + items: + type: string + notificationTypes: + description: >- + Match particular notification types. Permitted values: - + LogReportAvailableNotification + type: string + enum: + - LogReportAvailableNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + authentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization + which the API consumer is willing to accept when + receiving a notification. Permitted values: * BASIC: In + every HTTP request to the notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to + the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification + endpoint is sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + description: > + Parameters for authentication/authorization using BASIC. + Shall be present if authType is "BASIC" and the + contained information has not been provisioned out of + band. Shall be absent otherwise. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out + of band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out + of band. + type: string + paramsOauth2ClientCredentials: + description: > + Parameters for authentication/authorization using + OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType + is "OAUTH2_CLIENT_CREDENTIALS" and the contained + information has not been provisioned out of band. Shall + be absent otherwise. + type: object + properties: + clientId: + description: > + Client identifier to be used in the access token + request of the OAuth 2.0 client credentials grant + type. Shall be present if it has not been + provisioned out of band. The clientId and + clientPassword passed in a subscription shall not be + the same as the clientId and clientPassword that are + used to obtain authorization for API requests. + Client credentials may differ between subscriptions. + The value of clientPassword should be generated by a + random process. + type: string + clientPassword: + description: > + Client password to be used in the access token + request of the OAuth 2.0 client credentials grant + type. Shall be present if it has not been + provisioned out of band. The clientId and + clientPassword passed in a subscription shall not be + the same as the clientId and clientPassword that are + used to obtain authorization for API requests. + Client credentials may differ between subscriptions. + The value of clientPassword should be generated by a + random process. + type: string + tokenEndpoint: + description: | + String formatted according to IETF RFC 3986. + type: string + responses: + '201': + description: >- + Shall be returned when the subscription has been created + successfully. A representation of the created "Individual + subscription" resource shall be returned in the response body, as + defined in clause 8.6.2.3. The HTTP response shall include a + "Location" HTTP header that contains the resource URI of the created + "Individual subscription" resource. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: | + URI of the "Individual log report" resource just created + schema: + type: string + content: + application/json: + schema: + description: >- + This type represents a subscription. It shall comply with the + provisions defined in table 8.6.2.3-1. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: >- + This type represents a filter that can be used to + subscribe for notifications related to log management + events. It shall comply with the provisions defined in + table 8.6.3.7-1. 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). + type: object + properties: + objectInstanceFilter: + description: >- + This type represents subscription filter criteria to + match NFV-MANO functional entities and their + associated managed objects. It shall comply with the + provisions defined in Table 4.3.2.2-1. + type: object + anyOf: + - oneOf: + - required: + - manoServiceIds + - required: + - manoServiceNames + - oneOf: + - required: + - manoServiceInterfaceIds + - required: + - manoServiceInterfaceNames + - oneOf: + - required: + - consumedManoInterfaceIds + - required: + - consumedManoInterfaceNames + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: >- + If present, match NFV-MANO services with an + instance identifier listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceNames: + description: >- + If present, match NFV-MANO services with an + NFV-MANO service name listed in this attribute. + type: array + items: + type: string + manoServiceInterfaceIds: + description: >- + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceInterfaceNames: + description: >- + If present, match NFV-MANO functional entity + produced interfaces with an instance Name listed + in this attribute. + type: array + items: + type: string + consumedManoInterfaceIds: + description: >- + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + type: array + items: + description: > + An identifier with the intention of being + globally unique. + type: string + consumedManoInterfaceNames: + description: >- + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name listed + in this attribute. + type: array + items: + type: string + notificationTypes: + description: >- + Match particular notification types. Permitted values: + - LogReportAvailableNotification + type: string + enum: + - LogReportAvailableNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links to resources related to this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '303': + description: >- + Shall be returned when a subscription with the same callbackURI and + the same filter already exists and the policy of the NFV-MANO + functional entity is to not create redundant subscriptions. The HTTP + response shall include a "Location" HTTP header that contains the + resource URI of the existing "Individual subscription" resource. The + response body shall be empty. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: | + URI of the "Individual log report" resource just created + schema: + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + callbacks: + LogReportAvailableNotification: + '{$request.body#/callbackUri}': + description: >- + This resource represents a notification endpoint for NFV-MANO log + management. The API producer can use this resource to send + notifications related to log management events to a subscribed API + consumer, which has provided the URI of this resource during the + subscription process. + post: + description: >- + The POST method delivers a notification regarding a log + management event from the API producer to the API consumer. The + API consumer shall have previously created an "Individual + subscription" resource with a matching filter. This method shall + follow the provisions specified in the tables 8.5.9.3.1-1 and + 8.5.9.3.1-2 for URI query parameters, request and response data + structures, and response codes. + parameters: + - name: Version + description: > + Version of the API requested to use when responding to this + request. + in: header + required: true + schema: + type: string + - name: Authorization + description: > + The authorization token for the request. Reference: IETF RFC + 7235. + in: header + required: false + schema: + type: string + requestBody: + description: Notification about the availability of a log report. + content: + application/json: + schema: + description: >- + This notification informs the receiver that the log + report of the NFV-MANO functional entity is available. + It shall comply with the provisions defined in table + 8.6.2.4-1. The notification shall be triggered by the + NFV-MANO functional entity when log information has been + collected by the logging job and the log report is + available. + type: object + required: + - id + - notificationType + - subscriptionId + - timeStamp + - objectInstanceId + - _links + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + notificationType: + description: >- + Discriminator for the different notification types. + Shall be set to "LogReportAvailableNotification" for + this notification type. + type: string + subscriptionId: + description: > + An identifier with the intention of being globally + unique. + type: string + timeStamp: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + objectInstanceId: + description: > + This type represents the identifier to reference a + managed object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable + if attribute "manoEntityComponents" in + "ManoEntity" is supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being + globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + required: + - type + - objectId + _links: + description: Links to resources related to this notification. + type: object + required: + - subscription + - logReports + properties: + subscription: + description: > + This type represents a link to a resource in a + notification, using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objectInstance: + description: > + This type represents a link to a resource in a + notification, using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + LoggingJob: + description: > + This type represents a link to a resource in a + notification, using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + logReports: + description: >- + Link from which the available log report can be + obtained. Due to the relationship of the logging + job compilation and the logging information + availability reporting, more than one logReport + notification link can be provided. + type: array + items: + description: > + This type represents a link to a resource in a + notification, using an absolute or relative + URI. + type: object + required: + - href + properties: + href: + description: > + String formatted according to IETF RFC + 3986. + type: string + responses: + '204': + description: >- + Shall be returned when the notification has been delivered + successfully. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, + the specific cause has to be proper specified in the + "ProblemDetails" structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. + if the request URI contains incorrect query parameters or + the payload body contains a syntactically incorrect data + structure), the API producer shall respond with this + response code. The "ProblemDetails" structure shall be + provided, and should include in the "detail" attribute more + information about the source of the problem. + + If the response to a GET request which queries a container + resource would be so big that the performance of the API + producer is adversely affected, and the API producer does + not support paging for the affected resource, it shall + respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the + "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's + input that cannot be easily mapped to any other HTTP + response code ("catch all error"), the API producer shall + respond with this response code. The "ProblemDetails" + structure shall be provided, and shall include in the + "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API + producer should respond with this response. The details of + the error shall be returned in the WWW Authenticate HTTP + header, as defined in IETF RFC 6750 and IETF RFC 7235. The + ProblemDetails structure may be provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization + of API requests and notifications, as defined in clauses + 4.5.3.3 and 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is + required, or if the request contains an authorization token + that is invalid (e.g. expired or revoked), the API producer + should respond with this response. The details of the error + shall be returned in the WWW-Authenticate HTTP header, as + defined in IETF RFC 6750 and IETF RFC 7235. The + ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular + request to a particular resource, the API producer shall + respond with this response code. The "ProblemDetails" + structure shall be provided. It should include in the + "detail" attribute information about the source of the + problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation + for the resource addressed by the URI passed in the request + or is not willing to disclose that one exists, it shall + respond with this response code. The "ProblemDetails" + structure may be provided, including in the "detail" + attribute information about the source of the problem, e.g. + a wrong resource URI variable. + + This response code is not appropriate in case the resource + addressed by the URI is a container resource which is + designed to contain child resources, but does not contain + any child resource at the time the request is received. For + a GET request to an existing empty container resource, a + typical response contains a 200 OK response code and a + payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a + particular resource, the API producer shall respond with + this response code. The "ProblemDetails" structure may be + omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one + name of a content type that is acceptable to the API + producer, the API producer shall respond with this response + code. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically + correct data (e.g. well-formed JSON) but the data cannot be + processed (e.g. because it fails validation against a + schema), the API producer shall respond with this response + code. The "ProblemDetails" structure shall be provided, and + should include in the "detail" attribute more information + about the source of the problem. + + This error response code is only applicable for methods that + have a request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's + input that cannot be easily mapped to any other HTTP + response code ("catch all error"), the API producer shall + respond with this response code. The "ProblemDetails" + structure shall be provided, and shall include in the + "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload + situation of itself or of a system it relies on, it should + respond with this response code, following the provisions in + IETF RFC 7231 for the use of the "Retry-After" HTTP header + and for the alternative to refuse the connection. The + "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it + should respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + get: + description: >- + The GET method allows the API producer to test the notification + endpoint that is provided by the API consumer, e.g. during + subscription. This method shall follow the provisions specified + in the tables 8.5.9.3.2-1 and 8.5.9.3.2-2 for URI query + parameters, request and response data structures, and response + codes. + parameters: + - name: Version + description: > + Version of the API requested to use when responding to this + request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: > + The authorization token for the request. Reference: IETF RFC + 7235. + in: header + required: false + schema: + type: string + responses: + '204': + description: >- + Shall be returned to indicate that the notification endpoint + has been tested successfully. The response body shall be + empty. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, + the specific cause has to be proper specified in the + "ProblemDetails" structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. + if the request URI contains incorrect query parameters or + the payload body contains a syntactically incorrect data + structure), the API producer shall respond with this + response code. The "ProblemDetails" structure shall be + provided, and should include in the "detail" attribute more + information about the source of the problem. + + If the response to a GET request which queries a container + resource would be so big that the performance of the API + producer is adversely affected, and the API producer does + not support paging for the affected resource, it shall + respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the + "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's + input that cannot be easily mapped to any other HTTP + response code ("catch all error"), the API producer shall + respond with this response code. The "ProblemDetails" + structure shall be provided, and shall include in the + "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API + producer should respond with this response. The details of + the error shall be returned in the WWW Authenticate HTTP + header, as defined in IETF RFC 6750 and IETF RFC 7235. The + ProblemDetails structure may be provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization + of API requests and notifications, as defined in clauses + 4.5.3.3 and 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is + required, or if the request contains an authorization token + that is invalid (e.g. expired or revoked), the API producer + should respond with this response. The details of the error + shall be returned in the WWW-Authenticate HTTP header, as + defined in IETF RFC 6750 and IETF RFC 7235. The + ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular + request to a particular resource, the API producer shall + respond with this response code. The "ProblemDetails" + structure shall be provided. It should include in the + "detail" attribute information about the source of the + problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation + for the resource addressed by the URI passed in the request + or is not willing to disclose that one exists, it shall + respond with this response code. The "ProblemDetails" + structure may be provided, including in the "detail" + attribute information about the source of the problem, e.g. + a wrong resource URI variable. + + This response code is not appropriate in case the resource + addressed by the URI is a container resource which is + designed to contain child resources, but does not contain + any child resource at the time the request is received. For + a GET request to an existing empty container resource, a + typical response contains a 200 OK response code and a + payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a + particular resource, the API producer shall respond with + this response code. The "ProblemDetails" structure may be + omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one + name of a content type that is acceptable to the API + producer, the API producer shall respond with this response + code. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically + correct data (e.g. well-formed JSON) but the data cannot be + processed (e.g. because it fails validation against a + schema), the API producer shall respond with this response + code. The "ProblemDetails" structure shall be provided, and + should include in the "detail" attribute more information + about the source of the problem. + + This error response code is only applicable for methods that + have a request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's + input that cannot be easily mapped to any other HTTP + response code ("catch all error"), the API producer shall + respond with this response code. The "ProblemDetails" + structure shall be provided, and shall include in the + "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload + situation of itself or of a system it relies on, it should + respond with this response code, following the provisions in + IETF RFC 7231 for the use of the "Retry-After" HTTP header + and for the alternative to refuse the connection. The + "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it + should respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not + provided authorization, or error details if the + corresponding HTTP request has provided an invalid + authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined + in IETF RFC 7807 [19], the "status" and "detail" + attributes are mandated to be included by the present + document, to ensure that the response contains + additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the + "ProblemDetails" type. It is possible that particular + APIs in the present document, or particular + implementations, define extensions to define + additional attributes that provide more information + about the error. The description column only provides + some explanation of the meaning to Facilitate + understanding of the design. For a full description, + see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] + that identifies the problem type. It is encouraged + that the URI provides human-readable documentation + for the problem (e.g. using HTML) when + dereferenced. When this member is not present, its + value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem + type. It should not change from occurrence to + occurrence of the problem, except for purposes of + localization. If type is given and other than + "about:blank", this attribute shall also be + provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from + occurrence to occurrence of the problem, except + for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section + 6) generated by the origin server for this + occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + get: + description: >- + The API consumer can use this method to query the list of active + subscriptions to log management notifications subscribed by the API + consumer. This method shall follow the provisions specified in the + tables 8.5.7.3.2-1 and 8.5.7.3.2-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of ETSI + GS NFV-SOL 013. The NFV-MANO functional entity shall support + receiving this parameter as part of the URI query string. The API + consumer may supply this parameter. All attribute names that appear + in the FmSubscription and in data types referenced from it shall be + supported by the NFV-MANO functional entity in the filter + expression. + in: query + required: false + schema: + type: string + - name: nextpage_opaque_marker + description: > + Marker to obtain the next page of a paged response. Shall be + supported by the NFV-MANO functional entity if the entity supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS + NFV-SOL 013 for this resource. + in: query + required: false + schema: + type: string + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: >- + Shall be returned when the list of subscriptions has been queried + successfully. The response body shall contain in an array the + representations of all active subscriptions of the functional block + that invokes the method, i.e. zero or more representations of log + management subscriptions as defined in clause 8.6.2.3. If the + "filter" URI parameter was supplied in the request, the data in the + response body shall have been transformed according to the rules + specified in clause 5.2.2 of ETSI GS NFV-SOL 013. If the NFV-MANO + functional entity supports alternative 2 (paging) according to + clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, inclusion + of the Link HTTP header in this response shall follow the provisions + in clause 5.4.2.3 of ETSI GS NFV-SOL 013 . + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + type: array + items: + description: >- + This type represents a subscription. It shall comply with + the provisions defined in table 8.6.2.3-1. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + filter: + description: >- + This type represents a filter that can be used to + subscribe for notifications related to log management + events. It shall comply with the provisions defined in + table 8.6.3.7-1. 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). + type: object + properties: + objectInstanceFilter: + description: >- + This type represents subscription filter criteria to + match NFV-MANO functional entities and their + associated managed objects. It shall comply with the + provisions defined in Table 4.3.2.2-1. + type: object + anyOf: + - oneOf: + - required: + - manoServiceIds + - required: + - manoServiceNames + - oneOf: + - required: + - manoServiceInterfaceIds + - required: + - manoServiceInterfaceNames + - oneOf: + - required: + - consumedManoInterfaceIds + - required: + - consumedManoInterfaceNames + properties: + manoEntityId: + description: > + An identifier with the intention of being + globally unique. + type: string + manoServiceIds: + description: >- + If present, match NFV-MANO services with an + instance identifier listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the + respective type within a NFV-MANO functional + entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceNames: + description: >- + If present, match NFV-MANO services with an + NFV-MANO service name listed in this attribute. + type: array + items: + type: string + manoServiceInterfaceIds: + description: >- + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the + respective type within a NFV-MANO functional + entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceInterfaceNames: + description: >- + If present, match NFV-MANO functional entity + produced interfaces with an instance Name listed + in this attribute. + type: array + items: + type: string + consumedManoInterfaceIds: + description: >- + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + type: array + items: + description: > + An identifier with the intention of being + globally unique. + type: string + consumedManoInterfaceNames: + description: >- + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name listed + in this attribute. + type: array + items: + type: string + notificationTypes: + description: >- + Match particular notification types. Permitted + values: - LogReportAvailableNotification + type: string + enum: + - LogReportAvailableNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links to resources related to this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/subscriptions/{subscriptionId}': + description: >- + This resource represents an individual subscription for notifications + about log management related events. The API consumer can use this + resource to read and to terminate a subscription to notifications related + o NFV-MANO log management. + parameters: + - name: subscriptionId + in: path + description: Identifier of the subscription + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + get: + description: >- + The API consumer can use this method for reading an individual + subscription about log management notifications subscribed by the API + consumer. This method shall follow the provisions specified in the + tables 8.5.8.3.2-1 and 8.5.8.3.2-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: >- + Shall be returned when the subscription has been read successfully. + The response body shall contain a representation of the "Individual + subscription" resource, as defined in clause 8.6.2.3. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: >- + This type represents a subscription. It shall comply with the + provisions defined in table 8.6.2.3-1. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: >- + This type represents a filter that can be used to + subscribe for notifications related to log management + events. It shall comply with the provisions defined in + table 8.6.3.7-1. 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). + type: object + properties: + objectInstanceFilter: + description: >- + This type represents subscription filter criteria to + match NFV-MANO functional entities and their + associated managed objects. It shall comply with the + provisions defined in Table 4.3.2.2-1. + type: object + anyOf: + - oneOf: + - required: + - manoServiceIds + - required: + - manoServiceNames + - oneOf: + - required: + - manoServiceInterfaceIds + - required: + - manoServiceInterfaceNames + - oneOf: + - required: + - consumedManoInterfaceIds + - required: + - consumedManoInterfaceNames + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: >- + If present, match NFV-MANO services with an + instance identifier listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceNames: + description: >- + If present, match NFV-MANO services with an + NFV-MANO service name listed in this attribute. + type: array + items: + type: string + manoServiceInterfaceIds: + description: >- + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceInterfaceNames: + description: >- + If present, match NFV-MANO functional entity + produced interfaces with an instance Name listed + in this attribute. + type: array + items: + type: string + consumedManoInterfaceIds: + description: >- + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + type: array + items: + description: > + An identifier with the intention of being + globally unique. + type: string + consumedManoInterfaceNames: + description: >- + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name listed + in this attribute. + type: array + items: + type: string + notificationTypes: + description: >- + Match particular notification types. Permitted values: + - LogReportAvailableNotification + type: string + enum: + - LogReportAvailableNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links to resources related to this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + delete: + description: "This method terminates an individual subscription. This method shall follow the provisions specified in the tables 8.5.8.3.5-1 and 8.5.8.3.5-2 for URI query parameters, request and response data structures, and response codes. As the result of successfully executing this method, the \"Individual subscription\" resource shall not exist any longer. This means that no notifications for that subscription shall be sent to the formerly-subscribed API consumer. NOTE:\tDue to race conditions, some notifications might still be received by the formerly-subscribed API consumer for a certain time period after the deletion." + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '204': + description: >- + Shall be returned when the "Individual subscription" resource has + been deleted successfully. The response body shall be empty. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI +components: + parameters: + logJobId: + name: logJobId + in: path + description: Identifier of the logging job. + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + logReportId: + name: logReportId + in: path + description: Identifier of the report. + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + subscriptionId: + name: subscriptionId + in: path + description: Identifier of the subscription + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + requestBodies: + LogmSubscriptionRequest: + description: Details of the subscription to be created + content: + application/json: + schema: + description: >- + Information on application context created by the MEC system type: + object + required: + - callbackUri + type: object + properties: + filter: + description: >- + This type represents a filter that can be used to subscribe + for notifications related to log management events. It shall + comply with the provisions defined in table 8.6.3.7-1. 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). + type: object + properties: + objectInstanceFilter: + description: >- + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. It shall comply with the provisions defined in + Table 4.3.2.2-1. + type: object + anyOf: + - oneOf: + - required: + - manoServiceIds + - required: + - manoServiceNames + - oneOf: + - required: + - manoServiceInterfaceIds + - required: + - manoServiceInterfaceNames + - oneOf: + - required: + - consumedManoInterfaceIds + - required: + - consumedManoInterfaceNames + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: >- + If present, match NFV-MANO services with an instance + identifier listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceNames: + description: >- + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + type: array + items: + type: string + manoServiceInterfaceIds: + description: >- + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceInterfaceNames: + description: >- + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this + attribute. + type: array + items: + type: string + consumedManoInterfaceIds: + description: >- + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: >- + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this + attribute. + type: array + items: + type: string + notificationTypes: + description: >- + Match particular notification types. Permitted values: - + LogReportAvailableNotification + type: string + enum: + - LogReportAvailableNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + authentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization which + the API consumer is willing to accept when receiving a + notification. Permitted values: * BASIC: In every HTTP + request to the notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification + endpoint is sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + description: > + Parameters for authentication/authorization using BASIC. + Shall be present if authType is "BASIC" and the contained + information has not been provisioned out of band. Shall be + absent otherwise. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out of + band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out of + band. + type: string + paramsOauth2ClientCredentials: + description: > + Parameters for authentication/authorization using + OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is + "OAUTH2_CLIENT_CREDENTIALS" and the contained information + has not been provisioned out of band. Shall be absent + otherwise. + type: object + properties: + clientId: + description: > + Client identifier to be used in the access token + request of the OAuth 2.0 client credentials grant + type. Shall be present if it has not been provisioned + out of band. The clientId and clientPassword passed in + a subscription shall not be the same as the clientId + and clientPassword that are used to obtain + authorization for API requests. Client credentials may + differ between subscriptions. The value of + clientPassword should be generated by a random + process. + type: string + clientPassword: + description: > + Client password to be used in the access token request + of the OAuth 2.0 client credentials grant type. Shall + be present if it has not been provisioned out of band. + The clientId and clientPassword passed in a + subscription shall not be the same as the clientId and + clientPassword that are used to obtain authorization + for API requests. Client credentials may differ + between subscriptions. The value of clientPassword + should be generated by a random process. + type: string + tokenEndpoint: + description: | + String formatted according to IETF RFC 3986. + type: string + CreateLoggingJobRequest: + description: >- + This type represents a request to create a logging job. It shall comply + with the provisions defined in table 8.6.2.5-1. + content: + application/json: + schema: + description: Information on application context created by the MEC system + type: object + required: + - objectInstanceIds + - jobCriteria + - jobConfig + properties: + objectInstanceIds: + description: >- + Identifiers of the object instance for which logging + information is requested to be collected. This attribute shall + contain the identifier of the instance of the object to be + logged according to their type. If more than one identifier is + provided, values shall all refer to object instances of the + same type, for which the same criteria is then applicable. + type: array + minItems: 1 + items: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + jobCriteria: + description: >- + This type represents collection criteria for logging jobs. It + shall comply with the provisions defined in table 8.6.3.2-1. + type: object + required: + - loggingType + properties: + loggingType: + description: >- + Type of logging. This defines the types of logged + information to collect. + + Permitted values: - MESSAGES: logged NFV-MANO service + interface messages. - SERVICES: logged messages about + processes pertaining to NFV-MANO services. - SYSTEM: + logged messages about the NFV-MANO functional entity’s + system enabled by the provider. + type: string + enum: + - MESSAGES + - SERVICES + - SYSTEM + messagesLogDetail: + description: >- + This type represents criteria for logging jobs to collect + logged messages on NFV-MANO service interfaces. It shall + comply with the provisions defined in table 8.6.3.3-1. + type: object + required: + - direction + properties: + direction: + description: >- + The direction of the interface messages to match. + + Permitted values: - IN: input messages into the + interface. - OUT: output messages from the interface. + - ALL: both input and output messages into/from the + interface. + type: string + enum: + - IN + - OUT + - ALL + matchingPatterns: + description: >- + Patterns to be matched in the interface message. If + provided, only messages that match all the values + provided in the sub-attributes shall be logged. An API + consumer can provide more than one "matchingPattern" + if combinations of patterns are to be considered to + match diverse sets of interface messages. + type: array + items: + type: object + anyOf: + - required: + - srcIpAddress + - required: + - dstIpAddress + - required: + - requestMethod + - required: + - requestUriPattern + - required: + - responseCodes + properties: + srcIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case + of an IPV4 address, string that consists of four + decimal integers separated by dots, each integer + ranging from 0 to 255. In case of an IPV6 + address, string that consists of groups of zero + to four hexadecimal digits, separated by colons. + type: string + format: IP + requestMethod: + description: >- + HTTP request method to be matched. To match, the + HTTP request method of the message shall be the + same as the value of this attribute. Valid + values are specified in IETF RFC 7231. The API + producer shall support this attribute. + type: string + requestUriPattern: + description: >- + Substring to be matched in the request URI. To + match, the request URI shall include the value + of + this attribute as a substring. This is typically used to match messages which associate to RESTful + resources, or to a specific API (e.g., by using the "apiName" of the API). The API producer shall + support this attribute. + type: string + dstIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case + of an IPV4 address, string that consists of four + decimal integers separated by dots, each integer + ranging from 0 to 255. In case of an IPV6 + address, string that consists of groups of zero + to four hexadecimal digits, separated by colons. + type: string + format: IP + responseCodes: + description: >- + HTTP response codes or patterns to match. A list + of all valid HTTP response codes and their + specification documents can be obtained from the + HTTP status code registry. In addition, if + supported, the following patterns may be used + (case-insensitive): - "1XX": for matching any + kind of informational response. - "2XX": for + matching any kind of success response. - "3XX": + for matching any kind redirection response. - + "4XX": for matching any kind of client error + response. - "5XX": for matching any kind of + server error response. + + The API producer shall support this attribute + type: array + items: + type: string + headerField: + description: >- + Name of the header field to be matched. The + header field name shall be one of the supported + fields in a request message as defined in clause + 4.2.2 of ETSI GS NFV-SOL 013 or in a response + message as defined in clause 4.2.3 of ETSI GS + NFV-SOL 013, in accordance with the "direction" + criteria input. The API producer may support + this attribute. + type: string + headerValue: + description: >- + Value in the header to be matched. To match, the + value in the header field indicated by + "headerField" shall be the same as in this + attribute. Shall be provided if a "headerField" + is provided. The API producer may support this + attribute. + type: string + bodyValues: + description: >- + A list of strings to be matched in the body part + of the interface message (e.g., the body of an + HTTP message). If provided, only messages with + text in the body part containing all the values + from the list shall match the filter. In + addition to a matching filter for the body of + the message, a corresponding "headerField" + filter shall also be provided, with + "headerField" set to "Content-Type", to restrict + matching to appropriate textual payloads such as + "application/json" or "text/plain". The API + producer may support this attribute + type: string + servicesLogDetail: + description: >- + This type represents criteria for logging jobs to collect + logged messages about processes pertaining to NFV-MANO + services. It shall comply with the provisions defined in + table 8.6.3.4-1. + type: object + properties: + logGarbageCollection: + description: >- + Indicates to collect logged information about garbage + collection processes associated to NFV-MANO services. + type: boolean + systemLogDetail: + description: >- + This type represents criteria for logging jobs to collect + logged system events of the NFV-MANO functional entity. It + shall comply with the provisions defined in table + 8.6.3.5-1. + type: object + required: + - systemLogs + - severityLevel + properties: + systemLogs: + description: > + This type represents a list of key-value pairs. The + order of the pairs in the list is not significant. In + JSON, a set of keyvalue pairs is represented as an + object. It shall comply with the provisions defined in + clause 4 of IETF RFC 8259. In the following example, a + list of key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided to + illustrate that the values associated with different + keys can be of different type. + type: object + severityLevelScheme: + description: >- + Identifies a severity level scheme. The default value + is "rfc5424", which represents the set of values + specified in the clause 6.2.1, table 2 of IETF RFC + 5424. Other values may be used to signal different + schemes. + type: string + severityLevel: + description: >- + The severity level, which determines the severity of + the system messages to collect. The NFV-MANO + functional entity shall collect system log messages, + as indicated by the "systemLogs" attribute, with + severity levels lower (i.e., more severe) or equal to + the value provided by this present attribute. + type: number + jobConfig: + description: >- + This type represents configuration data for a logging job. It + shall comply with the provisions defined in table 8.6.3.6-1. + NOTE: The present document version does not specify the + support for "log compilation and reporting based on events" as + specified in clause 6.6.2.2 of ETSI GS NFV-IFA 031. + type: object + required: + - reportingCondition + - securityConf + properties: + startTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + endTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + reportingCondition: + description: >- + Specifies the condition under which the producer will + report to the consumer about the compiled log data. + required: + - reportingType + properties: + reportingType: + description: >- + Specifies the type of reporting condition. Permitted + values: - REPORTING_ON_COMPILATION: the producer shall + notify the consumer once the compilation of the + collected logging data into a file is completed and a new log report is available. + - NO_REPORTING: no reporting is requested (the + consumer can query the logging jobs to know about the + availability of new log reports). + type: string + enum: + - REPORTING_ON_COMPILATION + - NO_REPORTING + minimumReportingPeriod: + description: >- + Specifies the minimum periodicity at which the + producer will report to the consumer about the + collected log information, in seconds. + type: integer + format: int32 + compileBySizeValue: + description: >- + An indicative size threshold for compiling the collected + log data, in bytes. It is used when the compilation is + based on the size of the collected log data. If not + present, a default value as specified with the + "defaultLogCompileBySizeValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + compileByTimerValue: + description: >- + The periodicity threshold for compiling the filtered log, + in seconds. It is used when the compilation is based on a + timer (e.g., every 24 hours). If not present, a default + value as specified with the + "defaultLogCompileByTimerValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + securityConf: + description: >- + Configuration about the security aspects of the logging + job. + type: object + properties: + logFileEncryption: + description: >- + Information about the encryption of the compiled log + files. Shall be present if the log file is requested + to be encrypted. + required: + - encryptionCertificate + - cipherAlgorithm + type: object + properties: + encryptionCertificate: + description: >- + X.509 certificate with the public key to use for + the encryption of the compiled log file. + type: string + cipherAlgorithm: + description: >- + Cryptographic algorithm to be used for the + encryption of the compiled log file. More than one + algorithm can be provided from higher (lower array + index) to lower (higher array index) precedence. + Valid values are: "AES-CBC-128", "AES-GCM-128", + "AES-CBC-256", and "AES-GCM-256", as specified in + clause 6.5 of ETSI GS NFV-SEC 012 + type: array + items: + type: string + minItems: 1 + encryptAndSignOrder: + description: >- + Indication about the order in signing and + encrypting the compiled log file. Valid values + are: "encryptFirst", to apply the order "first + encrypt, then sign", and "signFirst" for the order + "first sign, then encrypt". Default value is + "encryptFirst". + type: string + logTransferSecurity: + description: >- + Information about the security measures for + retrieving/accessing the compiled log files. + type: object + properties: + publicKey: + description: >- + The public key of the API consumer used for the + client authentication with the file server. Shall + be provided if required by the type of transfer + protocol. May be omitted if the key has been + provided to the API producer by other means, or if + it has already been provided in some previous + CreateLoggingJobRequest issued by the same API + consumer, whose public key has not changed. + type: string + required: true + CompileLogRequest: + description: Log compilation request. + content: + application/json: + schema: + description: > + This type represents a request to compile the logged data + associated to an object instance. It shall comply with the + provisions defined in table 8.6.2.8-1. + type: object + properties: + objectInstanceId: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: | + An identifier with the intention of being globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + required: true + LogReportAvailableNotification: + description: Notification about the availability of a log report. + content: + application/json: + schema: + description: >- + This notification informs the receiver that the log report of the + NFV-MANO functional entity is available. It shall comply with the + provisions defined in table 8.6.2.4-1. The notification shall be + triggered by the NFV-MANO functional entity when log information + has been collected by the logging job and the log report is + available. + type: object + required: + - id + - notificationType + - subscriptionId + - timeStamp + - objectInstanceId + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + notificationType: + description: >- + Discriminator for the different notification types. Shall be + set to "LogReportAvailableNotification" for this notification + type. + type: string + subscriptionId: + description: | + An identifier with the intention of being globally unique. + type: string + timeStamp: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + objectInstanceId: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: | + An identifier with the intention of being globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + _links: + description: Links to resources related to this notification. + type: object + required: + - subscription + - logReports + properties: + subscription: + description: > + This type represents a link to a resource in a + notification, using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objectInstance: + description: > + This type represents a link to a resource in a + notification, using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + LoggingJob: + description: > + This type represents a link to a resource in a + notification, using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + logReports: + description: >- + Link from which the available log report can be obtained. + Due to the relationship of the logging job compilation and + the logging information availability reporting, more than + one logReport notification link can be provided. + type: array + items: + description: > + This type represents a link to a resource in a + notification, using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + responses: + subscription.delete.204: + description: >- + Shall be returned when the "Individual subscription" resource has been + deleted successfully. The response body shall be empty. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + subscription.get.200: + description: >- + Shall be returned when the subscription has been read successfully. The + response body shall contain a representation of the "Individual + subscription" resource, as defined in clause 8.6.2.3. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: >- + This type represents a subscription. It shall comply with the + provisions defined in table 8.6.2.3-1. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: >- + This type represents a filter that can be used to subscribe + for notifications related to log management events. It shall + comply with the provisions defined in table 8.6.3.7-1. 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). + type: object + properties: + objectInstanceFilter: + description: >- + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. It shall comply with the provisions defined in + Table 4.3.2.2-1. + type: object + anyOf: + - oneOf: + - required: + - manoServiceIds + - required: + - manoServiceNames + - oneOf: + - required: + - manoServiceInterfaceIds + - required: + - manoServiceInterfaceNames + - oneOf: + - required: + - consumedManoInterfaceIds + - required: + - consumedManoInterfaceNames + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: >- + If present, match NFV-MANO services with an instance + identifier listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceNames: + description: >- + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + type: array + items: + type: string + manoServiceInterfaceIds: + description: >- + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceInterfaceNames: + description: >- + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this + attribute. + type: array + items: + type: string + consumedManoInterfaceIds: + description: >- + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: >- + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this + attribute. + type: array + items: + type: string + notificationTypes: + description: >- + Match particular notification types. Permitted values: - + LogReportAvailableNotification + type: string + enum: + - LogReportAvailableNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links to resources related to this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + subscriptions.get.200: + description: >- + Shall be returned when the list of subscriptions has been queried + successfully. The response body shall contain in an array the + representations of all active subscriptions of the functional block that + invokes the method, i.e. zero or more representations of log management + subscriptions as defined in clause 8.6.2.3. If the "filter" URI + parameter was supplied in the request, the data in the response body + shall have been transformed according to the rules specified in clause + 5.2.2 of ETSI GS NFV-SOL 013. If the NFV-MANO functional entity supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL + 013 for this resource, inclusion of the Link HTTP header in this + response shall follow the provisions in clause 5.4.2.3 of ETSI GS + NFV-SOL 013 . + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + type: array + items: + description: >- + This type represents a subscription. It shall comply with the + provisions defined in table 8.6.2.3-1. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: >- + This type represents a filter that can be used to subscribe + for notifications related to log management events. It shall + comply with the provisions defined in table 8.6.3.7-1. 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). + type: object + properties: + objectInstanceFilter: + description: >- + This type represents subscription filter criteria to + match NFV-MANO functional entities and their associated + managed objects. It shall comply with the provisions + defined in Table 4.3.2.2-1. + type: object + anyOf: + - oneOf: + - required: + - manoServiceIds + - required: + - manoServiceNames + - oneOf: + - required: + - manoServiceInterfaceIds + - required: + - manoServiceInterfaceNames + - oneOf: + - required: + - consumedManoInterfaceIds + - required: + - consumedManoInterfaceNames + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: >- + If present, match NFV-MANO services with an instance + identifier listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + manoServiceNames: + description: >- + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + type: array + items: + type: string + manoServiceInterfaceIds: + description: >- + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + manoServiceInterfaceNames: + description: >- + If present, match NFV-MANO functional entity + produced interfaces with an instance Name listed in + this attribute. + type: array + items: + type: string + consumedManoInterfaceIds: + description: >- + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: >- + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name listed in + this attribute. + type: array + items: + type: string + notificationTypes: + description: >- + Match particular notification types. Permitted values: - + LogReportAvailableNotification + type: string + enum: + - LogReportAvailableNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links to resources related to this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + subscriptions.post.201: + description: >- + Shall be returned when the subscription has been created successfully. A + representation of the created "Individual subscription" resource shall + be returned in the response body, as defined in clause 8.6.2.3. The HTTP + response shall include a "Location" HTTP header that contains the + resource URI of the created "Individual subscription" resource. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: | + URI of the "Individual log report" resource just created + schema: + type: string + content: + application/json: + schema: + description: >- + This type represents a subscription. It shall comply with the + provisions defined in table 8.6.2.3-1. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: >- + This type represents a filter that can be used to subscribe + for notifications related to log management events. It shall + comply with the provisions defined in table 8.6.3.7-1. 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). + type: object + properties: + objectInstanceFilter: + description: >- + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. It shall comply with the provisions defined in + Table 4.3.2.2-1. + type: object + anyOf: + - oneOf: + - required: + - manoServiceIds + - required: + - manoServiceNames + - oneOf: + - required: + - manoServiceInterfaceIds + - required: + - manoServiceInterfaceNames + - oneOf: + - required: + - consumedManoInterfaceIds + - required: + - consumedManoInterfaceNames + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: >- + If present, match NFV-MANO services with an instance + identifier listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceNames: + description: >- + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + type: array + items: + type: string + manoServiceInterfaceIds: + description: >- + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceInterfaceNames: + description: >- + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this + attribute. + type: array + items: + type: string + consumedManoInterfaceIds: + description: >- + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: >- + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this + attribute. + type: array + items: + type: string + notificationTypes: + description: >- + Match particular notification types. Permitted values: - + LogReportAvailableNotification + type: string + enum: + - LogReportAvailableNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links to resources related to this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + subscriptions.post.303: + description: >- + Shall be returned when a subscription with the same callbackURI and the + same filter already exists and the policy of the NFV-MANO functional + entity is to not create redundant subscriptions. The HTTP response shall + include a "Location" HTTP header that contains the resource URI of the + existing "Individual subscription" resource. The response body shall be + empty. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: | + URI of the "Individual log report" resource just created + schema: + type: string + LogReportCompiled.Post.200: + description: >- + Shall be returned for a successful compilation of the log data and + creation of the associated log report (synchronous mode). The response + body shall contain a representation of the log report resource, as + defined in clause 8.6.2.7. The HTTP response shall include a "Location" + HTTP header that indicate the URI of the "Individual log report" + resource just created + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: | + URI of the "Individual log report" resource just created + schema: + type: string + content: + application/json: + schema: + description: > + This type represents a log report, which provides information + about a compiled log and how to obtain it. It shall comply with + the provisions defined in table 8.6.2.7-1. + type: object + required: + - id + - objectInstanceId + - compilationTrigger + - readyTime + - fileFormat + - fileLocationInfo + - securityAndIntegrityInfo + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectInstanceId: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: | + An identifier with the intention of being globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + compilationTrigger: + description: >- + The trigger for the compilation of the log file. + + Permitted values: - ON_DEMAND: created based on explicit + request by a client. - AUTOMATIC: created according to the + logging job compilation configuration. + type: string + enum: + - ON_DEMAND + - AUTOMATIC + readyTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + expiryTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + fileSize: + description: 'The size of the compiled log file in bytes, if known.' + type: integer + format: int32 + fileFormat: + description: The encoding used by the file. + type: string + fileLocationInfo: + description: >- + Location and address information of the compiled log file. The + consumer can use this information to obtain the compiled log + file. + type: object + required: + - protocol + - fileEndpoint + properties: + protocol: + description: >- + Protocol over which the compiled log file can be + retrieved. + + Permitted values: - HTTPS: transmission over HTTP Secure + (HTTPS). - SFTP: transmission over SSH file transfer + protocol (SFTP). - SCP: transmission over secure copy + protocol (SCP). - FTPS: transmission over file transfer + protocol secure (FTPS), as specified in IETF RFC 2228 + [i.11], + using explicit mode as specified in IETF RFC 4217 [i.12]. If FTPS is supported, "private" protection level shall be used. + + HTTPS shall be supported, and other protocols may be + supported. + type: string + enum: + - HTTPS + - SFTP + - SCP + - FTPS + fileEndpoint: + description: >- + The host name (or IP address), optionally a port number + (if the host with the compile log file uses a non-standard + port number as per the supported transmission protocol), a + valid file directory path, and the file name of the + compiled log file, or a valid URL. + type: string + format: URI + securityAndIntegrityInfo: + description: >- + Security and integrity information for the compilation of the + log files. + type: object + required: + - algorithm + - hash + - logFileSignature + - signingCertificate + properties: + algorithm: + description: >- + Algorithm used to generate the hash of the compiled log + file. Only SHA-256 and SHA-512 shall be used + type: string + hash: + description: >- + The hexadecimal value of the hash of the compiled log + file. The hash shall be computed from the encrypted + compiled log file, in case the encryption applies. + type: string + encryptionPublicKey: + description: >- + Public key used for the encryption of the compiled log + file. Shall be present if the compiled log file is + encrypted. + type: string + cipherAlgorithm: + description: >- + The cryptographic algorithm used for the encryption. Shall + be present if the compiled log file is encrypted. Valid + values are: "AES-CBC-128", "AES-GCM-128", "AES-CBC-256", + and "AES-GCM-256", as specified in clause 6.5 of ETSI GS + NFV-SEC 012 [14]. + type: string + logFileSignature: + description: >- + Signature to the compiled log file generated with the + NFV-MANO functional entity’s private key, which is used to + ensure the authenticity of the compiled log file. The + signature shall be applied according to the + "encryptAndSignOrder" of the "LoggingJobConfig". + type: string + signingCertificate: + description: >- + X.509 certificate with the NFV-MANO functional entity’s + public key used for verifying the log report and compiled + log file signatures. + type: string + _links: + description: Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: >- + Links to resources representing the object instances that + are logged. Shall be present if the logged object instance + information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + LogReportCompiled.Post.202: + description: >- + Shall be returned when the request has been accepted for processing, and + it is expected to take some time to compile the log file and create the + associated log report (asynchronous mode). The response body shall be + empty. The HTTP response shall include a "Location" HTTP header that + indicates the URI of the "Individual log report" resource that will be + created once the log file compilation is completed. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The URI of the "Individual log report" resource that will be created + once the log file compilation is completed. + schema: + type: string + LogReportCompiled.Post.303: + description: >- + Shall be returned when a log data compilation and report creation is + already ongoing, or a log report has just been created, for the + specified logging job at the time of processing the request. The + response body shall be empty. The HTTP response shall include a + "Location" HTTP header that contains the resource URI of the log report + resource just created, or to be created by the ongoing compilation and + report creation. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The URI of the log report resource just created, or to be created by + the ongoing compilation and report creation + schema: + type: string + LogReportCompiled.Post.422: + description: >- + The general cause for this error and its handling is specified in clause + 6.4 of ETSI GS NFV-SOL 013, including rules for the presence of the + response body. Specifically, in case of this task resource, the response + code 422 shall also be returned if the "objectInstanceId" value provided + in the payload body of the request does not correspond to an object + instance for which log data is being collected by the logging job + represented by this resource. The response body shall contain a + ProblemDetails structure, in which the "detail" attribute should convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + LogReport.Get.200: + description: >- + Shall be returned when information of an individual log report has been + read successfully. The response body shall contain a representation of + the "Individual log report" resource, as defined in clause 8.6.2.7. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type represents a log report, which provides information + about a compiled log and how to obtain it. It shall comply with + the provisions defined in table 8.6.2.7-1. + type: object + required: + - id + - objectInstanceId + - compilationTrigger + - readyTime + - fileFormat + - fileLocationInfo + - securityAndIntegrityInfo + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectInstanceId: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: | + An identifier with the intention of being globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + compilationTrigger: + description: >- + The trigger for the compilation of the log file. + + Permitted values: - ON_DEMAND: created based on explicit + request by a client. - AUTOMATIC: created according to the + logging job compilation configuration. + type: string + enum: + - ON_DEMAND + - AUTOMATIC + readyTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + expiryTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + fileSize: + description: 'The size of the compiled log file in bytes, if known.' + type: integer + format: int32 + fileFormat: + description: The encoding used by the file. + type: string + fileLocationInfo: + description: >- + Location and address information of the compiled log file. The + consumer can use this information to obtain the compiled log + file. + type: object + required: + - protocol + - fileEndpoint + properties: + protocol: + description: >- + Protocol over which the compiled log file can be + retrieved. + + Permitted values: - HTTPS: transmission over HTTP Secure + (HTTPS). - SFTP: transmission over SSH file transfer + protocol (SFTP). - SCP: transmission over secure copy + protocol (SCP). - FTPS: transmission over file transfer + protocol secure (FTPS), as specified in IETF RFC 2228 + [i.11], + using explicit mode as specified in IETF RFC 4217 [i.12]. If FTPS is supported, "private" protection level shall be used. + + HTTPS shall be supported, and other protocols may be + supported. + type: string + enum: + - HTTPS + - SFTP + - SCP + - FTPS + fileEndpoint: + description: >- + The host name (or IP address), optionally a port number + (if the host with the compile log file uses a non-standard + port number as per the supported transmission protocol), a + valid file directory path, and the file name of the + compiled log file, or a valid URL. + type: string + format: URI + securityAndIntegrityInfo: + description: >- + Security and integrity information for the compilation of the + log files. + type: object + required: + - algorithm + - hash + - logFileSignature + - signingCertificate + properties: + algorithm: + description: >- + Algorithm used to generate the hash of the compiled log + file. Only SHA-256 and SHA-512 shall be used + type: string + hash: + description: >- + The hexadecimal value of the hash of the compiled log + file. The hash shall be computed from the encrypted + compiled log file, in case the encryption applies. + type: string + encryptionPublicKey: + description: >- + Public key used for the encryption of the compiled log + file. Shall be present if the compiled log file is + encrypted. + type: string + cipherAlgorithm: + description: >- + The cryptographic algorithm used for the encryption. Shall + be present if the compiled log file is encrypted. Valid + values are: "AES-CBC-128", "AES-GCM-128", "AES-CBC-256", + and "AES-GCM-256", as specified in clause 6.5 of ETSI GS + NFV-SEC 012 [14]. + type: string + logFileSignature: + description: >- + Signature to the compiled log file generated with the + NFV-MANO functional entity’s private key, which is used to + ensure the authenticity of the compiled log file. The + signature shall be applied according to the + "encryptAndSignOrder" of the "LoggingJobConfig". + type: string + signingCertificate: + description: >- + X.509 certificate with the NFV-MANO functional entity’s + public key used for verifying the log report and compiled + log file signatures. + type: string + _links: + description: Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: >- + Links to resources representing the object instances that + are logged. Shall be present if the logged object instance + information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + LogReport.Get.202: + description: >- + Shall be returned if the creation of the log report is ongoing and no + log report is available yet (applicable in asynchronous mode of the + "Compile log task" resource). The response body shall be empty. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + LoggingJob.Get: + description: >- + Shall be returned when information about an individual logging job has + been read successfully. The response body shall contain a representation + of the "Individual logging job" resource, as defined in clause 8.6.2.6. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: >- + This type represents a logging job. It shall comply with the + provisions defined in table 8.6.2.6-1. + type: object + required: + - id + - objectInstanceIds + - jobCriteria + - jobConfig + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectInstanceIds: + description: >- + Identifiers of the object instance for which logging + information is collected. This attribute shall contain the + identifier of the instance of the object that is logged + according to their type. + type: array + items: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + jobCriteria: + description: >- + This type represents collection criteria for logging jobs. It + shall comply with the provisions defined in table 8.6.3.2-1. + type: object + required: + - loggingType + properties: + loggingType: + description: >- + Type of logging. This defines the types of logged + information to collect. + + Permitted values: - MESSAGES: logged NFV-MANO service + interface messages. - SERVICES: logged messages about + processes pertaining to NFV-MANO services. - SYSTEM: + logged messages about the NFV-MANO functional entity’s + system enabled by the provider. + type: string + enum: + - MESSAGES + - SERVICES + - SYSTEM + messagesLogDetail: + description: >- + This type represents criteria for logging jobs to collect + logged messages on NFV-MANO service interfaces. It shall + comply with the provisions defined in table 8.6.3.3-1. + type: object + required: + - direction + properties: + direction: + description: >- + The direction of the interface messages to match. + + Permitted values: - IN: input messages into the + interface. - OUT: output messages from the interface. + - ALL: both input and output messages into/from the + interface. + type: string + enum: + - IN + - OUT + - ALL + matchingPatterns: + description: >- + Patterns to be matched in the interface message. If + provided, only messages that match all the values + provided in the sub-attributes shall be logged. An API + consumer can provide more than one "matchingPattern" + if combinations of patterns are to be considered to + match diverse sets of interface messages. + type: array + items: + type: object + anyOf: + - required: + - srcIpAddress + - required: + - dstIpAddress + - required: + - requestMethod + - required: + - requestUriPattern + - required: + - responseCodes + properties: + srcIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case + of an IPV4 address, string that consists of four + decimal integers separated by dots, each integer + ranging from 0 to 255. In case of an IPV6 + address, string that consists of groups of zero + to four hexadecimal digits, separated by colons. + type: string + format: IP + requestMethod: + description: >- + HTTP request method to be matched. To match, the + HTTP request method of the message shall be the + same as the value of this attribute. Valid + values are specified in IETF RFC 7231. The API + producer shall support this attribute. + type: string + requestUriPattern: + description: >- + Substring to be matched in the request URI. To + match, the request URI shall include the value + of + this attribute as a substring. This is typically used to match messages which associate to RESTful + resources, or to a specific API (e.g., by using the "apiName" of the API). The API producer shall + support this attribute. + type: string + dstIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case + of an IPV4 address, string that consists of four + decimal integers separated by dots, each integer + ranging from 0 to 255. In case of an IPV6 + address, string that consists of groups of zero + to four hexadecimal digits, separated by colons. + type: string + format: IP + responseCodes: + description: >- + HTTP response codes or patterns to match. A list + of all valid HTTP response codes and their + specification documents can be obtained from the + HTTP status code registry. In addition, if + supported, the following patterns may be used + (case-insensitive): - "1XX": for matching any + kind of informational response. - "2XX": for + matching any kind of success response. - "3XX": + for matching any kind redirection response. - + "4XX": for matching any kind of client error + response. - "5XX": for matching any kind of + server error response. + + The API producer shall support this attribute + type: array + items: + type: string + headerField: + description: >- + Name of the header field to be matched. The + header field name shall be one of the supported + fields in a request message as defined in clause + 4.2.2 of ETSI GS NFV-SOL 013 or in a response + message as defined in clause 4.2.3 of ETSI GS + NFV-SOL 013, in accordance with the "direction" + criteria input. The API producer may support + this attribute. + type: string + headerValue: + description: >- + Value in the header to be matched. To match, the + value in the header field indicated by + "headerField" shall be the same as in this + attribute. Shall be provided if a "headerField" + is provided. The API producer may support this + attribute. + type: string + bodyValues: + description: >- + A list of strings to be matched in the body part + of the interface message (e.g., the body of an + HTTP message). If provided, only messages with + text in the body part containing all the values + from the list shall match the filter. In + addition to a matching filter for the body of + the message, a corresponding "headerField" + filter shall also be provided, with + "headerField" set to "Content-Type", to restrict + matching to appropriate textual payloads such as + "application/json" or "text/plain". The API + producer may support this attribute + type: string + servicesLogDetail: + description: >- + This type represents criteria for logging jobs to collect + logged messages about processes pertaining to NFV-MANO + services. It shall comply with the provisions defined in + table 8.6.3.4-1. + type: object + properties: + logGarbageCollection: + description: >- + Indicates to collect logged information about garbage + collection processes associated to NFV-MANO services. + type: boolean + systemLogDetail: + description: >- + This type represents criteria for logging jobs to collect + logged system events of the NFV-MANO functional entity. It + shall comply with the provisions defined in table + 8.6.3.5-1. + type: object + required: + - systemLogs + - severityLevel + properties: + systemLogs: + description: > + This type represents a list of key-value pairs. The + order of the pairs in the list is not significant. In + JSON, a set of keyvalue pairs is represented as an + object. It shall comply with the provisions defined in + clause 4 of IETF RFC 8259. In the following example, a + list of key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided to + illustrate that the values associated with different + keys can be of different type. + type: object + severityLevelScheme: + description: >- + Identifies a severity level scheme. The default value + is "rfc5424", which represents the set of values + specified in the clause 6.2.1, table 2 of IETF RFC + 5424. Other values may be used to signal different + schemes. + type: string + severityLevel: + description: >- + The severity level, which determines the severity of + the system messages to collect. The NFV-MANO + functional entity shall collect system log messages, + as indicated by the "systemLogs" attribute, with + severity levels lower (i.e., more severe) or equal to + the value provided by this present attribute. + type: number + jobConfig: + description: >- + This type represents configuration data for a logging job. It + shall comply with the provisions defined in table 8.6.3.6-1. + NOTE: The present document version does not specify the + support for "log compilation and reporting based on events" as + specified in clause 6.6.2.2 of ETSI GS NFV-IFA 031. + type: object + required: + - reportingCondition + - securityConf + properties: + startTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + endTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + reportingCondition: + description: >- + Specifies the condition under which the producer will + report to the consumer about the compiled log data. + required: + - reportingType + properties: + reportingType: + description: >- + Specifies the type of reporting condition. Permitted + values: - REPORTING_ON_COMPILATION: the producer shall + notify the consumer once the compilation of the + collected logging data into a file is completed and a new log report is available. + - NO_REPORTING: no reporting is requested (the + consumer can query the logging jobs to know about the + availability of new log reports). + type: string + enum: + - REPORTING_ON_COMPILATION + - NO_REPORTING + minimumReportingPeriod: + description: >- + Specifies the minimum periodicity at which the + producer will report to the consumer about the + collected log information, in seconds. + type: integer + format: int32 + compileBySizeValue: + description: >- + An indicative size threshold for compiling the collected + log data, in bytes. It is used when the compilation is + based on the size of the collected log data. If not + present, a default value as specified with the + "defaultLogCompileBySizeValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + compileByTimerValue: + description: >- + The periodicity threshold for compiling the filtered log, + in seconds. It is used when the compilation is based on a + timer (e.g., every 24 hours). If not present, a default + value as specified with the + "defaultLogCompileByTimerValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + securityConf: + description: >- + Configuration about the security aspects of the logging + job. + type: object + properties: + logFileEncryption: + description: >- + Information about the encryption of the compiled log + files. Shall be present if the log file is requested + to be encrypted. + required: + - encryptionCertificate + - cipherAlgorithm + type: object + properties: + encryptionCertificate: + description: >- + X.509 certificate with the public key to use for + the encryption of the compiled log file. + type: string + cipherAlgorithm: + description: >- + Cryptographic algorithm to be used for the + encryption of the compiled log file. More than one + algorithm can be provided from higher (lower array + index) to lower (higher array index) precedence. + Valid values are: "AES-CBC-128", "AES-GCM-128", + "AES-CBC-256", and "AES-GCM-256", as specified in + clause 6.5 of ETSI GS NFV-SEC 012 + type: array + items: + type: string + minItems: 1 + encryptAndSignOrder: + description: >- + Indication about the order in signing and + encrypting the compiled log file. Valid values + are: "encryptFirst", to apply the order "first + encrypt, then sign", and "signFirst" for the order + "first sign, then encrypt". Default value is + "encryptFirst". + type: string + logTransferSecurity: + description: >- + Information about the security measures for + retrieving/accessing the compiled log files. + type: object + properties: + publicKey: + description: >- + The public key of the API consumer used for the + client authentication with the file server. Shall + be provided if required by the type of transfer + protocol. May be omitted if the key has been + provided to the API producer by other means, or if + it has already been provided in some previous + CreateLoggingJobRequest issued by the same API + consumer, whose public key has not changed. + type: string + logReports: + description: >- + Information about available log reports created by the logging + job. + type: array + items: + type: object + required: + - logReportId + - logReportLoc + properties: + logReportId: + description: > + An identifier with the intention of being globally + unique. + type: string + logReportLoc: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: >- + Links to resources representing the object instances that + are logged. Shall be present if the logged object instance + information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + LoggingJob.Delete: + description: >- + Shall be returned when the logging job has been deleted successfully. + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: Version of the API used in the response. + schema: + type: string + LoggingJob.Post: + description: >- + The response body contains the Application Context as it was created by + the MEC system + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: >- + This type represents a logging job. It shall comply with the + provisions defined in table 8.6.2.6-1. + type: object + required: + - id + - objectInstanceIds + - jobCriteria + - jobConfig + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectInstanceIds: + description: >- + Identifiers of the object instance for which logging + information is collected. This attribute shall contain the + identifier of the instance of the object that is logged + according to their type. + type: array + items: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + jobCriteria: + description: >- + This type represents collection criteria for logging jobs. It + shall comply with the provisions defined in table 8.6.3.2-1. + type: object + required: + - loggingType + properties: + loggingType: + description: >- + Type of logging. This defines the types of logged + information to collect. + + Permitted values: - MESSAGES: logged NFV-MANO service + interface messages. - SERVICES: logged messages about + processes pertaining to NFV-MANO services. - SYSTEM: + logged messages about the NFV-MANO functional entity’s + system enabled by the provider. + type: string + enum: + - MESSAGES + - SERVICES + - SYSTEM + messagesLogDetail: + description: >- + This type represents criteria for logging jobs to collect + logged messages on NFV-MANO service interfaces. It shall + comply with the provisions defined in table 8.6.3.3-1. + type: object + required: + - direction + properties: + direction: + description: >- + The direction of the interface messages to match. + + Permitted values: - IN: input messages into the + interface. - OUT: output messages from the interface. + - ALL: both input and output messages into/from the + interface. + type: string + enum: + - IN + - OUT + - ALL + matchingPatterns: + description: >- + Patterns to be matched in the interface message. If + provided, only messages that match all the values + provided in the sub-attributes shall be logged. An API + consumer can provide more than one "matchingPattern" + if combinations of patterns are to be considered to + match diverse sets of interface messages. + type: array + items: + type: object + anyOf: + - required: + - srcIpAddress + - required: + - dstIpAddress + - required: + - requestMethod + - required: + - requestUriPattern + - required: + - responseCodes + properties: + srcIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case + of an IPV4 address, string that consists of four + decimal integers separated by dots, each integer + ranging from 0 to 255. In case of an IPV6 + address, string that consists of groups of zero + to four hexadecimal digits, separated by colons. + type: string + format: IP + requestMethod: + description: >- + HTTP request method to be matched. To match, the + HTTP request method of the message shall be the + same as the value of this attribute. Valid + values are specified in IETF RFC 7231. The API + producer shall support this attribute. + type: string + requestUriPattern: + description: >- + Substring to be matched in the request URI. To + match, the request URI shall include the value + of + this attribute as a substring. This is typically used to match messages which associate to RESTful + resources, or to a specific API (e.g., by using the "apiName" of the API). The API producer shall + support this attribute. + type: string + dstIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case + of an IPV4 address, string that consists of four + decimal integers separated by dots, each integer + ranging from 0 to 255. In case of an IPV6 + address, string that consists of groups of zero + to four hexadecimal digits, separated by colons. + type: string + format: IP + responseCodes: + description: >- + HTTP response codes or patterns to match. A list + of all valid HTTP response codes and their + specification documents can be obtained from the + HTTP status code registry. In addition, if + supported, the following patterns may be used + (case-insensitive): - "1XX": for matching any + kind of informational response. - "2XX": for + matching any kind of success response. - "3XX": + for matching any kind redirection response. - + "4XX": for matching any kind of client error + response. - "5XX": for matching any kind of + server error response. + + The API producer shall support this attribute + type: array + items: + type: string + headerField: + description: >- + Name of the header field to be matched. The + header field name shall be one of the supported + fields in a request message as defined in clause + 4.2.2 of ETSI GS NFV-SOL 013 or in a response + message as defined in clause 4.2.3 of ETSI GS + NFV-SOL 013, in accordance with the "direction" + criteria input. The API producer may support + this attribute. + type: string + headerValue: + description: >- + Value in the header to be matched. To match, the + value in the header field indicated by + "headerField" shall be the same as in this + attribute. Shall be provided if a "headerField" + is provided. The API producer may support this + attribute. + type: string + bodyValues: + description: >- + A list of strings to be matched in the body part + of the interface message (e.g., the body of an + HTTP message). If provided, only messages with + text in the body part containing all the values + from the list shall match the filter. In + addition to a matching filter for the body of + the message, a corresponding "headerField" + filter shall also be provided, with + "headerField" set to "Content-Type", to restrict + matching to appropriate textual payloads such as + "application/json" or "text/plain". The API + producer may support this attribute + type: string + servicesLogDetail: + description: >- + This type represents criteria for logging jobs to collect + logged messages about processes pertaining to NFV-MANO + services. It shall comply with the provisions defined in + table 8.6.3.4-1. + type: object + properties: + logGarbageCollection: + description: >- + Indicates to collect logged information about garbage + collection processes associated to NFV-MANO services. + type: boolean + systemLogDetail: + description: >- + This type represents criteria for logging jobs to collect + logged system events of the NFV-MANO functional entity. It + shall comply with the provisions defined in table + 8.6.3.5-1. + type: object + required: + - systemLogs + - severityLevel + properties: + systemLogs: + description: > + This type represents a list of key-value pairs. The + order of the pairs in the list is not significant. In + JSON, a set of keyvalue pairs is represented as an + object. It shall comply with the provisions defined in + clause 4 of IETF RFC 8259. In the following example, a + list of key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided to + illustrate that the values associated with different + keys can be of different type. + type: object + severityLevelScheme: + description: >- + Identifies a severity level scheme. The default value + is "rfc5424", which represents the set of values + specified in the clause 6.2.1, table 2 of IETF RFC + 5424. Other values may be used to signal different + schemes. + type: string + severityLevel: + description: >- + The severity level, which determines the severity of + the system messages to collect. The NFV-MANO + functional entity shall collect system log messages, + as indicated by the "systemLogs" attribute, with + severity levels lower (i.e., more severe) or equal to + the value provided by this present attribute. + type: number + jobConfig: + description: >- + This type represents configuration data for a logging job. It + shall comply with the provisions defined in table 8.6.3.6-1. + NOTE: The present document version does not specify the + support for "log compilation and reporting based on events" as + specified in clause 6.6.2.2 of ETSI GS NFV-IFA 031. + type: object + required: + - reportingCondition + - securityConf + properties: + startTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + endTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + reportingCondition: + description: >- + Specifies the condition under which the producer will + report to the consumer about the compiled log data. + required: + - reportingType + properties: + reportingType: + description: >- + Specifies the type of reporting condition. Permitted + values: - REPORTING_ON_COMPILATION: the producer shall + notify the consumer once the compilation of the + collected logging data into a file is completed and a new log report is available. + - NO_REPORTING: no reporting is requested (the + consumer can query the logging jobs to know about the + availability of new log reports). + type: string + enum: + - REPORTING_ON_COMPILATION + - NO_REPORTING + minimumReportingPeriod: + description: >- + Specifies the minimum periodicity at which the + producer will report to the consumer about the + collected log information, in seconds. + type: integer + format: int32 + compileBySizeValue: + description: >- + An indicative size threshold for compiling the collected + log data, in bytes. It is used when the compilation is + based on the size of the collected log data. If not + present, a default value as specified with the + "defaultLogCompileBySizeValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + compileByTimerValue: + description: >- + The periodicity threshold for compiling the filtered log, + in seconds. It is used when the compilation is based on a + timer (e.g., every 24 hours). If not present, a default + value as specified with the + "defaultLogCompileByTimerValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + securityConf: + description: >- + Configuration about the security aspects of the logging + job. + type: object + properties: + logFileEncryption: + description: >- + Information about the encryption of the compiled log + files. Shall be present if the log file is requested + to be encrypted. + required: + - encryptionCertificate + - cipherAlgorithm + type: object + properties: + encryptionCertificate: + description: >- + X.509 certificate with the public key to use for + the encryption of the compiled log file. + type: string + cipherAlgorithm: + description: >- + Cryptographic algorithm to be used for the + encryption of the compiled log file. More than one + algorithm can be provided from higher (lower array + index) to lower (higher array index) precedence. + Valid values are: "AES-CBC-128", "AES-GCM-128", + "AES-CBC-256", and "AES-GCM-256", as specified in + clause 6.5 of ETSI GS NFV-SEC 012 + type: array + items: + type: string + minItems: 1 + encryptAndSignOrder: + description: >- + Indication about the order in signing and + encrypting the compiled log file. Valid values + are: "encryptFirst", to apply the order "first + encrypt, then sign", and "signFirst" for the order + "first sign, then encrypt". Default value is + "encryptFirst". + type: string + logTransferSecurity: + description: >- + Information about the security measures for + retrieving/accessing the compiled log files. + type: object + properties: + publicKey: + description: >- + The public key of the API consumer used for the + client authentication with the file server. Shall + be provided if required by the type of transfer + protocol. May be omitted if the key has been + provided to the API producer by other means, or if + it has already been provided in some previous + CreateLoggingJobRequest issued by the same API + consumer, whose public key has not changed. + type: string + logReports: + description: >- + Information about available log reports created by the logging + job. + type: array + items: + type: object + required: + - logReportId + - logReportLoc + properties: + logReportId: + description: > + An identifier with the intention of being globally + unique. + type: string + logReportLoc: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: >- + Links to resources representing the object instances that + are logged. Shall be present if the logged object instance + information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + LoggingJobs.Get: + description: >- + Shall be returned when information about zero or more logging jobs has + been queried successfully. + + The response body shall contain in an array the representations of zero + or more logging jobs, as defined in clause 8.6.2.6. + + If the "filter" URI parameter or one of the "all_fields", "fields" (if + supported), "exclude_fields" (if supported) or "exclude_default" URI + parameters was supplied in the request, the data in the response body + shall have been transformed according to the rules specified in clauses + 5.2.2 and 5.3.2 of ETSI GS NFV-SOL 013, respectively. + + If the NFV-MANO functional entity supports alternative 2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + inclusion of the Link HTTP header in this response shall follow the + provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + type: array + items: + description: >- + This type represents a logging job. It shall comply with the + provisions defined in table 8.6.2.6-1. + type: object + required: + - id + - objectInstanceIds + - jobCriteria + - jobConfig + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectInstanceIds: + description: >- + Identifiers of the object instance for which logging + information is collected. This attribute shall contain the + identifier of the instance of the object that is logged + according to their type. + type: array + items: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + jobCriteria: + description: >- + This type represents collection criteria for logging jobs. + It shall comply with the provisions defined in table + 8.6.3.2-1. + type: object + required: + - loggingType + properties: + loggingType: + description: >- + Type of logging. This defines the types of logged + information to collect. + + Permitted values: - MESSAGES: logged NFV-MANO service + interface messages. - SERVICES: logged messages about + processes pertaining to NFV-MANO services. - SYSTEM: + logged messages about the NFV-MANO functional entity’s + system enabled by the provider. + type: string + enum: + - MESSAGES + - SERVICES + - SYSTEM + messagesLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged messages on NFV-MANO service interfaces. + It shall comply with the provisions defined in table + 8.6.3.3-1. + type: object + required: + - direction + properties: + direction: + description: >- + The direction of the interface messages to match. + + Permitted values: - IN: input messages into the + interface. - OUT: output messages from the + interface. - ALL: both input and output messages + into/from the interface. + type: string + enum: + - IN + - OUT + - ALL + matchingPatterns: + description: >- + Patterns to be matched in the interface message. If + provided, only messages that match all the values + provided in the sub-attributes shall be logged. An + API consumer can provide more than one + "matchingPattern" if combinations of patterns are to + be considered to match diverse sets of interface + messages. + type: array + items: + type: object + anyOf: + - required: + - srcIpAddress + - required: + - dstIpAddress + - required: + - requestMethod + - required: + - requestUriPattern + - required: + - responseCodes + properties: + srcIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In + case of an IPV4 address, string that consists + of four decimal integers separated by dots, + each integer ranging from 0 to 255. In case of + an IPV6 address, string that consists of + groups of zero to four hexadecimal digits, + separated by colons. + type: string + format: IP + requestMethod: + description: >- + HTTP request method to be matched. To match, + the HTTP request method of the message shall + be the same as the value of this attribute. + Valid values are specified in IETF RFC 7231. + The API producer shall support this attribute. + type: string + requestUriPattern: + description: >- + Substring to be matched in the request URI. To + match, the request URI shall include the value + of + this attribute as a substring. This is typically used to match messages which associate to RESTful + resources, or to a specific API (e.g., by using the "apiName" of the API). The API producer shall + support this attribute. + type: string + dstIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In + case of an IPV4 address, string that consists + of four decimal integers separated by dots, + each integer ranging from 0 to 255. In case of + an IPV6 address, string that consists of + groups of zero to four hexadecimal digits, + separated by colons. + type: string + format: IP + responseCodes: + description: >- + HTTP response codes or patterns to match. A + list of all valid HTTP response codes and + their specification documents can be obtained + from the HTTP status code registry. In + addition, if supported, the following patterns + may be used (case-insensitive): - "1XX": for + matching any kind of informational response. - + "2XX": for matching any kind of success + response. - "3XX": for matching any kind + redirection response. - "4XX": for matching + any kind of client error response. - "5XX": + for matching any kind of server error + response. + + The API producer shall support this attribute + type: array + items: + type: string + headerField: + description: >- + Name of the header field to be matched. The + header field name shall be one of the + supported fields in a request message as + defined in clause 4.2.2 of ETSI GS NFV-SOL 013 + or in a response message as defined in clause + 4.2.3 of ETSI GS NFV-SOL 013, in accordance + with the "direction" criteria input. The API + producer may support this attribute. + type: string + headerValue: + description: >- + Value in the header to be matched. To match, + the value in the header field indicated by + "headerField" shall be the same as in this + attribute. Shall be provided if a + "headerField" is provided. The API producer + may support this attribute. + type: string + bodyValues: + description: >- + A list of strings to be matched in the body + part of the interface message (e.g., the body + of an HTTP message). If provided, only + messages with text in the body part containing + all the values from the list shall match the + filter. In addition to a matching filter for + the body of the message, a corresponding + "headerField" filter shall also be provided, + with "headerField" set to "Content-Type", to + restrict matching to appropriate textual + payloads such as "application/json" or + "text/plain". The API producer may support + this attribute + type: string + servicesLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged messages about processes pertaining to + NFV-MANO services. It shall comply with the provisions + defined in table 8.6.3.4-1. + type: object + properties: + logGarbageCollection: + description: >- + Indicates to collect logged information about + garbage collection processes associated to NFV-MANO + services. + type: boolean + systemLogDetail: + description: >- + This type represents criteria for logging jobs to + collect logged system events of the NFV-MANO functional + entity. It shall comply with the provisions defined in + table 8.6.3.5-1. + type: object + required: + - systemLogs + - severityLevel + properties: + systemLogs: + description: > + This type represents a list of key-value pairs. The + order of the pairs in the list is not significant. + In JSON, a set of keyvalue pairs is represented as + an object. It shall comply with the provisions + defined in clause 4 of IETF RFC 8259. In the + following example, a list of key-value pairs with + four keys ("aString", "aNumber", "anArray" and + "anObject") is provided to illustrate that the + values associated with different keys can be of + different type. + type: object + severityLevelScheme: + description: >- + Identifies a severity level scheme. The default + value is "rfc5424", which represents the set of + values specified in the clause 6.2.1, table 2 of + IETF RFC 5424. Other values may be used to signal + different schemes. + type: string + severityLevel: + description: >- + The severity level, which determines the severity of + the system messages to collect. The NFV-MANO + functional entity shall collect system log messages, + as indicated by the "systemLogs" attribute, with + severity levels lower (i.e., more severe) or equal + to the value provided by this present attribute. + type: number + jobConfig: + description: >- + This type represents configuration data for a logging job. + It shall comply with the provisions defined in table + 8.6.3.6-1. NOTE: The present document version does not + specify the support for "log compilation and reporting based + on events" as specified in clause 6.6.2.2 of ETSI GS NFV-IFA + 031. + type: object + required: + - reportingCondition + - securityConf + properties: + startTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + endTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + reportingCondition: + description: >- + Specifies the condition under which the producer will + report to the consumer about the compiled log data. + required: + - reportingType + properties: + reportingType: + description: >- + Specifies the type of reporting condition. Permitted + values: - REPORTING_ON_COMPILATION: the producer + shall notify the consumer once the compilation of + the + collected logging data into a file is completed and a new log report is available. + - NO_REPORTING: no reporting is requested (the + consumer can query the logging jobs to know about + the + availability of new log reports). + type: string + enum: + - REPORTING_ON_COMPILATION + - NO_REPORTING + minimumReportingPeriod: + description: >- + Specifies the minimum periodicity at which the + producer will report to the consumer about the + collected log information, in seconds. + type: integer + format: int32 + compileBySizeValue: + description: >- + An indicative size threshold for compiling the collected + log data, in bytes. It is used when the compilation is + based on the size of the collected log data. If not + present, a default value as specified with the + "defaultLogCompileBySizeValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + compileByTimerValue: + description: >- + The periodicity threshold for compiling the filtered + log, in seconds. It is used when the compilation is + based on a timer (e.g., every 24 hours). If not present, + a default value as specified with the + "defaultLogCompileByTimerValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + securityConf: + description: >- + Configuration about the security aspects of the logging + job. + type: object + properties: + logFileEncryption: + description: >- + Information about the encryption of the compiled log + files. Shall be present if the log file is requested + to be encrypted. + required: + - encryptionCertificate + - cipherAlgorithm + type: object + properties: + encryptionCertificate: + description: >- + X.509 certificate with the public key to use for + the encryption of the compiled log file. + type: string + cipherAlgorithm: + description: >- + Cryptographic algorithm to be used for the + encryption of the compiled log file. More than + one algorithm can be provided from higher (lower + array index) to lower (higher array index) + precedence. Valid values are: "AES-CBC-128", + "AES-GCM-128", "AES-CBC-256", and "AES-GCM-256", + as specified in clause 6.5 of ETSI GS NFV-SEC + 012 + type: array + items: + type: string + minItems: 1 + encryptAndSignOrder: + description: >- + Indication about the order in signing and + encrypting the compiled log file. Valid values + are: "encryptFirst", to apply the order "first + encrypt, then sign", and "signFirst" for the + order "first sign, then encrypt". Default value + is "encryptFirst". + type: string + logTransferSecurity: + description: >- + Information about the security measures for + retrieving/accessing the compiled log files. + type: object + properties: + publicKey: + description: >- + The public key of the API consumer used for the + client authentication with the file server. + Shall be provided if required by the type of + transfer protocol. May be omitted if the key has + been provided to the API producer by other + means, or if it has already been provided in + some previous CreateLoggingJobRequest issued by + the same API consumer, whose public key has not + changed. + type: string + logReports: + description: >- + Information about available log reports created by the + logging job. + type: array + items: + type: object + required: + - logReportId + - logReportLoc + properties: + logReportId: + description: > + An identifier with the intention of being globally + unique. + type: string + logReportLoc: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links for this resource. + type: object + required: + - self + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: >- + Links to resources representing the object instances + that are logged. Shall be present if the logged object + instance information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + LogReportAvailableNotification.Post: + description: Shall be returned when the notification has been delivered successfully. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + LogReportNotification.Get: + description: >- + Shall be returned to indicate that the notification endpoint has been + tested successfully. The response body shall be empty. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + schemas: + LogmSubscription: + description: >- + This type represents a subscription. It shall comply with the provisions + defined in table 8.6.2.3-1. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: >- + This type represents a filter that can be used to subscribe for + notifications related to log management events. It shall comply with + the provisions defined in table 8.6.3.7-1. 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). + type: object + properties: + objectInstanceFilter: + description: >- + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. It shall comply with the provisions defined in Table + 4.3.2.2-1. + type: object + anyOf: + - oneOf: + - required: + - manoServiceIds + - required: + - manoServiceNames + - oneOf: + - required: + - manoServiceInterfaceIds + - required: + - manoServiceInterfaceNames + - oneOf: + - required: + - consumedManoInterfaceIds + - required: + - consumedManoInterfaceNames + properties: + manoEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + manoServiceIds: + description: >- + If present, match NFV-MANO services with an instance + identifier listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + manoServiceNames: + description: >- + If present, match NFV-MANO services with an NFV-MANO service + name listed in this attribute. + type: array + items: + type: string + manoServiceInterfaceIds: + description: >- + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + manoServiceInterfaceNames: + description: >- + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this attribute. + type: array + items: + type: string + consumedManoInterfaceIds: + description: >- + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + consumedManoInterfaceNames: + description: >- + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this attribute. + type: array + items: + type: string + notificationTypes: + description: >- + Match particular notification types. Permitted values: - + LogReportAvailableNotification + type: string + enum: + - LogReportAvailableNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links to resources related to this resource. + type: object + required: + - self + properties: + self: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + LogmNotificationsFilter: + description: >- + This type represents a filter that can be used to subscribe for + notifications related to log management events. It shall comply with the + provisions defined in table 8.6.3.7-1. 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). + type: object + properties: + objectInstanceFilter: + description: >- + This type represents subscription filter criteria to match NFV-MANO + functional entities and their associated managed objects. It shall + comply with the provisions defined in Table 4.3.2.2-1. + type: object + anyOf: + - oneOf: + - required: + - manoServiceIds + - required: + - manoServiceNames + - oneOf: + - required: + - manoServiceInterfaceIds + - required: + - manoServiceInterfaceNames + - oneOf: + - required: + - consumedManoInterfaceIds + - required: + - consumedManoInterfaceNames + properties: + manoEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + manoServiceIds: + description: >- + If present, match NFV-MANO services with an instance identifier + listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + manoServiceNames: + description: >- + If present, match NFV-MANO services with an NFV-MANO service + name listed in this attribute. + type: array + items: + type: string + manoServiceInterfaceIds: + description: >- + If present, match NFV-MANO functional entity produced interfaces + with an instance identifier listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + manoServiceInterfaceNames: + description: >- + If present, match NFV-MANO functional entity produced interfaces + with an instance Name listed in this attribute. + type: array + items: + type: string + consumedManoInterfaceIds: + description: >- + If present, match NFV-MANO functional entity consumed interfaces + with an instance identifier listed in this attribute. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + consumedManoInterfaceNames: + description: >- + If present, match NFV-MANO functional entity consumed interfaces + with an instance Name listed in this attribute. + type: array + items: + type: string + notificationTypes: + description: >- + Match particular notification types. Permitted values: - + LogReportAvailableNotification + type: string + enum: + - LogReportAvailableNotification + ManoEntitySubscriptionFilter: + description: >- + This type represents subscription filter criteria to match NFV-MANO + functional entities and their associated managed objects. It shall + comply with the provisions defined in Table 4.3.2.2-1. + type: object + anyOf: + - oneOf: + - required: + - manoServiceIds + - required: + - manoServiceNames + - oneOf: + - required: + - manoServiceInterfaceIds + - required: + - manoServiceInterfaceNames + - oneOf: + - required: + - consumedManoInterfaceIds + - required: + - consumedManoInterfaceNames + properties: + manoEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + manoServiceIds: + description: >- + If present, match NFV-MANO services with an instance identifier + listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceNames: + description: >- + If present, match NFV-MANO services with an NFV-MANO service name + listed in this attribute. + type: array + items: + type: string + manoServiceInterfaceIds: + description: >- + If present, match NFV-MANO functional entity produced interfaces + with an instance identifier listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceInterfaceNames: + description: >- + If present, match NFV-MANO functional entity produced interfaces + with an instance Name listed in this attribute. + type: array + items: + type: string + consumedManoInterfaceIds: + description: >- + If present, match NFV-MANO functional entity consumed interfaces + with an instance identifier listed in this attribute. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + consumedManoInterfaceNames: + description: >- + If present, match NFV-MANO functional entity consumed interfaces + with an instance Name listed in this attribute. + type: array + items: + type: string + CompileLogRequest: + description: > + This type represents a request to compile the logged data associated to + an object instance. It shall comply with the provisions defined in table + 8.6.2.8-1. + type: object + properties: + objectInstanceId: + description: > + This type represents the identifier to reference a managed object of + a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if attribute + "manoEntityComponents" in "ManoEntity" is supported by the API + producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: | + An identifier with the intention of being globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + required: + - type + - objectId + LogReport: + description: > + This type represents a log report, which provides information about a + compiled log and how to obtain it. It shall comply with the provisions + defined in table 8.6.2.7-1. + type: object + required: + - id + - objectInstanceId + - compilationTrigger + - readyTime + - fileFormat + - fileLocationInfo + - securityAndIntegrityInfo + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectInstanceId: + description: > + This type represents the identifier to reference a managed object of + a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if attribute + "manoEntityComponents" in "ManoEntity" is supported by the API + producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: | + An identifier with the intention of being globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + required: + - type + - objectId + compilationTrigger: + description: >- + The trigger for the compilation of the log file. + + Permitted values: - ON_DEMAND: created based on explicit request by + a client. - AUTOMATIC: created according to the logging job + compilation configuration. + type: string + enum: + - ON_DEMAND + - AUTOMATIC + readyTime: + description: > + Date-time stamp. Representation: String formatted according to IETF + RFC 3339. + type: string + format: date-time + expiryTime: + description: > + Date-time stamp. Representation: String formatted according to IETF + RFC 3339. + type: string + format: date-time + fileSize: + description: 'The size of the compiled log file in bytes, if known.' + type: integer + format: int32 + fileFormat: + description: The encoding used by the file. + type: string + fileLocationInfo: + description: >- + Location and address information of the compiled log file. The + consumer can use this information to obtain the compiled log file. + type: object + required: + - protocol + - fileEndpoint + properties: + protocol: + description: >- + Protocol over which the compiled log file can be retrieved. + + Permitted values: - HTTPS: transmission over HTTP Secure + (HTTPS). - SFTP: transmission over SSH file transfer protocol + (SFTP). - SCP: transmission over secure copy protocol (SCP). - + FTPS: transmission over file transfer protocol secure (FTPS), as + specified in IETF RFC 2228 [i.11], + using explicit mode as specified in IETF RFC 4217 [i.12]. If FTPS is supported, "private" protection level shall be used. + + HTTPS shall be supported, and other protocols may be supported. + type: string + enum: + - HTTPS + - SFTP + - SCP + - FTPS + fileEndpoint: + description: >- + The host name (or IP address), optionally a port number (if the + host with the compile log file uses a non-standard port number + as per the supported transmission protocol), a valid file + directory path, and the file name of the compiled log file, or a + valid URL. + type: string + format: URI + securityAndIntegrityInfo: + description: >- + Security and integrity information for the compilation of the log + files. + type: object + required: + - algorithm + - hash + - logFileSignature + - signingCertificate + properties: + algorithm: + description: >- + Algorithm used to generate the hash of the compiled log file. + Only SHA-256 and SHA-512 shall be used + type: string + hash: + description: >- + The hexadecimal value of the hash of the compiled log file. The + hash shall be computed from the encrypted compiled log file, in + case the encryption applies. + type: string + encryptionPublicKey: + description: >- + Public key used for the encryption of the compiled log file. + Shall be present if the compiled log file is encrypted. + type: string + cipherAlgorithm: + description: >- + The cryptographic algorithm used for the encryption. Shall be + present if the compiled log file is encrypted. Valid values are: + "AES-CBC-128", "AES-GCM-128", "AES-CBC-256", and "AES-GCM-256", + as specified in clause 6.5 of ETSI GS NFV-SEC 012 [14]. + type: string + logFileSignature: + description: >- + Signature to the compiled log file generated with the NFV-MANO + functional entity’s private key, which is used to ensure the + authenticity of the compiled log file. The signature shall be + applied according to the "encryptAndSignOrder" of the + "LoggingJobConfig". + type: string + signingCertificate: + description: >- + X.509 certificate with the NFV-MANO functional entity’s public + key used for verifying the log report and compiled log file + signatures. + type: string + _links: + description: Links for this resource. + type: object + required: + - self + properties: + self: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: >- + Links to resources representing the object instances that are + logged. Shall be present if the logged object instance + information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an absolute + URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + LogmSubscriptionRequest: + description: >- + Information on application context created by the MEC system type: + object + required: + - callbackUri + type: object + properties: + filter: + description: >- + This type represents a filter that can be used to subscribe for + notifications related to log management events. It shall comply with + the provisions defined in table 8.6.3.7-1. 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). + type: object + properties: + objectInstanceFilter: + description: >- + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. It shall comply with the provisions defined in Table + 4.3.2.2-1. + type: object + anyOf: + - oneOf: + - required: + - manoServiceIds + - required: + - manoServiceNames + - oneOf: + - required: + - manoServiceInterfaceIds + - required: + - manoServiceInterfaceNames + - oneOf: + - required: + - consumedManoInterfaceIds + - required: + - consumedManoInterfaceNames + properties: + manoEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + manoServiceIds: + description: >- + If present, match NFV-MANO services with an instance + identifier listed in this attribute. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + manoServiceNames: + description: >- + If present, match NFV-MANO services with an NFV-MANO service + name listed in this attribute. + type: array + items: + type: string + manoServiceInterfaceIds: + description: >- + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + manoServiceInterfaceNames: + description: >- + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this attribute. + type: array + items: + type: string + consumedManoInterfaceIds: + description: >- + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + consumedManoInterfaceNames: + description: >- + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this attribute. + type: array + items: + type: string + notificationTypes: + description: >- + Match particular notification types. Permitted values: - + LogReportAvailableNotification + type: string + enum: + - LogReportAvailableNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + authentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization which the + API consumer is willing to accept when receiving a notification. + Permitted values: * BASIC: In every HTTP request to the + notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification endpoint is + sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + description: > + Parameters for authentication/authorization using BASIC. Shall + be present if authType is "BASIC" and the contained information + has not been provisioned out of band. Shall be absent otherwise. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + paramsOauth2ClientCredentials: + description: > + Parameters for authentication/authorization using + OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is + "OAUTH2_CLIENT_CREDENTIALS" and the contained information has + not been provisioned out of band. Shall be absent otherwise. + type: object + properties: + clientId: + description: > + Client identifier to be used in the access token request of + the OAuth 2.0 client credentials grant type. Shall be + present if it has not been provisioned out of band. The + clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are + used to obtain authorization for API requests. Client + credentials may differ between subscriptions. The value of + clientPassword should be generated by a random process. + type: string + clientPassword: + description: > + Client password to be used in the access token request of + the OAuth 2.0 client credentials grant type. Shall be + present if it has not been provisioned out of band. The + clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are + used to obtain authorization for API requests. Client + credentials may differ between subscriptions. The value of + clientPassword should be generated by a random process. + type: string + tokenEndpoint: + description: | + String formatted according to IETF RFC 3986. + type: string + CreateLoggingJobRequest: + description: Information on application context created by the MEC system + type: object + required: + - objectInstanceIds + - jobCriteria + - jobConfig + properties: + objectInstanceIds: + description: >- + Identifiers of the object instance for which logging information is + requested to be collected. This attribute shall contain the + identifier of the instance of the object to be logged according to + their type. If more than one identifier is provided, values shall + all refer to object instances of the same type, for which the same + criteria is then applicable. + type: array + minItems: 1 + items: + description: > + This type represents the identifier to reference a managed object + of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if attribute + "manoEntityComponents" in "ManoEntity" is supported by the API + producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: | + An identifier with the intention of being globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + required: + - type + - objectId + jobCriteria: + description: >- + This type represents collection criteria for logging jobs. It shall + comply with the provisions defined in table 8.6.3.2-1. + type: object + required: + - loggingType + properties: + loggingType: + description: >- + Type of logging. This defines the types of logged information to + collect. + + Permitted values: - MESSAGES: logged NFV-MANO service interface + messages. - SERVICES: logged messages about processes pertaining + to NFV-MANO services. - SYSTEM: logged messages about the + NFV-MANO functional entity’s system enabled by the provider. + type: string + enum: + - MESSAGES + - SERVICES + - SYSTEM + messagesLogDetail: + description: >- + This type represents criteria for logging jobs to collect logged + messages on NFV-MANO service interfaces. It shall comply with + the provisions defined in table 8.6.3.3-1. + type: object + required: + - direction + properties: + direction: + description: >- + The direction of the interface messages to match. + + Permitted values: - IN: input messages into the interface. - + OUT: output messages from the interface. - ALL: both input + and output messages into/from the interface. + type: string + enum: + - IN + - OUT + - ALL + matchingPatterns: + description: >- + Patterns to be matched in the interface message. If + provided, only messages that match all the values provided + in the sub-attributes shall be logged. An API consumer can + provide more than one "matchingPattern" if combinations of + patterns are to be considered to match diverse sets of + interface messages. + type: array + items: + type: object + anyOf: + - required: + - srcIpAddress + - required: + - dstIpAddress + - required: + - requestMethod + - required: + - requestUriPattern + - required: + - responseCodes + properties: + srcIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of an + IPV4 address, string that consists of four decimal + integers separated by dots, each integer ranging from + 0 to 255. In case of an IPV6 address, string that + consists of groups of zero to four hexadecimal digits, + separated by colons. + type: string + format: IP + requestMethod: + description: >- + HTTP request method to be matched. To match, the HTTP + request method of the message shall be the same as the + value of this attribute. Valid values are specified in + IETF RFC 7231. The API producer shall support this + attribute. + type: string + requestUriPattern: + description: >- + Substring to be matched in the request URI. To match, + the request URI shall include the value of + this attribute as a substring. This is typically used to match messages which associate to RESTful + resources, or to a specific API (e.g., by using the "apiName" of the API). The API producer shall + support this attribute. + type: string + dstIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of an + IPV4 address, string that consists of four decimal + integers separated by dots, each integer ranging from + 0 to 255. In case of an IPV6 address, string that + consists of groups of zero to four hexadecimal digits, + separated by colons. + type: string + format: IP + responseCodes: + description: >- + HTTP response codes or patterns to match. A list of + all valid HTTP response codes and their specification + documents can be obtained from the HTTP status code + registry. In addition, if supported, the following + patterns may be used (case-insensitive): - "1XX": for + matching any kind of informational response. - "2XX": + for matching any kind of success response. - "3XX": + for matching any kind redirection response. - "4XX": + for matching any kind of client error response. - + "5XX": for matching any kind of server error response. + + The API producer shall support this attribute + type: array + items: + type: string + headerField: + description: >- + Name of the header field to be matched. The header + field name shall be one of the supported fields in a + request message as defined in clause 4.2.2 of ETSI GS + NFV-SOL 013 or in a response message as defined in + clause 4.2.3 of ETSI GS NFV-SOL 013, in accordance + with the "direction" criteria input. The API producer + may support this attribute. + type: string + headerValue: + description: >- + Value in the header to be matched. To match, the value + in the header field indicated by "headerField" shall + be the same as in this attribute. Shall be provided if + a "headerField" is provided. The API producer may + support this attribute. + type: string + bodyValues: + description: >- + A list of strings to be matched in the body part of + the interface message (e.g., the body of an HTTP + message). If provided, only messages with text in the + body part containing all the values from the list + shall match the filter. In addition to a matching + filter for the body of the message, a corresponding + "headerField" filter shall also be provided, with + "headerField" set to "Content-Type", to restrict + matching to appropriate textual payloads such as + "application/json" or "text/plain". The API producer + may support this attribute + type: string + servicesLogDetail: + description: >- + This type represents criteria for logging jobs to collect logged + messages about processes pertaining to NFV-MANO services. It + shall comply with the provisions defined in table 8.6.3.4-1. + type: object + properties: + logGarbageCollection: + description: >- + Indicates to collect logged information about garbage + collection processes associated to NFV-MANO services. + type: boolean + systemLogDetail: + description: >- + This type represents criteria for logging jobs to collect logged + system events of the NFV-MANO functional entity. It shall comply + with the provisions defined in table 8.6.3.5-1. + type: object + required: + - systemLogs + - severityLevel + properties: + systemLogs: + description: > + This type represents a list of key-value pairs. The order of + the pairs in the list is not significant. In JSON, a set of + keyvalue pairs is represented as an object. It shall comply + with the provisions defined in clause 4 of IETF RFC 8259. In + the following example, a list of key-value pairs with four + keys ("aString", "aNumber", "anArray" and "anObject") is + provided to illustrate that the values associated with + different keys can be of different type. + type: object + severityLevelScheme: + description: >- + Identifies a severity level scheme. The default value is + "rfc5424", which represents the set of values specified in + the clause 6.2.1, table 2 of IETF RFC 5424. Other values may + be used to signal different schemes. + type: string + severityLevel: + description: >- + The severity level, which determines the severity of the + system messages to collect. The NFV-MANO functional entity + shall collect system log messages, as indicated by the + "systemLogs" attribute, with severity levels lower (i.e., + more severe) or equal to the value provided by this present + attribute. + type: number + jobConfig: + description: >- + This type represents configuration data for a logging job. It shall + comply with the provisions defined in table 8.6.3.6-1. NOTE: The + present document version does not specify the support for "log + compilation and reporting based on events" as specified in clause + 6.6.2.2 of ETSI GS NFV-IFA 031. + type: object + required: + - reportingCondition + - securityConf + properties: + startTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + endTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + reportingCondition: + description: >- + Specifies the condition under which the producer will report to + the consumer about the compiled log data. + required: + - reportingType + properties: + reportingType: + description: >- + Specifies the type of reporting condition. Permitted values: + - REPORTING_ON_COMPILATION: the producer shall notify the + consumer once the compilation of the + collected logging data into a file is completed and a new log report is available. + - NO_REPORTING: no reporting is requested (the consumer can + query the logging jobs to know about the + availability of new log reports). + type: string + enum: + - REPORTING_ON_COMPILATION + - NO_REPORTING + minimumReportingPeriod: + description: >- + Specifies the minimum periodicity at which the producer will + report to the consumer about the collected log information, + in seconds. + type: integer + format: int32 + compileBySizeValue: + description: >- + An indicative size threshold for compiling the collected log + data, in bytes. It is used when the compilation is based on the + size of the collected log data. If not present, a default value + as specified with the "defaultLogCompileBySizeValue" + configuration in the "ManoEntityConfigurableParams" shall be + used + type: integer + format: int32 + compileByTimerValue: + description: >- + The periodicity threshold for compiling the filtered log, in + seconds. It is used when the compilation is based on a timer + (e.g., every 24 hours). If not present, a default value as + specified with the "defaultLogCompileByTimerValue" configuration + in the "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + securityConf: + description: Configuration about the security aspects of the logging job. + type: object + properties: + logFileEncryption: + description: >- + Information about the encryption of the compiled log files. + Shall be present if the log file is requested to be + encrypted. + required: + - encryptionCertificate + - cipherAlgorithm + type: object + properties: + encryptionCertificate: + description: >- + X.509 certificate with the public key to use for the + encryption of the compiled log file. + type: string + cipherAlgorithm: + description: >- + Cryptographic algorithm to be used for the encryption of + the compiled log file. More than one algorithm can be + provided from higher (lower array index) to lower + (higher array index) precedence. Valid values are: + "AES-CBC-128", "AES-GCM-128", "AES-CBC-256", and + "AES-GCM-256", as specified in clause 6.5 of ETSI GS + NFV-SEC 012 + type: array + items: + type: string + minItems: 1 + encryptAndSignOrder: + description: >- + Indication about the order in signing and encrypting the + compiled log file. Valid values are: "encryptFirst", to + apply the order "first encrypt, then sign", and + "signFirst" for the order "first sign, then encrypt". + Default value is "encryptFirst". + type: string + logTransferSecurity: + description: >- + Information about the security measures for + retrieving/accessing the compiled log files. + type: object + properties: + publicKey: + description: >- + The public key of the API consumer used for the client + authentication with the file server. Shall be provided + if required by the type of transfer protocol. May be + omitted if the key has been provided to the API producer + by other means, or if it has already been provided in + some previous CreateLoggingJobRequest issued by the same + API consumer, whose public key has not changed. + type: string + LoggingJob: + description: >- + This type represents a logging job. It shall comply with the provisions + defined in table 8.6.2.6-1. + type: object + required: + - id + - objectInstanceIds + - jobCriteria + - jobConfig + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + objectInstanceIds: + description: >- + Identifiers of the object instance for which logging information is + collected. This attribute shall contain the identifier of the + instance of the object that is logged according to their type. + type: array + items: + description: > + This type represents the identifier to reference a managed object + of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if attribute + "manoEntityComponents" in "ManoEntity" is supported by the API + producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: | + An identifier with the intention of being globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + required: + - type + - objectId + jobCriteria: + description: >- + This type represents collection criteria for logging jobs. It shall + comply with the provisions defined in table 8.6.3.2-1. + type: object + required: + - loggingType + properties: + loggingType: + description: >- + Type of logging. This defines the types of logged information to + collect. + + Permitted values: - MESSAGES: logged NFV-MANO service interface + messages. - SERVICES: logged messages about processes pertaining + to NFV-MANO services. - SYSTEM: logged messages about the + NFV-MANO functional entity’s system enabled by the provider. + type: string + enum: + - MESSAGES + - SERVICES + - SYSTEM + messagesLogDetail: + description: >- + This type represents criteria for logging jobs to collect logged + messages on NFV-MANO service interfaces. It shall comply with + the provisions defined in table 8.6.3.3-1. + type: object + required: + - direction + properties: + direction: + description: >- + The direction of the interface messages to match. + + Permitted values: - IN: input messages into the interface. - + OUT: output messages from the interface. - ALL: both input + and output messages into/from the interface. + type: string + enum: + - IN + - OUT + - ALL + matchingPatterns: + description: >- + Patterns to be matched in the interface message. If + provided, only messages that match all the values provided + in the sub-attributes shall be logged. An API consumer can + provide more than one "matchingPattern" if combinations of + patterns are to be considered to match diverse sets of + interface messages. + type: array + items: + type: object + anyOf: + - required: + - srcIpAddress + - required: + - dstIpAddress + - required: + - requestMethod + - required: + - requestUriPattern + - required: + - responseCodes + properties: + srcIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of an + IPV4 address, string that consists of four decimal + integers separated by dots, each integer ranging from + 0 to 255. In case of an IPV6 address, string that + consists of groups of zero to four hexadecimal digits, + separated by colons. + type: string + format: IP + requestMethod: + description: >- + HTTP request method to be matched. To match, the HTTP + request method of the message shall be the same as the + value of this attribute. Valid values are specified in + IETF RFC 7231. The API producer shall support this + attribute. + type: string + requestUriPattern: + description: >- + Substring to be matched in the request URI. To match, + the request URI shall include the value of + this attribute as a substring. This is typically used to match messages which associate to RESTful + resources, or to a specific API (e.g., by using the "apiName" of the API). The API producer shall + support this attribute. + type: string + dstIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of an + IPV4 address, string that consists of four decimal + integers separated by dots, each integer ranging from + 0 to 255. In case of an IPV6 address, string that + consists of groups of zero to four hexadecimal digits, + separated by colons. + type: string + format: IP + responseCodes: + description: >- + HTTP response codes or patterns to match. A list of + all valid HTTP response codes and their specification + documents can be obtained from the HTTP status code + registry. In addition, if supported, the following + patterns may be used (case-insensitive): - "1XX": for + matching any kind of informational response. - "2XX": + for matching any kind of success response. - "3XX": + for matching any kind redirection response. - "4XX": + for matching any kind of client error response. - + "5XX": for matching any kind of server error response. + + The API producer shall support this attribute + type: array + items: + type: string + headerField: + description: >- + Name of the header field to be matched. The header + field name shall be one of the supported fields in a + request message as defined in clause 4.2.2 of ETSI GS + NFV-SOL 013 or in a response message as defined in + clause 4.2.3 of ETSI GS NFV-SOL 013, in accordance + with the "direction" criteria input. The API producer + may support this attribute. + type: string + headerValue: + description: >- + Value in the header to be matched. To match, the value + in the header field indicated by "headerField" shall + be the same as in this attribute. Shall be provided if + a "headerField" is provided. The API producer may + support this attribute. + type: string + bodyValues: + description: >- + A list of strings to be matched in the body part of + the interface message (e.g., the body of an HTTP + message). If provided, only messages with text in the + body part containing all the values from the list + shall match the filter. In addition to a matching + filter for the body of the message, a corresponding + "headerField" filter shall also be provided, with + "headerField" set to "Content-Type", to restrict + matching to appropriate textual payloads such as + "application/json" or "text/plain". The API producer + may support this attribute + type: string + servicesLogDetail: + description: >- + This type represents criteria for logging jobs to collect logged + messages about processes pertaining to NFV-MANO services. It + shall comply with the provisions defined in table 8.6.3.4-1. + type: object + properties: + logGarbageCollection: + description: >- + Indicates to collect logged information about garbage + collection processes associated to NFV-MANO services. + type: boolean + systemLogDetail: + description: >- + This type represents criteria for logging jobs to collect logged + system events of the NFV-MANO functional entity. It shall comply + with the provisions defined in table 8.6.3.5-1. + type: object + required: + - systemLogs + - severityLevel + properties: + systemLogs: + description: > + This type represents a list of key-value pairs. The order of + the pairs in the list is not significant. In JSON, a set of + keyvalue pairs is represented as an object. It shall comply + with the provisions defined in clause 4 of IETF RFC 8259. In + the following example, a list of key-value pairs with four + keys ("aString", "aNumber", "anArray" and "anObject") is + provided to illustrate that the values associated with + different keys can be of different type. + type: object + severityLevelScheme: + description: >- + Identifies a severity level scheme. The default value is + "rfc5424", which represents the set of values specified in + the clause 6.2.1, table 2 of IETF RFC 5424. Other values may + be used to signal different schemes. + type: string + severityLevel: + description: >- + The severity level, which determines the severity of the + system messages to collect. The NFV-MANO functional entity + shall collect system log messages, as indicated by the + "systemLogs" attribute, with severity levels lower (i.e., + more severe) or equal to the value provided by this present + attribute. + type: number + jobConfig: + description: >- + This type represents configuration data for a logging job. It shall + comply with the provisions defined in table 8.6.3.6-1. NOTE: The + present document version does not specify the support for "log + compilation and reporting based on events" as specified in clause + 6.6.2.2 of ETSI GS NFV-IFA 031. + type: object + required: + - reportingCondition + - securityConf + properties: + startTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + endTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + reportingCondition: + description: >- + Specifies the condition under which the producer will report to + the consumer about the compiled log data. + required: + - reportingType + properties: + reportingType: + description: >- + Specifies the type of reporting condition. Permitted values: + - REPORTING_ON_COMPILATION: the producer shall notify the + consumer once the compilation of the + collected logging data into a file is completed and a new log report is available. + - NO_REPORTING: no reporting is requested (the consumer can + query the logging jobs to know about the + availability of new log reports). + type: string + enum: + - REPORTING_ON_COMPILATION + - NO_REPORTING + minimumReportingPeriod: + description: >- + Specifies the minimum periodicity at which the producer will + report to the consumer about the collected log information, + in seconds. + type: integer + format: int32 + compileBySizeValue: + description: >- + An indicative size threshold for compiling the collected log + data, in bytes. It is used when the compilation is based on the + size of the collected log data. If not present, a default value + as specified with the "defaultLogCompileBySizeValue" + configuration in the "ManoEntityConfigurableParams" shall be + used + type: integer + format: int32 + compileByTimerValue: + description: >- + The periodicity threshold for compiling the filtered log, in + seconds. It is used when the compilation is based on a timer + (e.g., every 24 hours). If not present, a default value as + specified with the "defaultLogCompileByTimerValue" configuration + in the "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + securityConf: + description: Configuration about the security aspects of the logging job. + type: object + properties: + logFileEncryption: + description: >- + Information about the encryption of the compiled log files. + Shall be present if the log file is requested to be + encrypted. + required: + - encryptionCertificate + - cipherAlgorithm + type: object + properties: + encryptionCertificate: + description: >- + X.509 certificate with the public key to use for the + encryption of the compiled log file. + type: string + cipherAlgorithm: + description: >- + Cryptographic algorithm to be used for the encryption of + the compiled log file. More than one algorithm can be + provided from higher (lower array index) to lower + (higher array index) precedence. Valid values are: + "AES-CBC-128", "AES-GCM-128", "AES-CBC-256", and + "AES-GCM-256", as specified in clause 6.5 of ETSI GS + NFV-SEC 012 + type: array + items: + type: string + minItems: 1 + encryptAndSignOrder: + description: >- + Indication about the order in signing and encrypting the + compiled log file. Valid values are: "encryptFirst", to + apply the order "first encrypt, then sign", and + "signFirst" for the order "first sign, then encrypt". + Default value is "encryptFirst". + type: string + logTransferSecurity: + description: >- + Information about the security measures for + retrieving/accessing the compiled log files. + type: object + properties: + publicKey: + description: >- + The public key of the API consumer used for the client + authentication with the file server. Shall be provided + if required by the type of transfer protocol. May be + omitted if the key has been provided to the API producer + by other means, or if it has already been provided in + some previous CreateLoggingJobRequest issued by the same + API consumer, whose public key has not changed. + type: string + logReports: + description: Information about available log reports created by the logging job. + type: array + items: + type: object + required: + - logReportId + - logReportLoc + properties: + logReportId: + description: | + An identifier with the intention of being globally unique. + type: string + logReportLoc: + description: > + This type represents a link to a resource using an absolute + URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: Links for this resource. + type: object + required: + - self + properties: + self: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objects: + description: >- + Links to resources representing the object instances that are + logged. Shall be present if the logged object instance + information is accessible as a resource. + type: array + items: + description: > + This type represents a link to a resource using an absolute + URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + LoggingJobCriteria: + description: >- + This type represents collection criteria for logging jobs. It shall + comply with the provisions defined in table 8.6.3.2-1. + type: object + required: + - loggingType + properties: + loggingType: + description: >- + Type of logging. This defines the types of logged information to + collect. + + Permitted values: - MESSAGES: logged NFV-MANO service interface + messages. - SERVICES: logged messages about processes pertaining to + NFV-MANO services. - SYSTEM: logged messages about the NFV-MANO + functional entity’s system enabled by the provider. + type: string + enum: + - MESSAGES + - SERVICES + - SYSTEM + messagesLogDetail: + description: >- + This type represents criteria for logging jobs to collect logged + messages on NFV-MANO service interfaces. It shall comply with the + provisions defined in table 8.6.3.3-1. + type: object + required: + - direction + properties: + direction: + description: >- + The direction of the interface messages to match. + + Permitted values: - IN: input messages into the interface. - + OUT: output messages from the interface. - ALL: both input and + output messages into/from the interface. + type: string + enum: + - IN + - OUT + - ALL + matchingPatterns: + description: >- + Patterns to be matched in the interface message. If provided, + only messages that match all the values provided in the + sub-attributes shall be logged. An API consumer can provide more + than one "matchingPattern" if combinations of patterns are to be + considered to match diverse sets of interface messages. + type: array + items: + type: object + anyOf: + - required: + - srcIpAddress + - required: + - dstIpAddress + - required: + - requestMethod + - required: + - requestUriPattern + - required: + - responseCodes + properties: + srcIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of an + IPV4 address, string that consists of four decimal + integers separated by dots, each integer ranging from 0 to + 255. In case of an IPV6 address, string that consists of + groups of zero to four hexadecimal digits, separated by + colons. + type: string + format: IP + requestMethod: + description: >- + HTTP request method to be matched. To match, the HTTP + request method of the message shall be the same as the + value of this attribute. Valid values are specified in + IETF RFC 7231. The API producer shall support this + attribute. + type: string + requestUriPattern: + description: >- + Substring to be matched in the request URI. To match, the + request URI shall include the value of + this attribute as a substring. This is typically used to match messages which associate to RESTful + resources, or to a specific API (e.g., by using the "apiName" of the API). The API producer shall + support this attribute. + type: string + dstIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of an + IPV4 address, string that consists of four decimal + integers separated by dots, each integer ranging from 0 to + 255. In case of an IPV6 address, string that consists of + groups of zero to four hexadecimal digits, separated by + colons. + type: string + format: IP + responseCodes: + description: >- + HTTP response codes or patterns to match. A list of all + valid HTTP response codes and their specification + documents can be obtained from the HTTP status code + registry. In addition, if supported, the following + patterns may be used (case-insensitive): - "1XX": for + matching any kind of informational response. - "2XX": for + matching any kind of success response. - "3XX": for + matching any kind redirection response. - "4XX": for + matching any kind of client error response. - "5XX": for + matching any kind of server error response. + + The API producer shall support this attribute + type: array + items: + type: string + headerField: + description: >- + Name of the header field to be matched. The header field + name shall be one of the supported fields in a request + message as defined in clause 4.2.2 of ETSI GS NFV-SOL 013 + or in a response message as defined in clause 4.2.3 of + ETSI GS NFV-SOL 013, in accordance with the "direction" + criteria input. The API producer may support this + attribute. + type: string + headerValue: + description: >- + Value in the header to be matched. To match, the value in + the header field indicated by "headerField" shall be the + same as in this attribute. Shall be provided if a + "headerField" is provided. The API producer may support + this attribute. + type: string + bodyValues: + description: >- + A list of strings to be matched in the body part of the + interface message (e.g., the body of an HTTP message). If + provided, only messages with text in the body part + containing all the values from the list shall match the + filter. In addition to a matching filter for the body of + the message, a corresponding "headerField" filter shall + also be provided, with "headerField" set to + "Content-Type", to restrict matching to appropriate + textual payloads such as "application/json" or + "text/plain". The API producer may support this attribute + type: string + servicesLogDetail: + description: >- + This type represents criteria for logging jobs to collect logged + messages about processes pertaining to NFV-MANO services. It shall + comply with the provisions defined in table 8.6.3.4-1. + type: object + properties: + logGarbageCollection: + description: >- + Indicates to collect logged information about garbage collection + processes associated to NFV-MANO services. + type: boolean + systemLogDetail: + description: >- + This type represents criteria for logging jobs to collect logged + system events of the NFV-MANO functional entity. It shall comply + with the provisions defined in table 8.6.3.5-1. + type: object + required: + - systemLogs + - severityLevel + properties: + systemLogs: + description: > + This type represents a list of key-value pairs. The order of the + pairs in the list is not significant. In JSON, a set of keyvalue + pairs is represented as an object. It shall comply with the + provisions defined in clause 4 of IETF RFC 8259. In the + following example, a list of key-value pairs with four keys + ("aString", "aNumber", "anArray" and "anObject") is provided to + illustrate that the values associated with different keys can be + of different type. + type: object + severityLevelScheme: + description: >- + Identifies a severity level scheme. The default value is + "rfc5424", which represents the set of values specified in the + clause 6.2.1, table 2 of IETF RFC 5424. Other values may be used + to signal different schemes. + type: string + severityLevel: + description: >- + The severity level, which determines the severity of the system + messages to collect. The NFV-MANO functional entity shall + collect system log messages, as indicated by the "systemLogs" + attribute, with severity levels lower (i.e., more severe) or + equal to the value provided by this present attribute. + type: number + LoggingJobMessagesCriteria: + description: >- + This type represents criteria for logging jobs to collect logged + messages on NFV-MANO service interfaces. It shall comply with the + provisions defined in table 8.6.3.3-1. + type: object + required: + - direction + properties: + direction: + description: >- + The direction of the interface messages to match. + + Permitted values: - IN: input messages into the interface. - OUT: + output messages from the interface. - ALL: both input and output + messages into/from the interface. + type: string + enum: + - IN + - OUT + - ALL + matchingPatterns: + description: >- + Patterns to be matched in the interface message. If provided, only + messages that match all the values provided in the sub-attributes + shall be logged. An API consumer can provide more than one + "matchingPattern" if combinations of patterns are to be considered + to match diverse sets of interface messages. + type: array + items: + type: object + anyOf: + - required: + - srcIpAddress + - required: + - dstIpAddress + - required: + - requestMethod + - required: + - requestUriPattern + - required: + - responseCodes + properties: + srcIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of an IPV4 + address, string that consists of four decimal integers + separated by dots, each integer ranging from 0 to 255. In case + of an IPV6 address, string that consists of groups of zero to + four hexadecimal digits, separated by colons. + type: string + format: IP + requestMethod: + description: >- + HTTP request method to be matched. To match, the HTTP request + method of the message shall be the same as the value of this + attribute. Valid values are specified in IETF RFC 7231. The + API producer shall support this attribute. + type: string + requestUriPattern: + description: >- + Substring to be matched in the request URI. To match, the + request URI shall include the value of + this attribute as a substring. This is typically used to match messages which associate to RESTful + resources, or to a specific API (e.g., by using the "apiName" of the API). The API producer shall + support this attribute. + type: string + dstIpAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of an IPV4 + address, string that consists of four decimal integers + separated by dots, each integer ranging from 0 to 255. In case + of an IPV6 address, string that consists of groups of zero to + four hexadecimal digits, separated by colons. + type: string + format: IP + responseCodes: + description: >- + HTTP response codes or patterns to match. A list of all valid + HTTP response codes and their specification documents can be + obtained from the HTTP status code registry. In addition, if + supported, the following patterns may be used + (case-insensitive): - "1XX": for matching any kind of + informational response. - "2XX": for matching any kind of + success response. - "3XX": for matching any kind redirection + response. - "4XX": for matching any kind of client error + response. - "5XX": for matching any kind of server error + response. + + The API producer shall support this attribute + type: array + items: + type: string + headerField: + description: >- + Name of the header field to be matched. The header field name + shall be one of the supported fields in a request message as + defined in clause 4.2.2 of ETSI GS NFV-SOL 013 or in a + response message as defined in clause 4.2.3 of ETSI GS NFV-SOL + 013, in accordance with the "direction" criteria input. The + API producer may support this attribute. + type: string + headerValue: + description: >- + Value in the header to be matched. To match, the value in the + header field indicated by "headerField" shall be the same as + in this attribute. Shall be provided if a "headerField" is + provided. The API producer may support this attribute. + type: string + bodyValues: + description: >- + A list of strings to be matched in the body part of the + interface message (e.g., the body of an HTTP message). If + provided, only messages with text in the body part containing + all the values from the list shall match the filter. In + addition to a matching filter for the body of the message, a + corresponding "headerField" filter shall also be provided, + with "headerField" set to "Content-Type", to restrict matching + to appropriate textual payloads such as "application/json" or + "text/plain". The API producer may support this attribute + type: string + LoggingJobServicesCriteria: + description: >- + This type represents criteria for logging jobs to collect logged + messages about processes pertaining to NFV-MANO services. It shall + comply with the provisions defined in table 8.6.3.4-1. + type: object + properties: + logGarbageCollection: + description: >- + Indicates to collect logged information about garbage collection + processes associated to NFV-MANO services. + type: boolean + LoggingJobSystemCriteria: + description: >- + This type represents criteria for logging jobs to collect logged system + events of the NFV-MANO functional entity. It shall comply with the + provisions defined in table 8.6.3.5-1. + type: object + required: + - systemLogs + - severityLevel + properties: + systemLogs: + description: > + This type represents a list of key-value pairs. The order of the + pairs in the list is not significant. In JSON, a set of keyvalue + pairs is represented as an object. It shall comply with the + provisions defined in clause 4 of IETF RFC 8259. In the following + example, a list of key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided to illustrate that + the values associated with different keys can be of different type. + type: object + severityLevelScheme: + description: >- + Identifies a severity level scheme. The default value is "rfc5424", + which represents the set of values specified in the clause 6.2.1, + table 2 of IETF RFC 5424. Other values may be used to signal + different schemes. + type: string + severityLevel: + description: >- + The severity level, which determines the severity of the system + messages to collect. The NFV-MANO functional entity shall collect + system log messages, as indicated by the "systemLogs" attribute, + with severity levels lower (i.e., more severe) or equal to the value + provided by this present attribute. + type: number + LoggingJobConfig: + description: >- + This type represents configuration data for a logging job. It shall + comply with the provisions defined in table 8.6.3.6-1. NOTE: The present + document version does not specify the support for "log compilation and + reporting based on events" as specified in clause 6.6.2.2 of ETSI GS + NFV-IFA 031. + type: object + required: + - reportingCondition + - securityConf + properties: + startTime: + description: > + Date-time stamp. Representation: String formatted according to IETF + RFC 3339. + type: string + format: date-time + endTime: + description: > + Date-time stamp. Representation: String formatted according to IETF + RFC 3339. + type: string + format: date-time + reportingCondition: + description: >- + Specifies the condition under which the producer will report to the + consumer about the compiled log data. + required: + - reportingType + properties: + reportingType: + description: >- + Specifies the type of reporting condition. Permitted values: - + REPORTING_ON_COMPILATION: the producer shall notify the consumer + once the compilation of the + collected logging data into a file is completed and a new log report is available. + - NO_REPORTING: no reporting is requested (the consumer can + query the logging jobs to know about the + availability of new log reports). + type: string + enum: + - REPORTING_ON_COMPILATION + - NO_REPORTING + minimumReportingPeriod: + description: >- + Specifies the minimum periodicity at which the producer will + report to the consumer about the collected log information, in + seconds. + type: integer + format: int32 + compileBySizeValue: + description: >- + An indicative size threshold for compiling the collected log data, + in bytes. It is used when the compilation is based on the size of + the collected log data. If not present, a default value as specified + with the "defaultLogCompileBySizeValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + compileByTimerValue: + description: >- + The periodicity threshold for compiling the filtered log, in + seconds. It is used when the compilation is based on a timer (e.g., + every 24 hours). If not present, a default value as specified with + the "defaultLogCompileByTimerValue" configuration in the + "ManoEntityConfigurableParams" shall be used + type: integer + format: int32 + securityConf: + description: Configuration about the security aspects of the logging job. + type: object + properties: + logFileEncryption: + description: >- + Information about the encryption of the compiled log files. + Shall be present if the log file is requested to be encrypted. + required: + - encryptionCertificate + - cipherAlgorithm + type: object + properties: + encryptionCertificate: + description: >- + X.509 certificate with the public key to use for the + encryption of the compiled log file. + type: string + cipherAlgorithm: + description: >- + Cryptographic algorithm to be used for the encryption of the + compiled log file. More than one algorithm can be provided + from higher (lower array index) to lower (higher array + index) precedence. Valid values are: "AES-CBC-128", + "AES-GCM-128", "AES-CBC-256", and "AES-GCM-256", as + specified in clause 6.5 of ETSI GS NFV-SEC 012 + type: array + items: + type: string + minItems: 1 + encryptAndSignOrder: + description: >- + Indication about the order in signing and encrypting the + compiled log file. Valid values are: "encryptFirst", to + apply the order "first encrypt, then sign", and "signFirst" + for the order "first sign, then encrypt". Default value is + "encryptFirst". + type: string + logTransferSecurity: + description: >- + Information about the security measures for retrieving/accessing + the compiled log files. + type: object + properties: + publicKey: + description: >- + The public key of the API consumer used for the client + authentication with the file server. Shall be provided if + required by the type of transfer protocol. May be omitted if + the key has been provided to the API producer by other + means, or if it has already been provided in some previous + CreateLoggingJobRequest issued by the same API consumer, + whose public key has not changed. + type: string + LogReportAvailableNotification: + description: >- + This notification informs the receiver that the log report of the + NFV-MANO functional entity is available. It shall comply with the + provisions defined in table 8.6.2.4-1. The notification shall be + triggered by the NFV-MANO functional entity when log information has + been collected by the logging job and the log report is available. + type: object + required: + - id + - notificationType + - subscriptionId + - timeStamp + - objectInstanceId + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + notificationType: + description: >- + Discriminator for the different notification types. Shall be set to + "LogReportAvailableNotification" for this notification type. + type: string + subscriptionId: + description: | + An identifier with the intention of being globally unique. + type: string + timeStamp: + description: > + Date-time stamp. Representation: String formatted according to IETF + RFC 3339. + type: string + format: date-time + objectInstanceId: + description: > + This type represents the identifier to reference a managed object of + a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if attribute + "manoEntityComponents" in "ManoEntity" is supported by the API + producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: | + An identifier with the intention of being globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + required: + - type + - objectId + _links: + description: Links to resources related to this notification. + type: object + required: + - subscription + - logReports + properties: + subscription: + description: > + This type represents a link to a resource in a notification, + using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objectInstance: + description: > + This type represents a link to a resource in a notification, + using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + LoggingJob: + description: > + This type represents a link to a resource in a notification, + using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + logReports: + description: >- + Link from which the available log report can be obtained. Due to + the relationship of the logging job compilation and the logging + information availability reporting, more than one logReport + notification link can be provided. + type: array + items: + description: > + This type represents a link to a resource in a notification, + using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + callbacks: + LogReportAvailableNotification: + '{$request.body#/callbackUri}': + description: >- + This resource represents a notification endpoint for NFV-MANO log + management. The API producer can use this resource to send + notifications related to log management events to a subscribed API + consumer, which has provided the URI of this resource during the + subscription process. + post: + description: >- + The POST method delivers a notification regarding a log management + event from the API producer to the API consumer. The API consumer + shall have previously created an "Individual subscription" resource + with a matching filter. This method shall follow the provisions + specified in the tables 8.5.9.3.1-1 and 8.5.9.3.1-2 for URI query + parameters, request and response data structures, and response + codes. + parameters: + - name: Version + description: > + Version of the API requested to use when responding to this + request. + in: header + required: true + schema: + type: string + - name: Authorization + description: > + The authorization token for the request. Reference: IETF RFC + 7235. + in: header + required: false + schema: + type: string + requestBody: + description: Notification about the availability of a log report. + content: + application/json: + schema: + description: >- + This notification informs the receiver that the log report + of the NFV-MANO functional entity is available. It shall + comply with the provisions defined in table 8.6.2.4-1. The + notification shall be triggered by the NFV-MANO functional + entity when log information has been collected by the + logging job and the log report is available. + type: object + required: + - id + - notificationType + - subscriptionId + - timeStamp + - objectInstanceId + - _links + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + notificationType: + description: >- + Discriminator for the different notification types. + Shall be set to "LogReportAvailableNotification" for + this notification type. + type: string + subscriptionId: + description: > + An identifier with the intention of being globally + unique. + type: string + timeStamp: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + objectInstanceId: + description: > + This type represents the identifier to reference a + managed object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + required: + - type + - objectId + _links: + description: Links to resources related to this notification. + type: object + required: + - subscription + - logReports + properties: + subscription: + description: > + This type represents a link to a resource in a + notification, using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + objectInstance: + description: > + This type represents a link to a resource in a + notification, using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + LoggingJob: + description: > + This type represents a link to a resource in a + notification, using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + logReports: + description: >- + Link from which the available log report can be + obtained. Due to the relationship of the logging job + compilation and the logging information availability + reporting, more than one logReport notification link + can be provided. + type: array + items: + description: > + This type represents a link to a resource in a + notification, using an absolute or relative URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + responses: + '204': + description: >- + Shall be returned when the notification has been delivered + successfully. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the + "ProblemDetails" structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if + the request URI contains incorrect query parameters or the + payload body contains a syntactically incorrect data structure), + the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include + in the "detail" attribute more information about the source of + the problem. + + If the response to a GET request which queries a container + resource would be so big that the performance of the API + producer is adversely affected, and the API producer does not + support paging for the affected resource, it shall respond with + this response code. The "ProblemDetails" structure shall be + provided, and should include in the "detail" attribute more + information about the source of the problem. + + If there is an application error related to the client's input + that cannot be easily mapped to any other HTTP response code + ("catch all error"), the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided, + and shall include in the "detail" attribute more information + about the source of the problem. + + If the request contains a malformed access token, the API + producer should respond with this response. The details of the + error shall be returned in the WWW Authenticate HTTP header, as + defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails + structure may be provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of + API requests and notifications, as defined in clauses 4.5.3.3 + and 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is + required, or if the request contains an authorization token that + is invalid (e.g. expired or revoked), the API producer should + respond with this response. The details of the error shall be + returned in the WWW-Authenticate HTTP header, as defined in IETF + RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular + request to a particular resource, the API producer shall respond + with this response code. The "ProblemDetails" structure shall be + provided. It should include in the "detail" attribute + information about the source of the problem, and may indicate + how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for + the resource addressed by the URI passed in the request or is + not willing to disclose that one exists, it shall respond with + this response code. The "ProblemDetails" structure may be + provided, including in the "detail" attribute information about + the source of the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource + addressed by the URI is a container resource which is designed + to contain child resources, but does not contain any child + resource at the time the request is received. For a GET request + to an existing empty container resource, a typical response + contains a 200 OK response code and a payload body with an empty + array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response + code. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name + of a content type that is acceptable to the API producer, the + API producer shall respond with this response code. The + "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct + data (e.g. well-formed JSON) but the data cannot be processed + (e.g. because it fails validation against a schema), the API + producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include + in the "detail" attribute more information about the source of + the problem. + + This error response code is only applicable for methods that + have a request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's + input that cannot be easily mapped to any other HTTP response + code ("catch all error"), the API producer shall respond with + this response code. The "ProblemDetails" structure shall be + provided, and shall include in the "detail" attribute more + information about the source of the problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the + use of the "Retry-After" HTTP header and for the alternative to + refuse the connection. The "ProblemDetails" structure may be + omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + get: + description: >- + The GET method allows the API producer to test the notification + endpoint that is provided by the API consumer, e.g. during + subscription. This method shall follow the provisions specified in + the tables 8.5.9.3.2-1 and 8.5.9.3.2-2 for URI query parameters, + request and response data structures, and response codes. + parameters: + - name: Version + description: > + Version of the API requested to use when responding to this + request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: + IETF RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: > + The authorization token for the request. Reference: IETF RFC + 7235. + in: header + required: false + schema: + type: string + responses: + '204': + description: >- + Shall be returned to indicate that the notification endpoint has + been tested successfully. The response body shall be empty. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the + "ProblemDetails" structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if + the request URI contains incorrect query parameters or the + payload body contains a syntactically incorrect data structure), + the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include + in the "detail" attribute more information about the source of + the problem. + + If the response to a GET request which queries a container + resource would be so big that the performance of the API + producer is adversely affected, and the API producer does not + support paging for the affected resource, it shall respond with + this response code. The "ProblemDetails" structure shall be + provided, and should include in the "detail" attribute more + information about the source of the problem. + + If there is an application error related to the client's input + that cannot be easily mapped to any other HTTP response code + ("catch all error"), the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided, + and shall include in the "detail" attribute more information + about the source of the problem. + + If the request contains a malformed access token, the API + producer should respond with this response. The details of the + error shall be returned in the WWW Authenticate HTTP header, as + defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails + structure may be provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of + API requests and notifications, as defined in clauses 4.5.3.3 + and 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is + required, or if the request contains an authorization token that + is invalid (e.g. expired or revoked), the API producer should + respond with this response. The details of the error shall be + returned in the WWW-Authenticate HTTP header, as defined in IETF + RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular + request to a particular resource, the API producer shall respond + with this response code. The "ProblemDetails" structure shall be + provided. It should include in the "detail" attribute + information about the source of the problem, and may indicate + how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for + the resource addressed by the URI passed in the request or is + not willing to disclose that one exists, it shall respond with + this response code. The "ProblemDetails" structure may be + provided, including in the "detail" attribute information about + the source of the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource + addressed by the URI is a container resource which is designed + to contain child resources, but does not contain any child + resource at the time the request is received. For a GET request + to an existing empty container resource, a typical response + contains a 200 OK response code and a payload body with an empty + array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response + code. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name + of a content type that is acceptable to the API producer, the + API producer shall respond with this response code. The + "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct + data (e.g. well-formed JSON) but the data cannot be processed + (e.g. because it fails validation against a schema), the API + producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include + in the "detail" attribute more information about the source of + the problem. + + This error response code is only applicable for methods that + have a request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's + input that cannot be easily mapped to any other HTTP response + code ("catch all error"), the API producer shall respond with + this response code. The "ProblemDetails" structure shall be + provided, and shall include in the "detail" attribute more + information about the source of the problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the + use of the "Retry-After" HTTP header and for the alternative to + refuse the connection. The "ProblemDetails" structure may be + omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data + structure from IETF RFC 7807 [19] is reproduced inthis + structure. Compared to the general framework defined in + IETF RFC 7807 [19], the "status" and "detail" attributes + are mandated to be included by the present document, to + ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible + that particular APIs in the present document, or + particular implementations, define extensions to define + additional attributes that provide more information about + the error. The description column only provides some + explanation of the meaning to Facilitate understanding of + the design. For a full description, see IETF RFC 7807 + [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the + URI provides human-readable documentation for the + problem (e.g. using HTML) when dereferenced. When this + member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. + It should not change from occurrence to occurrence of + the problem, except for purposes of localization. If + type is given and other than "about:blank", this + attribute shall also be provided. A short, + human-readable summary of the problem type. It SHOULD + NOT change from occurrence to occurrence of the + problem, except for purposes of localization (e.g., + using proactive content negotiation; see [RFC7231], + Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the + problem. The HTTP status code ([RFC7231], Section 6) + generated by the origin server for this occurrence of + the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this + occurrence of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific + occurrence of the problem. It may yield further + information if dereferenced. + type: string + format: URI + -- GitLab From 11fe57a5d157b7b43e5c881a0c47e0c985a3637c Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 17 Aug 2020 12:29:27 +0500 Subject: [PATCH 463/580] Added Test Cases for ApiVersion.robot --- .../NFVMANOLogManagement-API/ApiVersion.robot | 211 ++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 SOL009/NFVMANOLogManagement-API/ApiVersion.robot diff --git a/SOL009/NFVMANOLogManagement-API/ApiVersion.robot b/SOL009/NFVMANOLogManagement-API/ApiVersion.robot new file mode 100644 index 000000000..5fb05242f --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/ApiVersion.robot @@ -0,0 +1,211 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 8.3.4.8.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 8.3.4.8.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 8.3.4.8.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 8.3.4.8.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 8.3.4.8.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.4.8.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 8.3.4.8.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.4.8.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.4.8.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.4.8.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK -- GitLab From e5c19d1197ee64d2f3dea5235b7c049728ccb97c Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 27 Aug 2020 13:45:34 +0500 Subject: [PATCH 464/580] fixed issues --- .../CompileLogTask.robot | 28 +++++++++---------- .../IndividualLoggingJob.robot | 5 ++-- .../IndividualReport.robot | 1 + .../LoggingJobs.robot | 8 +++--- .../NFVMANOLogManagementKeywords.robot | 6 ++-- .../Subscriptions.robot | 2 -- 6 files changed, 24 insertions(+), 26 deletions(-) diff --git a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot index d7a15dae4..c4fd5b4c7 100644 --- a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot +++ b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot @@ -12,7 +12,7 @@ Request to compile the logged data into a file - Synchronous mode [Documentation] Test ID: 8.3.4.4.1 ... Test title: Request to compile the logged data into a file - Synchronous mode ... Test objective: The objective is to request to compile the logged data into a file in synchronous mode and perform a JSON schema validation on the returned log report data structure - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can decide immediately what to respond to a compile request @@ -27,7 +27,7 @@ Request to compile the logged data into a file - Asynchronous mode [Documentation] Test ID: 8.3.4.4.2 ... Test title: Request to compile the logged data into a file - Asynchronous mode ... Test objective: The objective is to request to compile the logged data into a file in asynchronous mode and perform a JSON schema validation on the returned log report data structure - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can not decide immediately what to respond to a compile request @@ -41,11 +41,11 @@ Request to compile the logged data into a file - Already Processing [Documentation] Test ID: 8.3.4.4.3 ... Test title: Request to compile the logged data into a file - Already Processing ... Test objective: The objective is to request to compile the logged data into a file when a log data compilation and report creation is already ongoing, or a log report has just been created, for the specified logging job at the time of processing the request and perform a JSON schema validation on the returned log report data structure - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Send Log data Request Check HTTP Response Status Code Is 303 Check Operation Occurrence Id @@ -54,7 +54,7 @@ Request to compile the logged data into a file with unprocessable entity [Documentation] Test ID: 8.3.4.4.4 ... Test title: Request to compile the logged data into a file with unprocessable entity ... Test objective: The objective is to test that the rrequest to compile the logged data into a file fails when error in request body. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -67,11 +67,11 @@ GET Compiled Log Data - Method not implemented [Documentation] Test ID: 8.3.4.4.5 ... Test title: GET Compiled Log Data - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve compiled log data. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Get Compiled Log Data Check HTTP Response Status Code Is 405 @@ -79,11 +79,11 @@ PUT Compiled Log Data - Method not implemented [Documentation] Test ID: 8.3.4.4.6 ... Test title: PUT Compiled Log Data - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update compiled log data. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.6.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send PUT Compiled Log Data Check HTTP Response Status Code Is 405 @@ -91,11 +91,11 @@ PATCH Compiled Log Data - Method not implemented [Documentation] Test ID: 8.3.4.4.7 ... Test title: PATCH Compiled Log Data - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update compiled log data. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.6.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send PATCH Compiled Log Data Check HTTP Response Status Code Is 405 @@ -103,11 +103,11 @@ DELETE Compiled Log Data - Method not implemented [Documentation] Test ID: 8.3.4.4.8 ... Test title: DELETE Compiled Log Data - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update compiled log data. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.6.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send DELETE Compiled Log Data Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot index 2d3891671..c63498ea4 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot @@ -11,7 +11,7 @@ POST Individual Logging Job - Method not implemented [Documentation] Test ID: 8.3.4.2.1 ... Test title: POST Individual Logging Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create an Indiviual Logging - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -31,7 +31,7 @@ GET individual Logging Job ... Post-Conditions: none GET individual Logging Job Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmJob + Check HTTP Response Body Json Schema Is LoggingJob Check HTTP Response Body Logging Job Identifier matches the requested Logging Job GET individual Logging Job with invalid resource identifier @@ -95,3 +95,4 @@ DELETE Individual Logging Job with invalid resource identifier ... Post-Conditions: none Send Delete request for individual Logging Job with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot index 66a8e04a3..e85b2ecf0 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot @@ -56,6 +56,7 @@ Get Individual Log Report with invalid resource endpoint ... Post-Conditions: none Get Individual Log Report with invalid resource endpoint Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails PUT Individual Log Report - Method not implemented [Documentation] Test ID: 8.3.4.3.5 diff --git a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot index dc4b136d2..97cbed71a 100644 --- a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot +++ b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot @@ -11,10 +11,10 @@ POST Create a new logging job [Documentation] Test ID: 8.3.4.1.1 ... Test title: POST Create a new logging job ... Test objective: The objective is to create a new logging job - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: + ... Applicability: none ... Post-Conditions: logging job created POST Create a new logging job Check HTTP Response Status Code Is 201 @@ -28,8 +28,8 @@ GET information about logging jobs ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Logging Jobs Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is LoggingJobs diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index 198f96f6e..09c6698a8 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -99,7 +99,7 @@ GET Logging Jobs with fields attribute selector Set Suite Variable ${response} ${output} GET Logging Jobs with exclude_fields attribute selector - Log Query VNF The GET method queries information about multiple alarms, using fields + Log Query NFV-MANO The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?exclude_fields=${fields} @@ -150,7 +150,7 @@ Check Postcondition Logging Job is not Created Check HTTP Response Status Code Is 404 GET individual Logging Job - Log Trying to get a Pm Job + Log Trying to get a Logging Job Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} @@ -413,8 +413,6 @@ Send Post Request for Subscription POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} ${output}= Output response Set Suite Variable ${response} ${output} - Run Keyword If ${NFVMANO_CHECKS_NOTIF_ENDPOINT} == 1 - ... Check Notification Endpoint Check HTTP Response Body LogmSubscription Attributes Values Match the Issued Subscription Log Check Response matches subscription diff --git a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot index 2e92a3ab6..eb6be70c6 100644 --- a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot @@ -89,7 +89,6 @@ GET Subscriptions - invalid resource endpoint Get all Subscriptions Check HTTP Response Status Code Is 404 - Create new Subscription [Documentation] Test ID 8.3.4.5.7 ... Test title: Create new Subscription @@ -105,7 +104,6 @@ Create new Subscription Check HTTP Response Body LogmSubscription Attributes Values Match the Issued Subscription Check Postcondition Subscription Is Set - Create request for duplicated Subscription not creating duplicated subscriptions [Tags] no-duplicated-subs [Documentation] Test ID 8.3.4.5.8 -- GitLab From 874406f9f7c04328c9b7917c6586ac94e70f9dff Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 14 Sep 2020 13:39:25 +0500 Subject: [PATCH 465/580] minor bugs fixed and redundant post-conditions removed --- .../CompileLogTask.robot | 15 ++--- .../IndividualLoggingJob.robot | 9 ++- .../IndividualReport.robot | 14 ++-- .../IndividualSubscription.robot | 13 ++-- .../LoggingJobs.robot | 58 ++++++++--------- .../NFVMANOLogManagementKeywords.robot | 64 ++----------------- .../NotificationEndpoint.robot | 4 +- .../Subscriptions.robot | 11 ++-- 8 files changed, 63 insertions(+), 125 deletions(-) diff --git a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot index c4fd5b4c7..224cf601f 100644 --- a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot +++ b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot @@ -16,31 +16,30 @@ Request to compile the logged data into a file - Synchronous mode ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can decide immediately what to respond to a compile request - ... Post-Conditions: The compiled log information is available. + ... Post-Conditions: none Send Log data Request in Synchronous mode Check HTTP Response Status Code Is 201 - Check Operation Occurrence Id + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is LogReport - Request to compile the logged data into a file - Asynchronous mode [Documentation] Test ID: 8.3.4.4.2 ... Test title: Request to compile the logged data into a file - Asynchronous mode - ... Test objective: The objective is to request to compile the logged data into a file in asynchronous mode and perform a JSON schema validation on the returned log report data structure + ... Test objective: The objective is to request to compile the logged data into a file in asynchronous mode ... Pre-conditions: none ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can not decide immediately what to respond to a compile request - ... Post-Conditions: The compiled log information is available. + ... Post-Conditions: none Send Log data Request in Asynchronous mode Check HTTP Response Status Code Is 202 - Check Operation Occurrence Id + Check HTTP Response Header Contains Location Wait for compilation success notification Request to compile the logged data into a file - Already Processing [Documentation] Test ID: 8.3.4.4.3 ... Test title: Request to compile the logged data into a file - Already Processing - ... Test objective: The objective is to request to compile the logged data into a file when a log data compilation and report creation is already ongoing, or a log report has just been created, for the specified logging job at the time of processing the request and perform a JSON schema validation on the returned log report data structure + ... Test objective: The objective is to request to compile the logged data into a file when a log data compilation and report creation is already ongoing, or a log report has just been created, for the specified logging job at the time of processing the request ... Pre-conditions: none ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -48,7 +47,7 @@ Request to compile the logged data into a file - Already Processing ... Post-Conditions: none Send Log data Request Check HTTP Response Status Code Is 303 - Check Operation Occurrence Id + Check HTTP Response Header Contains Location Request to compile the logged data into a file with unprocessable entity [Documentation] Test ID: 8.3.4.4.4 diff --git a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot index c63498ea4..8ddfedb7f 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot @@ -15,15 +15,14 @@ POST Individual Logging Job - Method not implemented ... Reference: clause 8.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The Logging Job is not created on the NFV-MANO + ... Post-Conditions: none Send Post request for individual Logging Job Check HTTP Response Status Code Is 405 - Check Postcondition Logging Job is not Created GET individual Logging Job [Documentation] Test ID: 8.3.4.2.2 ... Test title: Get individual Logging Job - ... Test objective: The objective is to test the retrieval of an individual logging job and perform a JSON schema and content validation of the collected job data structure + ... Test objective: The objective is to test the retrieval of an individual logging job and perform a JSON schema validation of the collected job data structure ... Pre-conditions: Logging Job is already created. ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -55,7 +54,7 @@ PUT Individual Logging Job - Method not implemented ... Reference: clause 8.5.4.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The Logging Job is not modified by the operation + ... Post-Conditions: none Send Put request for individual Logging Job Check HTTP Response Status Code Is 405 @@ -67,7 +66,7 @@ PATCH Individual Logging Job - Method not implemented ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The Logging Job is not modified by the operation + ... Post-Conditions: none Send Patch request for individual Logging Job Check HTTP Response Status Code Is 405 diff --git a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot index e85b2ecf0..a285b1569 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot @@ -15,10 +15,9 @@ POST Individual Log Report - Method not implemented ... Reference: clause 8.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The log report is not created. + ... Post-Conditions: none Send Post request for Individual Log Report Check HTTP Response Status Code Is 405 - Check Postcondition Individual Log Report is not Created Get Individual Log Report [Documentation] Test ID: 8.3.4.3.2 @@ -66,10 +65,9 @@ PUT Individual Log Report - Method not implemented ... Reference: clause 8.5.5.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The NFV-MANO log report is not modified by the operation + ... Post-Conditions: none Send Put request for Individual Log Report Check HTTP Response Status Code Is 405 - Check Postcondition Individual Log Report is Unmodified (Implicit) PATCH Individual Log Report - Method not implemented [Documentation] Test ID: 8.3.4.3.6 @@ -79,10 +77,9 @@ PATCH Individual Log Report - Method not implemented ... Reference: clause 8.5.5.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The log report is not modified by the operation + ... Post-Conditions: none Send Patch request for Individual Log Report Check HTTP Response Status Code Is 405 - Check Postcondition Individual Log Report is Unmodified (Implicit) DELETE Individual Log Report - Method not implemented [Documentation] Test ID: 8.3.4.3.7 @@ -92,7 +89,6 @@ DELETE Individual Log Report - Method not implemented ... Reference: clause 8.5.5.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The log report is not deleted by the operation + ... Post-Conditions: none Send Delete request for Individual Log Report - Check HTTP Response Status Code Is 405 - Check Postcondition Individual Log Report Exists + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot index 22585149a..444831faa 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot @@ -10,7 +10,7 @@ Resource NFVMANOLogManagementKeywords.robot GET Individual Subscription [Documentation] Test ID: 8.3.4.6.1 ... Test title: GET Individual Subscription - ... Test objective: The objective is to test the retrieval of individual subscription and perform a JSON schema and content validation of the returned subscription data structure + ... Test objective: The objective is to test the retrieval of individual subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -66,10 +66,9 @@ POST Individual Subscription - Method not implemented ... Reference: clause 8.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The VNF Performance Subscription is not created on the NFV-MANO + ... Post-Conditions: none Send Post request for individual Subscription Check HTTP Response Status Code Is 405 - Check Postcondition Subscription is not Created PUT Individual Subscription - Method not implemented [Documentation] Test ID: 8.3.4.6.6 @@ -79,10 +78,9 @@ PUT Individual Subscription - Method not implemented ... Reference: clause 8.5.8.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The subscription is not modified by the operation + ... Post-Conditions: none Send Put request for individual Subscription Check HTTP Response Status Code Is 405 - Check Postcondition Subscription is Unmodified (Implicit) PATCH Individual Subscription - Method not implemented [Documentation] Test ID: 8.3.4.6.7 @@ -92,7 +90,6 @@ PATCH Individual Subscription - Method not implemented ... Reference: clause 8.5.8.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The subscription is not modified by the operation + ... Post-Conditions: none Send Patch request for individual Threshold - Check HTTP Response Status Code Is 405 - Check Postcondition Subscription is Unmodified (Implicit) \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot index 97cbed71a..38d15c94b 100644 --- a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot +++ b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot @@ -10,7 +10,7 @@ Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} POST Create a new logging job [Documentation] Test ID: 8.3.4.1.1 ... Test title: POST Create a new logging job - ... Test objective: The objective is to create a new logging job + ... Test objective: The objective is to create a new logging job, and perform the JSON schema validation of the operation HTTP response. ... Pre-conditions: none ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -20,11 +20,12 @@ POST Create a new logging job Check HTTP Response Status Code Is 201 Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is LoggingJob + Check Post-Condition Logging job is created GET information about logging jobs [Documentation] Test ID: 8.3.4.1.2 ... Test title: GET information logging jobs - ... Test objective: The objective is to retrieve information about logging jobs + ... Test objective: The objective is to retrieve information about logging jobs, and perform the JSON schema validation of the operation HTTP response. ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -34,7 +35,6 @@ GET information about logging jobs Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is LoggingJobs - GET Logging jobs - invalid attribute-based filter [Documentation] Test ID: 8.3.4.1.3 ... Test title: GET Logging jobs - invalid attribute-based filter @@ -42,8 +42,8 @@ GET Logging jobs - invalid attribute-based filter ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Logging Job with invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -55,8 +55,8 @@ GET Logging jobs - invalid attribute selector ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Logging Job with invalid selector Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -68,8 +68,8 @@ GET Logging jobs - Bad Request Response too Big ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Logging Jobs Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -81,8 +81,8 @@ GET information about logging jobs with attribute-based filter ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Logging Job with filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is LoggingJobs @@ -94,35 +94,35 @@ GET information about logging jobs with "all_fields" attribute selector ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Logging jobs with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is LoggingJobs -GET information about Logging Jobs with exclude_default attribute selector +GET information about Logging Jobs with "exclude_default" attribute selector [Documentation] Test ID: 8.3.4.1.8 ... Test title: GET information about Logging Jobs with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about logging jobs with "exclude_default" attribute selector ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Logging Jobs with exclude_default attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is LoggingJobs -GET information about Logging Jobs with fields attribute selector +GET information about Logging Jobs with "fields" attribute selector [Documentation] Test ID: 8.3.4.1.9 ... Test title: GET information about Logging Jobs with fields attribute selector ... Test objective: The objective is to retrieve information about Logging Jobs with fields attribute selector ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Logging Jobs with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is LoggingJobs @@ -134,7 +134,7 @@ GET information about Logging Jobs with "exclude_fields" attribute selector ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: + ... Applicability: none ... Post-Conditions: none GET Logging Jobs with exclude_fields attribute selector Check HTTP Response Status Code Is 200 @@ -147,11 +147,11 @@ GET information about Logging Jobs with Paged Response ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none GET Logging Jobs Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Link PUT Logging Jobs - Method not implemented [Documentation] Test ID: 8.3.4.1.12 @@ -160,7 +160,7 @@ PUT Logging Jobs - Method not implemented ... Pre-conditions: ... Reference: clause 8.5.3.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: + ... Applicability: none ... Post-Conditions: none PUT Logging Jobs Check HTTP Response Status Code Is 405 @@ -169,10 +169,10 @@ PATCH Logging Jobs - Method not implemented [Documentation] Test ID: 8.3.4.1.13 ... Test title: PATCH Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: + ... Applicability: none ... Post-Conditions: none PATCH Logging Jobs Check HTTP Response Status Code Is 405 @@ -181,10 +181,10 @@ DELETE Logging Jobs - Method not implemented [Documentation] Test ID: 8.3.4.1.14 ... Test title: DELETE Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.3.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: Logging Job is not deleted. + ... Applicability: none + ... Post-Conditions: none DELETE Logging Jobs Check HTTP Response Status Code Is 405 diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index 09c6698a8..9eb34dba4 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -9,9 +9,7 @@ Library Collections Library JSONSchemaLibrary schemas/ Library Process - *** Keywords *** - Check HTTP Response Status Code Is [Arguments] ${expected_status} ${status}= Convert To Integer ${expected_status} @@ -40,6 +38,10 @@ POST Create a new logging job ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} +Check Post-Condition Logging job is created + GET Logging Jobs + Check HTTP Response Status Code Is 200 + GET Logging Jobs Log Query to GET information about logging jobs. Set Headers {"Accept":"${ACCEPT}"} @@ -106,7 +108,7 @@ GET Logging Jobs with exclude_fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Check LINK in Header +Check HTTP Response Header Contains Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} @@ -140,15 +142,6 @@ Send Post request for individual Logging Job ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition Logging Job is not Created - Log Trying to get a new Logging Job - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - GET individual Logging Job Log Trying to get a Logging Job Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -219,15 +212,6 @@ Send Post request for Individual Log Report ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition Individual Log Report is not Created - Log Trying to get a new report - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${newReportId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - Get Individual Log Report Log Trying to get log report Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -270,18 +254,6 @@ Send Delete request for Individual Log Report DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition Individual Log Report is Unmodified (Implicit) - Log Check Postcondition Log job is not modified - Get Individual Log Report - Log Check Response matches original report - ${report}= evaluate json.loads('''${response['body']}''') json - Should Be Equal ${origResponse['body']['readyTime']} ${report['readyTime']} - -Check Postcondition Individual Log Report Exists - Log Checking that report still exists - Get Individual Log Report - Check HTTP Response Status Code Is 200 Send Log data Request in Synchronous mode Log Request to compile the logged data into a file Synchronous mode @@ -294,7 +266,7 @@ Send Log data Request in Synchronous mode ${body}= Output response Set Suite Variable &{response} ${body} -Check Operation Occurrence Id +Check HTTP Response Header Contains Location ${vnfLcmOpOccId}= Get Value From Json ${response['headers']} $..Location Should Not Be Empty ${vnfLcmOpOccId} @@ -480,11 +452,6 @@ Send Delete Request for Subscriptions ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition Subscriptions Exists - Log Checking that subscriptions exists - Get all Subscriptions - Check HTTP Response Status Code Is 200 - Get Individual Subscription Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -545,21 +512,4 @@ Send Patch request for individual Threshold Set Suite Variable ${origResponse} ${origOutput} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response - Set Suite Variable @{response} ${output} - -Check Postcondition Subscription is Unmodified (Implicit) - Log Check postconidtion subscription not modified - GET individual Subscription - Log Check Response matches original Subscription - ${subscription}= evaluate json.loads('''${response['body']}''') json - Should Be Equal As Strings ${origResponse['body']['id']} ${subscription.id} - Should Be Equal As Strings ${origResponse['body']['callbackUri']} ${subscription.callbackUri} - -Check Postcondition 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} - ${output}= Output response - Set Suite Variable @{response} ${output} - Check HTTP Response Status Code Is 404 \ No newline at end of file + Set Suite Variable @{response} ${output} \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot index 8ebf99df1..d4bf4edf0 100644 --- a/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot @@ -15,7 +15,7 @@ Log Report Avaliable Notification [Documentation] Test ID: 8.3.4.7.1 ... Test title: Log Report Avaliable Notification ... Test objective: The objective is to test the dispatch of Log Report Avaliable Notification when new log report is available in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -23,8 +23,6 @@ Log Report Avaliable Notification Trigger the availability of Log Report (external action) Check Log Report Available Notification Http POST Request Body Json Schema Is LogReportAvailableNotification Check Log Report Available Notification Http POST Request Body notificationType attribute Is LogReportAvailableNotification - - *** Keywords *** Trigger the availability of Log Report (external action) #do nothing diff --git a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot index eb6be70c6..c9f2350ff 100644 --- a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot @@ -44,11 +44,11 @@ GET Subscriptions with Paged Response ... Pre-conditions: At least one subscription is available in the NFV-MANO. ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get all Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Link GET Subscriptions - invalid attribute-based filter [Documentation] Test ID: 8.3.4.5.4 @@ -168,7 +168,6 @@ DELETE Subscriptions - Method not implemented ... Reference: clause 8.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The subscriptions are not deleted by the failed operation + ... Post-Conditions: none Send Delete Request for Subscriptions - Check HTTP Response Status Code Is 405 - Check Postcondition Subscriptions Exists \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file -- GitLab From 14bb2b3de2e60ea674a8d618f8272e3c69a53f89 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 14 Sep 2020 14:51:48 +0500 Subject: [PATCH 466/580] templating, minor bugs fix and new testcases added --- .../IndividualLoggingJob.robot | 6 ++-- .../IndividualReport.robot | 8 ++--- .../IndividualSubscription.robot | 6 ++-- .../LoggingJobs.robot | 35 +++++++++++++------ .../NFVMANOLogManagementKeywords.robot | 34 ++++++++++++------ .../Subscriptions.robot | 6 ++-- .../environment/variables.txt | 4 ++- .../jsons/compileLogRequest.json | 6 ++-- .../jsons/createLoggingJobRequest.json | 12 ++++--- .../jsons/subscriptions.json | 2 +- 10 files changed, 75 insertions(+), 44 deletions(-) diff --git a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot index 8ddfedb7f..40505fdc8 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot @@ -50,7 +50,7 @@ PUT Individual Logging Job - Method not implemented [Documentation] Test ID: 8.3.4.2.4 ... Test title: PUT Individual Logging Job - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing Logging Job - ... Pre-conditions: Logging Job is already created. + ... Pre-conditions: none ... Reference: clause 8.5.4.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -62,7 +62,7 @@ PATCH Individual Logging Job - Method not implemented [Documentation] Test ID: 8.3.4.2.5 ... Test title: PATCH Individual Logging Job - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new Logging Job - ... Pre-conditions: Logging Job is already created. + ... Pre-conditions: none ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -94,4 +94,4 @@ DELETE Individual Logging Job with invalid resource identifier ... Post-Conditions: none Send Delete request for individual Logging Job with invalid resource identifier Check HTTP Response Status Code Is 404 - Check HTTP Response Body Json Schema Is ProblemDetails + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot index a285b1569..d96270ac4 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot @@ -11,7 +11,7 @@ POST Individual Log Report - Method not implemented [Documentation] Test ID: 8.3.4.3.1 ... Test title: POST Individual Log Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new log report. - ... Pre-conditions: Logging Job is already created. + ... Pre-conditions: none ... Reference: clause 8.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -61,7 +61,7 @@ PUT Individual Log Report - Method not implemented [Documentation] Test ID: 8.3.4.3.5 ... Test title: PUT Individual Log Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing log report. - ... Pre-conditions: One or more log reports are set. + ... Pre-conditions: none ... Reference: clause 8.5.5.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -73,7 +73,7 @@ PATCH Individual Log Report - Method not implemented [Documentation] Test ID: 8.3.4.3.6 ... Test title: PATCH Individual Log Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existinglog report. - ... Pre-conditions: One or more log reports are set. + ... Pre-conditions: none ... Reference: clause 8.5.5.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -85,7 +85,7 @@ DELETE Individual Log Report - Method not implemented [Documentation] Test ID: 8.3.4.3.7 ... Test title: DELETE Individual Log Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing log report. - ... Pre-conditions: One or more log reports are set. + ... Pre-conditions: none ... Reference: clause 8.5.5.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none diff --git a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot index 444831faa..cbc6a2153 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot @@ -62,7 +62,7 @@ POST Individual Subscription - Method not implemented [Documentation] Test ID: 8.3.4.6.5 ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Subscription - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -74,7 +74,7 @@ PUT Individual Subscription - Method not implemented [Documentation] Test ID: 8.3.4.6.6 ... Test title: PUT Individual Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing subscription - ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 8.5.8.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -86,7 +86,7 @@ PATCH Individual Subscription - Method not implemented [Documentation] Test ID: 8.3.4.6.7 ... Test title: PATCH Individual Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing subscription - ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 8.5.8.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none diff --git a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot index 38d15c94b..c72f4b107 100644 --- a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot +++ b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot @@ -77,7 +77,7 @@ GET Logging jobs - Bad Request Response too Big GET information about logging jobs with attribute-based filter [Documentation] Test ID: 8.3.4.1.6 ... Test title: GET information about logging jobs with attribute-based filter - ... Test objective: The objective is to retrieve information about the logging jobs with attribute filters + ... Test objective: The objective is to retrieve information about the logging jobs with attribute filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -90,7 +90,7 @@ GET information about logging jobs with attribute-based filter GET information about logging jobs with "all_fields" attribute selector [Documentation] Test ID: 8.3.4.1.7 ... Test title: GET information about logging jobs with "all_fields" attribute selector - ... Test objective: The objective is to retrieve information about logging jobs with "all_fields" attribute selector + ... Test objective: The objective is to retrieve information about logging jobs with "all_fields" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -103,7 +103,7 @@ GET information about logging jobs with "all_fields" attribute selector GET information about Logging Jobs with "exclude_default" attribute selector [Documentation] Test ID: 8.3.4.1.8 ... Test title: GET information about Logging Jobs with "exclude_default" attribute selector - ... Test objective: The objective is to retrieve information about logging jobs with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve information about logging jobs with "exclude_default" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -117,7 +117,7 @@ GET information about Logging Jobs with "exclude_default" attribute selector GET information about Logging Jobs with "fields" attribute selector [Documentation] Test ID: 8.3.4.1.9 ... Test title: GET information about Logging Jobs with fields attribute selector - ... Test objective: The objective is to retrieve information about Logging Jobs with fields attribute selector + ... Test objective: The objective is to retrieve information about Logging Jobs with fields attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -130,7 +130,7 @@ GET information about Logging Jobs with "fields" attribute selector GET information about Logging Jobs with "exclude_fields" attribute selector [Documentation] Test ID: 8.3.4.1.10 ... Test title: GET information about Logging Jobs with "exclude_fields" attribute selector - ... Test objective: The objective is to retrieve information about the Logging Jobs with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve information about the Logging Jobs with "exclude_fields" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -140,8 +140,21 @@ GET information about Logging Jobs with "exclude_fields" attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is LoggingJobs -GET information about Logging Jobs with Paged Response +GET information about Logging Jobs with "fields" and "exclude_default" attribute selector [Documentation] Test ID: 8.3.4.1.11 + ... Test title: GET information about Logging Jobs with fields and exclude_default attribute selector + ... Test objective: The objective is to retrieve information about Logging Jobs with fields and exclude_default attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Logging Jobs with fields and exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + +GET information about Logging Jobs with Paged Response + [Documentation] Test ID: 8.3.4.1.12 ... Test title: GET information about Logging Jobs with Paged Response ... Test objective: The objective is to query information about Logging Jobs to get Paged Response. ... Pre-conditions: At least one logging job is created. @@ -154,10 +167,10 @@ GET information about Logging Jobs with Paged Response Check HTTP Response Header Contains Link PUT Logging Jobs - Method not implemented - [Documentation] Test ID: 8.3.4.1.12 + [Documentation] Test ID: 8.3.4.1.13 ... Test title: PUT Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.3.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -166,7 +179,7 @@ PUT Logging Jobs - Method not implemented Check HTTP Response Status Code Is 405 PATCH Logging Jobs - Method not implemented - [Documentation] Test ID: 8.3.4.1.13 + [Documentation] Test ID: 8.3.4.1.14 ... Test title: PATCH Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none @@ -178,7 +191,7 @@ PATCH Logging Jobs - Method not implemented Check HTTP Response Status Code Is 405 DELETE Logging Jobs - Method not implemented - [Documentation] Test ID: 8.3.4.1.14 + [Documentation] Test ID: 8.3.4.1.15 ... Test title: DELETE Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none @@ -187,4 +200,4 @@ DELETE Logging Jobs - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Logging Jobs - Check HTTP Response Status Code Is 405 + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index 9eb34dba4..d2cc5cae0 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -1,5 +1,6 @@ *** Settings *** -Resource environment/variables.txt +Library String +Resource environment/variables.txt Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false Library MockServerLibrary Library OperatingSystem @@ -100,6 +101,14 @@ GET Logging Jobs with fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} +GET Logging Jobs with fields and exclude_default attribute selector + Log Queries information about Logging Jobs, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?exclude_default&fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + GET Logging Jobs with exclude_fields attribute selector Log Query NFV-MANO The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -261,7 +270,8 @@ Send Log data Request in Synchronous mode Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/compileLogRequest.json + ${template}= Get File jsons/compileLogRequest.json + ${body}= Format String ${template} objectInstanceId=${objectInstanceId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${body} ${body}= Output response Set Suite Variable &{response} ${body} @@ -276,7 +286,8 @@ Send Log data Request in Asynchronous mode Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/compileLogRequest.json + ${template}= Get File jsons/compileLogRequest.json + ${body}= Format String ${template} objectInstanceId=${objectInstanceId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${body} ${body}= Output response Set Suite Variable &{response} ${body} @@ -299,7 +310,8 @@ Send Log data Request Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/createLoggingJobRequest.json + ${template}= Get File jsons/createLoggingJobRequest.json + ${body}= Format String ${template} objectInstanceId=${objectInstanceId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${body} ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} @@ -351,7 +363,6 @@ Check Notification Endpoint Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} - Get all Subscriptions [Documentation] The api consumer can use this method to query the list of active subscriptions to log management notifications Set headers {"Accept": "application/json"} @@ -381,14 +392,16 @@ Send Post Request for Subscription Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - ${body_request}= Get File jsons/subscriptions.json - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Body LogmSubscription Attributes Values Match the Issued Subscription Log Check Response matches subscription - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} ${subscription}= evaluate json.loads('''${body}''') json Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} @@ -404,8 +417,9 @@ Send Post Request for Duplicated Subscription Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body_request}= Get File jsons/subscriptions.json - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot index c9f2350ff..bc85a54c7 100644 --- a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot @@ -140,7 +140,7 @@ PUT Subscriptions - Method not implemented [Documentation] Test ID 8.3.4.5.10 ... Test title: PUT Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions - ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 8.5.7.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -152,7 +152,7 @@ PATCH Subscriptions - Method not implemented [Documentation] Test ID 8.3.4.5.11 ... Test title: PATCH Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions - ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 8.5.7.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -164,7 +164,7 @@ DELETE Subscriptions - Method not implemented [Documentation] Test ID 8.3.4.5.12 ... Test title: DELETE Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions - ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 8.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none diff --git a/SOL009/NFVMANOLogManagement-API/environment/variables.txt b/SOL009/NFVMANOLogManagement-API/environment/variables.txt index 5bdb72512..aff90b476 100644 --- a/SOL009/NFVMANOLogManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOLogManagement-API/environment/variables.txt @@ -59,4 +59,6 @@ ${polling} 10 sec ${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa ${erroneousSubscriptionId} erroneousSubscriptionId -${newSubscriptionId} newSubsciptionId \ No newline at end of file +${newSubscriptionId} newSubsciptionId + +${objectInstanceId} 4bd7-94b4-6bbb86-9c79aa \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/jsons/compileLogRequest.json b/SOL009/NFVMANOLogManagement-API/jsons/compileLogRequest.json index 2d3240611..526c6caa2 100644 --- a/SOL009/NFVMANOLogManagement-API/jsons/compileLogRequest.json +++ b/SOL009/NFVMANOLogManagement-API/jsons/compileLogRequest.json @@ -1,3 +1,3 @@ -{ - "objectInstanceId":"" -} \ No newline at end of file +{{ + "objectInstanceId":"{objectInstanceId}" +}} \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/jsons/createLoggingJobRequest.json b/SOL009/NFVMANOLogManagement-API/jsons/createLoggingJobRequest.json index a7d36a3e9..ec6656b6f 100644 --- a/SOL009/NFVMANOLogManagement-API/jsons/createLoggingJobRequest.json +++ b/SOL009/NFVMANOLogManagement-API/jsons/createLoggingJobRequest.json @@ -1,6 +1,8 @@ -{ - "objectInstanceIds":[], - "jobCriteria":{ +{{ + "objectInstanceIds":[ + "{objectInstanceId}" + ], + "jobCriteria":{{ "loggingType":"MESSAGES" - } -} + }} +}} diff --git a/SOL009/NFVMANOLogManagement-API/jsons/subscriptions.json b/SOL009/NFVMANOLogManagement-API/jsons/subscriptions.json index 3fcc4e59b..b81c74461 100644 --- a/SOL009/NFVMANOLogManagement-API/jsons/subscriptions.json +++ b/SOL009/NFVMANOLogManagement-API/jsons/subscriptions.json @@ -1,5 +1,5 @@ { - "callbackUri": "http://127.0.0.1/subscribe", + "callbackUri": "{callback_uri}{callback_endpoint}", "filter": { "notificationTypes": ["ThresholdCrossedNotification"] } -- GitLab From 138f73c0a97d6ccdf3638cd6af5f6c95fa91ee33 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 14 Sep 2020 15:02:20 +0500 Subject: [PATCH 467/580] authorization testcases added --- .../LoggingJobs.robot | 37 ++++++++++++++++++- .../NFVMANOLogManagementKeywords.robot | 29 +++++++++++++++ .../environment/variables.txt | 1 + 3 files changed, 66 insertions(+), 1 deletion(-) diff --git a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot index c72f4b107..329a1c5f3 100644 --- a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot +++ b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot @@ -113,7 +113,6 @@ GET information about Logging Jobs with "exclude_default" attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is LoggingJobs - GET information about Logging Jobs with "fields" attribute selector [Documentation] Test ID: 8.3.4.1.9 ... Test title: GET information about Logging Jobs with fields attribute selector @@ -166,6 +165,42 @@ GET information about Logging Jobs with Paged Response Check HTTP Response Status Code Is 200 Check HTTP Response Header Contains Link +GET information about Logging Jobs with malformed authorization token + [Documentation] Test ID: 8.3.1.8.13 + ... Test title: GET information about Logging Jobs with malformed authorization token + ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using malformed authorization token. + ... Pre-conditions: none + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Logging Jobs with malformed authorization token + Check HTTP Response Status Code Is 401 + +GET information about Logging Jobs without authorization token + [Documentation] Test ID: 8.3.4.1.14 + ... Test title: GET information about Logging Jobs without authorization token + ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when omitting the authorization token. + ... Pre-conditions: none + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Logging Jobs without authorization token + Check HTTP Response Status Code Is 401 + +GET information about Logging Jobs with expired or revoked authorization token + [Documentation] Test ID: 8.3.4.1.15 + ... Test title: GET information about Logging Jobs with expired or revoked authorization token + ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using expired or revoked authorization token. + ... Pre-conditions: none + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Logging Jobs with expired or revoked authorization token + Check HTTP Response Status Code Is 401 + PUT Logging Jobs - Method not implemented [Documentation] Test ID: 8.3.4.1.13 ... Test title: PUT Logging Jobs - Method not implemented diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index d2cc5cae0..dfaf7ab2e 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -52,6 +52,35 @@ GET Logging Jobs ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} +GET Logging Jobs with malformed authorization token + Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting authentication + Log The GET method queries using invalid token + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Logging Jobs without authorization token + Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication + Log The GET method queries omitting token + Set Headers {"Accept": "${ACCEPT_JSON}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Logging Jobs with expired or revoked authorization token + Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication + Log The GET method queries using invalid token + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs + ${output}= Output response + Set Suite Variable ${response} ${output} + GET Logging Job with invalid filter Set Headers {"Accept":"${ACCEPT}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} diff --git a/SOL009/NFVMANOLogManagement-API/environment/variables.txt b/SOL009/NFVMANOLogManagement-API/environment/variables.txt index aff90b476..4a30d550a 100644 --- a/SOL009/NFVMANOLogManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOLogManagement-API/environment/variables.txt @@ -9,6 +9,7 @@ ${erroneousLogJobId} wrongID ${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${NEG_AUTHORIZATION} Bearer negativetoken +${BAD_AUTHORIZATION} Bear sometoken ${CONTENT_TYPE} application/json ${CONTENT_TYPE_JSON} application/json -- GitLab From b297077242a5a7f46c1cd9735d829d4d41bb3e87 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 7 Oct 2020 11:50:33 +0500 Subject: [PATCH 468/580] template fix added --- .../NFVMANOLogManagementKeywords.robot | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index dfaf7ab2e..6aedfe83c 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -34,7 +34,8 @@ POST Create a new logging job Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/createLoggingJobRequest.json + ${template}= Get File jsons/createLoggingJobRequest.json + ${body}= Format String ${template} objectInstanceId=${objectInstanceId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs ${body} ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -- GitLab From 870db8b284d55fe4be14d598fdc743e07e490415 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 22 Oct 2020 18:43:22 +0200 Subject: [PATCH 469/580] updated references --- .../NFVMANOLogManagement-API/ApiVersion.robot | 20 +++++------ .../CompileLogTask.robot | 16 ++++----- .../IndividualLoggingJob.robot | 14 ++++---- .../IndividualReport.robot | 14 ++++---- .../IndividualSubscription.robot | 14 ++++---- .../LoggingJobs.robot | 36 +++++++++---------- 6 files changed, 57 insertions(+), 57 deletions(-) diff --git a/SOL009/NFVMANOLogManagement-API/ApiVersion.robot b/SOL009/NFVMANOLogManagement-API/ApiVersion.robot index 5fb05242f..f97546b9e 100644 --- a/SOL009/NFVMANOLogManagement-API/ApiVersion.robot +++ b/SOL009/NFVMANOLogManagement-API/ApiVersion.robot @@ -11,7 +11,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot index 224cf601f..269d5ea73 100644 --- a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot +++ b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot @@ -13,7 +13,7 @@ Request to compile the logged data into a file - Synchronous mode ... Test title: Request to compile the logged data into a file - Synchronous mode ... Test objective: The objective is to request to compile the logged data into a file in synchronous mode and perform a JSON schema validation on the returned log report data structure ... Pre-conditions: none - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can decide immediately what to respond to a compile request ... Post-Conditions: none @@ -27,7 +27,7 @@ Request to compile the logged data into a file - Asynchronous mode ... Test title: Request to compile the logged data into a file - Asynchronous mode ... Test objective: The objective is to request to compile the logged data into a file in asynchronous mode ... Pre-conditions: none - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can not decide immediately what to respond to a compile request ... Post-Conditions: none @@ -41,7 +41,7 @@ Request to compile the logged data into a file - Already Processing ... Test title: Request to compile the logged data into a file - Already Processing ... Test objective: The objective is to request to compile the logged data into a file when a log data compilation and report creation is already ongoing, or a log report has just been created, for the specified logging job at the time of processing the request ... Pre-conditions: none - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ Request to compile the logged data into a file with unprocessable entity ... Test title: Request to compile the logged data into a file with unprocessable entity ... Test objective: The objective is to test that the rrequest to compile the logged data into a file fails when error in request body. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET Compiled Log Data - Method not implemented ... Test title: GET Compiled Log Data - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve compiled log data. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ PUT Compiled Log Data - Method not implemented ... Test title: PUT Compiled Log Data - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update compiled log data. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.6.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ PATCH Compiled Log Data - Method not implemented ... Test title: PATCH Compiled Log Data - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update compiled log data. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.6.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ DELETE Compiled Log Data - Method not implemented ... Test title: DELETE Compiled Log Data - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update compiled log data. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.6.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot index 40505fdc8..576a9dcde 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot @@ -12,7 +12,7 @@ POST Individual Logging Job - Method not implemented ... Test title: POST Individual Logging Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create an Indiviual Logging ... Pre-conditions: none - ... Reference: clause 8.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.4.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET individual Logging Job ... Test title: Get individual Logging Job ... Test objective: The objective is to test the retrieval of an individual logging job and perform a JSON schema validation of the collected job data structure ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET individual Logging Job with invalid resource identifier ... Test title: Get individual Logging Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual logging job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Individual Logging Job - Method not implemented ... Test title: PUT Individual Logging Job - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing Logging Job ... Pre-conditions: none - ... Reference: clause 8.5.4.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.4.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Individual Logging Job - Method not implemented ... Test title: PATCH Individual Logging Job - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new Logging Job ... Pre-conditions: none - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Individual Logging Job ... Test title: DELETE Individual Logging Job ... Test objective: The objective is to test the deletion of an individual logging job ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Logging Job is no more available. @@ -88,7 +88,7 @@ DELETE Individual Logging Job with invalid resource identifier ... Test title: DELETE Individual Logging Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual logging job fails when using an invalid resource identifier ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot index d96270ac4..38f25ba6a 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot @@ -12,7 +12,7 @@ POST Individual Log Report - Method not implemented ... Test title: POST Individual Log Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new log report. ... Pre-conditions: none - ... Reference: clause 8.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.5.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Individual Log Report ... Test title: Get Individual Log Report ... Test objective: The objective is to test the retrieval of an individual log report and perform a JSON schema validation of the collected report data structure ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get Individual Log Report (asynchronous) ... Test title: Get Individual Log Report (asynchronous) ... Test objective: The objective is to test the retrieval of an individual log report is ongoing and no log report is available yet. ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ Get Individual Log Report with invalid resource endpoint ... Test title: Get Individual Log Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual log report fails when using an invalid resource endpoint. ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PUT Individual Log Report - Method not implemented ... Test title: PUT Individual Log Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing log report. ... Pre-conditions: none - ... Reference: clause 8.5.5.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.5.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ PATCH Individual Log Report - Method not implemented ... Test title: PATCH Individual Log Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existinglog report. ... Pre-conditions: none - ... Reference: clause 8.5.5.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.5.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ DELETE Individual Log Report - Method not implemented ... Test title: DELETE Individual Log Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing log report. ... Pre-conditions: none - ... Reference: clause 8.5.5.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.5.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot index cbc6a2153..ce3f231f0 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the retrieval of individual subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual Subscription - invalid resource identifier ... Test title: GET Individual Subscription - invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual subscription fails when using an invalid resource identifier ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ DELETE Individual Subscription ... Test title: DELETE Individual Subscription ... Test objective: The objective is to test the deletion of an individual subscription ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The is not available anymore in the NFV-MANO @@ -51,7 +51,7 @@ DELETE Individual Subscription - invalid resource identifier ... Test title: DELETE Individual Subscription - invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual subscription fails when using an invalid resource identifier ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Subscription ... Pre-conditions: none - ... Reference: clause 8.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.8.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PUT Individual Subscription - Method not implemented ... Test title: PUT Individual Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing subscription ... Pre-conditions: none - ... Reference: clause 8.5.8.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.8.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ PATCH Individual Subscription - Method not implemented ... Test title: PATCH Individual Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing subscription ... Pre-conditions: none - ... Reference: clause 8.5.8.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.8.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot index 329a1c5f3..94f69aa17 100644 --- a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot +++ b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot @@ -12,7 +12,7 @@ POST Create a new logging job ... Test title: POST Create a new logging job ... Test objective: The objective is to create a new logging job, and perform the JSON schema validation of the operation HTTP response. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: logging job created @@ -27,7 +27,7 @@ GET information about logging jobs ... Test title: GET information logging jobs ... Test objective: The objective is to retrieve information about logging jobs, and perform the JSON schema validation of the operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Logging jobs - invalid attribute-based filter ... Test title: GET Logging jobs - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of logging jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Logging jobs - invalid attribute selector ... Test title: GET Logging jobs - invalid attribute selector ... Test objective: The objective is to test that the retrieval of logging jobs fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ GET Logging jobs - Bad Request Response too Big ... Test title: GET Logging jobs - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of Logging job fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ GET information about logging jobs with attribute-based filter ... Test title: GET information about logging jobs with attribute-based filter ... Test objective: The objective is to retrieve information about the logging jobs with attribute filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ GET information about logging jobs with "all_fields" attribute selector ... Test title: GET information about logging jobs with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about logging jobs with "all_fields" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ GET information about Logging Jobs with "exclude_default" attribute selector ... Test title: GET information about Logging Jobs with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about logging jobs with "exclude_default" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ GET information about Logging Jobs with "fields" attribute selector ... Test title: GET information about Logging Jobs with fields attribute selector ... Test objective: The objective is to retrieve information about Logging Jobs with fields attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -131,7 +131,7 @@ GET information about Logging Jobs with "exclude_fields" attribute selector ... Test title: GET information about Logging Jobs with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the Logging Jobs with "exclude_fields" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -144,7 +144,7 @@ GET information about Logging Jobs with "fields" and "exclude_default" attribute ... Test title: GET information about Logging Jobs with fields and exclude_default attribute selector ... Test objective: The objective is to retrieve information about Logging Jobs with fields and exclude_default attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -157,7 +157,7 @@ GET information about Logging Jobs with Paged Response ... Test title: GET information about Logging Jobs with Paged Response ... Test objective: The objective is to query information about Logging Jobs to get Paged Response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -170,7 +170,7 @@ GET information about Logging Jobs with malformed authorization token ... Test title: GET information about Logging Jobs with malformed authorization token ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using malformed authorization token. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -182,7 +182,7 @@ GET information about Logging Jobs without authorization token ... Test title: GET information about Logging Jobs without authorization token ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when omitting the authorization token. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -194,7 +194,7 @@ GET information about Logging Jobs with expired or revoked authorization token ... Test title: GET information about Logging Jobs with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using expired or revoked authorization token. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -206,7 +206,7 @@ PUT Logging Jobs - Method not implemented ... Test title: PUT Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: clause 8.5.3.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -218,7 +218,7 @@ PATCH Logging Jobs - Method not implemented ... Test title: PATCH Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: clause 8.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -230,7 +230,7 @@ DELETE Logging Jobs - Method not implemented ... Test title: DELETE Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: clause 8.5.3.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.3.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none -- GitLab From baddf9da514a24965f46ea9da3248fb6ba1987b2 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 22 Oct 2020 18:48:33 +0200 Subject: [PATCH 470/580] updated references bis --- .../NotificationEndpoint.robot | 2 +- .../Subscriptions.robot | 24 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot index d4bf4edf0..468b4ad2b 100644 --- a/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot @@ -16,7 +16,7 @@ Log Report Avaliable Notification ... Test title: Log Report Avaliable Notification ... Test objective: The objective is to test the dispatch of Log Report Avaliable Notification when new log report is available in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: none - ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot index bc85a54c7..1213076cf 100644 --- a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ GET all Subscriptions ... Test title: GET all Subscriptions ... Test objective: The objective is to test the retrieval list of active subscriptions list to log management notifications and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ GET Subscriptions with attribute-based filter ... Test title: GET Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of active subscriptions list to log management notifications using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ GET Subscriptions with Paged Response ... Test title: GET Subscriptions with Paged Response ... Test objective: The objective is to query information of active subscriptions list to log management notifications to get Paged Response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET Subscriptions - invalid attribute-based filter ... Test title: GET Subscriptions - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ GET Subscriptions - Bad Request Response too Big ... Test title: GET Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ GET Subscriptions - invalid resource endpoint ... Test title: GET Subscriptions - invalid resource endpoint ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when using invalid resource endpoint. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ Create new Subscription ... Test title: Create new Subscription ... Test objective: The objective is to test the creation of a new subscription to log management notification and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: - ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The subscription is successfully set and it matches the issued subscription @@ -110,7 +110,7 @@ Create request for duplicated Subscription not creating duplicated subscriptions ... Test title: Create request for duplicated Subscription not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing Subscription returned is available in the NFV-MANO @@ -126,7 +126,7 @@ Create request for duplicated Subscription creating duplicated subscriptions ... Test title: Create request for duplicated Subscription creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated subscription is successfully set and it matches the issued subscription @@ -141,7 +141,7 @@ PUT Subscriptions - Method not implemented ... Test title: PUT Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions ... Pre-conditions: none - ... Reference: clause 8.5.7.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.7.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ PATCH Subscriptions - Method not implemented ... Test title: PATCH Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions ... Pre-conditions: none - ... Reference: clause 8.5.7.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.7.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ DELETE Subscriptions - Method not implemented ... Test title: DELETE Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions ... Pre-conditions: none - ... Reference: clause 8.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 8.5.7.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none -- GitLab From dec21aa05e49aa74f6310fced5439bb4354e19ff Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 26 Oct 2020 11:11:31 +0500 Subject: [PATCH 471/580] added testcases for Subscription filter parameter --- .../IndividualSubscription.robot | 1 + .../NFVMANOLogManagementKeywords.robot | 24 ++++++++++ .../Subscriptions.robot | 44 +++++++++++++++---- .../environment/variables.txt | 3 +- 4 files changed, 63 insertions(+), 9 deletions(-) diff --git a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot index ce3f231f0..65456e8fd 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot @@ -32,6 +32,7 @@ GET Individual Subscription - invalid resource identifier ... Post-Conditions: none GET individual Subscription with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails DELETE Individual Subscription [Documentation] Test ID: 8.3.4.6.3 diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index 6aedfe83c..b49ebc37a 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -418,6 +418,30 @@ Get Subscriptions with invalid attribute-based filters ${output}= Output response Set Suite Variable ${response} ${output} +Get subscriptions with filter "id" + Log Get the list of active subscriptions using a filter "id" + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?id=${subscription_id} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check PostCondition HTTP Response Body Subscription Matches the requested attribute-based filter "id" + Should Be Equal As Strings ${response['body']['id']} ${subscription_id} + +Get subscriptions with filter "filter_notificationTypes" + Log Get the list of active subscriptions using a filter "filter.notificationTypes" + Set Headers {"Accept": "${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.notificationTypes=${notification_type} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_notificationTypes" + :FOR ${item} IN @{response['body']} + Should Be Equal As Strings ${item['filter']['notificationTypes']} ${notification_type} + END + Send Post Request for Subscription Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} diff --git a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot index 1213076cf..37bf29bc6 100644 --- a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot @@ -63,7 +63,6 @@ GET Subscriptions - invalid attribute-based filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails - GET Subscriptions - Bad Request Response too Big [Documentation] Test ID: 8.3.4.5.5 ... Test title: GET Subscriptions - Bad Request Response too Big @@ -88,12 +87,41 @@ GET Subscriptions - invalid resource endpoint ... Post-Conditions: none Get all Subscriptions Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Subscription with attribute-based filter "id" + [Documentation] Test ID: 8.3.4.5.7 + ... Test title: GET Subscription with attribute-based filter "id" + ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" + ... Pre-conditions: none + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get subscriptions with filter "id" + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LogmSubscription + Check PostCondition HTTP Response Body Subscription Matches the requested attribute-based filter "id" + +Get subscriptions with filter "filter.notificationTypes" + [Documentation] Test ID: 8.3.4.5.8 + ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" + ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" + ... Pre-conditions: none + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get subscriptions with filter "filter_notificationTypes" + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LogmSubscriptions + Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_notificationTypes" Create new Subscription - [Documentation] Test ID 8.3.4.5.7 + [Documentation] Test ID 8.3.4.5.9 ... Test title: Create new Subscription ... Test objective: The objective is to test the creation of a new subscription to log management notification and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -106,7 +134,7 @@ Create new Subscription Create request for duplicated Subscription not creating duplicated subscriptions [Tags] no-duplicated-subs - [Documentation] Test ID 8.3.4.5.8 + [Documentation] Test ID 8.3.4.5.10 ... Test title: Create request for duplicated Subscription not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -122,7 +150,7 @@ Create request for duplicated Subscription not creating duplicated subscriptions Create request for duplicated Subscription creating duplicated subscriptions [Tags] duplicated-subs - [Documentation] Test ID 8.3.4.5.9 + [Documentation] Test ID 8.3.4.5.11 ... Test title: Create request for duplicated Subscription creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -137,7 +165,7 @@ Create request for duplicated Subscription creating duplicated subscriptions Check Postcondition Subscription Is Set PUT Subscriptions - Method not implemented - [Documentation] Test ID 8.3.4.5.10 + [Documentation] Test ID 8.3.4.5.12 ... Test title: PUT Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions ... Pre-conditions: none @@ -149,7 +177,7 @@ PUT Subscriptions - Method not implemented Check HTTP Response Status Code Is 405 PATCH Subscriptions - Method not implemented - [Documentation] Test ID 8.3.4.5.11 + [Documentation] Test ID 8.3.4.5.13 ... Test title: PATCH Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions ... Pre-conditions: none @@ -161,7 +189,7 @@ PATCH Subscriptions - Method not implemented Check HTTP Response Status Code Is 405 DELETE Subscriptions - Method not implemented - [Documentation] Test ID 8.3.4.5.12 + [Documentation] Test ID 8.3.4.5.14 ... Test title: DELETE Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions ... Pre-conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/environment/variables.txt b/SOL009/NFVMANOLogManagement-API/environment/variables.txt index 4a30d550a..82c8646ff 100644 --- a/SOL009/NFVMANOLogManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOLogManagement-API/environment/variables.txt @@ -62,4 +62,5 @@ ${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa ${erroneousSubscriptionId} erroneousSubscriptionId ${newSubscriptionId} newSubsciptionId -${objectInstanceId} 4bd7-94b4-6bbb86-9c79aa \ No newline at end of file +${objectInstanceId} 4bd7-94b4-6bbb86-9c79aa +${notification_type} LogReportAvailableNotification \ No newline at end of file -- GitLab From ebe375ea2fefa73f6701358d1bcc3c3ce6b6092d Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 26 Oct 2020 13:54:55 +0500 Subject: [PATCH 472/580] added postcondition --- SOL009/NFVMANOLogManagement-API/CompileLogTask.robot | 8 ++++---- .../NFVMANOLogManagementKeywords.robot | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot index 269d5ea73..140313716 100644 --- a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot +++ b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot @@ -12,7 +12,7 @@ Request to compile the logged data into a file - Synchronous mode [Documentation] Test ID: 8.3.4.4.1 ... Test title: Request to compile the logged data into a file - Synchronous mode ... Test objective: The objective is to request to compile the logged data into a file in synchronous mode and perform a JSON schema validation on the returned log report data structure - ... Pre-conditions: none + ... Pre-conditions: logging job is available ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can decide immediately what to respond to a compile request @@ -26,15 +26,15 @@ Request to compile the logged data into a file - Asynchronous mode [Documentation] Test ID: 8.3.4.4.2 ... Test title: Request to compile the logged data into a file - Asynchronous mode ... Test objective: The objective is to request to compile the logged data into a file in asynchronous mode - ... Pre-conditions: none + ... Pre-conditions: logging job is available ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can not decide immediately what to respond to a compile request - ... Post-Conditions: none + ... Post-Conditions: log report is available to the API consumer Send Log data Request in Asynchronous mode Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location - Wait for compilation success notification + Check postcondition Wait for compilation success notification Request to compile the logged data into a file - Already Processing [Documentation] Test ID: 8.3.4.4.3 diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index b49ebc37a..f1ea06205 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -322,7 +322,7 @@ Send Log data Request in Asynchronous mode ${body}= Output response Set Suite Variable &{response} ${body} - Wait for compilation success notification + Check postcondition Wait for compilation success notification Wait Until Keyword Succeeds ${retry} ${polling} Get success notification Get Success notification -- GitLab From 428d5d87ac53f9aa14b61db169b110960973f155 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 11 Aug 2020 11:56:58 +0500 Subject: [PATCH 473/580] API added --- ...onfigurationInformationManagement-API.yaml | 33445 ++++++++++++++++ 1 file changed, 33445 insertions(+) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/SOL009-NFVMANOConfigurationInformationManagement-API.yaml diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/SOL009-NFVMANOConfigurationInformationManagement-API.yaml b/SOL009/NFVManoConfigurationAndInformationManagement-API/SOL009-NFVMANOConfigurationInformationManagement-API.yaml new file mode 100644 index 000000000..3fed77a90 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/SOL009-NFVMANOConfigurationInformationManagement-API.yaml @@ -0,0 +1,33445 @@ +openapi: 3.0.2 +info: + version: '1.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1' + title: SOL009 - NFV-MANO Configuration and Information Management Interface + description: > + SOL009 - NFV-MANO Configuration and Information Management Interface + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to and has not been + approved by the ETSI NFV ISG. In case of discrepancies the published ETSI + Group Specification takes precedence. Please report bugs to + https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis + license: + name: ETSI Forge copyright notice + url: 'https://forge.etsi.org/etsi-forge-copyright-notice.txt' + contact: + name: NFV-SOL WG +externalDocs: + description: ETSI GS NFV-SOL 009 V3.3.1 + url: >- + https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/009/03.03.01_60/gs_NFV-SOL009v030301p.pdf +servers: + - url: 'http://0.0.0.0/nfvmanocim/v1' + description: | + API HTTP Server + - url: 'https://0.0.0.0/nfvmanocim/v1' + description: | + API HTTPS Server +paths: + /api_versions: + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: false + schema: + type: string + - name: Authorization + description: 'The authorization token for the request. Reference: IETF RFC 7235' + in: header + required: false + schema: + type: string + get: + summary: Retrieve API version information + description: > + The GET method reads API version information. This method shall follow + the provisions specified in table 4.6.3.3.3.2-1 for request and response + data structures, and response codes. URI query parameters are not + supported. + responses: + '200': + description: > + 200 OK + + API version information was read successfully. The response body + shall contain 4.4 API version information, as defined in clause + 4.4.1.13. + content: + application/json: + schema: + description: | + This type represents API version information. + type: object + required: + - uriPrefix + - apiVersions + properties: + uriPrefix: + description: > + Specifies the URI prefix for the API, in the following + form {apiRoot}/{apiName}/{apiMajorVersion}/. + type: string + apiVersions: + description: > + Version(s) supported for the API signaled by the uriPrefix + attribute. + type: array + items: + type: object + required: + - version + properties: + version: + description: > + Identifies a supported version. The value of the + version attribute shall be a version identifier as + specified in clause 9.1 (SOL013). + type: string + isDeprecated: + description: > + If such information is available, this attribute + indicates whether use of the version signaled by the + version attribute is deprecated (true) or not + (false). + + A deprecated version is still supported by the API + producer but is recommended not to be used any + longer. When a version is no longer supported, it + does not appear in the response body. + type: boolean + retirementDate: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: The used API version. + schema: + type: string + maximum: 1 + minimum: 1 + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '413': + description: > + 413 PAYLOAD TOO LARGE + + If the payload body of a request is larger than the amount of data + the API producer is willing or able to process, it shall respond + with this response code, following the provisions in IETF RFC 7231 + for the use of the "Retry-After" HTTP header and for closing the + connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '414': + description: > + 414 URI TOO LONG + + If the request URI of a request is longer than the API producer is + willing or able to process, it shall respond with this response + code. This condition can e.g. be caused by passing long queries in + the request URI of a GET request. The "ProblemDetails" structure may + be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '416': + description: | + 416 Range Not Satisfiable + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '429': + description: > + 429 TOO MANY REQUESTS + + If the API consumer has sent too many requests in a defined period + of time and the API producer is able to detect that condition ("rate + limiting"), the API producer shall respond with this response code, + following the provisions in IETF RFC 6585 [17] for the use of the + "Retry-After" HTTP header. The "ProblemDetails" structure shall be + provided and shall include in the "detail" attribute more + information about the source of the problem. + + The period of time and allowed number of requests are configured + within the API producer by means outside the scope of the present + document. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + /mano_entity: + get: + description: > + Retrives information about an NFV-MANO functional entity by reading the + NFV-MANO entity resource. This method shall follow the provisions + specified in the tables 5.5.3.3.2-1 and 5.5.3.3.2-2 for URI query + parameters, request and response data structures, and response + codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when configuration and information about the + NFV-MANO functional entity has been read successfully. The response + body shall contain a representation of the NFV-MANO functional + entity, as defined in clause 5.6.2.2. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: | + This type represents an NFV-MANO functional entity. + type: object + required: + - id + - type + - name + - description + - provider + - softwareVersion + - manoConfigurableParams + - manoApplicationState + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + type: + description: "The enumeration ManoEntityEnumType defines the permitted values to represent NFV-MANO functional entities. It shall comply with the provisions :\n - NFVO\tThe NFV-MANO functional entity is an NFVO.\n - VNFM\tThe NFV-MANO functional entity is a VNFM.\n - VIM\tThe NFV-MANO functional entity is a VIM.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + name: + description: | + Human-readable name of the NFV-MANO functional entity. + This attribute can be modified with the PATCH method. + type: string + description: + description: > + Human-readable description of the NFV-MANO functional + entity. + + This attribute can be modified with the PATCH method. + type: string + provider: + description: > + Information about the provider of the NFV-MANO functional + entity. It typically includes the name of the provider. + type: string + softwareVersion: + description: > + The version of the software of the NFV-MANO functional + entity. $ref: + "../components/SOL009_schemas.yaml#/components/schemas/Version" + manoEntityComponents: + description: "The deployed NFV-MANO functional entity components which realize the NFV-MANO functional entity. \nNOTE:\tIt is optional for the API producer to support the \"manoEntityComponents\" attribute.\n" + type: array + items: + description: > + This type represents information of a deployed component + realizing part of an NFV-MANO functional entity. It is + optional for the API producer to support this type. + type: object + properties: + id: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceIds: + description: > + References to the NFV-MANO services that depend on + the NFV-MANO functional entity component. The + identifier of the ManoService is referred. A + service may depend on multiple components. Multiple + services may depend on the same component. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + required: + - id + manoServices: + description: > + Information about the NFV-MANO services provided by the + NFV-MANO functional entity. + type: array + items: + description: > + This type represents information about an NFV-MANO + service provided by the NFV-MANO functional entity. + type: object + properties: + id: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + name: + description: > + Human-readable name of the NFV-MANO service. + + This attribute can be modified with the PATCH + method. + type: string + description: + description: > + Human-readable description of the NFV-MANO service. + + This attribute can be modified with the PATCH + method. + type: string + manoServiceInterfaceIds: + description: "Reference to the NFV-MANO interfaces associated to the NFV-MANO service. If cardinality is greater than one, the type of ManoServiceInterface (see clause 5.6.3.3) shall be the same. The identifier of the ManoServiceInterface is referred. \nNOTE:\tA cardinality greater than one supports having different interface versions or apiEndpoints to be used for accessing the same instance of a NFV-MANO service.\n" + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + minItems: 1 + _links: + description: | + Links to resources related to this resource. + type: object + properties: + manoServiceInterfaces: + description: > + Link to the "individual NFV-MANO service + interface" resources with information about the + associated interfaces to the NFV-MANO service. + type: array + items: + description: > + This type represents a link to a resource + using an absolute URI. + type: object + required: + - href + properties: + href: + description: > + String formatted according to IETF RFC + 3986. + type: string + minItems: 1 + required: + - manoServiceInterfaces + required: + - id + - name + - description + - manoServiceInterfaceIds + - _links + manoConfigurableParams: + description: > + # Warning: No definition found in the document + ManoConfigurableParams + manoApplicationState: + description: > + Information and current values of the NFV-MANO functional + entity’s application state. + type: object + required: + - operationalState + - administrativeState + - usageState + properties: + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + usageState: + description: "The enumeration UsageStateEnumType defines values representing the usage state of a managed entity. The UsageStateEnumType shall comply with the provisions:\n - IN_USE\tThe managed entity is currently being used.\n - NOT_IN_USE\tThe managed entity is currently not being used.\n" + type: string + enum: + - IN_USE + - NOT_IN_USE + nfvoSpecificInfo: + description: > + This type represents information attributes specific to an + NFVO entity, and that can be relevant to more than one + NFV-MANO service offered by an NFVO entity. + type: object + properties: + maxOnboardedNsdNum: + description: > + Maximum number of NSDs that can be on-boarded on the + NFVO. + + NOTE: If this attribute is not present, the value of + this parameter is undefined. + type: integer + maxOnboardedVnfPkgNum: + description: > + Maximum number of VNF Packages that can be on-boarded + on the NFVO. + + NOTE: If this attribute is not present, the value of + this parameter is undefined. + type: integer + supportedVnfdFormats: + description: | + Supported VNFD data formats. + type: object + properties: + vnfdFormat: + description: | + Name of the VNFD format. + Permitted values: + - TOSCA: The VNFD follows TOSCA definition, according to ETSI + GS NFV-SOL 001 standard. + - YANG: The VNFD follows YANG definition according to ETSI + GS NFV-SOL 006 standard. + type: string + enum: + - TOSCA + - YANG + standardVersion: + description: | + A version. + type: string + required: + - vnfdFormat + - standardVersion + supportedNsdFormats: + description: | + Supported NSD data formats. + type: object + properties: + nsdFormat: + description: | + Name of the NSD format. + Permitted values: + - TOSCA: The VNFD follows TOSCA definition, according to ETSI + GS NFV-SOL 001 standard. + - YANG: The VNFD follows YANG definition according to ETSI + GS NFV-SOL 006 standard. + type: string + enum: + - TOSCA + - YANG + standardVersion: + description: | + A version. + type: string + required: + - nsdFormat + - standardVersion + required: + - supportedVnfdFormats + - supportedNsdFormats + vnfmSpecificInfo: + description: > + This type represents information attributes specific to a + VNFM entity, and that can be relevant to more than one + NFV-MANO service offered by a VNFM entity. + type: object + properties: + resoruceMgmtModeSupport: + description: | + The supported resource management modes of the VNFM. + Permitted values: + - DIRECT: The VNFM supports direct mode only. + - INDIRECT: The VNFM supports indirect mode only. + - BOTH: The VNFM supports both direct and indirect mode. + type: string + enum: + - DIRECT + - INDIRECT + - BOTH + managedVnfInstanceInfos: + description: > + The kinds of VNF instances that can be managed, e.g. + to determine the compatibility of a VNF with certain + VNFM according to the vnfmInfo attribute in the VNFD + (see table 7.1.2.2-1 in ETSI GS NFV-IFA 011). + type: array + items: + type: string + minItems: 1 + supportedVnfdFormats: + description: | + Supported VNFD data formats. + type: array + items: + type: object + properties: + vnfdFormat: + description: | + Name of the VNFD format. + Permitted values: + - TOSCA: The VNFD follows TOSCA definition, according to ETSI + GS NFV-SOL 001 standard. + - YANG: The VNFD follows YANG definition according to ETSI + GS NFV-SOL 006 standard. + type: string + enum: + - TOSCA + - YANG + standardVersion: + description: | + A version. + type: string + required: + - vnfdFormat + - standardVersion + minItems: 1 + required: + - resoruceMgmtModeSupport + - managedVnfInstanceInfos + - supportedVnfdFormats + vimSpecificInfo: + description: > + This type represents information attributes specific to a + VIM entity, and that can be relevant to more than one + NFV-MANO service offered by a VIM entity. + type: object + _links: + description: | + Links to resources related to this resource. + type: object + required: + - self + - manoServiceInterfaces + - peerEntities + - changeState + - changeStateOpOccs + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + manoServiceInterfaces: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + peerEntities: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + changeState: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + changeStateOpOccs: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + patch: + description: > + Modifies the NFV-MANO entity resource. Changes to the various + configuration and information attributes are applied to the NFV-MANO + functional entity, and are reflected in the representation of this + resource. This method shall follow the provisions specified in the + tables 5.5.3.3.4-1 and 5.5.3.3.4-2 for URI query parameters, request + and response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + requestBody: + description: > + Parameters for the NFV-MANO configuration and information + modification, as defined in clause 5.6.2.3. The Content-Type header + shall be set to "application/merge-patch+json" according to IETF RFC + 7396. + content: + application/merge-patch+json: + schema: + description: > + This type represents attribute modifications for configuration + parameters of an NFV-MANO functional entity. + type: object + properties: + name: + description: | + New value of the "name" attribute in "ManoEntity". + type: string + description: + description: | + New value of the "description" attribute in "ManoEntity". + type: string + clockSyncs: + description: > + New content of certain entries in the "clockSyncs" attribute + array in the "ManoEntityConfigurableParams", as defined + below this table. + type: array + items: + description: > + This type represents parameters for connecting to an NTP + server. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + type: + description: | + Type of clock synchronization. + Permitted values: + - NTP: For Network Time Protocol (NTP) based clock synchronization. + - OTHER: For other types of clock synchronization. + type: string + enum: + - NTP + - OTHER + ntpServerInfo: + description: > + Information for the NTP based clock synchronization. + Shall be present if type = "NTP". + type: object + properties: + ipAddress: + description: > + An IPV4 or IPV6 address. Representation: In case + of an IPV4 address, string that consists of four + decimal integers separated by dots, each integer + ranging from 0 to 255. In case of an IPV6 address, + string that consists of groups of zero to four + hexadecimal digits, separated by colons. + type: string + format: IP + hostname: + description: "Indicates the hostname of the NTP server. \nNOTE:\tEither ipAddress or hostname shall be set, but not both at the same time.\n" + type: string + otherClockSyncParams: + description: > + This type represents a list of key-value pairs. The + order of the pairs in the list is not significant. In + JSON, a set of keyvalue pairs is represented as an + object. It shall comply with the provisions defined in + clause 4 of IETF RFC 8259. In the following example, a + list of key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided to + illustrate that the values associated with different + keys can be of different type. + type: object + required: + - id + - type + clockSyncsDeleteIds: + description: > + List of identifiers entries to be deleted from the + "clockSyncs" attribute array in the + "ManoEntityConfigurableParams", as defined below this + table. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + defaultLogCompileBySizeValue: + description: | + Unsigned integer + type: number + defaultLogCompileByTimerValue: + description: | + Unsigned integer + type: number + manoServiceModifications: + description: > + New content of certain entries in the "manoServices" + attribute array in the "ManoEntity", as defined below this + table. + type: array + items: + type: object + properties: + id: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + name: + description: "New value for the \"name\" attribute in the \"ManoService\". \nNOTE:\tAt least one of these attributes shall be provided if requesting a modification of the NFV-MANO service identified by \"id\".\n" + type: string + description: + description: "New value for the \"description\" attribute in the \"ManoService\".\nNOTE:\tAt least one of these attributes shall be provided if requesting a modification of the NFV-MANO service identified by \"id\".\n" + type: string + required: + - id + required: true + responses: + '200': + description: > + 200 OK + + Shall be returned when the modification of configuration on the + NFV-MANO functional entity has been accepted and completed. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type represents attribute modifications that were + performed on the "NFV-MANO entity" resource of the producer + NFV-MANO functional entity. The attributes that can be + included consist of those requested to be modified explicitly + in the "ManoConfigModificationRequest" data structure. + type: object + properties: + name: + description: > + If present, this attribute signals modifications of the + "name" attribute in "ManoEntity", as defined in clause + 5.6.2.3 + type: string + description: + description: > + If present, this attribute signals modifications of the + "description" attribute in "ManoEntity", as defined in + clause 5.6.2.3. + type: string + clockSyncs: + description: > + If present, this attribute signals modifications of the + "clockSyncs" attribute in "ManoEntityConfigurableParams", + as defined in clause 5.6.2.3. + type: array + items: + description: > + This type represents parameters for connecting to an NTP + server. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + type: + description: | + Type of clock synchronization. + Permitted values: + - NTP: For Network Time Protocol (NTP) based clock synchronization. + - OTHER: For other types of clock synchronization. + type: string + enum: + - NTP + - OTHER + ntpServerInfo: + description: > + Information for the NTP based clock + synchronization. Shall be present if type = "NTP". + type: object + properties: + ipAddress: + description: > + An IPV4 or IPV6 address. Representation: In case + of an IPV4 address, string that consists of four + decimal integers separated by dots, each integer + ranging from 0 to 255. In case of an IPV6 + address, string that consists of groups of zero + to four hexadecimal digits, separated by colons. + type: string + format: IP + hostname: + description: "Indicates the hostname of the NTP server. \nNOTE:\tEither ipAddress or hostname shall be set, but not both at the same time.\n" + type: string + otherClockSyncParams: + description: > + This type represents a list of key-value pairs. The + order of the pairs in the list is not significant. + In JSON, a set of keyvalue pairs is represented as + an object. It shall comply with the provisions + defined in clause 4 of IETF RFC 8259. In the + following example, a list of key-value pairs with + four keys ("aString", "aNumber", "anArray" and + "anObject") is provided to illustrate that the + values associated with different keys can be of + different type. + type: object + required: + - id + - type + clockSyncsDeleteIds: + description: > + If present, this attribute signals modifications of + certain entries in "clockSyncs" attribute in + "ManoEntityConfigurableParams", as defined in clause + 5.6.2.3. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + defaultLogCompileBySizeValue: + description: | + Unsigned integer + type: number + defaultLogCompileByTimerValue: + description: | + Unsigned integer + type: number + manoServiceModifications: + description: > + If present, this attribute signals modifications of the + "manoServices" attribute array in the "ManoEntity", as + defined in clause 5.6.2.3. + type: array + items: + type: object + properties: + id: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + name: + description: > + If present, this attribute signals modification of + the "name" attribute in the "ManoService". + type: string + description: + description: > + If present, this attribute signals modification of + the "description" attribute in the "ManoService". + type: string + required: + - id + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '409': + description: > + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be + executed currently, due to a conflict with the state of the + "NFV-MANO entity" resource. + + Typically, this is due to the fact that another configuration and + information modification is ongoing. + + The response body shall contain a ProblemDetails structure, in + which the "detail" attribute should convey more information about + the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '412': + description: > + 412 PRECONDITION FAILED + + Shall be returned upon the following error: A precondition given in + an HTTP request header is not fulfilled. + + Typically, this is due to an ETag mismatch, indicating that the + resource was modified by another entity. + + The response body should contain a ProblemDetails structure, in + which the "detail" attribute should convey more information about + the error + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + /mano_entity/change_state: + post: + description: > + Requests to change the state of the NFV-MANO functional entity + application. + + This method shall follow the provisions specified in the tables + 5.5.7.3.1-1 and 5.5.7.3.1-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + requestBody: + description: > + Parameters for the change state operation, as defined in clause + 5.6.2.8. + content: + application/json: + schema: + description: > + This type represents request parameters for changing the state + of a managed entity. + type: object + properties: + operationalStateChange: + description: "A change of operational state. Shall be present if the state change request refers to the operational state. NOTE:\tIn the present document version, a request shall only include an operational state change (attribute \"operationalStateChange\") or an administrative state change request (attribute \"administrativeStateChange\"), but not both.\n" + type: object + properties: + operationalStateAction: + description: "The enumeration ChangeOperationalStateEnumType defines permitted values for the change state operation. The ChangeOperationalStateEnumType shall comply with the provisions:\n - START\tTo start the managed entity.\n - STOP\tTo stop the managed entity.\n - RESTART\tTo stop and start again the managed entity.\n" + type: string + enum: + - START + - STOP + - RESTART + stopType: + description: "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions:\n - GRACEFUL\tTo stop the managed entity immediately after accepting the request.\n - FORCEFUL\tTo stop the managed entity attempting to gracefully discharge the entity from service.\n" + type: string + enum: + - GRACEFUL + - FORCEFUL + gracefulStopTimeout: + description: "The time internal (in seconds) to wait for the entity to be taken out of service during graceful stop. \nNOTE:\tThe \"stopType\" shall only be provided when the \"operationalStateAction\" attribute is equal to \"STOP\" or \"RESTART\". The \"gracefulStopTimeout\" shall be absent when the \"stopType\" attribute is equal to \"FORCEFUL\", and may be provided otherwise.\n" + type: integer + required: + - operationalStateAction + administrativeStateChange: + description: "A change of administrative state. Shall be present if the state change request refers to the administrative state. \nNOTE:\tIn the present document version, a request shall only include an operational state change (attribute \"operationalStateChange\") or an administrative state change request (attribute \"administrativeStateChange\"), but not both.\n" + type: object + properties: + administrativeStateAction: + description: "The enumeration ChangeAdministrativeStateEnumType defines permitted values for the change of administrative state operation. The ChangeAdministrativeStateEnumType shall comply with the provisions:\n - LOCK\tTo lock the managed entity.\n - UNLOCK\tTo unlock the managed entity.\n" + type: string + enum: + - LOCK + - UNLOCK + required: + - administrativeStateAction + required: true + responses: + '202': + description: > + 202 ACCEPTED + + Shall be returned when the request has been accepted for processing. + + The response body shall be empty. + + The HTTP response shall include a "Location" HTTP header that + contains the URI of the newly-created "Individual change state + operation occurrence" resource corresponding to the operation. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The resource URI of the created "Individual change state + operation occurence" resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '409': + description: > + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be + executed currently, due to a conflict with the state of the + resource. + + Typically, this is due to the fact that the resource is in an + incompatible state, or that another change state operation is + ongoing. + + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute shall convey more information about the + error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + /mano_entity/mano_interfaces: + get: + description: > + Queries information about multiple NFV-MANO service interfaces of the + NFV-MANO functional entity. This method shall follow the provisions + specified in the tables 5.5.10.3.2-1 and 5.5.10.3.2-2 for URI query + parameters, request and response data structures, and response codes. + parameters: + - name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of + ETSI GS NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this + parameter as part of the URI query string. The API consumer may + supply this parameter. + + All attribute names that appear in the ManoServiceInterface and in + data types referenced from it shall be supported by the NFV-MANO + functional entity in the expression. + in: query + required: false + schema: + type: string + - name: all_fields + description: > + Include all complex attributes in the response. See clause 5.3 of + ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support + this parameter. + in: query + required: false + schema: + type: string + - name: fields + description: > + Complex attributes to be included into the response. See clause 5.3 + of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity + should support this parameter. + in: query + required: false + schema: + type: string + - name: exclude_fields + description: > + Complex attributes to be excluded from the response. See clause 5.3 + of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity + should support this parameter. + in: query + required: false + schema: + type: string + - name: exclude_default + description: > + Indicates to exclude the following complex attributes from the + response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The + NFV-MANO functional entity shall support this parameter. + + The following attributes shall be excluded from the + ManoServiceInterface structure in the response body if this + parameter is provided, or none of the parameters "all_fields," + "fields", "exclude_fields", "exclude_default" are provided: - none + in: query + required: false + schema: + type: string + - name: nextpage_opaque_marker + description: > + Marker to obtain the next page of a paged response. Shall be + supported by the NFV-MANO functional entity if the entity supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS + NFV-SOL 013 for this resource. + in: query + required: false + schema: + type: string + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when information about zero or more NFV-MANO + service interfaces has been queried successfully. + + The response body shall contain in an array the representations of + zero or more NFV-MANO service interfaces, as defined in clause + 5.6.2.11. + + If the “filter" URI parameter or one of the "all_fields", "fields" + (if supported), "exclude_fields" (if supported) or + "exclude_default" URI parameters was supplied in the request, the + data in the response body shall have been transformed according to + the rules specified in clauses 5.2.2 and 5.3.2 of ETSI GS NFV-SOL + 013, respectively. + + If the NFV-MANO functional entity supports alternative N°2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this + resource, inclusion of the Link HTTP header in this response shall + follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Link: + description: > + Reference to other resources. Link HTTP header in this response + shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL + 013. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: > + This type represents an individual NFV-MANO service + interface produced by an NFV-MANO functional entity. + type: object + properties: + id: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + name: + description: > + Human-readable name of the NFV-MANO functional entity + interface. + + This attribute can be modified with the PATCH method. + type: string + type: + description: > + Type of the NFV-MANO service interface produced by the + NFV-MANO functional entity. Valid values are defined in + clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + providerSpecificApiVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: | + Exposed API endpoint of the interface. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The {apiName} of each interface is + defined in the standard the interface is compliant + to (see also clause 4.1 of ETSI GS NFV-SOL 013). + May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The major version is defined in the + standard the interface is compliant to (see also + clause 4.1 of ETSI GS NFV-SOL 013). May be present + otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + maxConcurrentIntOpNumber: + description: "Maximum number of concurrent operation requests supported on this interface. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n" + type: integer + supportedOperations: + description: > + Information about supported operations of this + interface. + type: array + items: + type: object + properties: + operationName: + description: | + Name of the operation supported on the interface. + type: string + maxConcurrentOpNumber: + description: "Maximum number of concurrent requests supported by the interface operation. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n" + type: integer + required: + - operationName + minItems: 1 + interfaceState: + description: | + State of the NFV-MANO service interface. + properties: + operationalState: + description: "The enumeration InterfaceOperationalStateEnumType defines values representing the operational state of an NFV-MANO service interface type of managed entity. The InterfaceOperationalStateEnumType shall comply with the provisions :\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + usageState: + description: "The enumeration UsageStateEnumType defines values representing the usage state of a managed entity. The UsageStateEnumType shall comply with the provisions:\n - IN_USE\tThe managed entity is currently being used.\n - NOT_IN_USE\tThe managed entity is currently not being used.\n" + type: string + enum: + - IN_USE + - NOT_IN_USE + required: + - operationalState + - administrativeState + - usageState + securityInfo: + description: > + This type represents security related information of an + NFV-MANO service interface produced by an NFV-MANO + functional entity. + type: object + properties: + authType: + description: > + Type of API request authorization to be used by the + API producer. + + The support of authorization methods for the API + producer is specified in clause 8.3.6 of ETSI GS + NFV-SOL 013. + + Permitted values: + - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + webFingerHost: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - webFingerHost + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + authServerId: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - authServerId + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API producer when performing + the SSL or TLS negotiation with the + authorization server. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - providedConfiguration + - tlsCipherSuites + tlsTunnelInfo: + description: > + Information and configuration related to the use of + TLS tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: >- + List of cipher suites that shall be declared as + supported by the API producer when performing + the SSL or TLS negotiation with the API client. + Valid values of cipher suites are defined in + IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - tlsTunnelCipherSuites + required: + - authType + - oauthServerInfo + metadata: + description: > + This type represents a list of key-value pairs. The + order of the pairs in the list is not significant. In + JSON, a set of keyvalue pairs is represented as an + object. It shall comply with the provisions defined in + clause 4 of IETF RFC 8259. In the following example, a + list of key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided to + illustrate that the values associated with different + keys can be of different type. + type: object + required: + - id + - name + - type + - standardVersion + - providerSpecificApiVersion + - apiVersion + - apiEndpoint + - supportedOperations + - interfaceState + '400': + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Invalid attribute selector. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/mano_entity/mano_interfaces/{manoServiceInterfaceId}': + parameters: + - name: manoServiceInterfaceId + in: path + description: Identifier of the MANO service interface. + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + get: + description: > + retrieves information about an NFV-MANO service interface of the + producer NFV-MANO functional entity by reading an "Individual NFV-MANO + service interface" resource. + + This method shall follow the provisions specified in the tables + 5.5.11.3.2-1 and 5.5.11.3.2-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when information about an individual NFV-MANO + service interface has been read successfully. + + The response body shall contain a representation of the NFV-MANO + service interface, as defined in clause 5.6.2.11. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type represents an individual NFV-MANO service interface + produced by an NFV-MANO functional entity. + type: object + properties: + id: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + name: + description: > + Human-readable name of the NFV-MANO functional entity + interface. + + This attribute can be modified with the PATCH method. + type: string + type: + description: > + Type of the NFV-MANO service interface produced by the + NFV-MANO functional entity. Valid values are defined in + clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + providerSpecificApiVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: | + Exposed API endpoint of the interface. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The {apiName} of each interface is + defined in the standard the interface is compliant to + (see also clause 4.1 of ETSI GS NFV-SOL 013). May be + present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. Shall + be present for ETSI NFV specified RESTful NFV-MANO + APIs. The major version is defined in the standard + the interface is compliant to (see also clause 4.1 of + ETSI GS NFV-SOL 013). May be present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + maxConcurrentIntOpNumber: + description: "Maximum number of concurrent operation requests supported on this interface. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n" + type: integer + supportedOperations: + description: | + Information about supported operations of this interface. + type: array + items: + type: object + properties: + operationName: + description: | + Name of the operation supported on the interface. + type: string + maxConcurrentOpNumber: + description: "Maximum number of concurrent requests supported by the interface operation. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n" + type: integer + required: + - operationName + minItems: 1 + interfaceState: + description: | + State of the NFV-MANO service interface. + properties: + operationalState: + description: "The enumeration InterfaceOperationalStateEnumType defines values representing the operational state of an NFV-MANO service interface type of managed entity. The InterfaceOperationalStateEnumType shall comply with the provisions :\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + usageState: + description: "The enumeration UsageStateEnumType defines values representing the usage state of a managed entity. The UsageStateEnumType shall comply with the provisions:\n - IN_USE\tThe managed entity is currently being used.\n - NOT_IN_USE\tThe managed entity is currently not being used.\n" + type: string + enum: + - IN_USE + - NOT_IN_USE + required: + - operationalState + - administrativeState + - usageState + securityInfo: + description: > + This type represents security related information of an + NFV-MANO service interface produced by an NFV-MANO + functional entity. + type: object + properties: + authType: + description: > + Type of API request authorization to be used by the + API producer. + + The support of authorization methods for the API + producer is specified in clause 8.3.6 of ETSI GS + NFV-SOL 013. + + Permitted values: + - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + webFingerHost: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - webFingerHost + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + authServerId: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - authServerId + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API producer when performing the + SSL or TLS negotiation with the authorization + server. Valid values of cipher suites are defined + in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - providedConfiguration + - tlsCipherSuites + tlsTunnelInfo: + description: > + Information and configuration related to the use of + TLS tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: >- + List of cipher suites that shall be declared as + supported by the API producer when performing the + SSL or TLS negotiation with the API client. Valid + values of cipher suites are defined in IETF RFC + 8447. + type: array + items: + type: string + minItems: 1 + required: + - tlsTunnelCipherSuites + required: + - authType + - oauthServerInfo + metadata: + description: > + This type represents a list of key-value pairs. The order + of the pairs in the list is not significant. In JSON, a + set of keyvalue pairs is represented as an object. It + shall comply with the provisions defined in clause 4 of + IETF RFC 8259. In the following example, a list of + key-value pairs with four keys ("aString", "aNumber", + "anArray" and "anObject") is provided to illustrate that + the values associated with different keys can be of + different type. + type: object + required: + - id + - name + - type + - standardVersion + - providerSpecificApiVersion + - apiVersion + - apiEndpoint + - supportedOperations + - interfaceState + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + patch: + description: > + Modifies an "Individual NFV-MANO service interface" resource. + + Changes to the configurable parameters of the corresponding NFV-MANO + service interface are applied to the information managed by the + producer NFV-MANO functional entity and reflected in the representation + of this resource. + + This method shall follow the provisions specified in the tables + 5.5.11.3.4-1 and 5.5.11.3.4-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + requestBody: + description: > + Parameters for the modification of configuration parameters of the + NFV-MANO service interface, as defined in clause 5.6.2.12. + + The Content-Type header shall be set to "application/merge-patch+json" + according to IETF RFC 7396. + content: + application/merge-patch+json: + schema: + description: > + This type represents attribute modifications for configuration + parameters of an NFV-MANO service interface of the producer + NFV-MANO functional entity. + type: object + properties: + name: + description: "New value of the \"name\" attribute in \"ManoServiceInterface\". \nNOTE:\tChanging the name does not change the corresponding standardized API name in the resource URI (refer to \"{apiName}\" defined in clause 4.1 of ETSI GS NFV-SOL 013).\n" + type: string + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + securityInfo: + description: > + This type represents security related information of an + NFV-MANO service interface produced by an NFV-MANO + functional entity. + type: object + properties: + authType: + description: > + Type of API request authorization to be used by the API + producer. + + The support of authorization methods for the API + producer is specified in clause 8.3.6 of ETSI GS + NFV-SOL 013. + + Permitted values: + - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + webFingerHost: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - webFingerHost + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + authServerId: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - authServerId + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API producer when performing the + SSL or TLS negotiation with the authorization + server. Valid values of cipher suites are defined + in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - providedConfiguration + - tlsCipherSuites + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS + tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: >- + List of cipher suites that shall be declared as + supported by the API producer when performing the + SSL or TLS negotiation with the API client. Valid + values of cipher suites are defined in IETF RFC + 8447. + type: array + items: + type: string + minItems: 1 + required: + - tlsTunnelCipherSuites + required: + - authType + - oauthServerInfo + metadata: + description: > + This type represents a list of key-value pairs. The order of + the pairs in the list is not significant. In JSON, a set of + keyvalue pairs is represented as an object. It shall comply + with the provisions defined in clause 4 of IETF RFC 8259. In + the following example, a list of key-value pairs with four + keys ("aString", "aNumber", "anArray" and "anObject") is + provided to illustrate that the values associated with + different keys can be of different type. + type: object + required: true + responses: + '200': + description: > + 200 OK + + Shall be returned when the request has been accepted and completed. + + The response body shall contain a representation of the attribute + modifications for the "Individual NFV-MANO service interface" + resource, as defined in clause 5.6.2.13. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type represents attribute modifications that were + performed on an Individual NFV-MANO service interface" + resource. The attributes that can be included consist of + those requested to be modified explicitly in the + "ManoServiceInterfaceModificationRequest" data structure. If + applicable, additional attributes of the + "ManoServiceInterface" data structure that were modified + implicitly shall also be provided. + type: object + properties: + name: + description: > + If present, this attribute signals modifications of the + "name" attribute in "ManoServiceInterface", as defined in + clause 5.6.2.11. + type: string + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + securityInfo: + description: > + This type represents security related information of an + NFV-MANO service interface produced by an NFV-MANO + functional entity. + type: object + properties: + authType: + description: > + Type of API request authorization to be used by the + API producer. + + The support of authorization methods for the API + producer is specified in clause 8.3.6 of ETSI GS + NFV-SOL 013. + + Permitted values: + - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + webFingerHost: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - webFingerHost + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + authServerId: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - authServerId + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API producer when performing the + SSL or TLS negotiation with the authorization + server. Valid values of cipher suites are defined + in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - providedConfiguration + - tlsCipherSuites + tlsTunnelInfo: + description: > + Information and configuration related to the use of + TLS tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: >- + List of cipher suites that shall be declared as + supported by the API producer when performing the + SSL or TLS negotiation with the API client. Valid + values of cipher suites are defined in IETF RFC + 8447. + type: array + items: + type: string + minItems: 1 + required: + - tlsTunnelCipherSuites + required: + - authType + - oauthServerInfo + metadata: + description: > + This type represents a list of key-value pairs. The order + of the pairs in the list is not significant. In JSON, a + set of keyvalue pairs is represented as an object. It + shall comply with the provisions defined in clause 4 of + IETF RFC 8259. In the following example, a list of + key-value pairs with four keys ("aString", "aNumber", + "anArray" and "anObject") is provided to illustrate that + the values associated with different keys can be of + different type. + type: object + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '409': + description: > + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be + executed currently, due to a conflict with the state of the + "Individual NFV-MANO service interface" resource. + + Typically, this is due to the fact that another operation is + ongoing. + + The response body shall contain a ProblemDetails structure, in + which the "detail" attribute should convey more information about + the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '412': + description: > + 412 PRECONDITION FAILED + + Shall be returned upon the following error: A precondition given in + an HTTP request header is not fulfilled. + + Typically, this is due to an ETag mismatch, indicating that the + resource was modified by another entity. + + The response body should contain a ProblemDetails structure, in + which the "detail" attribute should convey more information about + the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/mano_entity/mano_interfaces/{manoServiceInterfaceId}/change_state': + parameters: + - name: manoServiceInterfaceId + in: path + description: Identifier of the MANO service interface. + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + post: + description: > + Requests to change the state of the NFV-MANO service interface produced + by the NFV-MANO functional entity. + + This method shall follow the provisions specified in the tables + 5.5.12.3.1-1 and 5.5.12.3.1-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + requestBody: + description: > + Parameters for the change state operation, as defined in clause + 5.6.2.8. + content: + application/json: + schema: + description: > + This type represents request parameters for changing the state + of a managed entity. + type: object + properties: + operationalStateChange: + description: "A change of operational state. Shall be present if the state change request refers to the operational state. NOTE:\tIn the present document version, a request shall only include an operational state change (attribute \"operationalStateChange\") or an administrative state change request (attribute \"administrativeStateChange\"), but not both.\n" + type: object + properties: + operationalStateAction: + description: "The enumeration ChangeOperationalStateEnumType defines permitted values for the change state operation. The ChangeOperationalStateEnumType shall comply with the provisions:\n - START\tTo start the managed entity.\n - STOP\tTo stop the managed entity.\n - RESTART\tTo stop and start again the managed entity.\n" + type: string + enum: + - START + - STOP + - RESTART + stopType: + description: "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions:\n - GRACEFUL\tTo stop the managed entity immediately after accepting the request.\n - FORCEFUL\tTo stop the managed entity attempting to gracefully discharge the entity from service.\n" + type: string + enum: + - GRACEFUL + - FORCEFUL + gracefulStopTimeout: + description: "The time internal (in seconds) to wait for the entity to be taken out of service during graceful stop. \nNOTE:\tThe \"stopType\" shall only be provided when the \"operationalStateAction\" attribute is equal to \"STOP\" or \"RESTART\". The \"gracefulStopTimeout\" shall be absent when the \"stopType\" attribute is equal to \"FORCEFUL\", and may be provided otherwise.\n" + type: integer + required: + - operationalStateAction + administrativeStateChange: + description: "A change of administrative state. Shall be present if the state change request refers to the administrative state. \nNOTE:\tIn the present document version, a request shall only include an operational state change (attribute \"operationalStateChange\") or an administrative state change request (attribute \"administrativeStateChange\"), but not both.\n" + type: object + properties: + administrativeStateAction: + description: "The enumeration ChangeAdministrativeStateEnumType defines permitted values for the change of administrative state operation. The ChangeAdministrativeStateEnumType shall comply with the provisions:\n - LOCK\tTo lock the managed entity.\n - UNLOCK\tTo unlock the managed entity.\n" + type: string + enum: + - LOCK + - UNLOCK + required: + - administrativeStateAction + required: true + responses: + '202': + description: > + 202 ACCEPTED + + Shall be returned when the request has been accepted for + processing. + + The response body shall be empty. + + The HTTP response shall include a “Location†HTTP header that + contains the URI of the newly-created "Individual change state + operation occurrence" resource corresponding to the operation. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The resource URI of the created "Individual change state + operation occurence" resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '409': + description: > + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be + executed currently, due to a conflict with the state of the + resource. + + Typically, this is due to the fact that the resource is in an + incompatible state, or that another change state operation is + ongoing. + + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute shall convey more information about the + error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + /subscriptions: + post: + description: > + Creates a new subscription. + + This method shall follow the provisions specified in the tables + 5.5.4.3.1-1 and 5.5.4.3.1-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + requestBody: + description: > + Details of the subscription to be created, as defined in clause + 5.6.2.5-1. + content: + application/json: + schema: + description: > + This type represents a subscription request related to + notifications about NFV-MANO configuration and information + management changes. + type: object + properties: + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO configuration and information + management. + type: object + properties: + manoEntitySubscriptionFilter: + description: > + This type represents subscription filter criteria to + match NFV-MANO functional entities and their associated + managed objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + + The attributes "manoServiceIds" and + "manoServiceNames" are alternatives to reference to + NFV-MANO services in a filter. They should not be + used together in the same filter instance, but one + alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance Name listed in + this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name listed in + this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + notificationTypes: + description: "Match particular notification types. \nPermitted values:\n - InformationChangedNotification\n - ChangeStateNotification\n\nNOTE:\tThe 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: + - InformationChangedNotification + - ChangeStateNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + authentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization + which the API consumer is willing to accept when + receiving a notification. Permitted values: * BASIC: In + every HTTP request to the notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to + the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification + endpoint is sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + description: > + Parameters for authentication/authorization using BASIC. + Shall be present if authType is "BASIC" and the + contained information has not been provisioned out of + band. Shall be absent otherwise. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out + of band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out + of band. + type: string + paramsOauth2ClientCredentials: + description: > + Parameters for authentication/authorization using + OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType + is "OAUTH2_CLIENT_CREDENTIALS" and the contained + information has not been provisioned out of band. Shall + be absent otherwise. + type: object + properties: + clientId: + description: > + Client identifier to be used in the access token + request of the OAuth 2.0 client credentials grant + type. Shall be present if it has not been + provisioned out of band. The clientId and + clientPassword passed in a subscription shall not be + the same as the clientId and clientPassword that are + used to obtain authorization for API requests. + Client credentials may differ between subscriptions. + The value of clientPassword should be generated by a + random process. + type: string + clientPassword: + description: > + Client password to be used in the access token + request of the OAuth 2.0 client credentials grant + type. Shall be present if it has not been + provisioned out of band. The clientId and + clientPassword passed in a subscription shall not be + the same as the clientId and clientPassword that are + used to obtain authorization for API requests. + Client credentials may differ between subscriptions. + The value of clientPassword should be generated by a + random process. + type: string + tokenEndpoint: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - callbackUri + required: true + responses: + '201': + description: > + 201 CREATED + + Shall be returned when the subscription has been created + successfully. + + The response body shall contain a representation of the created + "Individual subscription" resource. + + The HTTP response shall include a "Location" HTTP header that + points to the created "Individual subscription" resource. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The resource URI of the created "Individual subscription" + resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + content: + application/json: + schema: + description: > + This type represents a subscription related to notifications + about NFV-MANO configuration and information management + changes + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO configuration and + information management. + type: object + properties: + manoEntitySubscriptionFilter: + description: > + This type represents subscription filter criteria to + match NFV-MANO functional entities and their + associated managed objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an + NFV-MANO service name listed in this attribute. + + The attributes "manoServiceIds" and + "manoServiceNames" are alternatives to reference + to NFV-MANO services in a filter. They should not + be used together in the same filter instance, but + one alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance Name listed + in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + description: > + An identifier with the intention of being + globally unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name listed + in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + type: string + notificationTypes: + description: "Match particular notification types. \nPermitted values:\n - InformationChangedNotification\n - ChangeStateNotification\n\nNOTE:\tThe 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: + - InformationChangedNotification + - ChangeStateNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links to resources related to this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - callbackUri + - _links + '303': + description: > + 303 SEE OTHER + + SShall be returned when a subscription with the same callbackURI + and the same filter already exists and the policy of NFV-MANO + functional entity is to not create redundant subscriptions. + + The HTTP response shall include a "Location" HTTP header that + contains the resource URI of the existing "Individual subscription" + resource. + + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The resource URI of the created "Individual subscription" + resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + get: + description: > + queries the list of active subscriptions of the API consumer that + invokes the method. It can be used, e.g., for resynchronization after + error situations. + + This method shall follow the provisions specified in the tables + 5.5.4.3.2-1 and 5.5.4.3.2-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of + ETSI GS NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this + parameter as part of the URI query string. The API consumer may + supply this parameter. + + All attribute names that appear in the CimSubscription and in data + types referenced from it shall be supported by the NFV-MANO + functional entity in the expression. + in: query + required: false + schema: + type: string + - name: nextpage_opaque_marker + description: > + Marker to obtain the next page of a paged response. Shall be + supported by the NFV-MANO functional entity if the entity supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS + NFV-SOL 013 for this resource. + in: query + required: false + schema: + type: string + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when the list of subscriptions has been queried + successfully. + + The response body shall contain in an array the representations of + all active subscriptions of the functional block that invokes the + method, i.e., zero or more representations of NFV-MANO + configuration and information management subscriptions as defined + in clause 5.6.2.6. + + If the "filter" URI parameter was supplied in the request, the data + in the response body shall have been transformed according to the + rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013. + + If the NFV-MANO functional entity supports alternative N°2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this + resource, inclusion of the Link HTTP header in this response shall + follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Link: + description: > + Reference to other resources. Link HTTP header in this response + shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL + 013. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: > + This type represents a subscription related to notifications + about NFV-MANO configuration and information management + changes + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO configuration and + information management. + type: object + properties: + manoEntitySubscriptionFilter: + description: > + This type represents subscription filter criteria to + match NFV-MANO functional entities and their + associated managed objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being + globally unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the + respective type within a NFV-MANO functional + entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an + NFV-MANO service name listed in this attribute. + + The attributes "manoServiceIds" and + "manoServiceNames" are alternatives to + reference to NFV-MANO services in a filter. They + should not be used together in the same filter + instance, but one alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity + produced interfaces in a filter. They should + not be used both in the same filter instance, + but one alternative should be chosen. + type: array + items: + description: > + An identifier that is unique for the + respective type within a NFV-MANO functional + entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance Name + listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity + produced interfaces in a filter. They should + not be used both in the same filter instance, + but one alternative should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives + to reference to NFV-MANO functional entity + consumed interfaces in a filter. They should + not be used both in the same filter instance, + but one alternative should be chosen. + type: array + items: + description: > + An identifier with the intention of being + globally unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name + listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives + to reference to NFV-MANO functional entity + consumed interfaces in a filter. They should + not be used both in the same filter instance, + but one alternative should be chosen. + type: array + items: + type: string + notificationTypes: + description: "Match particular notification types. \nPermitted values:\n - InformationChangedNotification\n - ChangeStateNotification\n\nNOTE:\tThe 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: + - InformationChangedNotification + - ChangeStateNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links to resources related to this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - callbackUri + - _links + '400': + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/subscriptions/{subscriptionId}': + parameters: + - name: subscriptionId + in: path + description: Identifier of the subscription + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + get: + description: > + Retrieves information about a subscription by reading an "Individual + subscription" resource. + + This method shall follow the provisions specified in the tables + 5.5.5.3.2-1 and 5.5.5.3.2-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when information about an individual subscription + has been read successfully. + + The response body shall contain a representation of the "Individual + subscription" resource. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: > + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type represents a subscription related to notifications + about NFV-MANO configuration and information management + changes + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO configuration and + information management. + type: object + properties: + manoEntitySubscriptionFilter: + description: > + This type represents subscription filter criteria to + match NFV-MANO functional entities and their + associated managed objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an + NFV-MANO service name listed in this attribute. + + The attributes "manoServiceIds" and + "manoServiceNames" are alternatives to reference + to NFV-MANO services in a filter. They should not + be used together in the same filter instance, but + one alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but + that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance Name listed + in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + description: > + An identifier with the intention of being + globally unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name listed + in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used + both in the same filter instance, but one + alternative should be chosen. + type: array + items: + type: string + notificationTypes: + description: "Match particular notification types. \nPermitted values:\n - InformationChangedNotification\n - ChangeStateNotification\n\nNOTE:\tThe 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: + - InformationChangedNotification + - ChangeStateNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links to resources related to this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - callbackUri + - _links + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + delete: + description: > + Terminates an individual subscription. + + This method shall follow the provisions specified in the tables + 5.5.5.3.5-1 and 5.5.5.3.5-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '204': + description: > + 204 NO CONTENT + + Shall be returned when the "Individual subscription" resource has + been deleted successfully. + + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + /change_state_ops: + get: + description: > + The API consumer can use the GET method to query status information + about multiple change state operation occurrences. + + This method shall follow the provisions specified in the tables + 5.5.8.3.2-1 and 5.5.8.3.2-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of + ETSI GS NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this + parameter as part of the URI query string. The API consumer may + supply this parameter. + + All attribute names that appear in the ChangeStateOpOcc and in data + types referenced from it shall be supported by the NFV-MANO + functional entity in the expression. + in: query + required: false + schema: + type: string + - name: all_fields + description: > + Include all complex attributes in the response. See clause 5.3 of + ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support + this parameter. + in: query + required: false + schema: + type: string + - name: fields + description: > + Complex attributes to be included into the response. See clause 5.3 + of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity + should support this parameter. + in: query + required: false + schema: + type: string + - name: exclude_fields + description: > + Complex attributes to be excluded from the response. See clause 5.3 + of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity + should support this parameter. + in: query + required: false + schema: + type: string + - name: exclude_default + description: > + Indicates to exclude the following complex attributes from the + response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The + NFV-MANO functional entity shall support this parameter. + + The following attributes shall be excluded from the + ChangeStateOpOcc structure in the response body if this parameter + is provided, or none of the parameters "all_fields," "fields", + "exclude_fields", "exclude_default" are provided: - none + in: query + required: false + schema: + type: string + - name: nextpage_opaque_marker + description: > + Marker to obtain the next page of a paged response. Shall be + supported by the NFV-MANO functional entity if the entity supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS + NFV-SOL 013 for this resource. + in: query + required: false + schema: + type: string + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when status information for zero or more "change + state operation occurrences" has been queried successfully. + + The response body shall contain in an array the status information + about zero or more "Individual change state operation occurrences", + as defined in clause 5.6.2.9. + + If the “filter" URI parameter or one of the "all_fields", "fields" + (if supported), "exclude_fields" (if supported) or + "exclude_default" URI parameters was supplied in the request, the + data in the response body shall have been transformed according to + the rules specified in clauses 5.2.2 and 5.3.2 of ETSI GS NFV-SOL + 013, respectively. + + If the NFV-MANO functional entity supports alternative N°2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this + resource, inclusion of the Link HTTP header in this response shall + follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Link: + description: > + Reference to other resources. Link HTTP header in this response + shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL + 013. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: | + This type represents a Change state operation occurrence. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + operationState: + description: "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions :\n - PROCESSING\tThe change state operation is currently in execution.\n - COMPLETED\tThe change state operation has been completed successfully.\n - FAILED\tThe change state operation has failed.\n" + type: string + enum: + - PROCESSING + - COMPLETED + - FAILED + stateEnteredTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + startTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + managedObjectRef: + description: > + This type represents the identifier to reference a + managed object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + required: + - type + - objectId + changeOperationalStateRequest: + description: "The enumeration ChangeOperationalStateEnumType defines permitted values for the change state operation. The ChangeOperationalStateEnumType shall comply with the provisions:\n - START\tTo start the managed entity.\n - STOP\tTo stop the managed entity.\n - RESTART\tTo stop and start again the managed entity.\n" + type: string + enum: + - START + - STOP + - RESTART + changeAdministrativeStateRequest: + description: "The enumeration ChangeAdministrativeStateEnumType defines permitted values for the change of administrative state operation. The ChangeAdministrativeStateEnumType shall comply with the provisions:\n - LOCK\tTo lock the managed entity.\n - UNLOCK\tTo unlock the managed entity.\n" + type: string + enum: + - LOCK + - UNLOCK + operationParams: + description: > + Input parameters of the change state operation. This + attribute shall be formatted according to the request + data type of the related change state operation. + + The following mapping between operationType and the data + type of this attribute shall apply: + - CHANGE_STATE: ChangeStateRequest + + This attribute shall be present if this data type is + returned in a response to reading an individual + resource, and may be present according to the chosen + attribute selector parameter if this data type is + returned in a response to a query of a container + resource. + required: + - id + - operationState + - stateEnteredTime + - startTime + - managedObjectRef + '400': + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Invalid attribute selector. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: > + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/change_state_ops/{changeStateOpOccId}': + parameters: + - name: changeStateOpOccId + in: path + description: Identifier of the change state operation occurrence + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + get: + description: > + The API consumer can use the GET method to retrieve status information + about a change state operation occurrence by reading an "Individual + change state operation occurrence" resource. + + This method shall follow the provisions specified in the tables + 5.5.9.3.2-1 and 5.5.9.3.2-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when information about an "Individual change + state operation occurrence" resource has been read successfully. + + The response body shall contain status information about a change + state operation occurrence, as defined in clause 5.6.2.9. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: | + This type represents a Change state operation occurrence. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + operationState: + description: "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions :\n - PROCESSING\tThe change state operation is currently in execution.\n - COMPLETED\tThe change state operation has been completed successfully.\n - FAILED\tThe change state operation has failed.\n" + type: string + enum: + - PROCESSING + - COMPLETED + - FAILED + stateEnteredTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + startTime: + description: > + Date-time stamp. Representation: String formatted + according to IETF RFC 3339. + type: string + format: date-time + managedObjectRef: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted + values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + changeOperationalStateRequest: + description: "The enumeration ChangeOperationalStateEnumType defines permitted values for the change state operation. The ChangeOperationalStateEnumType shall comply with the provisions:\n - START\tTo start the managed entity.\n - STOP\tTo stop the managed entity.\n - RESTART\tTo stop and start again the managed entity.\n" + type: string + enum: + - START + - STOP + - RESTART + changeAdministrativeStateRequest: + description: "The enumeration ChangeAdministrativeStateEnumType defines permitted values for the change of administrative state operation. The ChangeAdministrativeStateEnumType shall comply with the provisions:\n - LOCK\tTo lock the managed entity.\n - UNLOCK\tTo unlock the managed entity.\n" + type: string + enum: + - LOCK + - UNLOCK + operationParams: + description: > + Input parameters of the change state operation. This + attribute shall be formatted according to the request + data type of the related change state operation. + + The following mapping between operationType and the data + type of this attribute shall apply: + - CHANGE_STATE: ChangeStateRequest + + This attribute shall be present if this data type is + returned in a response to reading an individual resource, + and may be present according to the chosen attribute + selector parameter if this data type is returned in a + response to a query of a container resource. + required: + - id + - operationState + - stateEnteredTime + - startTime + - managedObjectRef + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + /peer_entities: + post: + description: > + Creates in the producer NFV-MANO functional entity a new peer entity + resource which contains configuration and information with regards to + the peer functional entity. + + This method shall follow the provisions specified in the tables + 5.5.13.3.1-1 and 5.5.13.3.1-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + requestBody: + description: | + The peer entity creation parameters, as defined in clause 5.6.2.14. + content: + application/json: + schema: + description: > + This type represents request parameters for the creation of a + new peer entity resource. + type: object + properties: + peerEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the peer functional entity. + type: string + type: + description: "The enumeration PeerEntityEnumType defines the permitted values to represent peer functional entities. it shall complains with the provisions : - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t The peer functional entity is a VIM. - WIM\t The peer functional entity is a WIM. - EM\t The peer functional entity is an EM. - OSS\t The peer functional entity is an OSS/BSS.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + - WIM + - EM + - OSS + description: + description: | + Human-readable description of the peer functional entity. + type: string + consumedManoInterfaces: + description: > + Information of the interface consumed by the NFV-MANO + functional entity from the peer functional entity. + type: array + items: + description: > + This type represents an interface consumed by the producer + NFV MANO functional entity from another peer functional + entity. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by the + NFV-MANO functional entity. Valid values are defined + in clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It provides + the information relevant about the protocol, host and + port, and path where the interface API can be + accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated + form. Shall be present for ETSI NFV specified + RESTful NFV-MANO APIs. The {apiName} of each + interface is defined in the standard the interface + is compliant to (see also clause 4.1 of ETSI GS + NFV-SOL 013). May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The major version is defined in + the standard the interface is compliant to (see + also clause 4.1 of ETSI GS NFV-SOL 013). May be + present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information for + accessing an NFV-MANO service interface produced by + an NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by + the API consumer accessing the API. + + The support of authorization methods for the API + consumer is specified in clause 8.3.6 of ETSI GS + NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, + as defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: + Using access token, as defined by the OAuth 2.0 + specification in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is + hosted. When used, the request to the + WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined + in ETSI GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared + as supported by the API consumer when + performing the SSL or TLS negotiation with the + authorization server. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use + of TLS tunnel. Shall be present if authType + contains "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared + as supported by the API consumer when + performing the SSL or TLS negotiation with the + API producer. Valid values of cipher suites + are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + peerEntityState: + description: | + Current values of the state of the peer functional entity. + type: object + properties: + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + required: + - operationalState + - administrativeState + required: + - peerEntityId + - name + - type + required: true + responses: + '201': + description: > + 201 CREATED + + Shall be returned when a new "Individual peer entity" resource has + been created successfully. + + The response body shall contain a representation of the created + resource with regards to a peer entity, as defined in clause + 5.6.2.15. + + The HTTP response shall include a “Location†HTTP header that + points to the created "Individual peer entity" resource. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The resource URI of the created "Individual peer entity" + resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + content: + application/json: + schema: + description: | + This type represents an individual peer entity. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + peerEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the peer functional entity. + This attribute can be modified with the PATCH method. + type: string + type: + description: "The enumeration PeerEntityEnumType defines the permitted values to represent peer functional entities. it shall complains with the provisions : - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t The peer functional entity is a VIM. - WIM\t The peer functional entity is a WIM. - EM\t The peer functional entity is an EM. - OSS\t The peer functional entity is an OSS/BSS.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + - WIM + - EM + - OSS + description: + description: | + Human-readable description of the peer functional entity. + This attribute can be modified with the PATCH method. + type: string + consumedManoInterfaces: + description: > + Information of the interface consumed by the NFV-MANO + functional entity from the peer functional entity. + + This attribute can be modified with the PATCH method. + type: array + items: + description: > + This type represents an interface consumed by the + producer NFV MANO functional entity from another peer + functional entity. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by + the NFV-MANO functional entity. Valid values are + defined in clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It + provides the information relevant about the + protocol, host and port, and path where the + interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated + form. Shall be present for ETSI NFV specified + RESTful NFV-MANO APIs. The {apiName} of each + interface is defined in the standard the + interface is compliant to (see also clause 4.1 + of ETSI GS NFV-SOL 013). May be present + otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The major version is defined in + the standard the interface is compliant to (see + also clause 4.1 of ETSI GS NFV-SOL 013). May be + present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information + for accessing an NFV-MANO service interface + produced by an NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by + the API consumer accessing the API. + + The support of authorization methods for the API + consumer is specified in clause 8.3.6 of ETSI + GS NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS + tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the + OAuth 2.0 specification in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is + hosted. When used, the request to the + WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as + defined in ETSI GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared + as supported by the API consumer when + performing the SSL or TLS negotiation with + the authorization server. Valid values of + cipher suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use + of TLS tunnel. Shall be present if authType + contains "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared + as supported by the API consumer when + performing the SSL or TLS negotiation with + the API producer. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + peerEntityState: + description: > + State of the peer functional entity as provided by the API + consumer when creating the resource or when updating it + with the PATCH method. + type: object + properties: + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + required: + - operationalState + - administrativeState + required: + - id + - peerEntityId + - name + - type + - peerEntityState + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + get: + description: > + Queries information and configuration in the producer NFV-MANO + functional entity with regards to multiple peer entities. + + This method shall follow the provisions specified in the tables + 5.5.13.3.2-1 and 5.5.13.3.2-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of + ETSI GS NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this + parameter as part of the URI query string. The API consumer may + supply this parameter. + + All attribute names that appear in the PeerEntity and in data types + referenced from it shall be supported by the NFV-MANO functional + entity in the expression. + in: query + required: false + schema: + type: string + - name: all_fields + description: > + Include all complex attributes in the response. See clause 5.3 of + ETSI GS NFV-SOL 013. The NFV-MANO functional entity shall support + this parameter. + in: query + required: false + schema: + type: string + - name: fields + description: > + Complex attributes to be included into the response. See clause 5.3 + of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity + should support this parameter. + in: query + required: false + schema: + type: string + - name: exclude_fields + description: > + Complex attributes to be excluded from the response. See clause 5.3 + of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional entity + should support this parameter. + in: query + required: false + schema: + type: string + - name: exclude_default + description: > + Indicates to exclude the following complex attributes from the + response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The + NFV-MANO functional entity shall support this parameter. + + The following attributes shall be excluded from the PeerEntity + structure in the response body if this parameter is provided, or + none of the parameters "all_fields," "fields", "exclude_fields", + "exclude_default" are provided: - none + in: query + required: false + schema: + type: string + - name: nextpage_opaque_marker + description: > + Marker to obtain the next page of a paged response. Shall be + supported by the NFV-MANO functional entity if the entity supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS + NFV-SOL 013 for this resource. + in: query + required: false + schema: + type: string + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when information about zero or more peer entities + has been queried successfully. + + The response body shall contain in an array the resource + representations of zero or more peer entities, as defined in clause + 5.6.2.15. + + If the “filter" URI parameter or one of the "all_fields", "fields" + (if supported), "exclude_fields" (if supported) or + "exclude_default" URI parameters was supplied in the request, the + data in the response body shall have been transformed according to + the rules specified in clauses 5.2.2 and 5.3.2 of ETSI GS NFV-SOL + 013, respectively. + + If the NFV-MANO functional entity supports alternative N°2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this + resource, inclusion of the Link HTTP header in this response shall + follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Link: + description: > + Reference to other resources. Link HTTP header in this response + shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL + 013. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: | + This type represents an individual peer entity. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + peerEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + name: + description: | + Human-readable name of the peer functional entity. + This attribute can be modified with the PATCH method. + type: string + type: + description: "The enumeration PeerEntityEnumType defines the permitted values to represent peer functional entities. it shall complains with the provisions : - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t The peer functional entity is a VIM. - WIM\t The peer functional entity is a WIM. - EM\t The peer functional entity is an EM. - OSS\t The peer functional entity is an OSS/BSS.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + - WIM + - EM + - OSS + description: + description: > + Human-readable description of the peer functional + entity. + + This attribute can be modified with the PATCH method. + type: string + consumedManoInterfaces: + description: > + Information of the interface consumed by the NFV-MANO + functional entity from the peer functional entity. + + This attribute can be modified with the PATCH method. + type: array + items: + description: > + This type represents an interface consumed by the + producer NFV MANO functional entity from another peer + functional entity. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by + the NFV-MANO functional entity. Valid values are + defined in clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It + provides the information relevant about the + protocol, host and port, and path where the + interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated + form. Shall be present for ETSI NFV specified + RESTful NFV-MANO APIs. The {apiName} of each + interface is defined in the standard the + interface is compliant to (see also clause + 4.1 of ETSI GS NFV-SOL 013). May be present + otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the + API. Shall be present for ETSI NFV specified + RESTful NFV-MANO APIs. The major version is + defined in the standard the interface is + compliant to (see also clause 4.1 of ETSI GS + NFV-SOL 013). May be present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information + for accessing an NFV-MANO service interface + produced by an NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used + by the API consumer accessing the API. + + The support of authorization methods for the + API consumer is specified in clause 8.3.6 of + ETSI GS NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS + tunnel, as defined by TLS 1.2 in IETF RFC + 5246. - OAUTH2: Using access token, as defined + by the OAuth 2.0 specification in IETF RFC + 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is + hosted. When used, the request to the + WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as + defined in ETSI GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be + declared as supported by the API consumer + when performing the SSL or TLS + negotiation with the authorization server. + Valid values of cipher suites are defined + in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the + use of TLS tunnel. Shall be present if + authType contains "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be + declared as supported by the API consumer + when performing the SSL or TLS negotiation + with the API producer. Valid values of + cipher suites are defined in IETF RFC + 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + peerEntityState: + description: > + State of the peer functional entity as provided by the + API consumer when creating the resource or when + updating it with the PATCH method. + type: object + properties: + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + required: + - operationalState + - administrativeState + required: + - id + - peerEntityId + - name + - type + - peerEntityState + '400': + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Invalid attribute selector. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '/peer_entities/{peerEntityId}': + parameters: + - name: peerEntityId + in: path + description: Identifier of the peer entity + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + get: + description: > + Retrieves information and configuration hold in the producer NFV-MANO + functional entity with regards to a peer entity by reading an + individual peer entity resource. + + This method shall follow the provisions specified in the tables + 5.5.14.3.2-1 and 5.5.14.3.2-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '200': + description: > + 200 OK + + Shall be returned when information about an individual peer + functional entity has been read successfully. + + The response body shall contain a resource representation of the + peer functional entity, as defined in clause 5.6.2.15. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: | + This type represents an individual peer entity. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + peerEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the peer functional entity. + This attribute can be modified with the PATCH method. + type: string + type: + description: "The enumeration PeerEntityEnumType defines the permitted values to represent peer functional entities. it shall complains with the provisions : - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t The peer functional entity is a VIM. - WIM\t The peer functional entity is a WIM. - EM\t The peer functional entity is an EM. - OSS\t The peer functional entity is an OSS/BSS.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + - WIM + - EM + - OSS + description: + description: | + Human-readable description of the peer functional entity. + This attribute can be modified with the PATCH method. + type: string + consumedManoInterfaces: + description: > + Information of the interface consumed by the NFV-MANO + functional entity from the peer functional entity. + + This attribute can be modified with the PATCH method. + type: array + items: + description: > + This type represents an interface consumed by the + producer NFV MANO functional entity from another peer + functional entity. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by + the NFV-MANO functional entity. Valid values are + defined in clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It + provides the information relevant about the + protocol, host and port, and path where the + interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated + form. Shall be present for ETSI NFV specified + RESTful NFV-MANO APIs. The {apiName} of each + interface is defined in the standard the + interface is compliant to (see also clause 4.1 + of ETSI GS NFV-SOL 013). May be present + otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The major version is defined in + the standard the interface is compliant to (see + also clause 4.1 of ETSI GS NFV-SOL 013). May be + present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information + for accessing an NFV-MANO service interface + produced by an NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by + the API consumer accessing the API. + + The support of authorization methods for the API + consumer is specified in clause 8.3.6 of ETSI + GS NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS + tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the + OAuth 2.0 specification in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is + hosted. When used, the request to the + WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as + defined in ETSI GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared + as supported by the API consumer when + performing the SSL or TLS negotiation with + the authorization server. Valid values of + cipher suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use + of TLS tunnel. Shall be present if authType + contains "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared + as supported by the API consumer when + performing the SSL or TLS negotiation with + the API producer. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + peerEntityState: + description: > + State of the peer functional entity as provided by the API + consumer when creating the resource or when updating it + with the PATCH method. + type: object + properties: + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + required: + - operationalState + - administrativeState + required: + - id + - peerEntityId + - name + - type + - peerEntityState + '400': + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the + specific cause has to be proper specified in the "ProblemDetails" + structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or the payload body + contains a syntactically incorrect data structure), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + If the response to a GET request which queries a container resource + would be so big that the performance of the API producer is + adversely affected, and the API producer does not support paging for + the affected resource, it shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include in + the "detail" attribute more information about the source of the + problem. + + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall be + returned in the WWW Authenticate HTTP header, as defined in IETF RFC + 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + + The use of this HTTP error response code described above is + applicable to the use of the OAuth 2.0 for the authorization of API + requests and notifications, as defined in clauses 4.5.3.3 and + 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + patch: + description: > + Modifies configuration and information of the producer NFV-MANO + functional entity with regards to a peer functional entity by updating + the corresponding "Individual peer entity" resource. + + Changes to the configurable parameters of the corresponding peer entity + are applied to the information managed by the producer NFV-MANO + functional entity and reflected in the representation of this resource. + + This method shall follow the provisions specified in the tables + 5.5.14.3.4-1 and 5.5.14.3.4-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + requestBody: + description: > + Parameters for the modification of configuration parameters of the + peer functional entity, as defined in clause 5.6.2.16 + + The Content-Type header shall be set to + "application/merge-patch+json" according to IETF RFC 7396. + content: + application/merge-patch+json: + schema: + description: > + This type represents attribute modifications for configuration + parameters of a peer entity. + type: object + properties: + name: + description: | + New value of the "name" attribute in "PeerEntity". + type: string + description: + description: > + New value of the "description" attribute in "PeerEntity", or + "null" to remove the attribute. + type: string + consumedManoInterfaces: + description: "New content of certain entries in the \"consumedManoInterfaces\" attribute array in the \"PeerEntity\", as defined below this table. \nNOTE:\tDue to the security sensitive information contained within the attribute (refer to \"securityInfo\" within the \"ConsumedManoInterfaceInfo\"), based on access control policies, the API consumer might have read only, write only, read/write, or no access at all to the attribute’s value. In case the API consumer is not allowed to modify the value of the security sensitive attribute, and the modification request includes new attribute values, the whole modification request shall be rejected, and proper error information returned.\n" + type: array + items: + description: > + This type represents an interface consumed by the producer + NFV MANO functional entity from another peer functional + entity. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by the + NFV-MANO functional entity. Valid values are defined + in clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It provides + the information relevant about the protocol, host and + port, and path where the interface API can be + accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated + form. Shall be present for ETSI NFV specified + RESTful NFV-MANO APIs. The {apiName} of each + interface is defined in the standard the interface + is compliant to (see also clause 4.1 of ETSI GS + NFV-SOL 013). May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The major version is defined in + the standard the interface is compliant to (see + also clause 4.1 of ETSI GS NFV-SOL 013). May be + present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information for + accessing an NFV-MANO service interface produced by + an NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by + the API consumer accessing the API. + + The support of authorization methods for the API + consumer is specified in clause 8.3.6 of ETSI GS + NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, + as defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: + Using access token, as defined by the OAuth 2.0 + specification in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is + hosted. When used, the request to the + WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined + in ETSI GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared + as supported by the API consumer when + performing the SSL or TLS negotiation with the + authorization server. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use + of TLS tunnel. Shall be present if authType + contains "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared + as supported by the API consumer when + performing the SSL or TLS negotiation with the + API producer. Valid values of cipher suites + are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + consumedManoInterfaceDeleteIds: + description: > + List of identifiers entries to be deleted from the + "consumedManoInterfaces" attribute array in the " + PeerEntity ", as defined below this table. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + required: true + responses: + '200': + description: > + 200 OK + + Shall be returned when the request has been accepted and completed. + + The response body shall contain a representation of the attribute + modifications for the "Individual peer entity" resource, as defined + in clause 5.6.2.17. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type represents attribute modifications that were + performed on an "Individual peer entity" resource. The + attributes that can be included consist of those requested to + be modified explicitly in the + "PeerEntityConfigModificationRequest" data structure. If + applicable, additional attributes of the "PeerEntity" data + structure that were modified implicitly shall also be + provided. + type: object + properties: + name: + description: > + If present, this attribute signals modifications of the + "name" attribute in "PeerEntity", as defined in clause + 5.6.2.15. + type: string + description: + description: > + If present, this attribute signals modifications of the + "description" attribute in "PeerEntity", as defined in + clause 5.6.2.15. + type: string + consumedManoInterfaces: + description: "If present, this attribute signals modifications of certain entries in \"consumedManoInterfaces\" attribute in \"PeerEntity\", as defined in clause 5.6.2.15. \nNOTE:\tDue to the security sensitive information contained within the attribute (refer to \"securityInfo\" within the \"ConsumedManoInterfaceInfo\"), based on access control policies, the API consumer might have read only, write only, read/write, or no access at all to the attribute’s value. In case the API consumer is not allowed to read the value of the security sensitive attribute, the attribute shall be omitted when the information is to be provided in a response message.\n" + type: array + items: + description: > + This type represents an interface consumed by the + producer NFV MANO functional entity from another peer + functional entity. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by + the NFV-MANO functional entity. Valid values are + defined in clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It + provides the information relevant about the + protocol, host and port, and path where the + interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated + form. Shall be present for ETSI NFV specified + RESTful NFV-MANO APIs. The {apiName} of each + interface is defined in the standard the + interface is compliant to (see also clause 4.1 + of ETSI GS NFV-SOL 013). May be present + otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The major version is defined in + the standard the interface is compliant to (see + also clause 4.1 of ETSI GS NFV-SOL 013). May be + present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information + for accessing an NFV-MANO service interface + produced by an NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by + the API consumer accessing the API. + + The support of authorization methods for the API + consumer is specified in clause 8.3.6 of ETSI + GS NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS + tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the + OAuth 2.0 specification in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is + hosted. When used, the request to the + WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as + defined in ETSI GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared + as supported by the API consumer when + performing the SSL or TLS negotiation with + the authorization server. Valid values of + cipher suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use + of TLS tunnel. Shall be present if authType + contains "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared + as supported by the API consumer when + performing the SSL or TLS negotiation with + the API producer. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + consumedManoInterfaceDeleteIds: + description: > + If present, this attribute signals the deletions of + certain entries in the "consumedManoInterfaces" attribute + in "PeerEntity", as defined in clause 5.6.2.15. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '409': + description: > + 409 CONFLICT. + + Shall be returned upon the following error: The operation cannot be + executed currently, due to a conflict with the state of the + "Individual peer entity" resource. + + Typically, this is due to the fact that another operation is + ongoing. + + The response body shall contain a ProblemDetails structure, in + which the "detail" attribute should convey more information about + the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '412': + description: > + 412 PRECONDITION FAILED + + Shall be returned upon the following error: A precondition given in + an HTTP request header is not fulfilled. + + Typically, this is due to an ETag mismatch, indicating that the + resource was modified by another entity. + + The response body should contain a ProblemDetails structure, in + which the "detail" attribute should convey more information about + the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + delete: + description: > + Ddeletes an individual peer entity resource. By deleting such a + resource in the producer NFV-MANO functional entity representing a peer + NFV-MANO entity, the configuration and information with regards to such + peer entity is deleted. Consequently, the peering relationship between + the producer NFV-MANO functional entity and the peer entity is + terminated, i.e., the producer NFV-MANO functional entity does not have + the necessary information to communicate/interact with the peer entity. + + This method shall follow the provisions specified in the tables + 5.5.14.3.5-1 and 5.5.14.3.5-2 for URI query parameters, request and + response data structures, and response codes. + parameters: + - name: Version + description: | + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + - name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF + RFC 7231. + in: header + required: true + schema: + type: string + - name: Authorization + description: | + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + responses: + '204': + description: > + 204 NO CONTENT + + Shall be returned when the "Individual peer entity" resource has + been deleted successfully. + + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + '401': + description: > + 401 UNAUTHORIZED + + If the request contains no access token even though one is required, + or if the request contains an authorization token that is invalid + (e.g. expired or revoked), the API producer should respond with this + response. The details of the error shall be returned in the + WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF + RFC 7235. The ProblemDetails structure may be provided. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '403': + description: > + 403 FORBIDDEN + + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. It + should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '404': + description: > + 404 NOT FOUND + + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request or is not + willing to disclose that one exists, it shall respond with this + response code. The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source of + the problem, e.g. a wrong resource URI variable. + + This response code is not appropriate in case the resource addressed + by the URI is a container resource which is designed to contain + child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty + container resource, a typical response contains a 200 OK response + code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '405': + description: > + 405 METHOD NOT ALLOWED + + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '406': + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a + content type that is acceptable to the API producer, the API + producer shall respond with this response code. The "ProblemDetails" + structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '409': + description: > + 409 CONFLICT. + + Shall be returned upon the following error: The operation cannot be + executed currently, due to a conflict with the state of the + "Individual peer entity" resource. + + Typically, this is due to the fact that another operation is + ongoing. + + The response body shall contain a ProblemDetails structure, in + which the "detail" attribute should convey more information about + the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '412': + description: > + 412 PRECONDITION FAILED + + Shall be returned upon the following error: A precondition given in + an HTTP request header is not fulfilled. + + Typically, this is due to an ETag mismatch, indicating that the + resource was modified by another entity. + + The response body should contain a ProblemDetails structure, in + which the "detail" attribute should convey more information about + the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '422': + description: > + 422 UNPROCESSABLE ENTITY + + If the payload body of a request contains syntactically correct data + (e.g. well-formed JSON) but the data cannot be processed (e.g. + because it fails validation against a schema), the API producer + shall respond with this response code. The "ProblemDetails" + structure shall be provided, and should include in the "detail" + attribute more information about the source of the problem. + + This error response code is only applicable for methods that have a + request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '500': + description: > + 500 INTERNAL SERVER ERROR + + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code ("catch + all error"), the API producer shall respond with this response code. + The "ProblemDetails" structure shall be provided, and shall include + in the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '503': + description: > + 503 SERVICE UNAVAILABLE + + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for the alternative to refuse + the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI + '504': + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a + response from an upstream server (i.e. a server that the API + producer communicates with when fulfilling a request), it should + respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: | + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure + from IETF RFC 7807 [19] is reproduced inthis structure. + Compared to the general framework defined in IETF RFC 7807 + [19], the "status" and "detail" attributes are mandated to be + included by the present document, to ensure that the response + contains additional textual information about an error. IETF + RFC 7807 [19] foresees extensibility of the "ProblemDetails" + type. It is possible that particular APIs in the present + document, or particular implementations, define extensions to + define additional attributes that provide more information + about the error. The description column only provides some + explanation of the meaning to Facilitate understanding of the + design. For a full description, see IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that + identifies the problem type. It is encouraged that the URI + provides human-readable documentation for the problem + (e.g. using HTML) when dereferenced. When this member is + not present, its value is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It + should not change from occurrence to occurrence of the + problem, except for purposes of localization. If type is + given and other than "about:blank", this attribute shall + also be provided. A short, human-readable summary of the + problem type. It SHOULD NOT change from occurrence to + occurrence of the problem, except for purposes of + localization (e.g., using proactive content negotiation; + see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by + the origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence + of the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of + the problem. It may yield further information if + dereferenced. + type: string + format: URI +components: + schemas: + ManoEntity: + description: | + This type represents an NFV-MANO functional entity. + type: object + required: + - id + - type + - name + - description + - provider + - softwareVersion + - manoConfigurableParams + - manoApplicationState + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + type: + description: "The enumeration ManoEntityEnumType defines the permitted values to represent NFV-MANO functional entities. It shall comply with the provisions :\n - NFVO\tThe NFV-MANO functional entity is an NFVO.\n - VNFM\tThe NFV-MANO functional entity is a VNFM.\n - VIM\tThe NFV-MANO functional entity is a VIM.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + name: + description: | + Human-readable name of the NFV-MANO functional entity. + This attribute can be modified with the PATCH method. + type: string + description: + description: | + Human-readable description of the NFV-MANO functional entity. + This attribute can be modified with the PATCH method. + type: string + provider: + description: > + Information about the provider of the NFV-MANO functional entity. + It typically includes the name of the provider. + type: string + softwareVersion: + description: > + The version of the software of the NFV-MANO functional entity. $ref: + "../components/SOL009_schemas.yaml#/components/schemas/Version" + manoEntityComponents: + description: "The deployed NFV-MANO functional entity components which realize the NFV-MANO functional entity. \nNOTE:\tIt is optional for the API producer to support the \"manoEntityComponents\" attribute.\n" + type: array + items: + description: > + This type represents information of a deployed component realizing + part of an NFV-MANO functional entity. It is optional for the API + producer to support this type. + type: object + properties: + id: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + manoServiceIds: + description: > + References to the NFV-MANO services that depend on the + NFV-MANO functional entity component. The identifier of the + ManoService is referred. A service may depend on multiple + components. Multiple services may depend on the same + component. + type: array + items: + description: > + An identifier that is unique for the respective type within + a NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + required: + - id + manoServices: + description: > + Information about the NFV-MANO services provided by the NFV-MANO + functional entity. + type: array + items: + description: > + This type represents information about an NFV-MANO service + provided by the NFV-MANO functional entity. + type: object + properties: + id: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + name: + description: | + Human-readable name of the NFV-MANO service. + This attribute can be modified with the PATCH method. + type: string + description: + description: | + Human-readable description of the NFV-MANO service. + This attribute can be modified with the PATCH method. + type: string + manoServiceInterfaceIds: + description: "Reference to the NFV-MANO interfaces associated to the NFV-MANO service. If cardinality is greater than one, the type of ManoServiceInterface (see clause 5.6.3.3) shall be the same. The identifier of the ManoServiceInterface is referred. \nNOTE:\tA cardinality greater than one supports having different interface versions or apiEndpoints to be used for accessing the same instance of a NFV-MANO service.\n" + type: array + items: + description: > + An identifier that is unique for the respective type within + a NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + minItems: 1 + _links: + description: | + Links to resources related to this resource. + type: object + properties: + manoServiceInterfaces: + description: > + Link to the "individual NFV-MANO service interface" + resources with information about the associated + interfaces to the NFV-MANO service. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + minItems: 1 + required: + - manoServiceInterfaces + required: + - id + - name + - description + - manoServiceInterfaceIds + - _links + manoConfigurableParams: + description: > + # Warning: No definition found in the document + ManoConfigurableParams + manoApplicationState: + description: > + Information and current values of the NFV-MANO functional entity’s + application state. + type: object + required: + - operationalState + - administrativeState + - usageState + properties: + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + usageState: + description: "The enumeration UsageStateEnumType defines values representing the usage state of a managed entity. The UsageStateEnumType shall comply with the provisions:\n - IN_USE\tThe managed entity is currently being used.\n - NOT_IN_USE\tThe managed entity is currently not being used.\n" + type: string + enum: + - IN_USE + - NOT_IN_USE + nfvoSpecificInfo: + description: > + This type represents information attributes specific to an NFVO + entity, and that can be relevant to more than one NFV-MANO service + offered by an NFVO entity. + type: object + properties: + maxOnboardedNsdNum: + description: > + Maximum number of NSDs that can be on-boarded on the NFVO. + + NOTE: If this attribute is not present, the value of this + parameter is undefined. + type: integer + maxOnboardedVnfPkgNum: + description: > + Maximum number of VNF Packages that can be on-boarded on the + NFVO. + + NOTE: If this attribute is not present, the value of this + parameter is undefined. + type: integer + supportedVnfdFormats: + description: | + Supported VNFD data formats. + type: object + properties: + vnfdFormat: + description: | + Name of the VNFD format. + Permitted values: + - TOSCA: The VNFD follows TOSCA definition, according to ETSI + GS NFV-SOL 001 standard. + - YANG: The VNFD follows YANG definition according to ETSI + GS NFV-SOL 006 standard. + type: string + enum: + - TOSCA + - YANG + standardVersion: + description: | + A version. + type: string + required: + - vnfdFormat + - standardVersion + supportedNsdFormats: + description: | + Supported NSD data formats. + type: object + properties: + nsdFormat: + description: | + Name of the NSD format. + Permitted values: + - TOSCA: The VNFD follows TOSCA definition, according to ETSI + GS NFV-SOL 001 standard. + - YANG: The VNFD follows YANG definition according to ETSI + GS NFV-SOL 006 standard. + type: string + enum: + - TOSCA + - YANG + standardVersion: + description: | + A version. + type: string + required: + - nsdFormat + - standardVersion + required: + - supportedVnfdFormats + - supportedNsdFormats + vnfmSpecificInfo: + description: > + This type represents information attributes specific to a VNFM + entity, and that can be relevant to more than one NFV-MANO service + offered by a VNFM entity. + type: object + properties: + resoruceMgmtModeSupport: + description: | + The supported resource management modes of the VNFM. + Permitted values: + - DIRECT: The VNFM supports direct mode only. + - INDIRECT: The VNFM supports indirect mode only. + - BOTH: The VNFM supports both direct and indirect mode. + type: string + enum: + - DIRECT + - INDIRECT + - BOTH + managedVnfInstanceInfos: + description: > + The kinds of VNF instances that can be managed, e.g. to + determine the compatibility of a VNF with certain VNFM + according to the vnfmInfo attribute in the VNFD (see table + 7.1.2.2-1 in ETSI GS NFV-IFA 011). + type: array + items: + type: string + minItems: 1 + supportedVnfdFormats: + description: | + Supported VNFD data formats. + type: array + items: + type: object + properties: + vnfdFormat: + description: | + Name of the VNFD format. + Permitted values: + - TOSCA: The VNFD follows TOSCA definition, according to ETSI + GS NFV-SOL 001 standard. + - YANG: The VNFD follows YANG definition according to ETSI + GS NFV-SOL 006 standard. + type: string + enum: + - TOSCA + - YANG + standardVersion: + description: | + A version. + type: string + required: + - vnfdFormat + - standardVersion + minItems: 1 + required: + - resoruceMgmtModeSupport + - managedVnfInstanceInfos + - supportedVnfdFormats + vimSpecificInfo: + description: > + This type represents information attributes specific to a VIM + entity, and that can be relevant to more than one NFV-MANO service + offered by a VIM entity. + type: object + _links: + description: | + Links to resources related to this resource. + type: object + required: + - self + - manoServiceInterfaces + - peerEntities + - changeState + - changeStateOpOccs + properties: + self: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + manoServiceInterfaces: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + peerEntities: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + changeState: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + changeStateOpOccs: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + ManoConfigModificationRequest: + description: > + This type represents attribute modifications for configuration + parameters of an NFV-MANO functional entity. + type: object + properties: + name: + description: | + New value of the "name" attribute in "ManoEntity". + type: string + description: + description: | + New value of the "description" attribute in "ManoEntity". + type: string + clockSyncs: + description: > + New content of certain entries in the "clockSyncs" attribute array + in the "ManoEntityConfigurableParams", as defined below this + table. + type: array + items: + description: | + This type represents parameters for connecting to an NTP server. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + type: + description: | + Type of clock synchronization. + Permitted values: + - NTP: For Network Time Protocol (NTP) based clock synchronization. + - OTHER: For other types of clock synchronization. + type: string + enum: + - NTP + - OTHER + ntpServerInfo: + description: > + Information for the NTP based clock synchronization. Shall be + present if type = "NTP". + type: object + properties: + ipAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of an + IPV4 address, string that consists of four decimal + integers separated by dots, each integer ranging from 0 to + 255. In case of an IPV6 address, string that consists of + groups of zero to four hexadecimal digits, separated by + colons. + type: string + format: IP + hostname: + description: "Indicates the hostname of the NTP server. \nNOTE:\tEither ipAddress or hostname shall be set, but not both at the same time.\n" + type: string + otherClockSyncParams: + description: > + This type represents a list of key-value pairs. The order of + the pairs in the list is not significant. In JSON, a set of + keyvalue pairs is represented as an object. It shall comply + with the provisions defined in clause 4 of IETF RFC 8259. In + the following example, a list of key-value pairs with four + keys ("aString", "aNumber", "anArray" and "anObject") is + provided to illustrate that the values associated with + different keys can be of different type. + type: object + required: + - id + - type + clockSyncsDeleteIds: + description: > + List of identifiers entries to be deleted from the "clockSyncs" + attribute array in the "ManoEntityConfigurableParams", as defined + below this table. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + defaultLogCompileBySizeValue: + description: | + Unsigned integer + type: number + defaultLogCompileByTimerValue: + description: | + Unsigned integer + type: number + manoServiceModifications: + description: > + New content of certain entries in the "manoServices" attribute + array in the "ManoEntity", as defined below this table. + type: array + items: + type: object + properties: + id: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + name: + description: "New value for the \"name\" attribute in the \"ManoService\". \nNOTE:\tAt least one of these attributes shall be provided if requesting a modification of the NFV-MANO service identified by \"id\".\n" + type: string + description: + description: "New value for the \"description\" attribute in the \"ManoService\".\nNOTE:\tAt least one of these attributes shall be provided if requesting a modification of the NFV-MANO service identified by \"id\".\n" + type: string + required: + - id + ManoConfigModifications: + description: > + This type represents attribute modifications that were performed on the + "NFV-MANO entity" resource of the producer NFV-MANO functional entity. + The attributes that can be included consist of those requested to be + modified explicitly in the "ManoConfigModificationRequest" data + structure. + type: object + properties: + name: + description: > + If present, this attribute signals modifications of the "name" + attribute in "ManoEntity", as defined in clause 5.6.2.3 + type: string + description: + description: > + If present, this attribute signals modifications of the + "description" attribute in "ManoEntity", as defined in clause + 5.6.2.3. + type: string + clockSyncs: + description: > + If present, this attribute signals modifications of the + "clockSyncs" attribute in "ManoEntityConfigurableParams", as + defined in clause 5.6.2.3. + type: array + items: + description: | + This type represents parameters for connecting to an NTP server. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + type: + description: | + Type of clock synchronization. + Permitted values: + - NTP: For Network Time Protocol (NTP) based clock synchronization. + - OTHER: For other types of clock synchronization. + type: string + enum: + - NTP + - OTHER + ntpServerInfo: + description: > + Information for the NTP based clock synchronization. Shall be + present if type = "NTP". + type: object + properties: + ipAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of an + IPV4 address, string that consists of four decimal + integers separated by dots, each integer ranging from 0 to + 255. In case of an IPV6 address, string that consists of + groups of zero to four hexadecimal digits, separated by + colons. + type: string + format: IP + hostname: + description: "Indicates the hostname of the NTP server. \nNOTE:\tEither ipAddress or hostname shall be set, but not both at the same time.\n" + type: string + otherClockSyncParams: + description: > + This type represents a list of key-value pairs. The order of + the pairs in the list is not significant. In JSON, a set of + keyvalue pairs is represented as an object. It shall comply + with the provisions defined in clause 4 of IETF RFC 8259. In + the following example, a list of key-value pairs with four + keys ("aString", "aNumber", "anArray" and "anObject") is + provided to illustrate that the values associated with + different keys can be of different type. + type: object + required: + - id + - type + clockSyncsDeleteIds: + description: > + If present, this attribute signals modifications of certain entries + in "clockSyncs" attribute in "ManoEntityConfigurableParams", as + defined in clause 5.6.2.3. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + defaultLogCompileBySizeValue: + description: | + Unsigned integer + type: number + defaultLogCompileByTimerValue: + description: | + Unsigned integer + type: number + manoServiceModifications: + description: > + If present, this attribute signals modifications of the + "manoServices" attribute array in the "ManoEntity", as defined in + clause 5.6.2.3. + type: array + items: + type: object + properties: + id: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + name: + description: > + If present, this attribute signals modification of the "name" + attribute in the "ManoService". + type: string + description: + description: > + If present, this attribute signals modification of the + "description" attribute in the "ManoService". + type: string + required: + - id + CimSubscriptionRequest: + description: > + This type represents a subscription request related to notifications + about NFV-MANO configuration and information management changes. + type: object + properties: + filter: + description: > + This type represents a subscription filter related to notifications + about NFV-MANO configuration and information management. + type: object + properties: + manoEntitySubscriptionFilter: + description: > + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. + type: object + properties: + manoEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO service + name listed in this attribute. + + The attributes "manoServiceIds" and "manoServiceNames" are + alternatives to reference to NFV-MANO services in a filter. + They should not be used together in the same filter + instance, but one alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to reference + to NFV-MANO functional entity produced interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to reference + to NFV-MANO functional entity produced interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to reference + to NFV-MANO functional entity consumed interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to reference + to NFV-MANO functional entity consumed interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + type: string + notificationTypes: + description: "Match particular notification types. \nPermitted values:\n - InformationChangedNotification\n - ChangeStateNotification\n\nNOTE:\tThe 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: + - InformationChangedNotification + - ChangeStateNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + authentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization which the + API consumer is willing to accept when receiving a notification. + Permitted values: * BASIC: In every HTTP request to the + notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification endpoint is + sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + description: > + Parameters for authentication/authorization using BASIC. Shall + be present if authType is "BASIC" and the contained information + has not been provisioned out of band. Shall be absent otherwise. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + paramsOauth2ClientCredentials: + description: > + Parameters for authentication/authorization using + OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is + "OAUTH2_CLIENT_CREDENTIALS" and the contained information has + not been provisioned out of band. Shall be absent otherwise. + type: object + properties: + clientId: + description: > + Client identifier to be used in the access token request of + the OAuth 2.0 client credentials grant type. Shall be + present if it has not been provisioned out of band. The + clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are + used to obtain authorization for API requests. Client + credentials may differ between subscriptions. The value of + clientPassword should be generated by a random process. + type: string + clientPassword: + description: > + Client password to be used in the access token request of + the OAuth 2.0 client credentials grant type. Shall be + present if it has not been provisioned out of band. The + clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are + used to obtain authorization for API requests. Client + credentials may differ between subscriptions. The value of + clientPassword should be generated by a random process. + type: string + tokenEndpoint: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - callbackUri + CimSubscription: + description: > + This type represents a subscription related to notifications about + NFV-MANO configuration and information management changes + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a subscription filter related to notifications + about NFV-MANO configuration and information management. + type: object + properties: + manoEntitySubscriptionFilter: + description: > + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. + type: object + properties: + manoEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO service + name listed in this attribute. + + The attributes "manoServiceIds" and "manoServiceNames" are + alternatives to reference to NFV-MANO services in a filter. + They should not be used together in the same filter + instance, but one alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to reference + to NFV-MANO functional entity produced interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to reference + to NFV-MANO functional entity produced interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to reference + to NFV-MANO functional entity consumed interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to reference + to NFV-MANO functional entity consumed interfaces in a + filter. They should not be used both in the same filter + instance, but one alternative should be chosen. + type: array + items: + type: string + notificationTypes: + description: "Match particular notification types. \nPermitted values:\n - InformationChangedNotification\n - ChangeStateNotification\n\nNOTE:\tThe 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: + - InformationChangedNotification + - ChangeStateNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links to resources related to this resource. + type: object + properties: + self: + description: | + This type represents a link to a resource using an absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - callbackUri + - _links + ChangeStateRequest: + description: > + This type represents request parameters for changing the state of a + managed entity. + type: object + properties: + operationalStateChange: + description: "A change of operational state. Shall be present if the state change request refers to the operational state. NOTE:\tIn the present document version, a request shall only include an operational state change (attribute \"operationalStateChange\") or an administrative state change request (attribute \"administrativeStateChange\"), but not both.\n" + type: object + properties: + operationalStateAction: + description: "The enumeration ChangeOperationalStateEnumType defines permitted values for the change state operation. The ChangeOperationalStateEnumType shall comply with the provisions:\n - START\tTo start the managed entity.\n - STOP\tTo stop the managed entity.\n - RESTART\tTo stop and start again the managed entity.\n" + type: string + enum: + - START + - STOP + - RESTART + stopType: + description: "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions:\n - GRACEFUL\tTo stop the managed entity immediately after accepting the request.\n - FORCEFUL\tTo stop the managed entity attempting to gracefully discharge the entity from service.\n" + type: string + enum: + - GRACEFUL + - FORCEFUL + gracefulStopTimeout: + description: "The time internal (in seconds) to wait for the entity to be taken out of service during graceful stop. \nNOTE:\tThe \"stopType\" shall only be provided when the \"operationalStateAction\" attribute is equal to \"STOP\" or \"RESTART\". The \"gracefulStopTimeout\" shall be absent when the \"stopType\" attribute is equal to \"FORCEFUL\", and may be provided otherwise.\n" + type: integer + required: + - operationalStateAction + administrativeStateChange: + description: "A change of administrative state. Shall be present if the state change request refers to the administrative state. \nNOTE:\tIn the present document version, a request shall only include an operational state change (attribute \"operationalStateChange\") or an administrative state change request (attribute \"administrativeStateChange\"), but not both.\n" + type: object + properties: + administrativeStateAction: + description: "The enumeration ChangeAdministrativeStateEnumType defines permitted values for the change of administrative state operation. The ChangeAdministrativeStateEnumType shall comply with the provisions:\n - LOCK\tTo lock the managed entity.\n - UNLOCK\tTo unlock the managed entity.\n" + type: string + enum: + - LOCK + - UNLOCK + required: + - administrativeStateAction + ChangeStateOpOcc: + description: | + This type represents a Change state operation occurrence. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + operationState: + description: "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions :\n - PROCESSING\tThe change state operation is currently in execution.\n - COMPLETED\tThe change state operation has been completed successfully.\n - FAILED\tThe change state operation has failed.\n" + type: string + enum: + - PROCESSING + - COMPLETED + - FAILED + stateEnteredTime: + description: > + Date-time stamp. Representation: String formatted according to IETF + RFC 3339. + type: string + format: date-time + startTime: + description: > + Date-time stamp. Representation: String formatted according to IETF + RFC 3339. + type: string + format: date-time + managedObjectRef: + description: > + This type represents the identifier to reference a managed object of + a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if attribute + "manoEntityComponents" in "ManoEntity" is supported by the API + producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: | + An identifier with the intention of being globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + required: + - type + - objectId + changeOperationalStateRequest: + description: "The enumeration ChangeOperationalStateEnumType defines permitted values for the change state operation. The ChangeOperationalStateEnumType shall comply with the provisions:\n - START\tTo start the managed entity.\n - STOP\tTo stop the managed entity.\n - RESTART\tTo stop and start again the managed entity.\n" + type: string + enum: + - START + - STOP + - RESTART + changeAdministrativeStateRequest: + description: "The enumeration ChangeAdministrativeStateEnumType defines permitted values for the change of administrative state operation. The ChangeAdministrativeStateEnumType shall comply with the provisions:\n - LOCK\tTo lock the managed entity.\n - UNLOCK\tTo unlock the managed entity.\n" + type: string + enum: + - LOCK + - UNLOCK + operationParams: + description: > + Input parameters of the change state operation. This attribute shall + be formatted according to the request data type of the related + change state operation. + + The following mapping between operationType and the data type of + this attribute shall apply: + - CHANGE_STATE: ChangeStateRequest + + This attribute shall be present if this data type is returned in a + response to reading an individual resource, and may be present + according to the chosen attribute selector parameter if this data + type is returned in a response to a query of a container resource. + required: + - id + - operationState + - stateEnteredTime + - startTime + - managedObjectRef + ManoServiceInterface: + description: > + This type represents an individual NFV-MANO service interface produced + by an NFV-MANO functional entity. + type: object + properties: + id: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + name: + description: | + Human-readable name of the NFV-MANO functional entity interface. + This attribute can be modified with the PATCH method. + type: string + type: + description: > + Type of the NFV-MANO service interface produced by the NFV-MANO + functional entity. Valid values are defined in clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + providerSpecificApiVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: | + Exposed API endpoint of the interface. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. Shall be + present for ETSI NFV specified RESTful NFV-MANO APIs. The + {apiName} of each interface is defined in the standard the + interface is compliant to (see also clause 4.1 of ETSI GS + NFV-SOL 013). May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. Shall be present + for ETSI NFV specified RESTful NFV-MANO APIs. The major version + is defined in the standard the interface is compliant to (see + also clause 4.1 of ETSI GS NFV-SOL 013). May be present + otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + maxConcurrentIntOpNumber: + description: "Maximum number of concurrent operation requests supported on this interface. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n" + type: integer + supportedOperations: + description: | + Information about supported operations of this interface. + type: array + items: + type: object + properties: + operationName: + description: | + Name of the operation supported on the interface. + type: string + maxConcurrentOpNumber: + description: "Maximum number of concurrent requests supported by the interface operation. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n" + type: integer + required: + - operationName + minItems: 1 + interfaceState: + description: | + State of the NFV-MANO service interface. + properties: + operationalState: + description: "The enumeration InterfaceOperationalStateEnumType defines values representing the operational state of an NFV-MANO service interface type of managed entity. The InterfaceOperationalStateEnumType shall comply with the provisions :\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + usageState: + description: "The enumeration UsageStateEnumType defines values representing the usage state of a managed entity. The UsageStateEnumType shall comply with the provisions:\n - IN_USE\tThe managed entity is currently being used.\n - NOT_IN_USE\tThe managed entity is currently not being used.\n" + type: string + enum: + - IN_USE + - NOT_IN_USE + required: + - operationalState + - administrativeState + - usageState + securityInfo: + description: > + This type represents security related information of an NFV-MANO + service interface produced by an NFV-MANO functional entity. + type: object + properties: + authType: + description: > + Type of API request authorization to be used by the API + producer. + + The support of authorization methods for the API producer is + specified in clause 8.3.6 of ETSI GS NFV-SOL 013. + + Permitted values: + - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: | + OAuth 2.0 authorization server information and configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + webFingerHost: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - webFingerHost + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + authServerId: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - authServerId + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as supported by + the API producer when performing the SSL or TLS negotiation + with the authorization server. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - providedConfiguration + - tlsCipherSuites + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS tunnel. + Shall be present if authType contains "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: >- + List of cipher suites that shall be declared as supported by + the API producer when performing the SSL or TLS negotiation + with the API client. Valid values of cipher suites are + defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - tlsTunnelCipherSuites + required: + - authType + - oauthServerInfo + metadata: + description: > + This type represents a list of key-value pairs. The order of the + pairs in the list is not significant. In JSON, a set of keyvalue + pairs is represented as an object. It shall comply with the + provisions defined in clause 4 of IETF RFC 8259. In the following + example, a list of key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided to illustrate that + the values associated with different keys can be of different type. + type: object + required: + - id + - name + - type + - standardVersion + - providerSpecificApiVersion + - apiVersion + - apiEndpoint + - supportedOperations + - interfaceState + ManoServiceInterfaceModificationRequest: + description: > + This type represents attribute modifications for configuration + parameters of an NFV-MANO service interface of the producer NFV-MANO + functional entity. + type: object + properties: + name: + description: "New value of the \"name\" attribute in \"ManoServiceInterface\". \nNOTE:\tChanging the name does not change the corresponding standardized API name in the resource URI (refer to \"{apiName}\" defined in clause 4.1 of ETSI GS NFV-SOL 013).\n" + type: string + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + securityInfo: + description: > + This type represents security related information of an NFV-MANO + service interface produced by an NFV-MANO functional entity. + type: object + properties: + authType: + description: > + Type of API request authorization to be used by the API + producer. + + The support of authorization methods for the API producer is + specified in clause 8.3.6 of ETSI GS NFV-SOL 013. + + Permitted values: + - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: | + OAuth 2.0 authorization server information and configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + webFingerHost: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - webFingerHost + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + authServerId: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - authServerId + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as supported by + the API producer when performing the SSL or TLS negotiation + with the authorization server. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - providedConfiguration + - tlsCipherSuites + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS tunnel. + Shall be present if authType contains "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: >- + List of cipher suites that shall be declared as supported by + the API producer when performing the SSL or TLS negotiation + with the API client. Valid values of cipher suites are + defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - tlsTunnelCipherSuites + required: + - authType + - oauthServerInfo + metadata: + description: > + This type represents a list of key-value pairs. The order of the + pairs in the list is not significant. In JSON, a set of keyvalue + pairs is represented as an object. It shall comply with the + provisions defined in clause 4 of IETF RFC 8259. In the following + example, a list of key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided to illustrate that + the values associated with different keys can be of different type. + type: object + ManoServiceInterfaceModifications: + description: > + This type represents attribute modifications that were performed on an + Individual NFV-MANO service interface" resource. The attributes that + can be included consist of those requested to be modified explicitly in + the "ManoServiceInterfaceModificationRequest" data structure. If + applicable, additional attributes of the "ManoServiceInterface" data + structure that were modified implicitly shall also be provided. + type: object + properties: + name: + description: > + If present, this attribute signals modifications of the "name" + attribute in "ManoServiceInterface", as defined in clause 5.6.2.11. + type: string + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + securityInfo: + description: > + This type represents security related information of an NFV-MANO + service interface produced by an NFV-MANO functional entity. + type: object + properties: + authType: + description: > + Type of API request authorization to be used by the API + producer. + + The support of authorization methods for the API producer is + specified in clause 8.3.6 of ETSI GS NFV-SOL 013. + + Permitted values: + - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: | + OAuth 2.0 authorization server information and configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + webFingerHost: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - webFingerHost + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + authServerId: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - authServerId + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as supported by + the API producer when performing the SSL or TLS negotiation + with the authorization server. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - providedConfiguration + - tlsCipherSuites + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS tunnel. + Shall be present if authType contains "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: >- + List of cipher suites that shall be declared as supported by + the API producer when performing the SSL or TLS negotiation + with the API client. Valid values of cipher suites are + defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - tlsTunnelCipherSuites + required: + - authType + - oauthServerInfo + metadata: + description: > + This type represents a list of key-value pairs. The order of the + pairs in the list is not significant. In JSON, a set of keyvalue + pairs is represented as an object. It shall comply with the + provisions defined in clause 4 of IETF RFC 8259. In the following + example, a list of key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided to illustrate that + the values associated with different keys can be of different type. + type: object + CreatePeerEntityRequest: + description: > + This type represents request parameters for the creation of a new peer + entity resource. + type: object + properties: + peerEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the peer functional entity. + type: string + type: + description: "The enumeration PeerEntityEnumType defines the permitted values to represent peer functional entities. it shall complains with the provisions : - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t The peer functional entity is a VIM. - WIM\t The peer functional entity is a WIM. - EM\t The peer functional entity is an EM. - OSS\t The peer functional entity is an OSS/BSS.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + - WIM + - EM + - OSS + description: + description: | + Human-readable description of the peer functional entity. + type: string + consumedManoInterfaces: + description: > + Information of the interface consumed by the NFV-MANO functional + entity from the peer functional entity. + type: array + items: + description: > + This type represents an interface consumed by the producer NFV + MANO functional entity from another peer functional entity. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by the + NFV-MANO functional entity. Valid values are defined in + clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It provides the + information relevant about the protocol, host and port, and + path where the interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. Shall + be present for ETSI NFV specified RESTful NFV-MANO APIs. + The {apiName} of each interface is defined in the + standard the interface is compliant to (see also clause + 4.1 of ETSI GS NFV-SOL 013). May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. Shall be + present for ETSI NFV specified RESTful NFV-MANO APIs. The + major version is defined in the standard the interface is + compliant to (see also clause 4.1 of ETSI GS NFV-SOL + 013). May be present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information for + accessing an NFV-MANO service interface produced by an + NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by the API + consumer accessing the API. + + The support of authorization methods for the API consumer + is specified in clause 8.3.6 of ETSI GS NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, as + defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: Using + access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is hosted. When + used, the request to the WebFinger resource shall + conform as specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined in ETSI + GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing the SSL + or TLS negotiation with the authorization server. + Valid values of cipher suites are defined in IETF RFC + 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS + tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing the SSL + or TLS negotiation with the API producer. Valid + values of cipher suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + peerEntityState: + description: | + Current values of the state of the peer functional entity. + type: object + properties: + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + required: + - operationalState + - administrativeState + required: + - peerEntityId + - name + - type + PeerEntity: + description: | + This type represents an individual peer entity. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + peerEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the peer functional entity. + This attribute can be modified with the PATCH method. + type: string + type: + description: "The enumeration PeerEntityEnumType defines the permitted values to represent peer functional entities. it shall complains with the provisions : - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t The peer functional entity is a VIM. - WIM\t The peer functional entity is a WIM. - EM\t The peer functional entity is an EM. - OSS\t The peer functional entity is an OSS/BSS.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + - WIM + - EM + - OSS + description: + description: | + Human-readable description of the peer functional entity. + This attribute can be modified with the PATCH method. + type: string + consumedManoInterfaces: + description: > + Information of the interface consumed by the NFV-MANO functional + entity from the peer functional entity. + + This attribute can be modified with the PATCH method. + type: array + items: + description: > + This type represents an interface consumed by the producer NFV + MANO functional entity from another peer functional entity. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by the + NFV-MANO functional entity. Valid values are defined in + clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It provides the + information relevant about the protocol, host and port, and + path where the interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. Shall + be present for ETSI NFV specified RESTful NFV-MANO APIs. + The {apiName} of each interface is defined in the + standard the interface is compliant to (see also clause + 4.1 of ETSI GS NFV-SOL 013). May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. Shall be + present for ETSI NFV specified RESTful NFV-MANO APIs. The + major version is defined in the standard the interface is + compliant to (see also clause 4.1 of ETSI GS NFV-SOL + 013). May be present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information for + accessing an NFV-MANO service interface produced by an + NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by the API + consumer accessing the API. + + The support of authorization methods for the API consumer + is specified in clause 8.3.6 of ETSI GS NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, as + defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: Using + access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is hosted. When + used, the request to the WebFinger resource shall + conform as specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined in ETSI + GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing the SSL + or TLS negotiation with the authorization server. + Valid values of cipher suites are defined in IETF RFC + 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS + tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing the SSL + or TLS negotiation with the API producer. Valid + values of cipher suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + peerEntityState: + description: > + State of the peer functional entity as provided by the API consumer + when creating the resource or when updating it with the PATCH + method. + type: object + properties: + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + required: + - operationalState + - administrativeState + required: + - id + - peerEntityId + - name + - type + - peerEntityState + PeerEntityConfigModificationRequest: + description: > + This type represents attribute modifications for configuration + parameters of a peer entity. + type: object + properties: + name: + description: | + New value of the "name" attribute in "PeerEntity". + type: string + description: + description: > + New value of the "description" attribute in "PeerEntity", or "null" + to remove the attribute. + type: string + consumedManoInterfaces: + description: "New content of certain entries in the \"consumedManoInterfaces\" attribute array in the \"PeerEntity\", as defined below this table. \nNOTE:\tDue to the security sensitive information contained within the attribute (refer to \"securityInfo\" within the \"ConsumedManoInterfaceInfo\"), based on access control policies, the API consumer might have read only, write only, read/write, or no access at all to the attribute’s value. In case the API consumer is not allowed to modify the value of the security sensitive attribute, and the modification request includes new attribute values, the whole modification request shall be rejected, and proper error information returned.\n" + type: array + items: + description: > + This type represents an interface consumed by the producer NFV + MANO functional entity from another peer functional entity. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by the + NFV-MANO functional entity. Valid values are defined in + clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It provides the + information relevant about the protocol, host and port, and + path where the interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. Shall + be present for ETSI NFV specified RESTful NFV-MANO APIs. + The {apiName} of each interface is defined in the + standard the interface is compliant to (see also clause + 4.1 of ETSI GS NFV-SOL 013). May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. Shall be + present for ETSI NFV specified RESTful NFV-MANO APIs. The + major version is defined in the standard the interface is + compliant to (see also clause 4.1 of ETSI GS NFV-SOL + 013). May be present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information for + accessing an NFV-MANO service interface produced by an + NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by the API + consumer accessing the API. + + The support of authorization methods for the API consumer + is specified in clause 8.3.6 of ETSI GS NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, as + defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: Using + access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is hosted. When + used, the request to the WebFinger resource shall + conform as specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined in ETSI + GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing the SSL + or TLS negotiation with the authorization server. + Valid values of cipher suites are defined in IETF RFC + 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS + tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing the SSL + or TLS negotiation with the API producer. Valid + values of cipher suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + consumedManoInterfaceDeleteIds: + description: > + List of identifiers entries to be deleted from the + "consumedManoInterfaces" attribute array in the " PeerEntity ", as + defined below this table. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + PeerEntityConfigModifications: + description: > + This type represents attribute modifications that were performed on an + "Individual peer entity" resource. The attributes that can be included + consist of those requested to be modified explicitly in the + "PeerEntityConfigModificationRequest" data structure. If applicable, + additional attributes of the "PeerEntity" data structure that were + modified implicitly shall also be provided. + type: object + properties: + name: + description: > + If present, this attribute signals modifications of the "name" + attribute in "PeerEntity", as defined in clause 5.6.2.15. + type: string + description: + description: > + If present, this attribute signals modifications of the + "description" attribute in "PeerEntity", as defined in clause + 5.6.2.15. + type: string + consumedManoInterfaces: + description: "If present, this attribute signals modifications of certain entries in \"consumedManoInterfaces\" attribute in \"PeerEntity\", as defined in clause 5.6.2.15. \nNOTE:\tDue to the security sensitive information contained within the attribute (refer to \"securityInfo\" within the \"ConsumedManoInterfaceInfo\"), based on access control policies, the API consumer might have read only, write only, read/write, or no access at all to the attribute’s value. In case the API consumer is not allowed to read the value of the security sensitive attribute, the attribute shall be omitted when the information is to be provided in a response message.\n" + type: array + items: + description: > + This type represents an interface consumed by the producer NFV + MANO functional entity from another peer functional entity. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by the + NFV-MANO functional entity. Valid values are defined in + clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It provides the + information relevant about the protocol, host and port, and + path where the interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. Shall + be present for ETSI NFV specified RESTful NFV-MANO APIs. + The {apiName} of each interface is defined in the + standard the interface is compliant to (see also clause + 4.1 of ETSI GS NFV-SOL 013). May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. Shall be + present for ETSI NFV specified RESTful NFV-MANO APIs. The + major version is defined in the standard the interface is + compliant to (see also clause 4.1 of ETSI GS NFV-SOL + 013). May be present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information for + accessing an NFV-MANO service interface produced by an + NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by the API + consumer accessing the API. + + The support of authorization methods for the API consumer + is specified in clause 8.3.6 of ETSI GS NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, as + defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: Using + access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is hosted. When + used, the request to the WebFinger resource shall + conform as specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined in ETSI + GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing the SSL + or TLS negotiation with the authorization server. + Valid values of cipher suites are defined in IETF RFC + 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS + tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing the SSL + or TLS negotiation with the API producer. Valid + values of cipher suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + consumedManoInterfaceDeleteIds: + description: > + If present, this attribute signals the deletions of certain entries + in the "consumedManoInterfaces" attribute in "PeerEntity", as + defined in clause 5.6.2.15. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + ManoConfigurableParams: + description: | + # Warning: No definition found in the document ManoConfigurableParams + ManoEntityComponent: + description: > + This type represents information of a deployed component realizing part + of an NFV-MANO functional entity. It is optional for the API producer + to support this type. + type: object + properties: + id: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + manoServiceIds: + description: > + References to the NFV-MANO services that depend on the NFV-MANO + functional entity component. The identifier of the ManoService is + referred. A service may depend on multiple components. Multiple + services may depend on the same component. + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + required: + - id + ManoService: + description: > + This type represents information about an NFV-MANO service provided by + the NFV-MANO functional entity. + type: object + properties: + id: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + name: + description: | + Human-readable name of the NFV-MANO service. + This attribute can be modified with the PATCH method. + type: string + description: + description: | + Human-readable description of the NFV-MANO service. + This attribute can be modified with the PATCH method. + type: string + manoServiceInterfaceIds: + description: "Reference to the NFV-MANO interfaces associated to the NFV-MANO service. If cardinality is greater than one, the type of ManoServiceInterface (see clause 5.6.3.3) shall be the same. The identifier of the ManoServiceInterface is referred. \nNOTE:\tA cardinality greater than one supports having different interface versions or apiEndpoints to be used for accessing the same instance of a NFV-MANO service.\n" + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally unique. + Representation: string of variable length.. + type: string + minItems: 1 + _links: + description: | + Links to resources related to this resource. + type: object + properties: + manoServiceInterfaces: + description: > + Link to the "individual NFV-MANO service interface" resources + with information about the associated interfaces to the + NFV-MANO service. + type: array + items: + description: > + This type represents a link to a resource using an absolute + URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + minItems: 1 + required: + - manoServiceInterfaces + required: + - id + - name + - description + - manoServiceInterfaceIds + - _links + NfvoSpecificInfo: + description: > + This type represents information attributes specific to an NFVO entity, + and that can be relevant to more than one NFV-MANO service offered by + an NFVO entity. + type: object + properties: + maxOnboardedNsdNum: + description: > + Maximum number of NSDs that can be on-boarded on the NFVO. + + NOTE: If this attribute is not present, the value of this parameter + is undefined. + type: integer + maxOnboardedVnfPkgNum: + description: > + Maximum number of VNF Packages that can be on-boarded on the NFVO. + + NOTE: If this attribute is not present, the value of this parameter + is undefined. + type: integer + supportedVnfdFormats: + description: | + Supported VNFD data formats. + type: object + properties: + vnfdFormat: + description: | + Name of the VNFD format. + Permitted values: + - TOSCA: The VNFD follows TOSCA definition, according to ETSI + GS NFV-SOL 001 standard. + - YANG: The VNFD follows YANG definition according to ETSI + GS NFV-SOL 006 standard. + type: string + enum: + - TOSCA + - YANG + standardVersion: + description: | + A version. + type: string + required: + - vnfdFormat + - standardVersion + supportedNsdFormats: + description: | + Supported NSD data formats. + type: object + properties: + nsdFormat: + description: | + Name of the NSD format. + Permitted values: + - TOSCA: The VNFD follows TOSCA definition, according to ETSI + GS NFV-SOL 001 standard. + - YANG: The VNFD follows YANG definition according to ETSI + GS NFV-SOL 006 standard. + type: string + enum: + - TOSCA + - YANG + standardVersion: + description: | + A version. + type: string + required: + - nsdFormat + - standardVersion + required: + - supportedVnfdFormats + - supportedNsdFormats + VnfmSpecificInfo: + description: > + This type represents information attributes specific to a VNFM entity, + and that can be relevant to more than one NFV-MANO service offered by a + VNFM entity. + type: object + properties: + resoruceMgmtModeSupport: + description: | + The supported resource management modes of the VNFM. + Permitted values: + - DIRECT: The VNFM supports direct mode only. + - INDIRECT: The VNFM supports indirect mode only. + - BOTH: The VNFM supports both direct and indirect mode. + type: string + enum: + - DIRECT + - INDIRECT + - BOTH + managedVnfInstanceInfos: + description: > + The kinds of VNF instances that can be managed, e.g. to determine + the compatibility of a VNF with certain VNFM according to the + vnfmInfo attribute in the VNFD (see table 7.1.2.2-1 in ETSI GS + NFV-IFA 011). + type: array + items: + type: string + minItems: 1 + supportedVnfdFormats: + description: | + Supported VNFD data formats. + type: array + items: + type: object + properties: + vnfdFormat: + description: | + Name of the VNFD format. + Permitted values: + - TOSCA: The VNFD follows TOSCA definition, according to ETSI + GS NFV-SOL 001 standard. + - YANG: The VNFD follows YANG definition according to ETSI + GS NFV-SOL 006 standard. + type: string + enum: + - TOSCA + - YANG + standardVersion: + description: | + A version. + type: string + required: + - vnfdFormat + - standardVersion + minItems: 1 + required: + - resoruceMgmtModeSupport + - managedVnfInstanceInfos + - supportedVnfdFormats + VimSpecificInfo: + description: > + This type represents information attributes specific to a VIM entity, + and that can be relevant to more than one NFV-MANO service offered by a + VIM entity. + type: object + ManoEntityConfigurableParams: + description: > + This type represents list of parameters that can be configured on the + NFV MANO functional entity. + type: object + properties: + clockSyncs: + description: >- + Properties of the clock synchronization to be used by the NFV-MANO + functional entity. + type: array + items: + description: | + This type represents parameters for connecting to an NTP server. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + type: + description: | + Type of clock synchronization. + Permitted values: + - NTP: For Network Time Protocol (NTP) based clock synchronization. + - OTHER: For other types of clock synchronization. + type: string + enum: + - NTP + - OTHER + ntpServerInfo: + description: > + Information for the NTP based clock synchronization. Shall be + present if type = "NTP". + type: object + properties: + ipAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of an + IPV4 address, string that consists of four decimal + integers separated by dots, each integer ranging from 0 to + 255. In case of an IPV6 address, string that consists of + groups of zero to four hexadecimal digits, separated by + colons. + type: string + format: IP + hostname: + description: "Indicates the hostname of the NTP server. \nNOTE:\tEither ipAddress or hostname shall be set, but not both at the same time.\n" + type: string + otherClockSyncParams: + description: > + This type represents a list of key-value pairs. The order of + the pairs in the list is not significant. In JSON, a set of + keyvalue pairs is represented as an object. It shall comply + with the provisions defined in clause 4 of IETF RFC 8259. In + the following example, a list of key-value pairs with four + keys ("aString", "aNumber", "anArray" and "anObject") is + provided to illustrate that the values associated with + different keys can be of different type. + type: object + required: + - id + - type + minItems: 1 + defaultLogCompileBySizeValue: + description: | + Unsigned integer + type: number + defaultLogCompileByTimerValue: + description: | + Unsigned integer + type: number + required: + - clockSyncs + - defaultLogCompileBySizeValue + - defaultLogCompileByTimerValue + ConsumedManoInterfaceInfo: + description: > + This type represents an interface consumed by the producer NFV MANO + functional entity from another peer functional entity. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by the NFV-MANO + functional entity. Valid values are defined in clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It provides the + information relevant about the protocol, host and port, and path + where the interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. Shall be + present for ETSI NFV specified RESTful NFV-MANO APIs. The + {apiName} of each interface is defined in the standard the + interface is compliant to (see also clause 4.1 of ETSI GS + NFV-SOL 013). May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. Shall be present + for ETSI NFV specified RESTful NFV-MANO APIs. The major version + is defined in the standard the interface is compliant to (see + also clause 4.1 of ETSI GS NFV-SOL 013). May be present + otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information for accessing an + NFV-MANO service interface produced by an NFV-MANO functional + entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by the API consumer + accessing the API. + + The support of authorization methods for the API consumer is + specified in clause 8.3.6 of ETSI GS NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, as defined by + TLS 1.2 in IETF RFC 5246. - OAUTH2: Using access token, as + defined by the OAuth 2.0 specification in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: | + OAuth 2.0 authorization server information and configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is hosted. When used, + the request to the WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined in ETSI GS + NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as supported by + the API consumer when performing the SSL or TLS negotiation + with the authorization server. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS tunnel. + Shall be present if authType contains "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared as supported by + the API consumer when performing the SSL or TLS negotiation + with the API producer. Valid values of cipher suites are + defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + CimNotificationsFilter: + description: > + This type represents a subscription filter related to notifications + about NFV-MANO configuration and information management. + type: object + properties: + manoEntitySubscriptionFilter: + description: > + This type represents subscription filter criteria to match NFV-MANO + functional entities and their associated managed objects. + type: object + properties: + manoEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO service + name listed in this attribute. + + The attributes "manoServiceIds" and "manoServiceNames" are + alternatives to reference to NFV-MANO services in a filter. + They should not be used together in the same filter instance, + but one alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity produced interfaces + with an instance identifier listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to reference to + NFV-MANO functional entity produced interfaces in a filter. + They should not be used both in the same filter instance, but + one alternative should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity produced interfaces + with an instance Name listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to reference to + NFV-MANO functional entity produced interfaces in a filter. + They should not be used both in the same filter instance, but + one alternative should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity consumed interfaces + with an instance identifier listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to reference to + NFV-MANO functional entity consumed interfaces in a filter. + They should not be used both in the same filter instance, but + one alternative should be chosen. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity consumed interfaces + with an instance Name listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to reference to + NFV-MANO functional entity consumed interfaces in a filter. + They should not be used both in the same filter instance, but + one alternative should be chosen. + type: array + items: + type: string + notificationTypes: + description: "Match particular notification types. \nPermitted values:\n - InformationChangedNotification\n - ChangeStateNotification\n\nNOTE:\tThe 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: + - InformationChangedNotification + - ChangeStateNotification + ClockSyncInfo: + description: | + This type represents parameters for connecting to an NTP server. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + type: + description: | + Type of clock synchronization. + Permitted values: + - NTP: For Network Time Protocol (NTP) based clock synchronization. + - OTHER: For other types of clock synchronization. + type: string + enum: + - NTP + - OTHER + ntpServerInfo: + description: > + Information for the NTP based clock synchronization. Shall be + present if type = "NTP". + type: object + properties: + ipAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of an IPV4 + address, string that consists of four decimal integers separated + by dots, each integer ranging from 0 to 255. In case of an IPV6 + address, string that consists of groups of zero to four + hexadecimal digits, separated by colons. + type: string + format: IP + hostname: + description: "Indicates the hostname of the NTP server. \nNOTE:\tEither ipAddress or hostname shall be set, but not both at the same time.\n" + type: string + otherClockSyncParams: + description: > + This type represents a list of key-value pairs. The order of the + pairs in the list is not significant. In JSON, a set of keyvalue + pairs is represented as an object. It shall comply with the + provisions defined in clause 4 of IETF RFC 8259. In the following + example, a list of key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided to illustrate that + the values associated with different keys can be of different type. + type: object + required: + - id + - type + ServerInterfaceSecurityInfo: + description: > + This type represents security related information of an NFV-MANO + service interface produced by an NFV-MANO functional entity. + type: object + properties: + authType: + description: > + Type of API request authorization to be used by the API producer. + + The support of authorization methods for the API producer is + specified in clause 8.3.6 of ETSI GS NFV-SOL 013. + + Permitted values: + - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: | + OAuth 2.0 authorization server information and configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + webFingerHost: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - webFingerHost + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + authServerId: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - authServerId + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as supported by + the API producer when performing the SSL or TLS negotiation + with the authorization server. Valid values of cipher suites + are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - providedConfiguration + - tlsCipherSuites + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS tunnel. + Shall be present if authType contains "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: >- + List of cipher suites that shall be declared as supported by the + API producer when performing the SSL or TLS negotiation with the + API client. Valid values of cipher suites are defined in IETF + RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - tlsTunnelCipherSuites + required: + - authType + - oauthServerInfo + ClientInterfaceSecurityInfo: + description: > + This type represents security related information for accessing an + NFV-MANO service interface produced by an NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by the API consumer + accessing the API. + + The support of authorization methods for the API consumer is + specified in clause 8.3.6 of ETSI GS NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, as defined by TLS + 1.2 in IETF RFC 5246. - OAUTH2: Using access token, as defined by + the OAuth 2.0 specification in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: | + OAuth 2.0 authorization server information and configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is hosted. When used, the + request to the WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined in ETSI GS + NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as supported by the + API consumer when performing the SSL or TLS negotiation with + the authorization server. Valid values of cipher suites are + defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS tunnel. + Shall be present if authType contains "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared as supported by the + API consumer when performing the SSL or TLS negotiation with + the API producer. Valid values of cipher suites are defined in + IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + ManoServiceInterfaceTypeShortName: + description: "For the RESTful NFV-MANO APIs, valid values are all values for \"apiName\" as defined in ETSI GS NFV-SOL 002, ETSI GS NFV-SOL 003, and ETSI GS NFV-SOL 005.\nFor the NFV-MANO service interfaces for which no API is specified by ETSI NFV, valid values are defined in table 5.6.4.3-1.\nNOTE:\tThe table is expected to be updated, by removing the corresponding listed entries, once the interfaces are specified as a RESTful NFV-MANO API. \n" + type: string + UsageStateEnumType: + description: "The enumeration UsageStateEnumType defines values representing the usage state of a managed entity. The UsageStateEnumType shall comply with the provisions:\n - IN_USE\tThe managed entity is currently being used.\n - NOT_IN_USE\tThe managed entity is currently not being used.\n" + type: string + enum: + - IN_USE + - NOT_IN_USE + ChangeOperationalStateEnumType: + description: "The enumeration ChangeOperationalStateEnumType defines permitted values for the change state operation. The ChangeOperationalStateEnumType shall comply with the provisions:\n - START\tTo start the managed entity.\n - STOP\tTo stop the managed entity.\n - RESTART\tTo stop and start again the managed entity.\n" + type: string + enum: + - START + - STOP + - RESTART + ChangeAdministrativeStateEnumType: + description: "The enumeration ChangeAdministrativeStateEnumType defines permitted values for the change of administrative state operation. The ChangeAdministrativeStateEnumType shall comply with the provisions:\n - LOCK\tTo lock the managed entity.\n - UNLOCK\tTo unlock the managed entity.\n" + type: string + enum: + - LOCK + - UNLOCK + InterfaceOperationalStateEnumType: + description: "The enumeration InterfaceOperationalStateEnumType defines values representing the operational state of an NFV-MANO service interface type of managed entity. The InterfaceOperationalStateEnumType shall comply with the provisions :\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + StopEnumType: + description: "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions:\n - GRACEFUL\tTo stop the managed entity immediately after accepting the request.\n - FORCEFUL\tTo stop the managed entity attempting to gracefully discharge the entity from service.\n" + type: string + enum: + - GRACEFUL + - FORCEFUL + ManoEntityEnumType: + description: "The enumeration ManoEntityEnumType defines the permitted values to represent NFV-MANO functional entities. It shall comply with the provisions :\n - NFVO\tThe NFV-MANO functional entity is an NFVO.\n - VNFM\tThe NFV-MANO functional entity is a VNFM.\n - VIM\tThe NFV-MANO functional entity is a VIM.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + PeerEntityEnumType: + description: "The enumeration PeerEntityEnumType defines the permitted values to represent peer functional entities. it shall complains with the provisions : - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t The peer functional entity is a VIM. - WIM\t The peer functional entity is a WIM. - EM\t The peer functional entity is an EM. - OSS\t The peer functional entity is an OSS/BSS.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + - WIM + - EM + - OSS + parameters: + filter.ManoServiceInterface: + name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of ETSI GS + NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this parameter + as part of the URI query string. The API consumer may supply this + parameter. + + All attribute names that appear in the ManoServiceInterface and in data + types referenced from it shall be supported by the NFV-MANO functional + entity in the expression. + in: query + required: false + schema: + type: string + filter.CimSubscription: + name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of ETSI GS + NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this parameter + as part of the URI query string. The API consumer may supply this + parameter. + + All attribute names that appear in the CimSubscription and in data + types referenced from it shall be supported by the NFV-MANO functional + entity in the expression. + in: query + required: false + schema: + type: string + filter.ChangeStateOpOcc: + name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of ETSI GS + NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this parameter + as part of the URI query string. The API consumer may supply this + parameter. + + All attribute names that appear in the ChangeStateOpOcc and in data + types referenced from it shall be supported by the NFV-MANO functional + entity in the expression. + in: query + required: false + schema: + type: string + filter.PeerEntity: + name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of ETSI GS + NFV-SOL 013. + + The NFV-MANO functional entity shall support receiving this parameter + as part of the URI query string. The API consumer may supply this + parameter. + + All attribute names that appear in the PeerEntity and in data types + referenced from it shall be supported by the NFV-MANO functional entity + in the expression. + in: query + required: false + schema: + type: string + exclude_default.ManoServiceInterface: + name: exclude_default + description: > + Indicates to exclude the following complex attributes from the + response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The + NFV-MANO functional entity shall support this parameter. + + The following attributes shall be excluded from the + ManoServiceInterface structure in the response body if this parameter + is provided, or none of the parameters "all_fields," "fields", + "exclude_fields", "exclude_default" are provided: - none + in: query + required: false + schema: + type: string + exclude_default.CimSubscription: + name: exclude_default + description: > + Indicates to exclude the following complex attributes from the + response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The + NFV-MANO functional entity shall support this parameter. + + The following attributes shall be excluded from the CimSubscription + structure in the response body if this parameter is provided, or none + of the parameters "all_fields," "fields", "exclude_fields", + "exclude_default" are provided: - none + in: query + required: false + schema: + type: string + exclude_default.ChangeStateOpOcc: + name: exclude_default + description: > + Indicates to exclude the following complex attributes from the + response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The + NFV-MANO functional entity shall support this parameter. + + The following attributes shall be excluded from the ChangeStateOpOcc + structure in the response body if this parameter is provided, or none + of the parameters "all_fields," "fields", "exclude_fields", + "exclude_default" are provided: - none + in: query + required: false + schema: + type: string + exclude_default.PeerEntity: + name: exclude_default + description: > + Indicates to exclude the following complex attributes from the + response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The + NFV-MANO functional entity shall support this parameter. + + The following attributes shall be excluded from the PeerEntity + structure in the response body if this parameter is provided, or none + of the parameters "all_fields," "fields", "exclude_fields", + "exclude_default" are provided: - none + in: query + required: false + schema: + type: string + manoServiceInterfaceId: + name: manoServiceInterfaceId + in: path + description: Identifier of the MANO service interface. + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + subscriptionId: + name: subscriptionId + in: path + description: Identifier of the subscription + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + changeStateOpOccId: + name: changeStateOpOccId + in: path + description: Identifier of the change state operation occurrence + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + peerEntityId: + name: peerEntityId + in: path + description: Identifier of the peer entity + required: true + schema: + description: | + An identifier with the intention of being globally unique. + type: string + requestBodies: + ModifyManoEntityRequest: + description: > + Parameters for the NFV-MANO configuration and information modification, + as defined in clause 5.6.2.3. The Content-Type header shall be set to + "application/merge-patch+json" according to IETF RFC 7396. + content: + application/merge-patch+json: + schema: + description: > + This type represents attribute modifications for configuration + parameters of an NFV-MANO functional entity. + type: object + properties: + name: + description: | + New value of the "name" attribute in "ManoEntity". + type: string + description: + description: | + New value of the "description" attribute in "ManoEntity". + type: string + clockSyncs: + description: > + New content of certain entries in the "clockSyncs" attribute + array in the "ManoEntityConfigurableParams", as defined below + this table. + type: array + items: + description: > + This type represents parameters for connecting to an NTP + server. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + type: + description: | + Type of clock synchronization. + Permitted values: + - NTP: For Network Time Protocol (NTP) based clock synchronization. + - OTHER: For other types of clock synchronization. + type: string + enum: + - NTP + - OTHER + ntpServerInfo: + description: > + Information for the NTP based clock synchronization. + Shall be present if type = "NTP". + type: object + properties: + ipAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of + an IPV4 address, string that consists of four + decimal integers separated by dots, each integer + ranging from 0 to 255. In case of an IPV6 address, + string that consists of groups of zero to four + hexadecimal digits, separated by colons. + type: string + format: IP + hostname: + description: "Indicates the hostname of the NTP server. \nNOTE:\tEither ipAddress or hostname shall be set, but not both at the same time.\n" + type: string + otherClockSyncParams: + description: > + This type represents a list of key-value pairs. The + order of the pairs in the list is not significant. In + JSON, a set of keyvalue pairs is represented as an + object. It shall comply with the provisions defined in + clause 4 of IETF RFC 8259. In the following example, a + list of key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided to + illustrate that the values associated with different + keys can be of different type. + type: object + required: + - id + - type + clockSyncsDeleteIds: + description: > + List of identifiers entries to be deleted from the + "clockSyncs" attribute array in the + "ManoEntityConfigurableParams", as defined below this table. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + defaultLogCompileBySizeValue: + description: | + Unsigned integer + type: number + defaultLogCompileByTimerValue: + description: | + Unsigned integer + type: number + manoServiceModifications: + description: > + New content of certain entries in the "manoServices" attribute + array in the "ManoEntity", as defined below this table. + type: array + items: + type: object + properties: + id: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + name: + description: "New value for the \"name\" attribute in the \"ManoService\". \nNOTE:\tAt least one of these attributes shall be provided if requesting a modification of the NFV-MANO service identified by \"id\".\n" + type: string + description: + description: "New value for the \"description\" attribute in the \"ManoService\".\nNOTE:\tAt least one of these attributes shall be provided if requesting a modification of the NFV-MANO service identified by \"id\".\n" + type: string + required: + - id + required: true + ChangeManoEntityStateRequest: + description: | + Parameters for the change state operation, as defined in clause 5.6.2.8. + content: + application/json: + schema: + description: > + This type represents request parameters for changing the state of + a managed entity. + type: object + properties: + operationalStateChange: + description: "A change of operational state. Shall be present if the state change request refers to the operational state. NOTE:\tIn the present document version, a request shall only include an operational state change (attribute \"operationalStateChange\") or an administrative state change request (attribute \"administrativeStateChange\"), but not both.\n" + type: object + properties: + operationalStateAction: + description: "The enumeration ChangeOperationalStateEnumType defines permitted values for the change state operation. The ChangeOperationalStateEnumType shall comply with the provisions:\n - START\tTo start the managed entity.\n - STOP\tTo stop the managed entity.\n - RESTART\tTo stop and start again the managed entity.\n" + type: string + enum: + - START + - STOP + - RESTART + stopType: + description: "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions:\n - GRACEFUL\tTo stop the managed entity immediately after accepting the request.\n - FORCEFUL\tTo stop the managed entity attempting to gracefully discharge the entity from service.\n" + type: string + enum: + - GRACEFUL + - FORCEFUL + gracefulStopTimeout: + description: "The time internal (in seconds) to wait for the entity to be taken out of service during graceful stop. \nNOTE:\tThe \"stopType\" shall only be provided when the \"operationalStateAction\" attribute is equal to \"STOP\" or \"RESTART\". The \"gracefulStopTimeout\" shall be absent when the \"stopType\" attribute is equal to \"FORCEFUL\", and may be provided otherwise.\n" + type: integer + required: + - operationalStateAction + administrativeStateChange: + description: "A change of administrative state. Shall be present if the state change request refers to the administrative state. \nNOTE:\tIn the present document version, a request shall only include an operational state change (attribute \"operationalStateChange\") or an administrative state change request (attribute \"administrativeStateChange\"), but not both.\n" + type: object + properties: + administrativeStateAction: + description: "The enumeration ChangeAdministrativeStateEnumType defines permitted values for the change of administrative state operation. The ChangeAdministrativeStateEnumType shall comply with the provisions:\n - LOCK\tTo lock the managed entity.\n - UNLOCK\tTo unlock the managed entity.\n" + type: string + enum: + - LOCK + - UNLOCK + required: + - administrativeStateAction + required: true + ModifyManoEnityInterfaceRequest: + description: > + Parameters for the modification of configuration parameters of the + NFV-MANO service interface, as defined in clause 5.6.2.12. + + The Content-Type header shall be set to "application/merge-patch+json" + according to IETF RFC 7396. + content: + application/merge-patch+json: + schema: + description: > + This type represents attribute modifications for configuration + parameters of an NFV-MANO service interface of the producer + NFV-MANO functional entity. + type: object + properties: + name: + description: "New value of the \"name\" attribute in \"ManoServiceInterface\". \nNOTE:\tChanging the name does not change the corresponding standardized API name in the resource URI (refer to \"{apiName}\" defined in clause 4.1 of ETSI GS NFV-SOL 013).\n" + type: string + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + securityInfo: + description: > + This type represents security related information of an + NFV-MANO service interface produced by an NFV-MANO functional + entity. + type: object + properties: + authType: + description: > + Type of API request authorization to be used by the API + producer. + + The support of authorization methods for the API producer + is specified in clause 8.3.6 of ETSI GS NFV-SOL 013. + + Permitted values: + - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + webFingerHost: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - webFingerHost + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + authServerId: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - authServerId + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API producer when performing the SSL + or TLS negotiation with the authorization server. + Valid values of cipher suites are defined in IETF RFC + 8447. + type: array + items: + type: string + minItems: 1 + required: + - providedConfiguration + - tlsCipherSuites + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS + tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: >- + List of cipher suites that shall be declared as + supported by the API producer when performing the SSL + or TLS negotiation with the API client. Valid values + of cipher suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - tlsTunnelCipherSuites + required: + - authType + - oauthServerInfo + metadata: + description: > + This type represents a list of key-value pairs. The order of + the pairs in the list is not significant. In JSON, a set of + keyvalue pairs is represented as an object. It shall comply + with the provisions defined in clause 4 of IETF RFC 8259. In + the following example, a list of key-value pairs with four + keys ("aString", "aNumber", "anArray" and "anObject") is + provided to illustrate that the values associated with + different keys can be of different type. + type: object + required: true + ChangeManoEntityInterfaceStateRequest: + description: > + Parameters for the change state operation, as defined in clause + 5.6.2.8. + content: + application/json: + schema: + description: > + This type represents request parameters for changing the state of + a managed entity. + type: object + properties: + operationalStateChange: + description: "A change of operational state. Shall be present if the state change request refers to the operational state. NOTE:\tIn the present document version, a request shall only include an operational state change (attribute \"operationalStateChange\") or an administrative state change request (attribute \"administrativeStateChange\"), but not both.\n" + type: object + properties: + operationalStateAction: + description: "The enumeration ChangeOperationalStateEnumType defines permitted values for the change state operation. The ChangeOperationalStateEnumType shall comply with the provisions:\n - START\tTo start the managed entity.\n - STOP\tTo stop the managed entity.\n - RESTART\tTo stop and start again the managed entity.\n" + type: string + enum: + - START + - STOP + - RESTART + stopType: + description: "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions:\n - GRACEFUL\tTo stop the managed entity immediately after accepting the request.\n - FORCEFUL\tTo stop the managed entity attempting to gracefully discharge the entity from service.\n" + type: string + enum: + - GRACEFUL + - FORCEFUL + gracefulStopTimeout: + description: "The time internal (in seconds) to wait for the entity to be taken out of service during graceful stop. \nNOTE:\tThe \"stopType\" shall only be provided when the \"operationalStateAction\" attribute is equal to \"STOP\" or \"RESTART\". The \"gracefulStopTimeout\" shall be absent when the \"stopType\" attribute is equal to \"FORCEFUL\", and may be provided otherwise.\n" + type: integer + required: + - operationalStateAction + administrativeStateChange: + description: "A change of administrative state. Shall be present if the state change request refers to the administrative state. \nNOTE:\tIn the present document version, a request shall only include an operational state change (attribute \"operationalStateChange\") or an administrative state change request (attribute \"administrativeStateChange\"), but not both.\n" + type: object + properties: + administrativeStateAction: + description: "The enumeration ChangeAdministrativeStateEnumType defines permitted values for the change of administrative state operation. The ChangeAdministrativeStateEnumType shall comply with the provisions:\n - LOCK\tTo lock the managed entity.\n - UNLOCK\tTo unlock the managed entity.\n" + type: string + enum: + - LOCK + - UNLOCK + required: + - administrativeStateAction + required: true + CimSubscriptionRequest: + description: > + Details of the subscription to be created, as defined in clause + 5.6.2.5-1. + content: + application/json: + schema: + description: > + This type represents a subscription request related to + notifications about NFV-MANO configuration and information + management changes. + type: object + properties: + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO configuration and information + management. + type: object + properties: + manoEntitySubscriptionFilter: + description: > + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + + The attributes "manoServiceIds" and "manoServiceNames" + are alternatives to reference to NFV-MANO services in + a filter. They should not be used together in the + same filter instance, but one alternative should be + chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + notificationTypes: + description: "Match particular notification types. \nPermitted values:\n - InformationChangedNotification\n - ChangeStateNotification\n\nNOTE:\tThe 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: + - InformationChangedNotification + - ChangeStateNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + authentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization which + the API consumer is willing to accept when receiving a + notification. Permitted values: * BASIC: In every HTTP + request to the notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification + endpoint is sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + description: > + Parameters for authentication/authorization using BASIC. + Shall be present if authType is "BASIC" and the contained + information has not been provisioned out of band. Shall be + absent otherwise. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out of + band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. + Shall be present if it has not been provisioned out of + band. + type: string + paramsOauth2ClientCredentials: + description: > + Parameters for authentication/authorization using + OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is + "OAUTH2_CLIENT_CREDENTIALS" and the contained information + has not been provisioned out of band. Shall be absent + otherwise. + type: object + properties: + clientId: + description: > + Client identifier to be used in the access token + request of the OAuth 2.0 client credentials grant + type. Shall be present if it has not been provisioned + out of band. The clientId and clientPassword passed in + a subscription shall not be the same as the clientId + and clientPassword that are used to obtain + authorization for API requests. Client credentials may + differ between subscriptions. The value of + clientPassword should be generated by a random + process. + type: string + clientPassword: + description: > + Client password to be used in the access token request + of the OAuth 2.0 client credentials grant type. Shall + be present if it has not been provisioned out of band. + The clientId and clientPassword passed in a + subscription shall not be the same as the clientId and + clientPassword that are used to obtain authorization + for API requests. Client credentials may differ + between subscriptions. The value of clientPassword + should be generated by a random process. + type: string + tokenEndpoint: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - callbackUri + required: true + CreatePeerEntityRequest: + description: | + The peer entity creation parameters, as defined in clause 5.6.2.14. + content: + application/json: + schema: + description: > + This type represents request parameters for the creation of a new + peer entity resource. + type: object + properties: + peerEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the peer functional entity. + type: string + type: + description: "The enumeration PeerEntityEnumType defines the permitted values to represent peer functional entities. it shall complains with the provisions : - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t The peer functional entity is a VIM. - WIM\t The peer functional entity is a WIM. - EM\t The peer functional entity is an EM. - OSS\t The peer functional entity is an OSS/BSS.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + - WIM + - EM + - OSS + description: + description: | + Human-readable description of the peer functional entity. + type: string + consumedManoInterfaces: + description: > + Information of the interface consumed by the NFV-MANO + functional entity from the peer functional entity. + type: array + items: + description: > + This type represents an interface consumed by the producer + NFV MANO functional entity from another peer functional + entity. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by the + NFV-MANO functional entity. Valid values are defined in + clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It provides + the information relevant about the protocol, host and + port, and path where the interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The {apiName} of each interface is + defined in the standard the interface is compliant + to (see also clause 4.1 of ETSI GS NFV-SOL 013). + May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The major version is defined in the + standard the interface is compliant to (see also + clause 4.1 of ETSI GS NFV-SOL 013). May be present + otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information for + accessing an NFV-MANO service interface produced by an + NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by the + API consumer accessing the API. + + The support of authorization methods for the API + consumer is specified in clause 8.3.6 of ETSI GS + NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, as + defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: Using + access token, as defined by the OAuth 2.0 + specification in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is + hosted. When used, the request to the + WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined + in ETSI GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing + the SSL or TLS negotiation with the + authorization server. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use of + TLS tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing + the SSL or TLS negotiation with the API + producer. Valid values of cipher suites are + defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + peerEntityState: + description: | + Current values of the state of the peer functional entity. + type: object + properties: + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + required: + - operationalState + - administrativeState + required: + - peerEntityId + - name + - type + required: true + ModifyPeerEntityRequest: + description: > + Parameters for the modification of configuration parameters of the peer + functional entity, as defined in clause 5.6.2.16 + + The Content-Type header shall be set to "application/merge-patch+json" + according to IETF RFC 7396. + content: + application/merge-patch+json: + schema: + description: > + This type represents attribute modifications for configuration + parameters of a peer entity. + type: object + properties: + name: + description: | + New value of the "name" attribute in "PeerEntity". + type: string + description: + description: > + New value of the "description" attribute in "PeerEntity", or + "null" to remove the attribute. + type: string + consumedManoInterfaces: + description: "New content of certain entries in the \"consumedManoInterfaces\" attribute array in the \"PeerEntity\", as defined below this table. \nNOTE:\tDue to the security sensitive information contained within the attribute (refer to \"securityInfo\" within the \"ConsumedManoInterfaceInfo\"), based on access control policies, the API consumer might have read only, write only, read/write, or no access at all to the attribute’s value. In case the API consumer is not allowed to modify the value of the security sensitive attribute, and the modification request includes new attribute values, the whole modification request shall be rejected, and proper error information returned.\n" + type: array + items: + description: > + This type represents an interface consumed by the producer + NFV MANO functional entity from another peer functional + entity. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by the + NFV-MANO functional entity. Valid values are defined in + clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It provides + the information relevant about the protocol, host and + port, and path where the interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The {apiName} of each interface is + defined in the standard the interface is compliant + to (see also clause 4.1 of ETSI GS NFV-SOL 013). + May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The major version is defined in the + standard the interface is compliant to (see also + clause 4.1 of ETSI GS NFV-SOL 013). May be present + otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information for + accessing an NFV-MANO service interface produced by an + NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by the + API consumer accessing the API. + + The support of authorization methods for the API + consumer is specified in clause 8.3.6 of ETSI GS + NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, as + defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: Using + access token, as defined by the OAuth 2.0 + specification in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is + hosted. When used, the request to the + WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined + in ETSI GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing + the SSL or TLS negotiation with the + authorization server. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use of + TLS tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing + the SSL or TLS negotiation with the API + producer. Valid values of cipher suites are + defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + consumedManoInterfaceDeleteIds: + description: > + List of identifiers entries to be deleted from the + "consumedManoInterfaces" attribute array in the " PeerEntity + ", as defined below this table. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + required: true + responses: + mano_entity.get.200: + description: > + 200 OK + + Shall be returned when configuration and information about the NFV-MANO + functional entity has been read successfully. The response body shall + contain a representation of the NFV-MANO functional entity, as defined + in clause 5.6.2.2. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: | + This type represents an NFV-MANO functional entity. + type: object + required: + - id + - type + - name + - description + - provider + - softwareVersion + - manoConfigurableParams + - manoApplicationState + - _links + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + type: + description: "The enumeration ManoEntityEnumType defines the permitted values to represent NFV-MANO functional entities. It shall comply with the provisions :\n - NFVO\tThe NFV-MANO functional entity is an NFVO.\n - VNFM\tThe NFV-MANO functional entity is a VNFM.\n - VIM\tThe NFV-MANO functional entity is a VIM.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + name: + description: | + Human-readable name of the NFV-MANO functional entity. + This attribute can be modified with the PATCH method. + type: string + description: + description: | + Human-readable description of the NFV-MANO functional entity. + This attribute can be modified with the PATCH method. + type: string + provider: + description: > + Information about the provider of the NFV-MANO functional + entity. It typically includes the name of the provider. + type: string + softwareVersion: + description: > + The version of the software of the NFV-MANO functional entity. + $ref: + "../components/SOL009_schemas.yaml#/components/schemas/Version" + manoEntityComponents: + description: "The deployed NFV-MANO functional entity components which realize the NFV-MANO functional entity. \nNOTE:\tIt is optional for the API producer to support the \"manoEntityComponents\" attribute.\n" + type: array + items: + description: > + This type represents information of a deployed component + realizing part of an NFV-MANO functional entity. It is + optional for the API producer to support this type. + type: object + properties: + id: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + manoServiceIds: + description: > + References to the NFV-MANO services that depend on the + NFV-MANO functional entity component. The identifier of + the ManoService is referred. A service may depend on + multiple components. Multiple services may depend on the + same component. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + required: + - id + manoServices: + description: > + Information about the NFV-MANO services provided by the + NFV-MANO functional entity. + type: array + items: + description: > + This type represents information about an NFV-MANO service + provided by the NFV-MANO functional entity. + type: object + properties: + id: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + name: + description: | + Human-readable name of the NFV-MANO service. + This attribute can be modified with the PATCH method. + type: string + description: + description: | + Human-readable description of the NFV-MANO service. + This attribute can be modified with the PATCH method. + type: string + manoServiceInterfaceIds: + description: "Reference to the NFV-MANO interfaces associated to the NFV-MANO service. If cardinality is greater than one, the type of ManoServiceInterface (see clause 5.6.3.3) shall be the same. The identifier of the ManoServiceInterface is referred. \nNOTE:\tA cardinality greater than one supports having different interface versions or apiEndpoints to be used for accessing the same instance of a NFV-MANO service.\n" + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + minItems: 1 + _links: + description: | + Links to resources related to this resource. + type: object + properties: + manoServiceInterfaces: + description: > + Link to the "individual NFV-MANO service interface" + resources with information about the associated + interfaces to the NFV-MANO service. + type: array + items: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + minItems: 1 + required: + - manoServiceInterfaces + required: + - id + - name + - description + - manoServiceInterfaceIds + - _links + manoConfigurableParams: + description: > + # Warning: No definition found in the document + ManoConfigurableParams + manoApplicationState: + description: > + Information and current values of the NFV-MANO functional + entity’s application state. + type: object + required: + - operationalState + - administrativeState + - usageState + properties: + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + usageState: + description: "The enumeration UsageStateEnumType defines values representing the usage state of a managed entity. The UsageStateEnumType shall comply with the provisions:\n - IN_USE\tThe managed entity is currently being used.\n - NOT_IN_USE\tThe managed entity is currently not being used.\n" + type: string + enum: + - IN_USE + - NOT_IN_USE + nfvoSpecificInfo: + description: > + This type represents information attributes specific to an + NFVO entity, and that can be relevant to more than one + NFV-MANO service offered by an NFVO entity. + type: object + properties: + maxOnboardedNsdNum: + description: > + Maximum number of NSDs that can be on-boarded on the + NFVO. + + NOTE: If this attribute is not present, the value of this + parameter is undefined. + type: integer + maxOnboardedVnfPkgNum: + description: > + Maximum number of VNF Packages that can be on-boarded on + the NFVO. + + NOTE: If this attribute is not present, the value of this + parameter is undefined. + type: integer + supportedVnfdFormats: + description: | + Supported VNFD data formats. + type: object + properties: + vnfdFormat: + description: | + Name of the VNFD format. + Permitted values: + - TOSCA: The VNFD follows TOSCA definition, according to ETSI + GS NFV-SOL 001 standard. + - YANG: The VNFD follows YANG definition according to ETSI + GS NFV-SOL 006 standard. + type: string + enum: + - TOSCA + - YANG + standardVersion: + description: | + A version. + type: string + required: + - vnfdFormat + - standardVersion + supportedNsdFormats: + description: | + Supported NSD data formats. + type: object + properties: + nsdFormat: + description: | + Name of the NSD format. + Permitted values: + - TOSCA: The VNFD follows TOSCA definition, according to ETSI + GS NFV-SOL 001 standard. + - YANG: The VNFD follows YANG definition according to ETSI + GS NFV-SOL 006 standard. + type: string + enum: + - TOSCA + - YANG + standardVersion: + description: | + A version. + type: string + required: + - nsdFormat + - standardVersion + required: + - supportedVnfdFormats + - supportedNsdFormats + vnfmSpecificInfo: + description: > + This type represents information attributes specific to a VNFM + entity, and that can be relevant to more than one NFV-MANO + service offered by a VNFM entity. + type: object + properties: + resoruceMgmtModeSupport: + description: | + The supported resource management modes of the VNFM. + Permitted values: + - DIRECT: The VNFM supports direct mode only. + - INDIRECT: The VNFM supports indirect mode only. + - BOTH: The VNFM supports both direct and indirect mode. + type: string + enum: + - DIRECT + - INDIRECT + - BOTH + managedVnfInstanceInfos: + description: > + The kinds of VNF instances that can be managed, e.g. to + determine the compatibility of a VNF with certain VNFM + according to the vnfmInfo attribute in the VNFD (see + table 7.1.2.2-1 in ETSI GS NFV-IFA 011). + type: array + items: + type: string + minItems: 1 + supportedVnfdFormats: + description: | + Supported VNFD data formats. + type: array + items: + type: object + properties: + vnfdFormat: + description: | + Name of the VNFD format. + Permitted values: + - TOSCA: The VNFD follows TOSCA definition, according to ETSI + GS NFV-SOL 001 standard. + - YANG: The VNFD follows YANG definition according to ETSI + GS NFV-SOL 006 standard. + type: string + enum: + - TOSCA + - YANG + standardVersion: + description: | + A version. + type: string + required: + - vnfdFormat + - standardVersion + minItems: 1 + required: + - resoruceMgmtModeSupport + - managedVnfInstanceInfos + - supportedVnfdFormats + vimSpecificInfo: + description: > + This type represents information attributes specific to a VIM + entity, and that can be relevant to more than one NFV-MANO + service offered by a VIM entity. + type: object + _links: + description: | + Links to resources related to this resource. + type: object + required: + - self + - manoServiceInterfaces + - peerEntities + - changeState + - changeStateOpOccs + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + manoServiceInterfaces: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + peerEntities: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + changeState: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + changeStateOpOccs: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + mano_entity.patch.200: + description: > + 200 OK + + Shall be returned when the modification of configuration on the + NFV-MANO functional entity has been accepted and completed. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type represents attribute modifications that were performed + on the "NFV-MANO entity" resource of the producer NFV-MANO + functional entity. The attributes that can be included consist of + those requested to be modified explicitly in the + "ManoConfigModificationRequest" data structure. + type: object + properties: + name: + description: > + If present, this attribute signals modifications of the + "name" attribute in "ManoEntity", as defined in clause + 5.6.2.3 + type: string + description: + description: > + If present, this attribute signals modifications of the + "description" attribute in "ManoEntity", as defined in clause + 5.6.2.3. + type: string + clockSyncs: + description: > + If present, this attribute signals modifications of the + "clockSyncs" attribute in "ManoEntityConfigurableParams", as + defined in clause 5.6.2.3. + type: array + items: + description: > + This type represents parameters for connecting to an NTP + server. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + type: + description: | + Type of clock synchronization. + Permitted values: + - NTP: For Network Time Protocol (NTP) based clock synchronization. + - OTHER: For other types of clock synchronization. + type: string + enum: + - NTP + - OTHER + ntpServerInfo: + description: > + Information for the NTP based clock synchronization. + Shall be present if type = "NTP". + type: object + properties: + ipAddress: + description: > + An IPV4 or IPV6 address. Representation: In case of + an IPV4 address, string that consists of four + decimal integers separated by dots, each integer + ranging from 0 to 255. In case of an IPV6 address, + string that consists of groups of zero to four + hexadecimal digits, separated by colons. + type: string + format: IP + hostname: + description: "Indicates the hostname of the NTP server. \nNOTE:\tEither ipAddress or hostname shall be set, but not both at the same time.\n" + type: string + otherClockSyncParams: + description: > + This type represents a list of key-value pairs. The + order of the pairs in the list is not significant. In + JSON, a set of keyvalue pairs is represented as an + object. It shall comply with the provisions defined in + clause 4 of IETF RFC 8259. In the following example, a + list of key-value pairs with four keys ("aString", + "aNumber", "anArray" and "anObject") is provided to + illustrate that the values associated with different + keys can be of different type. + type: object + required: + - id + - type + clockSyncsDeleteIds: + description: > + If present, this attribute signals modifications of certain + entries in "clockSyncs" attribute in + "ManoEntityConfigurableParams", as defined in clause 5.6.2.3. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + defaultLogCompileBySizeValue: + description: | + Unsigned integer + type: number + defaultLogCompileByTimerValue: + description: | + Unsigned integer + type: number + manoServiceModifications: + description: > + If present, this attribute signals modifications of the + "manoServices" attribute array in the "ManoEntity", as + defined in clause 5.6.2.3. + type: array + items: + type: object + properties: + id: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + name: + description: > + If present, this attribute signals modification of the + "name" attribute in the "ManoService". + type: string + description: + description: > + If present, this attribute signals modification of the + "description" attribute in the "ManoService". + type: string + required: + - id + mano_entity.patch.409: + description: > + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be + executed currently, due to a conflict with the state of the "NFV-MANO + entity" resource. + + Typically, this is due to the fact that another configuration and + information modification is ongoing. + + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + mano_entity.patch.412: + description: > + 412 PRECONDITION FAILED + + Shall be returned upon the following error: A precondition given in an + HTTP request header is not fulfilled. + + Typically, this is due to an ETag mismatch, indicating that the + resource was modified by another entity. + + The response body should contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + mano_entity-change_state.post.202: + description: > + 202 ACCEPTED + + Shall be returned when the request has been accepted for processing. + + The response body shall be empty. + + The HTTP response shall include a "Location" HTTP header that contains + the URI of the newly-created "Individual change state operation + occurrence" resource corresponding to the operation. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The resource URI of the created "Individual change state operation + occurence" resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + mano_entity-change_state.post.409: + description: > + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be + executed currently, due to a conflict with the state of the resource. + + Typically, this is due to the fact that the resource is in an + incompatible state, or that another change state operation is ongoing. + + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute shall convey more information about the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + mano_entity-mano_interfaces.get.200: + description: > + 200 OK + + Shall be returned when information about zero or more NFV-MANO service + interfaces has been queried successfully. + + The response body shall contain in an array the representations of zero + or more NFV-MANO service interfaces, as defined in clause 5.6.2.11. + + If the “filter" URI parameter or one of the "all_fields", "fields" (if + supported), "exclude_fields" (if supported) or "exclude_default" URI + parameters was supplied in the request, the data in the response body + shall have been transformed according to the rules specified in clauses + 5.2.2 and 5.3.2 of ETSI GS NFV-SOL 013, respectively. + + If the NFV-MANO functional entity supports alternative N°2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + inclusion of the Link HTTP header in this response shall follow the + provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Link: + description: > + Reference to other resources. Link HTTP header in this response + shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL + 013. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: > + This type represents an individual NFV-MANO service interface + produced by an NFV-MANO functional entity. + type: object + properties: + id: + description: > + An identifier that is unique for the respective type within + a NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + name: + description: > + Human-readable name of the NFV-MANO functional entity + interface. + + This attribute can be modified with the PATCH method. + type: string + type: + description: > + Type of the NFV-MANO service interface produced by the + NFV-MANO functional entity. Valid values are defined in + clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + providerSpecificApiVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: | + Exposed API endpoint of the interface. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The {apiName} of each interface is + defined in the standard the interface is compliant to + (see also clause 4.1 of ETSI GS NFV-SOL 013). May be + present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. Shall be + present for ETSI NFV specified RESTful NFV-MANO APIs. + The major version is defined in the standard the + interface is compliant to (see also clause 4.1 of ETSI + GS NFV-SOL 013). May be present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + maxConcurrentIntOpNumber: + description: "Maximum number of concurrent operation requests supported on this interface. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n" + type: integer + supportedOperations: + description: | + Information about supported operations of this interface. + type: array + items: + type: object + properties: + operationName: + description: | + Name of the operation supported on the interface. + type: string + maxConcurrentOpNumber: + description: "Maximum number of concurrent requests supported by the interface operation. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n" + type: integer + required: + - operationName + minItems: 1 + interfaceState: + description: | + State of the NFV-MANO service interface. + properties: + operationalState: + description: "The enumeration InterfaceOperationalStateEnumType defines values representing the operational state of an NFV-MANO service interface type of managed entity. The InterfaceOperationalStateEnumType shall comply with the provisions :\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + usageState: + description: "The enumeration UsageStateEnumType defines values representing the usage state of a managed entity. The UsageStateEnumType shall comply with the provisions:\n - IN_USE\tThe managed entity is currently being used.\n - NOT_IN_USE\tThe managed entity is currently not being used.\n" + type: string + enum: + - IN_USE + - NOT_IN_USE + required: + - operationalState + - administrativeState + - usageState + securityInfo: + description: > + This type represents security related information of an + NFV-MANO service interface produced by an NFV-MANO + functional entity. + type: object + properties: + authType: + description: > + Type of API request authorization to be used by the API + producer. + + The support of authorization methods for the API + producer is specified in clause 8.3.6 of ETSI GS + NFV-SOL 013. + + Permitted values: + - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + webFingerHost: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - webFingerHost + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + authServerId: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - authServerId + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API producer when performing the + SSL or TLS negotiation with the authorization + server. Valid values of cipher suites are defined + in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - providedConfiguration + - tlsCipherSuites + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS + tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: >- + List of cipher suites that shall be declared as + supported by the API producer when performing the + SSL or TLS negotiation with the API client. Valid + values of cipher suites are defined in IETF RFC + 8447. + type: array + items: + type: string + minItems: 1 + required: + - tlsTunnelCipherSuites + required: + - authType + - oauthServerInfo + metadata: + description: > + This type represents a list of key-value pairs. The order of + the pairs in the list is not significant. In JSON, a set of + keyvalue pairs is represented as an object. It shall comply + with the provisions defined in clause 4 of IETF RFC 8259. In + the following example, a list of key-value pairs with four + keys ("aString", "aNumber", "anArray" and "anObject") is + provided to illustrate that the values associated with + different keys can be of different type. + type: object + required: + - id + - name + - type + - standardVersion + - providerSpecificApiVersion + - apiVersion + - apiEndpoint + - supportedOperations + - interfaceState + mano_entity-mano_interfaces.get.400: + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Invalid attribute selector. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + mano_entity-mano_interface.get.200: + description: > + 200 OK + + Shall be returned when information about an individual NFV-MANO service + interface has been read successfully. + + The response body shall contain a representation of the NFV-MANO + service interface, as defined in clause 5.6.2.11. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type represents an individual NFV-MANO service interface + produced by an NFV-MANO functional entity. + type: object + properties: + id: + description: > + An identifier that is unique for the respective type within a + NFV-MANO functional entity, but that need not be globally + unique. Representation: string of variable length.. + type: string + name: + description: > + Human-readable name of the NFV-MANO functional entity + interface. + + This attribute can be modified with the PATCH method. + type: string + type: + description: > + Type of the NFV-MANO service interface produced by the + NFV-MANO functional entity. Valid values are defined in + clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + providerSpecificApiVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: | + Exposed API endpoint of the interface. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. Shall + be present for ETSI NFV specified RESTful NFV-MANO APIs. + The {apiName} of each interface is defined in the + standard the interface is compliant to (see also clause + 4.1 of ETSI GS NFV-SOL 013). May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. Shall be + present for ETSI NFV specified RESTful NFV-MANO APIs. The + major version is defined in the standard the interface is + compliant to (see also clause 4.1 of ETSI GS NFV-SOL + 013). May be present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + maxConcurrentIntOpNumber: + description: "Maximum number of concurrent operation requests supported on this interface. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n" + type: integer + supportedOperations: + description: | + Information about supported operations of this interface. + type: array + items: + type: object + properties: + operationName: + description: | + Name of the operation supported on the interface. + type: string + maxConcurrentOpNumber: + description: "Maximum number of concurrent requests supported by the interface operation. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n" + type: integer + required: + - operationName + minItems: 1 + interfaceState: + description: | + State of the NFV-MANO service interface. + properties: + operationalState: + description: "The enumeration InterfaceOperationalStateEnumType defines values representing the operational state of an NFV-MANO service interface type of managed entity. The InterfaceOperationalStateEnumType shall comply with the provisions :\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + usageState: + description: "The enumeration UsageStateEnumType defines values representing the usage state of a managed entity. The UsageStateEnumType shall comply with the provisions:\n - IN_USE\tThe managed entity is currently being used.\n - NOT_IN_USE\tThe managed entity is currently not being used.\n" + type: string + enum: + - IN_USE + - NOT_IN_USE + required: + - operationalState + - administrativeState + - usageState + securityInfo: + description: > + This type represents security related information of an + NFV-MANO service interface produced by an NFV-MANO functional + entity. + type: object + properties: + authType: + description: > + Type of API request authorization to be used by the API + producer. + + The support of authorization methods for the API producer + is specified in clause 8.3.6 of ETSI GS NFV-SOL 013. + + Permitted values: + - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + webFingerHost: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - webFingerHost + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + authServerId: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - authServerId + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API producer when performing the SSL + or TLS negotiation with the authorization server. + Valid values of cipher suites are defined in IETF RFC + 8447. + type: array + items: + type: string + minItems: 1 + required: + - providedConfiguration + - tlsCipherSuites + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS + tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: >- + List of cipher suites that shall be declared as + supported by the API producer when performing the SSL + or TLS negotiation with the API client. Valid values + of cipher suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - tlsTunnelCipherSuites + required: + - authType + - oauthServerInfo + metadata: + description: > + This type represents a list of key-value pairs. The order of + the pairs in the list is not significant. In JSON, a set of + keyvalue pairs is represented as an object. It shall comply + with the provisions defined in clause 4 of IETF RFC 8259. In + the following example, a list of key-value pairs with four + keys ("aString", "aNumber", "anArray" and "anObject") is + provided to illustrate that the values associated with + different keys can be of different type. + type: object + required: + - id + - name + - type + - standardVersion + - providerSpecificApiVersion + - apiVersion + - apiEndpoint + - supportedOperations + - interfaceState + mano_entity-mano_interface.patch.200: + description: > + 200 OK + + Shall be returned when the request has been accepted and completed. + + The response body shall contain a representation of the attribute + modifications for the "Individual NFV-MANO service interface" resource, + as defined in clause 5.6.2.13. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type represents attribute modifications that were performed + on an Individual NFV-MANO service interface" resource. The + attributes that can be included consist of those requested to be + modified explicitly in the + "ManoServiceInterfaceModificationRequest" data structure. If + applicable, additional attributes of the "ManoServiceInterface" + data structure that were modified implicitly shall also be + provided. + type: object + properties: + name: + description: > + If present, this attribute signals modifications of the "name" + attribute in "ManoServiceInterface", as defined in clause + 5.6.2.11. + type: string + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + securityInfo: + description: > + This type represents security related information of an + NFV-MANO service interface produced by an NFV-MANO functional + entity. + type: object + properties: + authType: + description: > + Type of API request authorization to be used by the API + producer. + + The support of authorization methods for the API producer + is specified in clause 8.3.6 of ETSI GS NFV-SOL 013. + + Permitted values: + - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. + - OAUTH2: Using access token, as defined by the OAuth 2.0 specification + in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + webFingerHost: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - webFingerHost + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + properties: + authServerId: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - authServerId + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API producer when performing the SSL + or TLS negotiation with the authorization server. + Valid values of cipher suites are defined in IETF RFC + 8447. + type: array + items: + type: string + minItems: 1 + required: + - providedConfiguration + - tlsCipherSuites + tlsTunnelInfo: + description: > + Information and configuration related to the use of TLS + tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: >- + List of cipher suites that shall be declared as + supported by the API producer when performing the SSL + or TLS negotiation with the API client. Valid values + of cipher suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - tlsTunnelCipherSuites + required: + - authType + - oauthServerInfo + metadata: + description: > + This type represents a list of key-value pairs. The order of + the pairs in the list is not significant. In JSON, a set of + keyvalue pairs is represented as an object. It shall comply + with the provisions defined in clause 4 of IETF RFC 8259. In + the following example, a list of key-value pairs with four + keys ("aString", "aNumber", "anArray" and "anObject") is + provided to illustrate that the values associated with + different keys can be of different type. + type: object + mano_entity-mano_interface.patch.409: + description: > + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be + executed currently, due to a conflict with the state of the "Individual + NFV-MANO service interface" resource. + + Typically, this is due to the fact that another operation is ongoing. + + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + mano_entity-mano_interface.patch.412: + description: > + 412 PRECONDITION FAILED + + Shall be returned upon the following error: A precondition given in an + HTTP request header is not fulfilled. + + Typically, this is due to an ETag mismatch, indicating that the + resource was modified by another entity. + + The response body should contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + mano_entity-mano_interface-change_state.post.202: + description: > + 202 ACCEPTED + + Shall be returned when the request has been accepted for processing. + + The response body shall be empty. + + The HTTP response shall include a “Location†HTTP header that contains + the URI of the newly-created "Individual change state operation + occurrence" resource corresponding to the operation. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: > + The resource URI of the created "Individual change state operation + occurence" resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + mano_entity-mano_interface-change_state.post.409: + description: > + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be + executed currently, due to a conflict with the state of the resource. + + Typically, this is due to the fact that the resource is in an + incompatible state, or that another change state operation is ongoing. + + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute shall convey more information about the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + subscriptions.post.201: + description: > + 201 CREATED + + Shall be returned when the subscription has been created successfully. + + The response body shall contain a representation of the created + "Individual subscription" resource. + + The HTTP response shall include a "Location" HTTP header that points to + the created "Individual subscription" resource. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: | + The resource URI of the created "Individual subscription" resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + content: + application/json: + schema: + description: > + This type represents a subscription related to notifications + about NFV-MANO configuration and information management changes + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO configuration and information + management. + type: object + properties: + manoEntitySubscriptionFilter: + description: > + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + + The attributes "manoServiceIds" and "manoServiceNames" + are alternatives to reference to NFV-MANO services in + a filter. They should not be used together in the + same filter instance, but one alternative should be + chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + notificationTypes: + description: "Match particular notification types. \nPermitted values:\n - InformationChangedNotification\n - ChangeStateNotification\n\nNOTE:\tThe 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: + - InformationChangedNotification + - ChangeStateNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links to resources related to this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - callbackUri + - _links + subscriptions.post.303: + description: > + 303 SEE OTHER + + SShall be returned when a subscription with the same callbackURI and + the same filter already exists and the policy of NFV-MANO functional + entity is to not create redundant subscriptions. + + The HTTP response shall include a "Location" HTTP header that contains + the resource URI of the existing "Individual subscription" resource. + + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: | + The resource URI of the created "Individual subscription" resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + subscriptions.get.200: + description: > + 200 OK + + Shall be returned when the list of subscriptions has been queried + successfully. + + The response body shall contain in an array the representations of all + active subscriptions of the functional block that invokes the method, + i.e., zero or more representations of NFV-MANO configuration and + information management subscriptions as defined in clause 5.6.2.6. + + If the "filter" URI parameter was supplied in the request, the data in + the response body shall have been transformed according to the rules + specified in clause 5.2.2 of ETSI GS NFV-SOL 013. + + If the NFV-MANO functional entity supports alternative N°2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + inclusion of the Link HTTP header in this response shall follow the + provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Link: + description: > + Reference to other resources. Link HTTP header in this response + shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL + 013. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: > + This type represents a subscription related to notifications + about NFV-MANO configuration and information management changes + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO configuration and information + management. + type: object + properties: + manoEntitySubscriptionFilter: + description: > + This type represents subscription filter criteria to + match NFV-MANO functional entities and their associated + managed objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + + The attributes "manoServiceIds" and + "manoServiceNames" are alternatives to reference to + NFV-MANO services in a filter. They should not be + used together in the same filter instance, but one + alternative should be chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance identifier + listed in this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective + type within a NFV-MANO functional entity, but that + need not be globally unique. Representation: + string of variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity + produced interfaces with an instance Name listed in + this attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance identifier + listed in this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity + consumed interfaces with an instance Name listed in + this attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + notificationTypes: + description: "Match particular notification types. \nPermitted values:\n - InformationChangedNotification\n - ChangeStateNotification\n\nNOTE:\tThe 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: + - InformationChangedNotification + - ChangeStateNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links to resources related to this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - callbackUri + - _links + subscriptions.get.400: + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + subscription.get.200: + description: > + 200 OK + + Shall be returned when information about an individual subscription has + been read successfully. + + The response body shall contain a representation of the "Individual + subscription" resource. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: > + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type represents a subscription related to notifications + about NFV-MANO configuration and information management changes + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + filter: + description: > + This type represents a subscription filter related to + notifications about NFV-MANO configuration and information + management. + type: object + properties: + manoEntitySubscriptionFilter: + description: > + This type represents subscription filter criteria to match + NFV-MANO functional entities and their associated managed + objects. + type: object + properties: + manoEntityId: + description: > + An identifier with the intention of being globally + unique. + type: string + manoServiceIds: + description: "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n" + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceNames: + description: > + If present, match NFV-MANO services with an NFV-MANO + service name listed in this attribute. + + The attributes "manoServiceIds" and "manoServiceNames" + are alternatives to reference to NFV-MANO services in + a filter. They should not be used together in the + same filter instance, but one alternative should be + chosen. + type: array + items: + type: string + manoServiceInterfaceIds: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance identifier listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need + not be globally unique. Representation: string of + variable length.. + type: string + manoServiceInterfaceNames: + description: > + If present, match NFV-MANO functional entity produced + interfaces with an instance Name listed in this + attribute. + + The attributes "manoServiceInterfaceIds" and + "manoServiceInterfaceNames" are alternatives to + reference to NFV-MANO functional entity produced + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + consumedManoInterfaceIds: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance identifier listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + description: > + An identifier with the intention of being globally + unique. + type: string + consumedManoInterfaceNames: + description: > + If present, match NFV-MANO functional entity consumed + interfaces with an instance Name listed in this + attribute. + + The attributes "consumedManoInterfaceIds" and + "consumedManoInterfaceNames" are alternatives to + reference to NFV-MANO functional entity consumed + interfaces in a filter. They should not be used both + in the same filter instance, but one alternative + should be chosen. + type: array + items: + type: string + notificationTypes: + description: "Match particular notification types. \nPermitted values:\n - InformationChangedNotification\n - ChangeStateNotification\n\nNOTE:\tThe 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: + - InformationChangedNotification + - ChangeStateNotification + callbackUri: + description: | + String formatted according to IETF RFC 3986. + type: string + _links: + description: | + Links to resources related to this resource. + type: object + properties: + self: + description: > + This type represents a link to a resource using an + absolute URI. + type: object + required: + - href + properties: + href: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - self + required: + - id + - callbackUri + - _links + subscription.delete.204: + description: > + 204 NO CONTENT + + Shall be returned when the "Individual subscription" resource has been + deleted successfully. + + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + change_state_ops.get.200: + description: > + 200 OK + + Shall be returned when status information for zero or more "change + state operation occurrences" has been queried successfully. + + The response body shall contain in an array the status information + about zero or more "Individual change state operation occurrences", as + defined in clause 5.6.2.9. + + If the “filter" URI parameter or one of the "all_fields", "fields" (if + supported), "exclude_fields" (if supported) or "exclude_default" URI + parameters was supplied in the request, the data in the response body + shall have been transformed according to the rules specified in clauses + 5.2.2 and 5.3.2 of ETSI GS NFV-SOL 013, respectively. + + If the NFV-MANO functional entity supports alternative N°2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + inclusion of the Link HTTP header in this response shall follow the + provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Link: + description: > + Reference to other resources. Link HTTP header in this response + shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL + 013. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: | + This type represents a Change state operation occurrence. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + operationState: + description: "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions :\n - PROCESSING\tThe change state operation is currently in execution.\n - COMPLETED\tThe change state operation has been completed successfully.\n - FAILED\tThe change state operation has failed.\n" + type: string + enum: + - PROCESSING + - COMPLETED + - FAILED + stateEnteredTime: + description: > + Date-time stamp. Representation: String formatted according + to IETF RFC 3339. + type: string + format: date-time + startTime: + description: > + Date-time stamp. Representation: String formatted according + to IETF RFC 3339. + type: string + format: date-time + managedObjectRef: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: > + An identifier with the intention of being globally + unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not + be globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + changeOperationalStateRequest: + description: "The enumeration ChangeOperationalStateEnumType defines permitted values for the change state operation. The ChangeOperationalStateEnumType shall comply with the provisions:\n - START\tTo start the managed entity.\n - STOP\tTo stop the managed entity.\n - RESTART\tTo stop and start again the managed entity.\n" + type: string + enum: + - START + - STOP + - RESTART + changeAdministrativeStateRequest: + description: "The enumeration ChangeAdministrativeStateEnumType defines permitted values for the change of administrative state operation. The ChangeAdministrativeStateEnumType shall comply with the provisions:\n - LOCK\tTo lock the managed entity.\n - UNLOCK\tTo unlock the managed entity.\n" + type: string + enum: + - LOCK + - UNLOCK + operationParams: + description: > + Input parameters of the change state operation. This + attribute shall be formatted according to the request data + type of the related change state operation. + + The following mapping between operationType and the data + type of this attribute shall apply: + - CHANGE_STATE: ChangeStateRequest + + This attribute shall be present if this data type is + returned in a response to reading an individual resource, + and may be present according to the chosen attribute + selector parameter if this data type is returned in a + response to a query of a container resource. + required: + - id + - operationState + - stateEnteredTime + - startTime + - managedObjectRef + change_state_ops.get.400: + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Invalid attribute selector. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + Version: + description: > + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + change_state_op.get.200: + description: > + 200 OK + + Shall be returned when information about an "Individual change state + operation occurrence" resource has been read successfully. + + The response body shall contain status information about a change state + operation occurrence, as defined in clause 5.6.2.9. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: | + This type represents a Change state operation occurrence. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + operationState: + description: "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions :\n - PROCESSING\tThe change state operation is currently in execution.\n - COMPLETED\tThe change state operation has been completed successfully.\n - FAILED\tThe change state operation has failed.\n" + type: string + enum: + - PROCESSING + - COMPLETED + - FAILED + stateEnteredTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + startTime: + description: > + Date-time stamp. Representation: String formatted according to + IETF RFC 3339. + type: string + format: date-time + managedObjectRef: + description: > + This type represents the identifier to reference a managed + object of a particular type. + type: object + properties: + type: + description: > + Indicates the type of managed object. Permitted values: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + + The "MANO_ENTITY COMPONENT" is only applicable if + attribute "manoEntityComponents" in "ManoEntity" is + supported by the API producer. + type: string + enum: + - MANO_ENTITY + - MANO_SERVICE + - MANO_SERVICE_IF + - CONSUMED_MANO_IF + - MANO_ENTITY_COMPONENT + objectId: + description: | + An identifier with the intention of being globally unique. + type: string + subObjectId: + description: > + An identifier that is unique for the respective type + within a NFV-MANO functional entity, but that need not be + globally unique. Representation: string of variable + length.. + type: string + required: + - type + - objectId + changeOperationalStateRequest: + description: "The enumeration ChangeOperationalStateEnumType defines permitted values for the change state operation. The ChangeOperationalStateEnumType shall comply with the provisions:\n - START\tTo start the managed entity.\n - STOP\tTo stop the managed entity.\n - RESTART\tTo stop and start again the managed entity.\n" + type: string + enum: + - START + - STOP + - RESTART + changeAdministrativeStateRequest: + description: "The enumeration ChangeAdministrativeStateEnumType defines permitted values for the change of administrative state operation. The ChangeAdministrativeStateEnumType shall comply with the provisions:\n - LOCK\tTo lock the managed entity.\n - UNLOCK\tTo unlock the managed entity.\n" + type: string + enum: + - LOCK + - UNLOCK + operationParams: + description: > + Input parameters of the change state operation. This attribute + shall be formatted according to the request data type of the + related change state operation. + + The following mapping between operationType and the data type + of this attribute shall apply: + - CHANGE_STATE: ChangeStateRequest + + This attribute shall be present if this data type is returned + in a response to reading an individual resource, and may be + present according to the chosen attribute selector parameter + if this data type is returned in a response to a query of a + container resource. + required: + - id + - operationState + - stateEnteredTime + - startTime + - managedObjectRef + peer_entities.post.201: + description: > + 201 CREATED + + Shall be returned when a new "Individual peer entity" resource has been + created successfully. + + The response body shall contain a representation of the created + resource with regards to a peer entity, as defined in clause 5.6.2.15. + + The HTTP response shall include a “Location†HTTP header that points to + the created "Individual peer entity" resource. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Location: + description: | + The resource URI of the created "Individual peer entity" resource. + schema: + type: string + format: url + minimum: 1 + maximum: 1 + content: + application/json: + schema: + description: | + This type represents an individual peer entity. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + peerEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the peer functional entity. + This attribute can be modified with the PATCH method. + type: string + type: + description: "The enumeration PeerEntityEnumType defines the permitted values to represent peer functional entities. it shall complains with the provisions : - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t The peer functional entity is a VIM. - WIM\t The peer functional entity is a WIM. - EM\t The peer functional entity is an EM. - OSS\t The peer functional entity is an OSS/BSS.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + - WIM + - EM + - OSS + description: + description: | + Human-readable description of the peer functional entity. + This attribute can be modified with the PATCH method. + type: string + consumedManoInterfaces: + description: > + Information of the interface consumed by the NFV-MANO + functional entity from the peer functional entity. + + This attribute can be modified with the PATCH method. + type: array + items: + description: > + This type represents an interface consumed by the producer + NFV MANO functional entity from another peer functional + entity. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by the + NFV-MANO functional entity. Valid values are defined in + clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It provides + the information relevant about the protocol, host and + port, and path where the interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The {apiName} of each interface is + defined in the standard the interface is compliant + to (see also clause 4.1 of ETSI GS NFV-SOL 013). + May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The major version is defined in the + standard the interface is compliant to (see also + clause 4.1 of ETSI GS NFV-SOL 013). May be present + otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information for + accessing an NFV-MANO service interface produced by an + NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by the + API consumer accessing the API. + + The support of authorization methods for the API + consumer is specified in clause 8.3.6 of ETSI GS + NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, as + defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: Using + access token, as defined by the OAuth 2.0 + specification in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is + hosted. When used, the request to the + WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined + in ETSI GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing + the SSL or TLS negotiation with the + authorization server. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use of + TLS tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing + the SSL or TLS negotiation with the API + producer. Valid values of cipher suites are + defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + peerEntityState: + description: > + State of the peer functional entity as provided by the API + consumer when creating the resource or when updating it with + the PATCH method. + type: object + properties: + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + required: + - operationalState + - administrativeState + required: + - id + - peerEntityId + - name + - type + - peerEntityState + peer_entities.get.200: + description: > + 200 OK + + Shall be returned when information about zero or more peer entities has + been queried successfully. + + The response body shall contain in an array the resource + representations of zero or more peer entities, as defined in clause + 5.6.2.15. + + If the “filter" URI parameter or one of the "all_fields", "fields" (if + supported), "exclude_fields" (if supported) or "exclude_default" URI + parameters was supplied in the request, the data in the response body + shall have been transformed according to the rules specified in clauses + 5.2.2 and 5.3.2 of ETSI GS NFV-SOL 013, respectively. + + If the NFV-MANO functional entity supports alternative N°2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + inclusion of the Link HTTP header in this response shall follow the + provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + Link: + description: > + Reference to other resources. Link HTTP header in this response + shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL + 013. + schema: + type: string + minimum: 0 + maximum: 1 + content: + application/json: + schema: + type: array + items: + description: | + This type represents an individual peer entity. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + peerEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the peer functional entity. + This attribute can be modified with the PATCH method. + type: string + type: + description: "The enumeration PeerEntityEnumType defines the permitted values to represent peer functional entities. it shall complains with the provisions : - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t The peer functional entity is a VIM. - WIM\t The peer functional entity is a WIM. - EM\t The peer functional entity is an EM. - OSS\t The peer functional entity is an OSS/BSS.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + - WIM + - EM + - OSS + description: + description: | + Human-readable description of the peer functional entity. + This attribute can be modified with the PATCH method. + type: string + consumedManoInterfaces: + description: > + Information of the interface consumed by the NFV-MANO + functional entity from the peer functional entity. + + This attribute can be modified with the PATCH method. + type: array + items: + description: > + This type represents an interface consumed by the producer + NFV MANO functional entity from another peer functional + entity. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by the + NFV-MANO functional entity. Valid values are defined + in clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It provides + the information relevant about the protocol, host and + port, and path where the interface API can be + accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated + form. Shall be present for ETSI NFV specified + RESTful NFV-MANO APIs. The {apiName} of each + interface is defined in the standard the interface + is compliant to (see also clause 4.1 of ETSI GS + NFV-SOL 013). May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The major version is defined in + the standard the interface is compliant to (see + also clause 4.1 of ETSI GS NFV-SOL 013). May be + present otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information for + accessing an NFV-MANO service interface produced by + an NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by + the API consumer accessing the API. + + The support of authorization methods for the API + consumer is specified in clause 8.3.6 of ETSI GS + NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, + as defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: + Using access token, as defined by the OAuth 2.0 + specification in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is + hosted. When used, the request to the + WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined + in ETSI GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared + as supported by the API consumer when + performing the SSL or TLS negotiation with the + authorization server. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use + of TLS tunnel. Shall be present if authType + contains "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared + as supported by the API consumer when + performing the SSL or TLS negotiation with the + API producer. Valid values of cipher suites + are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + peerEntityState: + description: > + State of the peer functional entity as provided by the API + consumer when creating the resource or when updating it + with the PATCH method. + type: object + properties: + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + required: + - operationalState + - administrativeState + required: + - id + - peerEntityId + - name + - type + - peerEntityState + peer_entities.get.400: + description: | + 400 BAD REQUEST + Shall be returned upon the following errors: + - Invalid attribute-based filtering expression. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Invalid attribute selector. + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + - Response too big. + If the NFV-MANO functional entity supports alternative N°1 (error) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, + this error response shall follow the provisions in clause 5.4.2.2 of + ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + peer_entitie.get.200: + description: > + 200 OK + + Shall be returned when information about an individual peer functional + entity has been read successfully. + + The response body shall contain a resource representation of the peer + functional entity, as defined in clause 5.6.2.15. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: | + This type represents an individual peer entity. + type: object + properties: + id: + description: | + An identifier with the intention of being globally unique. + type: string + peerEntityId: + description: | + An identifier with the intention of being globally unique. + type: string + name: + description: | + Human-readable name of the peer functional entity. + This attribute can be modified with the PATCH method. + type: string + type: + description: "The enumeration PeerEntityEnumType defines the permitted values to represent peer functional entities. it shall complains with the provisions : - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t The peer functional entity is a VIM. - WIM\t The peer functional entity is a WIM. - EM\t The peer functional entity is an EM. - OSS\t The peer functional entity is an OSS/BSS.\n" + type: string + enum: + - NFVO + - VNFM + - VIM + - WIM + - EM + - OSS + description: + description: | + Human-readable description of the peer functional entity. + This attribute can be modified with the PATCH method. + type: string + consumedManoInterfaces: + description: > + Information of the interface consumed by the NFV-MANO + functional entity from the peer functional entity. + + This attribute can be modified with the PATCH method. + type: array + items: + description: > + This type represents an interface consumed by the producer + NFV MANO functional entity from another peer functional + entity. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by the + NFV-MANO functional entity. Valid values are defined in + clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It provides + the information relevant about the protocol, host and + port, and path where the interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The {apiName} of each interface is + defined in the standard the interface is compliant + to (see also clause 4.1 of ETSI GS NFV-SOL 013). + May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The major version is defined in the + standard the interface is compliant to (see also + clause 4.1 of ETSI GS NFV-SOL 013). May be present + otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information for + accessing an NFV-MANO service interface produced by an + NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by the + API consumer accessing the API. + + The support of authorization methods for the API + consumer is specified in clause 8.3.6 of ETSI GS + NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, as + defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: Using + access token, as defined by the OAuth 2.0 + specification in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is + hosted. When used, the request to the + WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined + in ETSI GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing + the SSL or TLS negotiation with the + authorization server. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use of + TLS tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing + the SSL or TLS negotiation with the API + producer. Valid values of cipher suites are + defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + peerEntityState: + description: > + State of the peer functional entity as provided by the API + consumer when creating the resource or when updating it with + the PATCH method. + type: object + properties: + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + required: + - operationalState + - administrativeState + required: + - id + - peerEntityId + - name + - type + - peerEntityState + peer_entitie.patch.200: + description: > + 200 OK + + Shall be returned when the request has been accepted and completed. + + The response body shall contain a representation of the attribute + modifications for the "Individual peer entity" resource, as defined in + clause 5.6.2.17. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + This type represents attribute modifications that were performed + on an "Individual peer entity" resource. The attributes that can + be included consist of those requested to be modified explicitly + in the "PeerEntityConfigModificationRequest" data structure. If + applicable, additional attributes of the "PeerEntity" data + structure that were modified implicitly shall also be provided. + type: object + properties: + name: + description: > + If present, this attribute signals modifications of the "name" + attribute in "PeerEntity", as defined in clause 5.6.2.15. + type: string + description: + description: > + If present, this attribute signals modifications of the + "description" attribute in "PeerEntity", as defined in clause + 5.6.2.15. + type: string + consumedManoInterfaces: + description: "If present, this attribute signals modifications of certain entries in \"consumedManoInterfaces\" attribute in \"PeerEntity\", as defined in clause 5.6.2.15. \nNOTE:\tDue to the security sensitive information contained within the attribute (refer to \"securityInfo\" within the \"ConsumedManoInterfaceInfo\"), based on access control policies, the API consumer might have read only, write only, read/write, or no access at all to the attribute’s value. In case the API consumer is not allowed to read the value of the security sensitive attribute, the attribute shall be omitted when the information is to be provided in a response message.\n" + type: array + items: + description: > + This type represents an interface consumed by the producer + NFV MANO functional entity from another peer functional + entity. + type: object + properties: + id: + description: > + An identifier with the intention of being globally + unique. + type: string + name: + description: | + Human-readable name of the NFV-MANO interface. + type: string + type: + description: > + Type of the NFV-MANO service interface consumed by the + NFV-MANO functional entity. Valid values are defined in + clause 5.6.4.3. + type: string + standardVersion: + description: | + A version. + type: string + apiVersion: + description: | + A version. + type: string + apiEndpoint: + description: > + Consumable API endpoint of the interface. It provides + the information relevant about the protocol, host and + port, and path where the interface API can be accessed. + type: object + properties: + apiRoot: + description: | + String formatted according to IETF RFC 3986. + type: string + apiName: + description: > + Indicates the interface name in an abbreviated form. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The {apiName} of each interface is + defined in the standard the interface is compliant + to (see also clause 4.1 of ETSI GS NFV-SOL 013). + May be present otherwise. + type: string + apiMajorVersion: + description: > + Indicates the current major version of the API. + Shall be present for ETSI NFV specified RESTful + NFV-MANO APIs. The major version is defined in the + standard the interface is compliant to (see also + clause 4.1 of ETSI GS NFV-SOL 013). May be present + otherwise. + type: string + apiUri: + description: | + String formatted according to IETF RFC 3986. + type: string + required: + - apiUri + securityInfo: + description: > + This type represents security related information for + accessing an NFV-MANO service interface produced by an + NFV-MANO functional entity. + type: object + required: + - authType + - oauthServerInfo + properties: + authType: + description: > + Type of API request authorization to be used by the + API consumer accessing the API. + + The support of authorization methods for the API + consumer is specified in clause 8.3.6 of ETSI GS + NFV-SOL 013. + + Permitted values: - TLS_TUNNEL: Using TLS tunnel, as + defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: Using + access token, as defined by the OAuth 2.0 + specification in IETF RFC 6749. + type: array + items: + type: string + enum: + - TLS_TUNNEL + - OAUTH2 + minItems: 1 + oauthServerInfo: + description: > + OAuth 2.0 authorization server information and + configuration. + type: object + properties: + dynamicDiscovery: + description: "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - webFingerHost + properties: + webFingerHost: + description: > + Server where the WebFinger service is + hosted. When used, the request to the + WebFinger resource shall conform as + specified in clause 5.1.3 of ETSI GS + NFV-SEC 022. + type: string + format: uri + providedConfiguration: + description: "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n" + type: object + required: + - authServerId + properties: + authServerId: + description: > + Authorization server identifier as defined + in ETSI GS NFV-SEC 022. + type: string + format: uri + tlsCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing + the SSL or TLS negotiation with the + authorization server. Valid values of cipher + suites are defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + tlsTunnelInfo: + description: > + Information and configuration related to the use of + TLS tunnel. Shall be present if authType contains + "TLS_TUNNEL". + type: object + properties: + tlsTunnelCipherSuites: + description: > + List of cipher suites that shall be declared as + supported by the API consumer when performing + the SSL or TLS negotiation with the API + producer. Valid values of cipher suites are + defined in IETF RFC 8447. + type: array + items: + type: string + minItems: 1 + required: + - id + - name + - type + - standardVersion + - apiVersion + - apiEndpoint + consumedManoInterfaceDeleteIds: + description: > + If present, this attribute signals the deletions of certain + entries in the "consumedManoInterfaces" attribute in + "PeerEntity", as defined in clause 5.6.2.15. + type: array + items: + description: | + An identifier with the intention of being globally unique. + type: string + operationalState: + description: "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n" + type: string + enum: + - STARTED + - STOPPED + - STOPPING + - STARTING + - RESTARTING + administrativeState: + description: "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n" + type: string + enum: + - LOCKED + - UNLOCKED + - LOCKING + peer_entitie.patch.409: + description: > + 409 CONFLICT. + + Shall be returned upon the following error: The operation cannot be + executed currently, due to a conflict with the state of the "Individual + peer entity" resource. + + Typically, this is due to the fact that another operation is ongoing. + + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + peer_entitie.patch.412: + description: > + 412 PRECONDITION FAILED + + Shall be returned upon the following error: A precondition given in an + HTTP request header is not fulfilled. + + Typically, this is due to an ETag mismatch, indicating that the + resource was modified by another entity. + + The response body should contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + peer_entitie.delete.204: + description: > + 204 NO CONTENT + + Shall be returned when the "Individual peer entity" resource has been + deleted successfully. + + The response body shall be empty. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + peer_entitie.delete.409: + description: > + 409 CONFLICT. + + Shall be returned upon the following error: The operation cannot be + executed currently, due to a conflict with the state of the "Individual + peer entity" resource. + + Typically, this is due to the fact that another operation is ongoing. + + The response body shall contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + peer_entitie.delete.412: + description: > + 412 PRECONDITION FAILED + + Shall be returned upon the following error: A precondition given in an + HTTP request header is not fulfilled. + + Typically, this is due to an ETag mismatch, indicating that the + resource was modified by another entity. + + The response body should contain a ProblemDetails structure, in which + the "detail" attribute should convey more information about the error. + headers: + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP request + has provided an invalid authorization token. + schema: + type: string + Version: + description: | + Version of the API used in the response. + schema: + type: string + content: + application/json: + schema: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], the "status" and + "detail" attributes are mandated to be included by the present + document, to ensure that the response contains additional textual + information about an error. IETF RFC 7807 [19] foresees + extensibility of the "ProblemDetails" type. It is possible that + particular APIs in the present document, or particular + implementations, define extensions to define additional attributes + that provide more information about the error. The description + column only provides some explanation of the meaning to Facilitate + understanding of the design. For a full description, see IETF RFC + 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies + the problem type. It is encouraged that the URI provides + human-readable documentation for the problem (e.g. using HTML) + when dereferenced. When this member is not present, its value + is assumed to be "about:blank". + type: string + format: URI + title: + description: > + A short, human-readable summary of the problem type. It should + not change from occurrence to occurrence of the problem, + except for purposes of localization. If type is given and + other than "about:blank", this attribute shall also be + provided. A short, human-readable summary of the problem + type. It SHOULD NOT change from occurrence to occurrence of + the problem, except for purposes of localization (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. The + HTTP status code ([RFC7231], Section 6) generated by the + origin server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of + the problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + -- GitLab From ad1de307d99f4c406d855205debd955500f7d164 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 11 Aug 2020 12:43:20 +0500 Subject: [PATCH 474/580] Added Test Cases for NFV-MANO Entity.robot --- .../NFV-MANO Entity.robot | 97 +++++ .../NFVMANOCimKeywords.robot | 74 ++++ .../environment/variables.txt | 23 ++ .../jsons/ManoConfigModificationRequest.json | 3 + .../schemas/ManoConfigModifications.json | 99 +++++ .../schemas/ManoEntity.json | 375 ++++++++++++++++++ .../schemas/ProblemDetails.schema.json | 1 + 7 files changed, 672 insertions(+) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/NFV-MANO Entity.robot create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ManoConfigModificationRequest.json create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoConfigModifications.json create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoEntity.json create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ProblemDetails.schema.json diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFV-MANO Entity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFV-MANO Entity.robot new file mode 100644 index 000000000..eeaf33930 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFV-MANO Entity.robot @@ -0,0 +1,97 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST NFV-MANO entity - Method not implemented + [Documentation] Test ID: 8.3.4.1.1 + ... Test title: POST NFV-MANO entity - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create an NFV-MANO Entity. + ... Pre-conditions: + ... Reference: clause 5.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Post request for NFV-MANO Entity + Check HTTP Response Status Code Is 405 + +GET NFV-MANO entity + [Documentation] Test ID: 8.3.4.1.2 + ... Test title: Get NFV-MANO entity + ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource and perform a JSON schema and content validation of the collected job data structure. + ... Pre-conditions: + ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET NFV-MANO entity resource + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoEntity + +PUT NFV-MANO entity - Method not implemented + [Documentation] Test ID: 8.3.4.1.3 + ... Test title: PUT NFV-MANO entity - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an NFV-MANO Entity. + ... Pre-conditions: + ... Reference: clause 5.5.3.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Put request for NFV-MANO Entity + Check HTTP Response Status Code Is 405 + +PATCH NFV-MANO entity + [Documentation] Test ID: 8.3.4.1.4 + ... Test title: PATCH NFV-MANO entity + ... Test objective: This method modifies the NFV-MANO entity resource + ... Pre-conditions: NFV-MANO entity resource is already created. + ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO entity is modified by the operation + Send Patch request for NFV-MANO Entity + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoConfigModifications + +PATCH NFV-MANO entity - Conflict + [Documentation] Test ID: 8.3.4.1.5 + ... Test title: PATCH NFV-MANO entity - Conflict + ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: NFV-MANO entity resource is already created. + ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO entity is not modified by the operation + Send Patch request for NFV-MANO Entity + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +PATCH NFV-MANO entity - PreCondition Failed + [Documentation] Test ID: 8.3.4.1.6 + ... Test title: PATCH NFV-MANO entity - PreCondition Failed + ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: NFV-MANO entity resource is already created. + ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO entity is not modified by the operation + Send Patch request for NFV-MANO Entity + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +DELETE NFV-MANO entity - Method not implemented + [Documentation] Test ID: 8.3.4.1.7 + ... Test title: DELETE NFV-MANO entity - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete an NFV-MANO Entity. + ... Pre-conditions: + ... Reference: clause 5.5.3.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Delete request for NFV-MANO Entity + Check HTTP Response Status Code Is 405 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot new file mode 100644 index 000000000..e6a760bcc --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -0,0 +1,74 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary +Library OperatingSystem +Library BuiltIn +Library JSONLibrary +Library Collections +Library JSONSchemaLibrary schemas/ +Library Process + +*** Keywords *** +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + ${status}= Convert To Integer ${expected_status} + Should Be Equal ${response['status']} ${status} + Log Status code validated + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + Should Contain ${response['headers']['Content-Type']} application/json + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK + +Send Post request for NFV-MANO Entity + 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}/mano_entity + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET NFV-MANO entity resource + Log Trying to get a NFV-MANO entity resource + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Put request for NFV-MANO Entity + 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}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/mano_entity + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/mano_entity + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch request for NFV-MANO Entity + log Trying to modify an NFV-MANO Entity + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/ManoConfigModificationRequest.json + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send Delete request for NFV-MANO Entity + 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}/mano_entity + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt new file mode 100644 index 000000000..f0ea01072 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt @@ -0,0 +1,23 @@ +*** Variables *** +${NFVMANOHOST} localhost +${NFVMANO_PORT} 8080 +${NFVMANO_SCHEMA} https + + +${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${NEG_AUTHORIZATION} Bearer negativetoken + +${CONTENT_TYPE_JSON} application/json +${ACCEPT_JSON} application/json +${CONTENT_TYPE_PATCH} application/merge-patch+json +${AUTH_USAGE} 1 +${FIELD_USAGE} 1 +${NFVMANO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint + +${NFVMANO_ALLOWS_DUPLICATE_SUBS} 1 + +${apiRoot} / +${apiMajorVersion} v1 +${apiName} nfvmanocim + +${response} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ManoConfigModificationRequest.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ManoConfigModificationRequest.json new file mode 100644 index 000000000..eca04e508 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ManoConfigModificationRequest.json @@ -0,0 +1,3 @@ +{ + "name": "NFV-MANO Entity" +} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoConfigModifications.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoConfigModifications.json new file mode 100644 index 000000000..7970b361e --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoConfigModifications.json @@ -0,0 +1,99 @@ +{ + "description": "This type represents attribute modifications that were performed on the \"NFV-MANO entity\" resource of the producer NFV-MANO functional entity. The attributes that can be included consist of those requested to be modified explicitly in the \"ManoConfigModificationRequest\" data structure. \n", + "type": "object", + "properties": { + "name": { + "description": "If present, this attribute signals modifications of the \"name\" attribute in \"ManoEntity\", as defined in clause 5.6.2.3\n", + "type": "string" + }, + "description": { + "description": "If present, this attribute signals modifications of the \"description\" attribute in \"ManoEntity\", as defined in clause 5.6.2.3.\n", + "type": "string" + }, + "clockSyncs": { + "description": "If present, this attribute signals modifications of the \"clockSyncs\" attribute in \"ManoEntityConfigurableParams\", as defined in clause 5.6.2.3.\n", + "type": "array", + "items": { + "description": "This type represents parameters for connecting to an NTP server. \n", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "type": { + "description": "Type of clock synchronization.\nPermitted values:\n - NTP: For Network Time Protocol (NTP) based clock synchronization.\n - OTHER: For other types of clock synchronization.\n", + "type": "string", + "enum": [ + "NTP", + "OTHER" + ] + }, + "ntpServerInfo": { + "description": "Information for the NTP based clock synchronization. Shall be present if type = \"NTP\".\n", + "type": "object", + "properties": { + "ipAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "hostname": { + "description": "Indicates the hostname of the NTP server. \nNOTE:\tEither ipAddress or hostname shall be set, but not both at the same time.\n", + "type": "string" + } + } + }, + "otherClockSyncParams": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + }, + "required": [ + "id", + "type" + ] + } + }, + "clockSyncsDeleteIds": { + "description": "If present, this attribute signals modifications of certain entries in \"clockSyncs\" attribute in \"ManoEntityConfigurableParams\", as defined in clause 5.6.2.3.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "defaultLogCompileBySizeValue": { + "description": "Unsigned integer\n", + "type": "number" + }, + "defaultLogCompileByTimerValue": { + "description": "Unsigned integer\n", + "type": "number" + }, + "manoServiceModifications": { + "description": "If present, this attribute signals modifications of the \"manoServices\" attribute array in the \"ManoEntity\", as defined in clause 5.6.2.3.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + }, + "name": { + "description": "If present, this attribute signals modification of the \"name\" attribute in the \"ManoService\".\n", + "type": "string" + }, + "description": { + "description": "If present, this attribute signals modification of the \"description\" attribute in the \"ManoService\".\n", + "type": "string" + } + }, + "required": [ + "id" + ] + } + } + } + } \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoEntity.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoEntity.json new file mode 100644 index 000000000..388b9e00e --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoEntity.json @@ -0,0 +1,375 @@ +{ + "description": "This type represents an NFV-MANO functional entity.\n", + "type": "object", + "required": [ + "id", + "type", + "name", + "description", + "provider", + "softwareVersion", + "manoConfigurableParams", + "manoApplicationState", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "type": { + "description": "The enumeration ManoEntityEnumType defines the permitted values to represent NFV-MANO functional entities. It shall comply with the provisions :\n - NFVO\tThe NFV-MANO functional entity is an NFVO.\n - VNFM\tThe NFV-MANO functional entity is a VNFM.\n - VIM\tThe NFV-MANO functional entity is a VIM.\n", + "type": "string", + "enum": [ + "NFVO", + "VNFM", + "VIM" + ] + }, + "name": { + "description": "Human-readable name of the NFV-MANO functional entity.\nThis attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "description": { + "description": "Human-readable description of the NFV-MANO functional entity.\nThis attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "provider": { + "description": "Information about the provider of the NFV-MANO functional entity. It typically includes the name of the provider.\n", + "type": "string" + }, + "softwareVersion": { + "description": "The version of the software of the NFV-MANO functional entity. $ref: \"../components/SOL009_schemas.yaml#/components/schemas/Version\"\n" + }, + "manoEntityComponents": { + "description": "The deployed NFV-MANO functional entity components which realize the NFV-MANO functional entity. \nNOTE:\tIt is optional for the API producer to support the \"manoEntityComponents\" attribute.\n", + "type": "array", + "items": { + "description": "This type represents information of a deployed component realizing part of an NFV-MANO functional entity. It is optional for the API producer to support this type. \n", + "type": "object", + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + }, + "manoServiceIds": { + "description": "References to the NFV-MANO services that depend on the NFV-MANO functional entity component. The identifier of the ManoService is referred. A service may depend on multiple components. Multiple services may depend on the same component.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + } + }, + "required": [ + "id" + ] + } + }, + "manoServices": { + "description": "Information about the NFV-MANO services provided by the NFV-MANO functional entity.\n", + "type": "array", + "items": { + "description": "This type represents information about an NFV-MANO service provided by the NFV-MANO functional entity.\n", + "type": "object", + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + }, + "name": { + "description": "Human-readable name of the NFV-MANO service.\nThis attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "description": { + "description": "Human-readable description of the NFV-MANO service.\nThis attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "manoServiceInterfaceIds": { + "description": "Reference to the NFV-MANO interfaces associated to the NFV-MANO service. If cardinality is greater than one, the type of ManoServiceInterface (see clause 5.6.3.3) shall be the same. The identifier of the ManoServiceInterface is referred. \nNOTE:\tA cardinality greater than one supports having different interface versions or apiEndpoints to be used for accessing the same instance of a NFV-MANO service.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + }, + "minItems": 1 + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "properties": { + "manoServiceInterfaces": { + "description": "Link to the \"individual NFV-MANO service interface\" resources with information about the associated interfaces to the NFV-MANO service.\n", + "type": "array", + "items": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "minItems": 1 + } + }, + "required": [ + "manoServiceInterfaces" + ] + } + }, + "required": [ + "id", + "name", + "description", + "manoServiceInterfaceIds", + "_links" + ] + } + }, + "manoConfigurableParams": { + "description": "# Warning: No definition found in the document ManoConfigurableParams\n" + }, + "manoApplicationState": { + "description": "Information and current values of the NFV-MANO functional entity’s application state. \n", + "type": "object", + "required": [ + "operationalState", + "administrativeState", + "usageState" + ], + "properties": { + "operationalState": { + "description": "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED", + "STOPPING", + "STARTING", + "RESTARTING" + ] + }, + "administrativeState": { + "description": "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n", + "type": "string", + "enum": [ + "LOCKED", + "UNLOCKED", + "LOCKING" + ] + }, + "usageState": { + "description": "The enumeration UsageStateEnumType defines values representing the usage state of a managed entity. The UsageStateEnumType shall comply with the provisions:\n - IN_USE\tThe managed entity is currently being used.\n - NOT_IN_USE\tThe managed entity is currently not being used.\n", + "type": "string", + "enum": [ + "IN_USE", + "NOT_IN_USE" + ] + } + } + }, + "nfvoSpecificInfo": { + "description": "This type represents information attributes specific to an NFVO entity, and that can be relevant to more than one NFV-MANO service offered by an NFVO entity. \n", + "type": "object", + "properties": { + "maxOnboardedNsdNum": { + "description": "Maximum number of NSDs that can be on-boarded on the NFVO. \nNOTE: If this attribute is not present, the value of this parameter is undefined.\n", + "type": "integer" + }, + "maxOnboardedVnfPkgNum": { + "description": "Maximum number of VNF Packages that can be on-boarded on the NFVO. \nNOTE: If this attribute is not present, the value of this parameter is undefined.\n", + "type": "integer" + }, + "supportedVnfdFormats": { + "description": "Supported VNFD data formats.\n", + "type": "object", + "properties": { + "vnfdFormat": { + "description": "Name of the VNFD format.\nPermitted values:\n - TOSCA: The VNFD follows TOSCA definition, according to ETSI \n GS NFV-SOL 001 standard.\n - YANG: The VNFD follows YANG definition according to ETSI \n GS NFV-SOL 006 standard.\n", + "type": "string", + "enum": [ + "TOSCA", + "YANG" + ] + }, + "standardVersion": { + "description": "A version.\n", + "type": "string" + } + }, + "required": [ + "vnfdFormat", + "standardVersion" + ] + }, + "supportedNsdFormats": { + "description": "Supported NSD data formats.\n", + "type": "object", + "properties": { + "nsdFormat": { + "description": "Name of the NSD format.\nPermitted values:\n - TOSCA: The VNFD follows TOSCA definition, according to ETSI \n GS NFV-SOL 001 standard.\n - YANG: The VNFD follows YANG definition according to ETSI \n GS NFV-SOL 006 standard.\n", + "type": "string", + "enum": [ + "TOSCA", + "YANG" + ] + }, + "standardVersion": { + "description": "A version.\n", + "type": "string" + } + }, + "required": [ + "nsdFormat", + "standardVersion" + ] + } + }, + "required": [ + "supportedVnfdFormats", + "supportedNsdFormats" + ] + }, + "vnfmSpecificInfo": { + "description": "This type represents information attributes specific to a VNFM entity, and that can be relevant to more than one NFV-MANO service offered by a VNFM entity.\n", + "type": "object", + "properties": { + "resoruceMgmtModeSupport": { + "description": "The supported resource management modes of the VNFM.\nPermitted values:\n - DIRECT: The VNFM supports direct mode only.\n - INDIRECT: The VNFM supports indirect mode only.\n - BOTH: The VNFM supports both direct and indirect mode.\n", + "type": "string", + "enum": [ + "DIRECT", + "INDIRECT", + "BOTH" + ] + }, + "managedVnfInstanceInfos": { + "description": "The kinds of VNF instances that can be managed, e.g. to determine the compatibility of a VNF with certain VNFM according to the vnfmInfo attribute in the VNFD (see table 7.1.2.2-1 in ETSI GS NFV-IFA 011).\n", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "supportedVnfdFormats": { + "description": "Supported VNFD data formats.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "vnfdFormat": { + "description": "Name of the VNFD format.\nPermitted values:\n - TOSCA: The VNFD follows TOSCA definition, according to ETSI \n GS NFV-SOL 001 standard.\n - YANG: The VNFD follows YANG definition according to ETSI \n GS NFV-SOL 006 standard.\n", + "type": "string", + "enum": [ + "TOSCA", + "YANG" + ] + }, + "standardVersion": { + "description": "A version.\n", + "type": "string" + } + }, + "required": [ + "vnfdFormat", + "standardVersion" + ] + }, + "minItems": 1 + } + }, + "required": [ + "resoruceMgmtModeSupport", + "managedVnfInstanceInfos", + "supportedVnfdFormats" + ] + }, + "vimSpecificInfo": { + "description": "This type represents information attributes specific to a VIM entity, and that can be relevant to more than one NFV-MANO service offered by a VIM entity.\n", + "type": "object" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "manoServiceInterfaces", + "peerEntities", + "changeState", + "changeStateOpOccs" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "manoServiceInterfaces": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "peerEntities": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeState": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeStateOpOccs": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ProblemDetails.schema.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ProblemDetails.schema.json new file mode 100644 index 000000000..2af3ef9b3 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ProblemDetails.schema.json @@ -0,0 +1 @@ +{ "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", "type": "object", "required": [ "status", "detail" ], "properties": { "type": { "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", "type": "string", "format": "URI" }, "title": { "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", "type": "string" }, "status": { "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", "type": "integer" }, "detail": { "description": "A human-readable explanation specific to this occurrence of the problem.\n", "type": "string" }, "instance": { "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", "type": "string", "format": "URI" } }} \ No newline at end of file -- GitLab From dde2ecf32543cb7330552997dcf75532659eff7b Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 11 Aug 2020 14:21:59 +0500 Subject: [PATCH 475/580] Added Test Cases for ChangeNFVMANOEntityStateTask.robot --- .../ChangeNFVMANOEntityStateTask.robot | 82 +++++++++++++++++++ .../NFVMANOCimKeywords.robot | 47 +++++++++++ ...-MANO Entity.robot => NFVMANOEntity.robot} | 2 +- 3 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot rename SOL009/NFVManoConfigurationAndInformationManagement-API/{NFV-MANO Entity.robot => NFVMANOEntity.robot} (97%) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot new file mode 100644 index 000000000..bc5062631 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot @@ -0,0 +1,82 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary +*** Test Cases *** +POST NFV-MANO functional entity application state change + [Documentation] Test ID: 8.3.4.2.1 + ... Test title: POST NFV-MANO functional entity application state change + ... Test objective: The objective is to request state change of the NFV-MANO functional entity application. + ... Pre-conditions: + ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Post request for NFV-MANO functional entity application state change + Check HTTP Response Status Code Is 202 + Check Operation Occurrence Id + +POST NFV-MANO functional entity application state change - Conflict + [Documentation] Test ID: 8.3.4.2.2 + ... Test title: POST NFV-MANO functional entity application state change - Conflict + ... Test objective: The objective is to test that request to change the state of the NFV-MANO functional entity application failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: + ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Post request for NFV-MANO functional entity application state change + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET NFV-MANO functional entity application state change - Method not implemented + [Documentation] Test ID: 8.3.4.2.3 + ... Test title: GET NFV-MANO functional entity application state change - Method not implemented + ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: + ... Reference: clause 5.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Get request for NFV-MANO functional entity application state change + Check HTTP Response Status Code Is 405 + +PUT NFV-MANO functional entity application state change - Method not implemented + [Documentation] Test ID: 8.3.4.2.4 + ... Test title: PUT NFV-MANO functional entity application state change - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: + ... Reference: clause 5.5.7.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Put request for NFV-MANO functional entity application state change + Check HTTP Response Status Code Is 405 + +PATCH NFV-MANO functional entity application state change - Method not implemented + [Documentation] Test ID: 8.3.4.2.5 + ... Test title: PATCH NFV-MANO functional entity application state change - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: + ... Reference: clause 5.5.7.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Patch request for NFV-MANO functional entity application state change + Check HTTP Response Status Code Is 405 + +DELETE NFV-MANO functional entity application state change - Method not implemented + [Documentation] Test ID: 8.3.4.2.6 + ... Test title: DELETE NFV-MANO functional entity application state change - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: + ... Reference: clause 5.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Delete request for NFV-MANO functional entity application state change + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index e6a760bcc..8eed9958e 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -27,6 +27,10 @@ Check HTTP Response Body Json Schema Is ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK + +Check Operation Occurrence Id + ${OpOccId}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${OpOccId} Send Post request for NFV-MANO Entity Log Trying to perform a POST (method should not be implemented) @@ -71,4 +75,47 @@ Send Delete request for NFV-MANO Entity Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Post request for NFV-MANO functional entity application state change + Log Trying to perform a POST for NFV-MANO functional entity application state change + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/change_state + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Get request for NFV-MANO functional entity application state change + Log Trying to perform a GET (method should not be implemented) + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/change_state + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Put request for NFV-MANO functional entity application state change + 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}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/mano_entity/change_state + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/mano_entity/change_state + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch request for NFV-MANO functional entity application state change + 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}/mano_entity/change_state + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for NFV-MANO functional entity application state change + 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}/mano_entity/change_state + ${output}= Output response Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFV-MANO Entity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot similarity index 97% rename from SOL009/NFVManoConfigurationAndInformationManagement-API/NFV-MANO Entity.robot rename to SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot index eeaf33930..b6c85e15f 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFV-MANO Entity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot @@ -94,4 +94,4 @@ DELETE NFV-MANO entity - Method not implemented ... Applicability: none ... Post-Conditions: Send Delete request for NFV-MANO Entity - Check HTTP Response Status Code Is 405 + Check HTTP Response Status Code Is 405 \ No newline at end of file -- GitLab From b19c3841d23e6a870168dd8be7f018356c82d51f Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 12 Aug 2020 09:27:03 +0500 Subject: [PATCH 476/580] Added Test Cases for ChangeStateOpperationOccurance.robot --- .../ChangeStateOperationOccurance.robot | 188 ++++++++++++++++++ .../NFVMANOCimKeywords.robot | 96 ++++++++- .../environment/variables.txt | 7 +- .../schemas/ChangeStateOpOcc.json | 85 ++++++++ .../schemas/ChangeStateOpOccs.json | 87 ++++++++ 5 files changed, 461 insertions(+), 2 deletions(-) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ChangeStateOpOcc.json create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ChangeStateOpOccs.json diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot new file mode 100644 index 000000000..323e678d4 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot @@ -0,0 +1,188 @@ +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST Change State Operation Occurance - Method not implemented + [Documentation] Test ID: 8.3.1.3.1 + ... Test title: POST Change State Operation Occurance - Method not implemented + ... Test objective: The objective is to test that POST method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Post request for Change State Operation Occurance + Check HTTP Response Status Code Is 405 + +GET Change State Operation Occurance + [Documentation] Test ID: 8.3.1.3.2 + ... Test title: GET Change State Operation Occurance + ... Test objective: The objective is to query status information about multiple change state operation occurrences. + ... Pre-conditions: + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Change State OpOcc + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOccs + +GET Change State Operation Occurance - invalid attribute-based filter + [Documentation] Test ID: 8.3.1.3.3 + ... Test title: GET Change State Operation Occurance - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of Change State Operation Occurance fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Change State OpOcc with invalid filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Change State Operation Occurance - invalid attribute selector + [Documentation] Test ID: 8.3.1.3.4 + ... Test title: GET Change State Operation Occurance - invalid attribute selector + ... Test objective: The objective is to test that the retrieval of Change State Operation Occurance fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Change State OpOcc with invalid selector + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Change State Operation Occurance - Bad Request Response too Big + [Documentation] Test ID: 8.3.1.3.5 + ... Test title: GET Change State Operation Occurance - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of Change State Operation Occurance fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Change State OpOcc + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Change State Operation Occurance with attribute-based filter + [Documentation] Test ID: 8.3.1.3.6 + ... Test title: GET Change State Operation Occurance with attribute-based filter + ... Test objective: The objective is to query status information about multiple change state operation occurrences with attribute filters + ... Pre-conditions: + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Change State OpOcc with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc + +GET Change State Operation Occurance with "all_fields" attribute selector + [Documentation] Test ID: 8.3.1.3.7 + ... Test title: GET Change State Operation Occurance with "all_fields" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurance with "all_fields" attribute selector + ... Pre-conditions: + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Change State OpOcc with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc + +GET Change State Operation Occurance with "exclude_default" attribute selector + [Documentation] Test ID: 8.3.1.3.8 + ... Test title: GET Change State Operation Occurance with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurance with "exclude_default" attribute selector + ... Pre-conditions: + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Change State OpOcc with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc + + +GET Change State Operation Occurance with "fields" attribute selector + [Documentation] Test ID: 8.3.1.3.9 + ... Test title: GET Change State Operation Occurance with "fields" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurance with fields attribute selector + ... Pre-conditions: + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Change State OpOcc with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc + +GET Change State Operation Occurance with "exclude_fields" attribute selector + [Documentation] Test ID: 8.3.1.3.10 + ... Test title: GET Change State Operation Occurance with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurance with "exclude_fields" attribute selector + ... Pre-conditions: + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: none + Get Change State OpOcc with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc + +GET Change State Operation Occurance with Paged Response + [Documentation] Test ID: 8.3.1.3.11 + ... Test title: GET Change State Operation Occurance with Paged Response + ... Test objective: The objective is to query Change State Operation Occurance to get Paged Response. + ... Pre-conditions: + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Change State OpOcc + Check HTTP Response Status Code Is 200 + Check LINK in Header + +PUT Change State Operation Occurance - Method not implemented + [Documentation] Test ID: 8.3.1.3.12 + ... Test title: PUT Change State Operation Occurance - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.8.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Put request for Change State Operation Occurance + Check HTTP Response Status Code Is 405 + +PATCH Change State Operation Occurance - Method not implemented + [Documentation] Test ID: 8.3.1.3.13 + ... Test title: PATCH Change State Operation Occurance - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.8.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Patch request for Change State Operation Occurance + Check HTTP Response Status Code Is 405 + +DELETE Change State Operation Occurance - Method not implemented + [Documentation] Test ID: 8.3.1.3.14 + ... Test title: DELETE Change State Operation Occurance - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.8.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Delete request for Change State Operation Occurance + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 8eed9958e..5e3d67847 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -118,4 +118,98 @@ Send Delete request for NFV-MANO functional entity application state change Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/change_state ${output}= Output response - Set Suite Variable ${response} ${output} \ No newline at end of file + Set Suite Variable ${response} ${output} + +Send Post request for Change State Operation Occurance + 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}/change_state_ops + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Change State OpOcc + Log Query to GET information about multiple change state operation occurrences. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/change_state_ops + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Get Change State OpOcc with invalid filter + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/change_state_ops?attribute_not_exist=some_value + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Get Change State OpOcc with invalid selector + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/change_state_ops?fields=wrong_field + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Get Change State OpOcc with filter + Log Query information about multiple change state operation occurrences with attribute filters. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/change_state_ops?${filter}=${filter_value} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Get Change State OpOcc with all_fields attribute selector + Log Queries information about multiple change state operation occurrences, using all_fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/change_state_ops?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Change State OpOcc with fields attribute selector + Log Queries information about multiple change state operation occurrences, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/change_state_ops?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Change State OpOcc with exclude_fields attribute selector + Log Queries information about multiple change state operation occurrences, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/change_state_ops?exclude_fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check LINK in Header + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + +Send PUT request for Change State Operation Occurance + 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}/change_state_ops + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send PATCH request for Change State Operation Occurance + 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}/change_state_ops + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send DELETE request for Change State Operation Occurance + 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}/change_state_ops + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt index f0ea01072..f94eed9d7 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt @@ -20,4 +20,9 @@ ${apiRoot} / ${apiMajorVersion} v1 ${apiName} nfvmanocim -${response} \ No newline at end of file +${response} + +${filter} +${filter_value} + +${fields} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ChangeStateOpOcc.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ChangeStateOpOcc.json new file mode 100644 index 000000000..f9238e4d2 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ChangeStateOpOcc.json @@ -0,0 +1,85 @@ +{ + "description": "This type represents a Change state operation occurrence. \n", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operationState": { + "description": "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions :\n - PROCESSING\tThe change state operation is currently in execution.\n - COMPLETED\tThe change state operation has been completed successfully.\n - FAILED\tThe change state operation has failed.\n", + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "FAILED" + ] + }, + "stateEnteredTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "managedObjectRef": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + }, + "changeOperationalStateRequest": { + "description": "The enumeration ChangeOperationalStateEnumType defines permitted values for the change state operation. The ChangeOperationalStateEnumType shall comply with the provisions:\n - START\tTo start the managed entity.\n - STOP\tTo stop the managed entity.\n - RESTART\tTo stop and start again the managed entity.\n", + "type": "string", + "enum": [ + "START", + "STOP", + "RESTART" + ] + }, + "changeAdministrativeStateRequest": { + "description": "The enumeration ChangeAdministrativeStateEnumType defines permitted values for the change of administrative state operation. The ChangeAdministrativeStateEnumType shall comply with the provisions:\n - LOCK\tTo lock the managed entity.\n - UNLOCK\tTo unlock the managed entity.\n", + "type": "string", + "enum": [ + "LOCK", + "UNLOCK" + ] + }, + "operationParams": { + "description": "Input parameters of the change state operation. This attribute shall be formatted according to the request data type of the related change state operation. \nThe following mapping between operationType and the data type of this attribute shall apply:\n - CHANGE_STATE: ChangeStateRequest\n \nThis attribute shall be present if this data type is returned in a response to reading an individual resource, and may be present according to the chosen attribute selector parameter if this data type is returned in a response to a query of a container resource.\n" + } + }, + "required": [ + "id", + "operationState", + "stateEnteredTime", + "startTime", + "managedObjectRef" + ] + } \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ChangeStateOpOccs.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ChangeStateOpOccs.json new file mode 100644 index 000000000..7c203be47 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ChangeStateOpOccs.json @@ -0,0 +1,87 @@ +{ "type": "array", + "items": { + "description": "This type represents a Change state operation occurrence. \n", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operationState": { + "description": "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions :\n - PROCESSING\tThe change state operation is currently in execution.\n - COMPLETED\tThe change state operation has been completed successfully.\n - FAILED\tThe change state operation has failed.\n", + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "FAILED" + ] + }, + "stateEnteredTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "managedObjectRef": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + }, + "changeOperationalStateRequest": { + "description": "The enumeration ChangeOperationalStateEnumType defines permitted values for the change state operation. The ChangeOperationalStateEnumType shall comply with the provisions:\n - START\tTo start the managed entity.\n - STOP\tTo stop the managed entity.\n - RESTART\tTo stop and start again the managed entity.\n", + "type": "string", + "enum": [ + "START", + "STOP", + "RESTART" + ] + }, + "changeAdministrativeStateRequest": { + "description": "The enumeration ChangeAdministrativeStateEnumType defines permitted values for the change of administrative state operation. The ChangeAdministrativeStateEnumType shall comply with the provisions:\n - LOCK\tTo lock the managed entity.\n - UNLOCK\tTo unlock the managed entity.\n", + "type": "string", + "enum": [ + "LOCK", + "UNLOCK" + ] + }, + "operationParams": { + "description": "Input parameters of the change state operation. This attribute shall be formatted according to the request data type of the related change state operation. \nThe following mapping between operationType and the data type of this attribute shall apply:\n - CHANGE_STATE: ChangeStateRequest\n \nThis attribute shall be present if this data type is returned in a response to reading an individual resource, and may be present according to the chosen attribute selector parameter if this data type is returned in a response to a query of a container resource.\n" + } + }, + "required": [ + "id", + "operationState", + "stateEnteredTime", + "startTime", + "managedObjectRef" + ] + } + } \ No newline at end of file -- GitLab From 0947b0d355b27d1c8b816824b068a8f7fd9ef2f9 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 12 Aug 2020 09:29:14 +0500 Subject: [PATCH 477/580] fixed TID mismatch in NFVMANOEntity.robot --- .../NFVMANOEntity.robot | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot index b6c85e15f..ba7ee2ec0 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot @@ -9,7 +9,7 @@ Library MockServerLibrary *** Test Cases *** POST NFV-MANO entity - Method not implemented - [Documentation] Test ID: 8.3.4.1.1 + [Documentation] Test ID: 8.3.1.1.1 ... Test title: POST NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create an NFV-MANO Entity. ... Pre-conditions: @@ -21,7 +21,7 @@ POST NFV-MANO entity - Method not implemented Check HTTP Response Status Code Is 405 GET NFV-MANO entity - [Documentation] Test ID: 8.3.4.1.2 + [Documentation] Test ID: 8.3.1.1.2 ... Test title: Get NFV-MANO entity ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource and perform a JSON schema and content validation of the collected job data structure. ... Pre-conditions: @@ -34,7 +34,7 @@ GET NFV-MANO entity Check HTTP Response Body Json Schema Is ManoEntity PUT NFV-MANO entity - Method not implemented - [Documentation] Test ID: 8.3.4.1.3 + [Documentation] Test ID: 8.3.1.1.3 ... Test title: PUT NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an NFV-MANO Entity. ... Pre-conditions: @@ -46,7 +46,7 @@ PUT NFV-MANO entity - Method not implemented Check HTTP Response Status Code Is 405 PATCH NFV-MANO entity - [Documentation] Test ID: 8.3.4.1.4 + [Documentation] Test ID: 8.3.1.1.4 ... Test title: PATCH NFV-MANO entity ... Test objective: This method modifies the NFV-MANO entity resource ... Pre-conditions: NFV-MANO entity resource is already created. @@ -59,7 +59,7 @@ PATCH NFV-MANO entity Check HTTP Response Body Json Schema Is ManoConfigModifications PATCH NFV-MANO entity - Conflict - [Documentation] Test ID: 8.3.4.1.5 + [Documentation] Test ID: 8.3.1.1.5 ... Test title: PATCH NFV-MANO entity - Conflict ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: NFV-MANO entity resource is already created. @@ -72,7 +72,7 @@ PATCH NFV-MANO entity - Conflict Check HTTP Response Body Json Schema Is ProblemDetails PATCH NFV-MANO entity - PreCondition Failed - [Documentation] Test ID: 8.3.4.1.6 + [Documentation] Test ID: 8.3.1.1.6 ... Test title: PATCH NFV-MANO entity - PreCondition Failed ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: NFV-MANO entity resource is already created. @@ -85,7 +85,7 @@ PATCH NFV-MANO entity - PreCondition Failed Check HTTP Response Body Json Schema Is ProblemDetails DELETE NFV-MANO entity - Method not implemented - [Documentation] Test ID: 8.3.4.1.7 + [Documentation] Test ID: 8.3.1.1.7 ... Test title: DELETE NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an NFV-MANO Entity. ... Pre-conditions: -- GitLab From 26c2a5be16d5e8cc61f2103ad5b85e11c0f11e72 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 12 Aug 2020 09:30:02 +0500 Subject: [PATCH 478/580] fixed TID mismatch in ChangeNFVMANOEntityStateTask.robot --- .../ChangeNFVMANOEntityStateTask.robot | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot index bc5062631..c1914e7c8 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot @@ -8,7 +8,7 @@ Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} Library MockServerLibrary *** Test Cases *** POST NFV-MANO functional entity application state change - [Documentation] Test ID: 8.3.4.2.1 + [Documentation] Test ID: 8.3.1.2.1 ... Test title: POST NFV-MANO functional entity application state change ... Test objective: The objective is to request state change of the NFV-MANO functional entity application. ... Pre-conditions: @@ -21,7 +21,7 @@ POST NFV-MANO functional entity application state change Check Operation Occurrence Id POST NFV-MANO functional entity application state change - Conflict - [Documentation] Test ID: 8.3.4.2.2 + [Documentation] Test ID: 8.3.1.2.2 ... Test title: POST NFV-MANO functional entity application state change - Conflict ... Test objective: The objective is to test that request to change the state of the NFV-MANO functional entity application failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: @@ -34,7 +34,7 @@ POST NFV-MANO functional entity application state change - Conflict Check HTTP Response Body Json Schema Is ProblemDetails GET NFV-MANO functional entity application state change - Method not implemented - [Documentation] Test ID: 8.3.4.2.3 + [Documentation] Test ID: 8.3.1.2.3 ... Test title: GET NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. ... Pre-conditions: @@ -46,7 +46,7 @@ GET NFV-MANO functional entity application state change - Method not implemented Check HTTP Response Status Code Is 405 PUT NFV-MANO functional entity application state change - Method not implemented - [Documentation] Test ID: 8.3.4.2.4 + [Documentation] Test ID: 8.3.1.2.4 ... Test title: PUT NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. ... Pre-conditions: @@ -58,7 +58,7 @@ PUT NFV-MANO functional entity application state change - Method not implemented Check HTTP Response Status Code Is 405 PATCH NFV-MANO functional entity application state change - Method not implemented - [Documentation] Test ID: 8.3.4.2.5 + [Documentation] Test ID: 8.3.1.2.5 ... Test title: PATCH NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. ... Pre-conditions: @@ -70,7 +70,7 @@ PATCH NFV-MANO functional entity application state change - Method not implement Check HTTP Response Status Code Is 405 DELETE NFV-MANO functional entity application state change - Method not implemented - [Documentation] Test ID: 8.3.4.2.6 + [Documentation] Test ID: 8.3.1.2.6 ... Test title: DELETE NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. ... Pre-conditions: -- GitLab From e2bbf4fcbdf75e36d4b2690c55c51848186e9988 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 12 Aug 2020 11:04:14 +0500 Subject: [PATCH 479/580] Added Test Cases for IndividualChangeStateOpperationOccurance.robot --- ...vidualStateChangeOpperationOccurance.robot | 70 +++++++++++++++++++ .../NFVMANOCimKeywords.robot | 41 +++++++++++ .../environment/variables.txt | 4 +- 3 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot new file mode 100644 index 000000000..765b7b866 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot @@ -0,0 +1,70 @@ +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST Individual Change State Operation Occurance - Method not implemented + [Documentation] Test ID: 8.3.1.4.1 + ... Test title: POST Individual Change State Operation Occurance - Method not implemented + ... Test objective: The objective is to test that POST method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.9.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Post request for Individual Change State Operation Occurance + Check HTTP Response Status Code Is 405 + +GET Individual Change State Operation Occurance + [Documentation] Test ID: 8.3.1.4.2 + ... Test title: GET Individual Change State Operation Occurance + ... Test objective: The objective is to query status information about Individual change state operation occurrences. + ... Pre-conditions: + ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Individual Change State OpOcc + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc + +PUT Individual Change State Operation Occurance - Method not implemented + [Documentation] Test ID: 8.3.1.4.3 + ... Test title: PUT Individual Change State Operation Occurance - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.9.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Put request for Individual Change State Operation Occurance + Check HTTP Response Status Code Is 405 + +PATCH Individual Change State Operation Occurance - Method not implemented + [Documentation] Test ID: 8.3.1.4.4 + ... Test title: PATCH Individual Change State Operation Occurance - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.9.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Patch request for Individual Change State Operation Occurance + Check HTTP Response Status Code Is 405 + +DELETE Individual Change State Operation Occurance - Method not implemented + [Documentation] Test ID: 8.3.1.4.5 + ... Test title: DELETE Individual Change State Operation Occurance - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.9.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Delete request for Individual Change State Operation Occurance + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 5e3d67847..2f849184d 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -213,3 +213,44 @@ Send DELETE request for Change State Operation Occurance Delete ${apiRoot}/${apiName}/${apiMajorVersion}/change_state_ops ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} + +Send Post request for Individual Change State Operation Occurance + 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}/change_state_ops/${changeStateOpOccId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Individual Change State OpOcc + Log Query to GET information about individual change state operation occurrences. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/change_state_ops/${changeStateOpOccId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send PUT request for Individual Change State Operation Occurance + 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}/change_state_ops/${changeStateOpOccId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send PATCH request for Individual Change State Operation Occurance + 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}/change_state_ops/${changeStateOpOccId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send DELETE request for Individual Change State Operation Occurance + 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}/change_state_ops/${changeStateOpOccId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt index f94eed9d7..c2f296e36 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt @@ -25,4 +25,6 @@ ${response} ${filter} ${filter_value} -${fields} \ No newline at end of file +${fields} + +${changeStateOpOccId} \ No newline at end of file -- GitLab From 7d8320f70a38e10ca0b5bc9d13f499e405c6325d Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 12 Aug 2020 12:46:12 +0500 Subject: [PATCH 480/580] Added Test Cases for NFVMANOServiceInterface.robot --- .../NFVMANOCimKeywords.robot | 90 +++++++++ .../NFVMANOServiceInterface.robot | 188 ++++++++++++++++++ 2 files changed, 278 insertions(+) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 2f849184d..461fa1fad 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -252,5 +252,95 @@ Send DELETE request for Individual Change State Operation Occurance Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/change_state_ops/${changeStateOpOccId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send Post request for NFV-MANO Serive Interface + 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}/mano_entity/mano_interfaces + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get NFV-MANO Serive Interface + Log Query to GET information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Get NFV-MANO Serive Interface with invalid filter + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces?attribute_not_exist=some_value + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Get NFV-MANO Serive Interface with invalid selector + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces?fields=wrong_field + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Get NFV-MANO Serive Interface with filter + Log Query information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity with attribute filters. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces?${filter}=${filter_value} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Get NFV-MANO Serive Interface with all_fields attribute selector + Log Queries information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, using all_fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get NFV-MANO Serive Interface with fields attribute selector + Log Queries information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get NFV-MANO Serive Interface with exclude_fields attribute selector + Log Queries information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces?exclude_fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PUT request for NFV-MANO Serive Interface + 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}/mano_entity/mano_interfaces + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send PATCH request for NFV-MANO Serive Interface + 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}/mano_entity/mano_interfaces + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send DELETE request for NFV-MANO Serive Interface + 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}/mano_entity/mano_interfaces ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot new file mode 100644 index 000000000..46fcf9102 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot @@ -0,0 +1,188 @@ +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST NFV-MANO Serive Interface - Method not implemented + [Documentation] Test ID: 8.3.1.5.1 + ... Test title: POST NFV-MANO Serive Interface - Method not implemented + ... Test objective: The objective is to test that POST method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.10.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Post request for NFV-MANO Serive Interface + Check HTTP Response Status Code Is 405 + +GET NFV-MANO Serive Interface + [Documentation] Test ID: 8.3.1.5.2 + ... Test title: GET NFV-MANO Serive Interface + ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity. + ... Pre-conditions: + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get NFV-MANO Serive Interface + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + +GET NFV-MANO Serive Interface - invalid attribute-based filter + [Documentation] Test ID: 8.3.1.5.3 + ... Test title: GET NFV-MANO Serive Interface - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of NFV-MANO Serive Interface fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get NFV-MANO Serive Interface with invalid filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET NFV-MANO Serive Interface - invalid attribute selector + [Documentation] Test ID: 8.3.1.5.4 + ... Test title: GET NFV-MANO Serive Interface - invalid attribute selector + ... Test objective: The objective is to test that the retrieval of NFV-MANO Serive Interface fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get NFV-MANO Serive Interface with invalid selector + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET NFV-MANO Serive Interface - Bad Request Response too Big + [Documentation] Test ID: 8.3.1.5.5 + ... Test title: GET NFV-MANO Serive Interface - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of NFV-MANO Serive Interface fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get NFV-MANO Serive Interface + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET NFV-MANO Serive Interface with attribute-based filter + [Documentation] Test ID: 8.3.1.5.6 + ... Test title: GET NFV-MANO Serive Interface with attribute-based filter + ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entities with attribute filters + ... Pre-conditions: + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get NFV-MANO Serive Interface with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + +GET NFV-MANO Serive Interface with "all_fields" attribute selector + [Documentation] Test ID: 8.3.1.5.7 + ... Test title: GET NFV-MANO Serive Interface with "all_fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Serive Interface with "all_fields" attribute selector + ... Pre-conditions: + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get NFV-MANO Serive Interface with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + +GET NFV-MANO Serive Interface with "exclude_default" attribute selector + [Documentation] Test ID: 8.3.1.5.8 + ... Test title: GET NFV-MANO Serive Interface with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Serive Interface with "exclude_default" attribute selector + ... Pre-conditions: + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get NFV-MANO Serive Interface with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + + +GET NFV-MANO Serive Interface with "fields" attribute selector + [Documentation] Test ID: 8.3.1.5.9 + ... Test title: GET NFV-MANO Serive Interface with "fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Serive Interface with fields attribute selector + ... Pre-conditions: + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get NFV-MANO Serive Interface with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + +GET NFV-MANO Serive Interface with "exclude_fields" attribute selector + [Documentation] Test ID: 8.3.1.5.10 + ... Test title: GET NFV-MANO Serive Interface with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Serive Interface with "exclude_fields" attribute selector + ... Pre-conditions: + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: none + Get NFV-MANO Serive Interface with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + +GET NFV-MANO Serive Interface with Paged Response + [Documentation] Test ID: 8.3.1.5.11 + ... Test title: GET NFV-MANO Serive Interface with Paged Response + ... Test objective: The objective is to query NFV-MANO Serive Interface to get Paged Response. + ... Pre-conditions: + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get NFV-MANO Serive Interface + Check HTTP Response Status Code Is 200 + Check LINK in Header + +PUT NFV-MANO Serive Interface - Method not implemented + [Documentation] Test ID: 8.3.1.5.12 + ... Test title: PUT NFV-MANO Serive Interface - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.10.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Put request for NFV-MANO Serive Interface + Check HTTP Response Status Code Is 405 + +PATCH NFV-MANO Serive Interface - Method not implemented + [Documentation] Test ID: 8.3.1.5.13 + ... Test title: PATCH NFV-MANO Serive Interface - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.10.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Patch request for NFV-MANO Serive Interface + Check HTTP Response Status Code Is 405 + +DELETE NFV-MANO Serive Interface - Method not implemented + [Documentation] Test ID: 8.3.1.5.14 + ... Test title: DELETE NFV-MANO Serive Interface - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.10.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Delete request for NFV-MANO Serive Interface + Check HTTP Response Status Code Is 405 \ No newline at end of file -- GitLab From 71a987da7cbef9b3aa66e444384be5ae6fd526c5 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 12 Aug 2020 17:00:24 +0500 Subject: [PATCH 481/580] Added Test Cases for IndividualNFVMANOServiceInterface.robot --- .../IndividualNFVMANOServiceInterface.robot | 97 ++++++++ .../NFVMANOCimKeywords.robot | 42 ++++ .../environment/variables.txt | 4 +- ...noServiceInterfaceModificationRequest.json | 3 + .../schemas/ManoServiceInterface.json | 215 +++++++++++++++++ .../ManoServiceInterfaceModifications.json | 105 +++++++++ .../schemas/ManoServiceInterfaces.json | 218 ++++++++++++++++++ 7 files changed, 683 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ManoServiceInterfaceModificationRequest.json create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoServiceInterface.json create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoServiceInterfaceModifications.json create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoServiceInterfaces.json diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot new file mode 100644 index 000000000..f5815448d --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot @@ -0,0 +1,97 @@ +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST Individual NFV-MANO Serive Interface - Method not implemented + [Documentation] Test ID: 8.3.1.6.1 + ... Test title: POST Individual NFV-MANO Serive Interface - Method not implemented + ... Test objective: The objective is to test that POST method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.11.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Post request for Individual NFV-MANO Serive Interface + Check HTTP Response Status Code Is 405 + +GET Individual NFV-MANO Serive Interface + [Documentation] Test ID: 8.3.1.6.2 + ... Test title: GET Individual NFV-MANO Serive Interface + ... Test objective: The objective is to query status information about an NFV-MANO service interface of the producer NFV-MANO functional entity by reading an "Individual NFV-MANO service interface" resource. + ... Pre-conditions: + ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Individual NFV-MANO Serive Interface + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterface + +PUT Individual NFV-MANO Serive Interface - Method not implemented + [Documentation] Test ID: 8.3.1.6.3 + ... Test title: PUT Individual NFV-MANO Serive Interface - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.11.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Put request for Individual NFV-MANO Serive Interface + Check HTTP Response Status Code Is 405 + +PATCH Individual NFV-MANO Serive Interface + [Documentation] Test ID: 8.3.1.6.4 + ... Test title: PATCH Individual NFV-MANO Serive Interface + ... Test objective: This method modifies the Individual NFV-MANO Serive Interface resource + ... Pre-conditions: Individual NFV-MANO Serive Interface resource is already created. + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Individual NFV-MANO Serive Interface is modified by the operation + Send Patch request for Individual NFV-MANO Serive Interface + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaceModifications + +PATCH Individual NFV-MANO Serive Interface - Conflict + [Documentation] Test ID: 8.3.1.6.5 + ... Test title: PATCH Individual NFV-MANO Serive Interface - Conflict + ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Serive Interface resource failed due to a conflict with the state of the Individual NFV-MANO Serive Interface resource and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: Individual NFV-MANO Serive Interface resource is already created. + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Individual NFV-MANO Serive Interface is not modified by the operation + Send Patch request for Individual NFV-MANO Serive Interface + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +PATCH Individual NFV-MANO Serive Interface - PreCondition Failed + [Documentation] Test ID: 8.3.1.6.6 + ... Test title: PATCH Individual NFV-MANO Serive Interface - PreCondition Failed + ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Serive Interface resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: Individual NFV-MANO Serive Interface resource is already created. + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Individual NFV-MANO Serive Interface is not modified by the operation + Send Patch request for Individual NFV-MANO Serive Interface + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails + +DELETE Individual NFV-MANO Serive Interface - Method not implemented + [Documentation] Test ID: 8.3.1.6.7 + ... Test title: DELETE Individual NFV-MANO Serive Interface - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.11.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Delete request for Individual NFV-MANO Serive Interface + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 461fa1fad..b5479c3f8 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -342,5 +342,47 @@ Send DELETE request for NFV-MANO Serive Interface Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send Post request for Individual NFV-MANO Serive Interface + 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}/mano_entity/mano_interfaces/${manoServiceInterfaceId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Individual NFV-MANO Serive Interface + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces/${manoServiceInterfaceId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send Put request for Individual NFV-MANO Serive Interface + 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}/mano_entity/mano_interfaces/${manoServiceInterfaceId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send Patch request for Individual NFV-MANO Serive Interface + log Trying to modify an NFV-MANO Entity + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/ManoServiceInterfaceModificationRequest.json + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces/${manoServiceInterfaceId} ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send Delete request for Individual NFV-MANO Serive Interface + 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}/mano_entity/mano_interfaces/${manoServiceInterfaceId} ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt index c2f296e36..709f9421e 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt @@ -27,4 +27,6 @@ ${filter_value} ${fields} -${changeStateOpOccId} \ No newline at end of file +${changeStateOpOccId} + +${manoServiceInterfaceId} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ManoServiceInterfaceModificationRequest.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ManoServiceInterfaceModificationRequest.json new file mode 100644 index 000000000..1b080e7cd --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ManoServiceInterfaceModificationRequest.json @@ -0,0 +1,3 @@ +{ + "name": "ManoServiceInterfaceModificationRequest" +} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoServiceInterface.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoServiceInterface.json new file mode 100644 index 000000000..16b7cc3fe --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoServiceInterface.json @@ -0,0 +1,215 @@ +{ + "description": "This type represents an individual NFV-MANO service interface produced by an NFV-MANO functional entity. \n", + "type": "object", + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + }, + "name": { + "description": "Human-readable name of the NFV-MANO functional entity interface.\nThis attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "type": { + "description": "Type of the NFV-MANO service interface produced by the NFV-MANO functional entity. Valid values are defined in clause 5.6.4.3.\n", + "type": "string" + }, + "standardVersion": { + "description": "A version.\n", + "type": "string" + }, + "providerSpecificApiVersion": { + "description": "A version.\n", + "type": "string" + }, + "apiVersion": { + "description": "A version.\n", + "type": "string" + }, + "apiEndpoint": { + "description": "Exposed API endpoint of the interface.\n", + "type": "object", + "properties": { + "apiRoot": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "apiName": { + "description": "Indicates the interface name in an abbreviated form. Shall be present for ETSI NFV specified RESTful NFV-MANO APIs. The {apiName} of each interface is defined in the standard the interface is compliant to (see also clause 4.1 of ETSI GS NFV-SOL 013). May be present otherwise.\n", + "type": "string" + }, + "apiMajorVersion": { + "description": "Indicates the current major version of the API. Shall be present for ETSI NFV specified RESTful NFV-MANO APIs. The major version is defined in the standard the interface is compliant to (see also clause 4.1 of ETSI GS NFV-SOL 013). May be present otherwise.\n", + "type": "string" + }, + "apiUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + }, + "required": [ + "apiUri" + ] + }, + "maxConcurrentIntOpNumber": { + "description": "Maximum number of concurrent operation requests supported on this interface. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n", + "type": "integer" + }, + "supportedOperations": { + "description": "Information about supported operations of this interface.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "operationName": { + "description": "Name of the operation supported on the interface.\n", + "type": "string" + }, + "maxConcurrentOpNumber": { + "description": "Maximum number of concurrent requests supported by the interface operation. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n", + "type": "integer" + } + }, + "required": [ + "operationName" + ] + }, + "minItems": 1 + }, + "interfaceState": { + "description": "State of the NFV-MANO service interface.\n", + "properties": { + "operationalState": { + "description": "The enumeration InterfaceOperationalStateEnumType defines values representing the operational state of an NFV-MANO service interface type of managed entity. The InterfaceOperationalStateEnumType shall comply with the provisions :\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED", + "STOPPING", + "STARTING" + ] + }, + "administrativeState": { + "description": "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n", + "type": "string", + "enum": [ + "LOCKED", + "UNLOCKED", + "LOCKING" + ] + }, + "usageState": { + "description": "The enumeration UsageStateEnumType defines values representing the usage state of a managed entity. The UsageStateEnumType shall comply with the provisions:\n - IN_USE\tThe managed entity is currently being used.\n - NOT_IN_USE\tThe managed entity is currently not being used.\n", + "type": "string", + "enum": [ + "IN_USE", + "NOT_IN_USE" + ] + } + }, + "required": [ + "operationalState", + "administrativeState", + "usageState" + ] + }, + "securityInfo": { + "description": "This type represents security related information of an NFV-MANO service interface produced by an NFV-MANO functional entity. \n", + "type": "object", + "properties": { + "authType": { + "description": "Type of API request authorization to be used by the API producer.\nThe support of authorization methods for the API producer is specified in clause 8.3.6 of ETSI GS NFV-SOL 013.\nPermitted values:\n - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246.\n - OAUTH2: Using access token, as defined by the OAuth 2.0 specification \n in IETF RFC 6749. \n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "TLS_TUNNEL", + "OAUTH2" + ] + }, + "minItems": 1 + }, + "oauthServerInfo": { + "description": "OAuth 2.0 authorization server information and configuration.\n", + "type": "object", + "properties": { + "dynamicDiscovery": { + "description": "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n", + "type": "object", + "properties": { + "webFingerHost": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + }, + "required": [ + "webFingerHost" + ] + }, + "providedConfiguration": { + "description": "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n", + "type": "object", + "properties": { + "authServerId": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + }, + "required": [ + "authServerId" + ] + }, + "tlsCipherSuites": { + "description": "List of cipher suites that shall be declared as supported by the API producer when performing the SSL or TLS negotiation with the authorization server. Valid values of cipher suites are defined in IETF RFC 8447.\n", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "required": [ + "providedConfiguration", + "tlsCipherSuites" + ] + }, + "tlsTunnelInfo": { + "description": "Information and configuration related to the use of TLS tunnel. Shall be present if authType contains \"TLS_TUNNEL\".\n", + "type": "object", + "properties": { + "tlsTunnelCipherSuites": { + "description": "List of cipher suites that shall be declared as supported by the API producer when performing the SSL or TLS negotiation with the API client. Valid values of cipher suites are defined in IETF RFC 8447.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "required": [ + "tlsTunnelCipherSuites" + ] + } + }, + "required": [ + "authType", + "oauthServerInfo" + ] + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + }, + "required": [ + "id", + "name", + "type", + "standardVersion", + "providerSpecificApiVersion", + "apiVersion", + "apiEndpoint", + "supportedOperations", + "interfaceState" + ] + } \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoServiceInterfaceModifications.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoServiceInterfaceModifications.json new file mode 100644 index 000000000..080fc11f2 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoServiceInterfaceModifications.json @@ -0,0 +1,105 @@ +{ + "description": "This type represents attribute modifications that were performed on an Individual NFV-MANO service interface\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"ManoServiceInterfaceModificationRequest\" data structure. If applicable, additional attributes of the \"ManoServiceInterface\" data structure that were modified implicitly shall also be provided. \n", + "type": "object", + "properties": { + "name": { + "description": "If present, this attribute signals modifications of the \"name\" attribute in \"ManoServiceInterface\", as defined in clause 5.6.2.11.\n", + "type": "string" + }, + "apiRoot": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "apiUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "securityInfo": { + "description": "This type represents security related information of an NFV-MANO service interface produced by an NFV-MANO functional entity. \n", + "type": "object", + "properties": { + "authType": { + "description": "Type of API request authorization to be used by the API producer.\nThe support of authorization methods for the API producer is specified in clause 8.3.6 of ETSI GS NFV-SOL 013.\nPermitted values:\n - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246.\n - OAUTH2: Using access token, as defined by the OAuth 2.0 specification \n in IETF RFC 6749. \n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "TLS_TUNNEL", + "OAUTH2" + ] + }, + "minItems": 1 + }, + "oauthServerInfo": { + "description": "OAuth 2.0 authorization server information and configuration.\n", + "type": "object", + "properties": { + "dynamicDiscovery": { + "description": "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n", + "type": "object", + "properties": { + "webFingerHost": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + }, + "required": [ + "webFingerHost" + ] + }, + "providedConfiguration": { + "description": "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n", + "type": "object", + "properties": { + "authServerId": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + }, + "required": [ + "authServerId" + ] + }, + "tlsCipherSuites": { + "description": "List of cipher suites that shall be declared as supported by the API producer when performing the SSL or TLS negotiation with the authorization server. Valid values of cipher suites are defined in IETF RFC 8447.\n", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "required": [ + "providedConfiguration", + "tlsCipherSuites" + ] + }, + "tlsTunnelInfo": { + "description": "Information and configuration related to the use of TLS tunnel. Shall be present if authType contains \"TLS_TUNNEL\".\n", + "type": "object", + "properties": { + "tlsTunnelCipherSuites": { + "description": "List of cipher suites that shall be declared as supported by the API producer when performing the SSL or TLS negotiation with the API client. Valid values of cipher suites are defined in IETF RFC 8447.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "required": [ + "tlsTunnelCipherSuites" + ] + } + }, + "required": [ + "authType", + "oauthServerInfo" + ] + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoServiceInterfaces.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoServiceInterfaces.json new file mode 100644 index 000000000..ad71446bf --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoServiceInterfaces.json @@ -0,0 +1,218 @@ +{ "type": "array", + "items": { + "description": "This type represents an individual NFV-MANO service interface produced by an NFV-MANO functional entity. \n", + "type": "object", + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + }, + "name": { + "description": "Human-readable name of the NFV-MANO functional entity interface.\nThis attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "type": { + "description": "Type of the NFV-MANO service interface produced by the NFV-MANO functional entity. Valid values are defined in clause 5.6.4.3.\n", + "type": "string" + }, + "standardVersion": { + "description": "A version.\n", + "type": "string" + }, + "providerSpecificApiVersion": { + "description": "A version.\n", + "type": "string" + }, + "apiVersion": { + "description": "A version.\n", + "type": "string" + }, + "apiEndpoint": { + "description": "Exposed API endpoint of the interface.\n", + "type": "object", + "properties": { + "apiRoot": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "apiName": { + "description": "Indicates the interface name in an abbreviated form. Shall be present for ETSI NFV specified RESTful NFV-MANO APIs. The {apiName} of each interface is defined in the standard the interface is compliant to (see also clause 4.1 of ETSI GS NFV-SOL 013). May be present otherwise.\n", + "type": "string" + }, + "apiMajorVersion": { + "description": "Indicates the current major version of the API. Shall be present for ETSI NFV specified RESTful NFV-MANO APIs. The major version is defined in the standard the interface is compliant to (see also clause 4.1 of ETSI GS NFV-SOL 013). May be present otherwise.\n", + "type": "string" + }, + "apiUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + }, + "required": [ + "apiUri" + ] + }, + "maxConcurrentIntOpNumber": { + "description": "Maximum number of concurrent operation requests supported on this interface. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n", + "type": "integer" + }, + "supportedOperations": { + "description": "Information about supported operations of this interface.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "operationName": { + "description": "Name of the operation supported on the interface.\n", + "type": "string" + }, + "maxConcurrentOpNumber": { + "description": "Maximum number of concurrent requests supported by the interface operation. \nNOTE:\tIf this attribute is not present, the value of this parameter is undefined. Overload is handled by the error handling schemes defined by the applicable API specification.\n", + "type": "integer" + } + }, + "required": [ + "operationName" + ] + }, + "minItems": 1 + }, + "interfaceState": { + "description": "State of the NFV-MANO service interface.\n", + "properties": { + "operationalState": { + "description": "The enumeration InterfaceOperationalStateEnumType defines values representing the operational state of an NFV-MANO service interface type of managed entity. The InterfaceOperationalStateEnumType shall comply with the provisions :\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED", + "STOPPING", + "STARTING" + ] + }, + "administrativeState": { + "description": "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n", + "type": "string", + "enum": [ + "LOCKED", + "UNLOCKED", + "LOCKING" + ] + }, + "usageState": { + "description": "The enumeration UsageStateEnumType defines values representing the usage state of a managed entity. The UsageStateEnumType shall comply with the provisions:\n - IN_USE\tThe managed entity is currently being used.\n - NOT_IN_USE\tThe managed entity is currently not being used.\n", + "type": "string", + "enum": [ + "IN_USE", + "NOT_IN_USE" + ] + } + }, + "required": [ + "operationalState", + "administrativeState", + "usageState" + ] + }, + "securityInfo": { + "description": "This type represents security related information of an NFV-MANO service interface produced by an NFV-MANO functional entity. \n", + "type": "object", + "properties": { + "authType": { + "description": "Type of API request authorization to be used by the API producer.\nThe support of authorization methods for the API producer is specified in clause 8.3.6 of ETSI GS NFV-SOL 013.\nPermitted values:\n - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246.\n - OAUTH2: Using access token, as defined by the OAuth 2.0 specification \n in IETF RFC 6749. \n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "TLS_TUNNEL", + "OAUTH2" + ] + }, + "minItems": 1 + }, + "oauthServerInfo": { + "description": "OAuth 2.0 authorization server information and configuration.\n", + "type": "object", + "properties": { + "dynamicDiscovery": { + "description": "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n", + "type": "object", + "properties": { + "webFingerHost": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + }, + "required": [ + "webFingerHost" + ] + }, + "providedConfiguration": { + "description": "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n", + "type": "object", + "properties": { + "authServerId": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + }, + "required": [ + "authServerId" + ] + }, + "tlsCipherSuites": { + "description": "List of cipher suites that shall be declared as supported by the API producer when performing the SSL or TLS negotiation with the authorization server. Valid values of cipher suites are defined in IETF RFC 8447.\n", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "required": [ + "providedConfiguration", + "tlsCipherSuites" + ] + }, + "tlsTunnelInfo": { + "description": "Information and configuration related to the use of TLS tunnel. Shall be present if authType contains \"TLS_TUNNEL\".\n", + "type": "object", + "properties": { + "tlsTunnelCipherSuites": { + "description": "List of cipher suites that shall be declared as supported by the API producer when performing the SSL or TLS negotiation with the API client. Valid values of cipher suites are defined in IETF RFC 8447.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "required": [ + "tlsTunnelCipherSuites" + ] + } + }, + "required": [ + "authType", + "oauthServerInfo" + ] + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + }, + "required": [ + "id", + "name", + "type", + "standardVersion", + "providerSpecificApiVersion", + "apiVersion", + "apiEndpoint", + "supportedOperations", + "interfaceState" + ] + } + +} \ No newline at end of file -- GitLab From 5dd701d97f659c315e27d5f0d41dcbd558eb6a21 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 13 Aug 2020 09:58:40 +0500 Subject: [PATCH 482/580] Added Test Cases for ChangeInterfaceStateTask.robot --- .../ChangeInterfaceStateTask.robot | 83 +++++++++++++++++++ .../NFVMANOCimKeywords.robot | 45 +++++++++- 2 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot new file mode 100644 index 000000000..62b638355 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot @@ -0,0 +1,83 @@ +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST Change interface state task + [Documentation] Test ID: 8.3.1.7.1 + ... Test title: POST Change interface state task + ... Test objective: The objective is send put request to change the state of the NFV-MANO service interface produced by the NFV-MANO functional entity + ... Pre-conditions: + ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Post request for Change interface state task + Check HTTP Response Status Code Is 202 + Check Operation Occurrence Id + +POST Change interface state task - Conflict + [Documentation] Test ID: 8.3.1.7.2 + ... Test title: POST Change interface state task - Conflict + ... Test objective: The objective is to test that request to cchange the state of the NFV-MANO service interface produced by the NFV-MANO functional entity failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: + ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Post request for Change interface state task + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Change interface state task - Conflict - Method not implemented + [Documentation] Test ID: 8.3.1.7.3 + ... Test title: GET Change interface state task - Conflict - Method not implemented + ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: + ... Reference: clause 5.5.12.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Get request for Change interface state task + Check HTTP Response Status Code Is 405 + +PUT Change interface state task - Conflict - Method not implemented + [Documentation] Test ID: 8.3.1.7.4 + ... Test title: PUT Change interface state task - Conflict - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: + ... Reference: clause 5.5.12.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Put request for Change interface state task + Check HTTP Response Status Code Is 405 + +PATCH Change interface state task - Conflict - Method not implemented + [Documentation] Test ID: 8.3.1.7.5 + ... Test title: PATCH Change interface state task - Conflict - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: + ... Reference: clause 5.5.12.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Patch request for Change interface state task + Check HTTP Response Status Code Is 405 + +DELETE Change interface state task - Conflict - Method not implemented + [Documentation] Test ID: 8.3.1.7.6 + ... Test title: DELETE Change interface state task - Conflict - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: + ... Reference: clause 5.5.12.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Delete request for Change interface state task + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index b5479c3f8..ba2e36482 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -385,4 +385,47 @@ Send Delete request for Individual NFV-MANO Serive Interface Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces/${manoServiceInterfaceId} ${outputResponse}= Output response - Set Global Variable @{response} ${outputResponse} \ No newline at end of file + Set Global Variable @{response} ${outputResponse} + +Send Post request for Change interface state task + Log Trying to perform a POST for Change interface state task + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces/${manoServiceInterfaceId}/change_state + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Get request for Change interface state task + Log Trying to perform a GET (method should not be implemented) + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces/${manoServiceInterfaceId}/change_state + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Put request for Change interface state task + 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}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces/${manoServiceInterfaceId}/change_state + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces/${manoServiceInterfaceId}/change_state + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch request for Change interface state task + 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}/mano_entity/mano_interfaces/${manoServiceInterfaceId}/change_state + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for Change interface state task + 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}//mano_entity/mano_interfaces/${manoServiceInterfaceId}/change_state + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file -- GitLab From 59d75b3069be98a1e68a01d05baf4dfdc381282b Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 13 Aug 2020 10:47:11 +0500 Subject: [PATCH 483/580] Added Test Cases for PeerEntities.robot --- .../NFVMANOCimKeywords.robot | 96 +++++++- .../PeerEntities.robot | 190 ++++++++++++++++ .../jsons/CreatePeerEntityRequest.json | 5 + .../schemas/PeerEntities.json | 215 ++++++++++++++++++ .../schemas/PeerEntity.json | 212 +++++++++++++++++ 5 files changed, 716 insertions(+), 2 deletions(-) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CreatePeerEntityRequest.json create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/PeerEntities.json create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/PeerEntity.json diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index ba2e36482..0f6997096 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -391,7 +391,8 @@ Send Post request for Change interface state task Log Trying to perform a POST for Change interface state task Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces/${manoServiceInterfaceId}/change_state + ${body}= Get File jsons/ManoConfigModificationRequest.json + POST ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces/${manoServiceInterfaceId}/change_state ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -428,4 +429,95 @@ Send Delete request for Change interface state task Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}//mano_entity/mano_interfaces/${manoServiceInterfaceId}/change_state ${output}= Output response - Set Suite Variable ${response} ${output} \ No newline at end of file + Set Suite Variable ${response} ${output} + +Send Post request for Peer Entity + Log Trying to perform a POST for Peer Entity + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body}= Get File jsons/CreatePeerEntityRequest.json + POST ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Peer Entity + Log Query to GET information about multiple peer entities. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Get Peer Entity with invalid filter + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities?attribute_not_exist=some_value + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Get Peer Entity with invalid selector + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities?fields=wrong_field + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Get Peer Entity with filter + Log Query information about multiple peer entities with attribute filters. + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities?${filter}=${filter_value} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Get Peer Entity with all_fields attribute selector + Log Queries information about multiple peer entities, using all_fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Peer Entity with fields attribute selector + Log Queries information about multiple peer entities, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Peer Entity with exclude_fields attribute selector + Log Queries information about multiple peer entities, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities?exclude_fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send PUT request for Peer Entity + 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}/peer_entities + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send PATCH request for Peer Entity + 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}/peer_entities + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send DELETE request for Peer Entity + 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}/peer_entities + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot new file mode 100644 index 000000000..e40ee058a --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot @@ -0,0 +1,190 @@ +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST Peer Entity + [Documentation] Test ID: 8.3.1.8.1 + ... Test title: POST Peer Entity + ... Test objective: The objective is to creates in the producer NFV-MANO functional entity a new peer entity resource which contains configuration and information with regards to the peer functional entity. + ... Pre-conditions: + ... Reference: clause 5.5.13.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Post request for Peer Entity + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PeerEntity + Check Operation Occurrence Id + +GET Peer Entity + [Documentation] Test ID: 8.3.1.8.2 + ... Test title: GET Peer Entity + ... Test objective: The objective is to queries information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Peer Entity + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + +GET Peer Entity - invalid attribute-based filter + [Documentation] Test ID: 8.3.1.8.3 + ... Test title: GET Peer Entity - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Peer Entity with invalid filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Peer Entity - invalid attribute selector + [Documentation] Test ID: 8.3.1.8.4 + ... Test title: GET Peer Entity - invalid attribute selector + ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Peer Entity with invalid selector + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Peer Entity - Bad Request Response too Big + [Documentation] Test ID: 8.3.1.8.5 + ... Test title: GET Peer Entity - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Peer Entity + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Peer Entity with attribute-based filter + [Documentation] Test ID: 8.3.1.8.6 + ... Test title: GET Peer Entity with attribute-based filter + ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with attribute filters + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Peer Entity with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + +GET Peer Entity with "all_fields" attribute selector + [Documentation] Test ID: 8.3.1.8.7 + ... Test title: GET Peer Entity with "all_fields" attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "all_fields" attribute selector + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Peer Entity with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + +GET Peer Entity with "exclude_default" attribute selector + [Documentation] Test ID: 8.3.1.8.8 + ... Test title: GET Peer Entity with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_default" attribute selector + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Peer Entity with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + + +GET Peer Entity with "fields" attribute selector + [Documentation] Test ID: 8.3.1.8.9 + ... Test title: GET Peer Entity with "fields" attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with fields attribute selector + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Peer Entity with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + +GET Peer Entity with "exclude_fields" attribute selector + [Documentation] Test ID: 8.3.1.8.10 + ... Test title: GET Peer Entity with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_fields" attribute selector + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: none + Get Peer Entity with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + +GET Peer Entity with Paged Response + [Documentation] Test ID: 8.3.1.8.11 + ... Test title: GET Peer Entity with Paged Response + ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities to get Paged Response. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Peer Entity + Check HTTP Response Status Code Is 200 + Check LINK in Header + +PUT Peer Entity - Method not implemented + [Documentation] Test ID: 8.3.1.8.12 + ... Test title: PUT Peer Entity - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.13.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Put request for Peer Entity + Check HTTP Response Status Code Is 405 + +PATCH Peer Entity - Method not implemented + [Documentation] Test ID: 8.3.1.8.13 + ... Test title: PATCH Peer Entity - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.13.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Patch request for Peer Entity + Check HTTP Response Status Code Is 405 + +DELETE Peer Entity - Method not implemented + [Documentation] Test ID: 8.3.1.8.14 + ... Test title: DELETE Peer Entity - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.13.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Delete request for Peer Entity + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CreatePeerEntityRequest.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CreatePeerEntityRequest.json new file mode 100644 index 000000000..baa48b7e2 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CreatePeerEntityRequest.json @@ -0,0 +1,5 @@ +{ + "peerEntityId": "", + "name": "NFV-MANO Entity", + "type": "NFVO" +} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/PeerEntities.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/PeerEntities.json new file mode 100644 index 000000000..c7e85d04b --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/PeerEntities.json @@ -0,0 +1,215 @@ +{ "type": "array", + "items": { + "description": "This type represents an individual peer entity. \n", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "peerEntityId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human-readable name of the peer functional entity.\nThis attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "type": { + "description": "The enumeration PeerEntityEnumType defines the permitted values to represent peer functional entities. it shall complains with the provisions : - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t The peer functional entity is a VIM. - WIM\t The peer functional entity is a WIM. - EM\t The peer functional entity is an EM. - OSS\t The peer functional entity is an OSS/BSS.\n", + "type": "string", + "enum": [ + "NFVO", + "VNFM", + "VIM", + "WIM", + "EM", + "OSS" + ] + }, + "description": { + "description": "Human-readable description of the peer functional entity.\nThis attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "consumedManoInterfaces": { + "description": "Information of the interface consumed by the NFV-MANO functional entity from the peer functional entity.\nThis attribute can be modified with the PATCH method.\n", + "type": "array", + "items": { + "description": "This type represents an interface consumed by the producer NFV MANO functional entity from another peer functional entity. \n", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human-readable name of the NFV-MANO interface.\n", + "type": "string" + }, + "type": { + "description": "Type of the NFV-MANO service interface consumed by the NFV-MANO functional entity. Valid values are defined in clause 5.6.4.3.\n", + "type": "string" + }, + "standardVersion": { + "description": "A version.\n", + "type": "string" + }, + "apiVersion": { + "description": "A version.\n", + "type": "string" + }, + "apiEndpoint": { + "description": "Consumable API endpoint of the interface. It provides the information relevant about the protocol, host and port, and path where the interface API can be accessed.\n", + "type": "object", + "properties": { + "apiRoot": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "apiName": { + "description": "Indicates the interface name in an abbreviated form. Shall be present for ETSI NFV specified RESTful NFV-MANO APIs. The {apiName} of each interface is defined in the standard the interface is compliant to (see also clause 4.1 of ETSI GS NFV-SOL 013). May be present otherwise.\n", + "type": "string" + }, + "apiMajorVersion": { + "description": "Indicates the current major version of the API. Shall be present for ETSI NFV specified RESTful NFV-MANO APIs. The major version is defined in the standard the interface is compliant to (see also clause 4.1 of ETSI GS NFV-SOL 013). May be present otherwise.\n", + "type": "string" + }, + "apiUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + }, + "required": [ + "apiUri" + ] + }, + "securityInfo": { + "description": "This type represents security related information for accessing an NFV-MANO service interface produced by an NFV-MANO functional entity.\n", + "type": "object", + "required": [ + "authType", + "oauthServerInfo" + ], + "properties": { + "authType": { + "description": "Type of API request authorization to be used by the API consumer accessing the API.\nThe support of authorization methods for the API consumer is specified in clause 8.3.6 of ETSI GS NFV-SOL 013.\nPermitted values: - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: Using access token, as defined by the OAuth 2.0 specification in IETF RFC 6749. \n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "TLS_TUNNEL", + "OAUTH2" + ] + }, + "minItems": 1 + }, + "oauthServerInfo": { + "description": "OAuth 2.0 authorization server information and configuration.\n", + "type": "object", + "properties": { + "dynamicDiscovery": { + "description": "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n", + "type": "object", + "required": [ + "webFingerHost" + ], + "properties": { + "webFingerHost": { + "description": "Server where the WebFinger service is hosted. When used, the request to the WebFinger resource shall conform as specified in clause 5.1.3 of ETSI GS NFV-SEC 022.\n", + "type": "string", + "format": "uri" + } + } + }, + "providedConfiguration": { + "description": "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n", + "type": "object", + "required": [ + "authServerId" + ], + "properties": { + "authServerId": { + "description": "Authorization server identifier as defined in ETSI GS NFV-SEC 022.\n", + "type": "string", + "format": "uri" + } + } + }, + "tlsCipherSuites": { + "description": "List of cipher suites that shall be declared as supported by the API consumer when performing the SSL or TLS negotiation with the authorization server. Valid values of cipher suites are defined in IETF RFC 8447.\n", + "type": "array", + "items": { + "type": "string", + "minItems": 1 + } + } + } + }, + "tlsTunnelInfo": { + "description": "Information and configuration related to the use of TLS tunnel. Shall be present if authType contains \"TLS_TUNNEL\".\n", + "type": "object", + "properties": { + "tlsTunnelCipherSuites": { + "description": "List of cipher suites that shall be declared as supported by the API consumer when performing the SSL or TLS negotiation with the API producer. Valid values of cipher suites are defined in IETF RFC 8447.\n", + "type": "array", + "items": { + "type": "string", + "minItems": 1 + } + } + } + } + } + } + }, + "required": [ + "id", + "name", + "type", + "standardVersion", + "apiVersion", + "apiEndpoint" + ] + } + }, + "peerEntityState": { + "description": "State of the peer functional entity as provided by the API consumer when creating the resource or when updating it with the PATCH method.\n", + "type": "object", + "properties": { + "operationalState": { + "description": "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED", + "STOPPING", + "STARTING", + "RESTARTING" + ] + }, + "administrativeState": { + "description": "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n", + "type": "string", + "enum": [ + "LOCKED", + "UNLOCKED", + "LOCKING" + ] + } + }, + "required": [ + "operationalState", + "administrativeState" + ] + } + }, + "required": [ + "id", + "peerEntityId", + "name", + "type", + "peerEntityState" + ] + } + +} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/PeerEntity.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/PeerEntity.json new file mode 100644 index 000000000..cbf0cbe24 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/PeerEntity.json @@ -0,0 +1,212 @@ +{ + "description": "This type represents an individual peer entity. \n", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "peerEntityId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human-readable name of the peer functional entity.\nThis attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "type": { + "description": "The enumeration PeerEntityEnumType defines the permitted values to represent peer functional entities. it shall complains with the provisions : - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t The peer functional entity is a VIM. - WIM\t The peer functional entity is a WIM. - EM\t The peer functional entity is an EM. - OSS\t The peer functional entity is an OSS/BSS.\n", + "type": "string", + "enum": [ + "NFVO", + "VNFM", + "VIM", + "WIM", + "EM", + "OSS" + ] + }, + "description": { + "description": "Human-readable description of the peer functional entity.\nThis attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "consumedManoInterfaces": { + "description": "Information of the interface consumed by the NFV-MANO functional entity from the peer functional entity.\nThis attribute can be modified with the PATCH method.\n", + "type": "array", + "items": { + "description": "This type represents an interface consumed by the producer NFV MANO functional entity from another peer functional entity. \n", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human-readable name of the NFV-MANO interface.\n", + "type": "string" + }, + "type": { + "description": "Type of the NFV-MANO service interface consumed by the NFV-MANO functional entity. Valid values are defined in clause 5.6.4.3.\n", + "type": "string" + }, + "standardVersion": { + "description": "A version.\n", + "type": "string" + }, + "apiVersion": { + "description": "A version.\n", + "type": "string" + }, + "apiEndpoint": { + "description": "Consumable API endpoint of the interface. It provides the information relevant about the protocol, host and port, and path where the interface API can be accessed.\n", + "type": "object", + "properties": { + "apiRoot": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "apiName": { + "description": "Indicates the interface name in an abbreviated form. Shall be present for ETSI NFV specified RESTful NFV-MANO APIs. The {apiName} of each interface is defined in the standard the interface is compliant to (see also clause 4.1 of ETSI GS NFV-SOL 013). May be present otherwise.\n", + "type": "string" + }, + "apiMajorVersion": { + "description": "Indicates the current major version of the API. Shall be present for ETSI NFV specified RESTful NFV-MANO APIs. The major version is defined in the standard the interface is compliant to (see also clause 4.1 of ETSI GS NFV-SOL 013). May be present otherwise.\n", + "type": "string" + }, + "apiUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + }, + "required": [ + "apiUri" + ] + }, + "securityInfo": { + "description": "This type represents security related information for accessing an NFV-MANO service interface produced by an NFV-MANO functional entity.\n", + "type": "object", + "required": [ + "authType", + "oauthServerInfo" + ], + "properties": { + "authType": { + "description": "Type of API request authorization to be used by the API consumer accessing the API.\nThe support of authorization methods for the API consumer is specified in clause 8.3.6 of ETSI GS NFV-SOL 013.\nPermitted values: - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: Using access token, as defined by the OAuth 2.0 specification in IETF RFC 6749. \n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "TLS_TUNNEL", + "OAUTH2" + ] + }, + "minItems": 1 + }, + "oauthServerInfo": { + "description": "OAuth 2.0 authorization server information and configuration.\n", + "type": "object", + "properties": { + "dynamicDiscovery": { + "description": "Configuration data used when performing dynamic discovery of the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n", + "type": "object", + "required": [ + "webFingerHost" + ], + "properties": { + "webFingerHost": { + "description": "Server where the WebFinger service is hosted. When used, the request to the WebFinger resource shall conform as specified in clause 5.1.3 of ETSI GS NFV-SEC 022.\n", + "type": "string", + "format": "uri" + } + } + }, + "providedConfiguration": { + "description": "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information and configuration shall be supported, and dynamic configuration may be supported.\n", + "type": "object", + "required": [ + "authServerId" + ], + "properties": { + "authServerId": { + "description": "Authorization server identifier as defined in ETSI GS NFV-SEC 022.\n", + "type": "string", + "format": "uri" + } + } + }, + "tlsCipherSuites": { + "description": "List of cipher suites that shall be declared as supported by the API consumer when performing the SSL or TLS negotiation with the authorization server. Valid values of cipher suites are defined in IETF RFC 8447.\n", + "type": "array", + "items": { + "type": "string", + "minItems": 1 + } + } + } + }, + "tlsTunnelInfo": { + "description": "Information and configuration related to the use of TLS tunnel. Shall be present if authType contains \"TLS_TUNNEL\".\n", + "type": "object", + "properties": { + "tlsTunnelCipherSuites": { + "description": "List of cipher suites that shall be declared as supported by the API consumer when performing the SSL or TLS negotiation with the API producer. Valid values of cipher suites are defined in IETF RFC 8447.\n", + "type": "array", + "items": { + "type": "string", + "minItems": 1 + } + } + } + } + } + } + }, + "required": [ + "id", + "name", + "type", + "standardVersion", + "apiVersion", + "apiEndpoint" + ] + } + }, + "peerEntityState": { + "description": "State of the peer functional entity as provided by the API consumer when creating the resource or when updating it with the PATCH method.\n", + "type": "object", + "properties": { + "operationalState": { + "description": "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED", + "STOPPING", + "STARTING", + "RESTARTING" + ] + }, + "administrativeState": { + "description": "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n", + "type": "string", + "enum": [ + "LOCKED", + "UNLOCKED", + "LOCKING" + ] + } + }, + "required": [ + "operationalState", + "administrativeState" + ] + } + }, + "required": [ + "id", + "peerEntityId", + "name", + "type", + "peerEntityState" + ] + } \ No newline at end of file -- GitLab From e596d00af8923fdf876b374bd56ffdf61f1dbe33 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 13 Aug 2020 10:48:18 +0500 Subject: [PATCH 484/580] fixed Response Code issue --- .../NFVMANOEntity.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot index ba7ee2ec0..2a4d56277 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot @@ -81,7 +81,7 @@ PATCH NFV-MANO entity - PreCondition Failed ... Applicability: none ... Post-Conditions: The NFV-MANO entity is not modified by the operation Send Patch request for NFV-MANO Entity - Check HTTP Response Status Code Is 409 + Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails DELETE NFV-MANO entity - Method not implemented -- GitLab From 958a1de1b20f02387a754815bdc2d800328f6465 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 13 Aug 2020 10:51:41 +0500 Subject: [PATCH 485/580] Json file added ChangeStateRequest --- .../NFVMANOCimKeywords.robot | 2 +- .../jsons/ChangeStateRequest.json | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 0f6997096..1c249dc6c 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -391,7 +391,7 @@ Send Post request for Change interface state task Log Trying to perform a POST for Change interface state task Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/ManoConfigModificationRequest.json + ${body}= Get File jsons/ChangeStateRequest.json POST ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces/${manoServiceInterfaceId}/change_state ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json new file mode 100644 index 000000000..82608e379 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json @@ -0,0 +1,7 @@ +{ + "operationalStateChange": + { + "operationalStateAction":"START" + } + +} \ No newline at end of file -- GitLab From 99d0a817304c7de5ab84bf1ae0daa000d49cabba Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 13 Aug 2020 11:48:58 +0500 Subject: [PATCH 486/580] Added Test Cases for IndividualPeerEntity.robot --- .../IndividualPeerEntity.robot | 97 +++++++++++++++++++ .../NFVMANOCimKeywords.robot | 42 ++++++++ .../environment/variables.txt | 4 +- .../PeerEntityConfigModificationRequest.json | 3 + 4 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/PeerEntityConfigModificationRequest.json diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot new file mode 100644 index 000000000..1eaf748e1 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot @@ -0,0 +1,97 @@ +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST Individual Peer Entity - Method not implemented + [Documentation] Test ID: 8.3.1.9.1 + ... Test title: POST Individual Peer Entity - Method not implemented + ... Test objective: The objective is to test that POST method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.14.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Post request for Individual Peer Entity + Check HTTP Response Status Code Is 405 + +GET Individual Peer Entity + [Documentation] Test ID: 8.3.1.9.2 + ... Test title: GET Individual Peer Entity + ... Test objective: The objective is to retrieves information and configuration hold in the producer NFV-MANO functional entity with regards to a peer entity by reading an individual peer entity resource + ... Pre-conditions: + ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get Individual Peer Entity + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntity + +PUT Individual Peer Entity - Method not implemented + [Documentation] Test ID: 8.3.1.9.3 + ... Test title: PUT Individual Peer Entity - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.14.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Put request for Individual Peer Entity + Check HTTP Response Status Code Is 405 + +PATCH Individual Peer Entity + [Documentation] Test ID: 8.3.1.9.4 + ... Test title: PATCH Individual Peer Entity + ... Test objective: This method modifies configuration and information of the producer NFV-MANO functional entity with regards to a peer functional entity by updating the corresponding "Individual peer entity" resource. + ... Pre-conditions: At least one Peer Entity resource is created + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: Peer Entity Resource is modified by the operation + Send Patch request for Individual Peer Entity + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaceModifications + +PATCH Individual Peer Entity - Conflict + [Documentation] Test ID: 8.3.1.9.5 + ... Test title: PATCH Individual Peer Entity - Conflict + ... Test objective: The objective is to test that the modification of configuration and information of the producer NFV-MANO functional entity with regards to a peer functional entity by updating the corresponding "Individual peer entity" resource failed due to a conflict with the state of the Individual Peer Entity resource and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one Peer Entity resource is created + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: Peer Entity Resource is not modified by the operation + Send Patch request for Individual Peer Entity + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +PATCH Individual Peer Entity - PreCondition Failed + [Documentation] Test ID: 8.3.1.9.6 + ... Test title: PATCH Individual Peer Entity - PreCondition Failed + ... Test objective: The objective is to test that the modification of the Individual Peer Entity resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one Peer Entity resource is created + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: Peer Entity Resource is not modified by the operation + Send Patch request for Individual Peer Entity + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails + +DELETE Individual Peer Entity - Method not implemented + [Documentation] Test ID: 8.3.1.9.7 + ... Test title: DELETE Individual Peer Entity - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemeted. + ... Pre-conditions: + ... Reference: clause 5.5.14.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: + Send Delete request for Individual Peer Entity + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 1c249dc6c..86d22e718 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -519,5 +519,47 @@ Send DELETE request for Peer Entity Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send Post request for Individual Peer Entity + 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}/peer_entities/${peerEntityId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Individual Peer Entity + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities/${peerEntityId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send Put request for Individual Peer Entity + 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}/peer_entities/${peerEntityId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send Patch request for Individual Peer Entity + log Trying to modify an NFV-MANO Entity + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/PeerEntityConfigModificationRequest.json + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities/${peerEntityId} ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Send Delete request for Individual Peer Entity + 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}/peer_entities/${peerEntityId} ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt index 709f9421e..8ae28f3ad 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt @@ -29,4 +29,6 @@ ${fields} ${changeStateOpOccId} -${manoServiceInterfaceId} \ No newline at end of file +${manoServiceInterfaceId} + +${peerEntityId} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/PeerEntityConfigModificationRequest.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/PeerEntityConfigModificationRequest.json new file mode 100644 index 000000000..f5704760d --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/PeerEntityConfigModificationRequest.json @@ -0,0 +1,3 @@ +{ + "name": "PeerEntityConfigModificationRequest" +} \ No newline at end of file -- GitLab From fbde6eca05ba90623c1c8dd199e6ee72bd45e66c Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 13 Aug 2020 15:06:01 +0500 Subject: [PATCH 487/580] Added Test Cases for Subscriptions.robot --- .../NFVMANOCimKeywords.robot | 126 ++++++++++++- .../Subscriptions.robot | 176 ++++++++++++++++++ .../environment/variables.txt | 25 ++- .../jsons/CimSubscriptionRequest.json | 3 + .../schemas/CimSubscription.json | 113 +++++++++++ .../schemas/CimSubscriptions.json | 117 ++++++++++++ 6 files changed, 558 insertions(+), 2 deletions(-) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CimSubscriptionRequest.json create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/CimSubscription.json create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/CimSubscriptions.json diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 86d22e718..5843e8823 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -562,4 +562,128 @@ Send Delete request for Individual Peer Entity Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities/${peerEntityId} ${outputResponse}= Output response - Set Global Variable @{response} ${outputResponse} \ No newline at end of file + Set Global Variable @{response} ${outputResponse} + + + + +Create Sessions + Pass Execution If ${NFVMANO_CHECKS_NOTIF_ENDPOINT} == 0 MockServer not necessary to run + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} + +Check Notification Endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + + +Get all Subscriptions + [Documentation] The api consumer can use this method to query the list of active subscriptions to log management notifications + Set headers {"Accept": "application/json"} + Set headers {"Content-Type": "application/json"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + + Get Subscriptions with attribute-based filters + [Documentation] The api consumer can use this method to query the list of active subscriptions to log management notifications + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Subscriptions with invalid attribute-based filters + [Documentation] The api consumer can use this method to query the list of active subscriptions to log management notifications + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Post Request for Subscription + Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + ${body_request}= Get File jsons/CimSubscriptionRequest.json + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + ${output}= Output response + Set Suite Variable ${response} ${output} + Run Keyword If ${NFVMANO_CHECKS_NOTIF_ENDPOINT} == 1 + ... Check Notification Endpoint + +Check HTTP Response Body CimSubscription Attributes Values Match the Issued Subscription + Log Check Response matches subscription + ${body}= Get File jsons/subscriptions.json + ${subscription}= evaluate json.loads('''${body}''') json + Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} + +Check Postcondition Subscription Is Set + Log Check Postcondition subscription exist + Set Headers {"Accept": "${ACCEPT_JSON}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 200 + +Send Post Request for Duplicated Subscription + Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${body_request}= Get File jsons/CimSubscriptionRequest.json + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check HTTP Response Body Is Empty + Should Be Empty ${response['body']} + Log No json schema is provided. Validation OK + +Check Postcondition Subscription Resource Returned in Location Header Is Available + Log Going to check postcondition + GET ${response['headers']['Location']} + Integer response status 200 + Log Received a 200 OK as expected + ${contentType}= Output response headers Content-Type + Should Contain ${contentType} application/json + ${result}= Output response body + Validate Json CimSubscription.schema.json ${result} + Log Validated CimSubscription schema + ${body}= Get File jsons/subscriptions.json + ${subscription}= evaluate json.loads('''${body}''') json + Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} + Log Validated Issued subscription is same as original + +Send Put Request for Subscriptions + [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method + ... Not Allowed" response as defined in clause 4.3.5.4. + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Patch Request for Subscriptions + [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method + ... Not Allowed" response as defined in clause 4.3.5.4. + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete Request for Subscriptions + [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method + ... Not Allowed" response as defined in clause 4.3.5.4. + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition Subscriptions Exists + Log Checking that subscriptions exists + Get all Subscriptions + Check HTTP Response Status Code Is 200 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot new file mode 100644 index 000000000..142a5c08d --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot @@ -0,0 +1,176 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Resource NFVMANOCimKeywords.robot +Library MockServerLibrary +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true + +*** Test Cases *** +GET all Subscriptions + [Documentation] Test ID: 8.3.1.10.1 + ... Test title: GET all Subscriptions + ... Test objective: The objective is to test the retrieval list of active subscriptions of API consumer and perform a JSON schema validation of the returned subscriptions data structure + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get all Subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CimSubscriptions + +GET Subscriptions with attribute-based filter + [Documentation] Test ID: 8.3.1.10.2 + ... Test title: GET Subscriptions with attribute-based filter + ... Test objective: The objective is to test the retrieval of active subscriptions list of API consumer using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Subscriptions with attribute-based filters + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CimSubscriptions + +GET Subscriptions with Paged Response + [Documentation] Test ID: 8.3.1.10.3 + ... Test title: GET Subscriptions with Paged Response + ... Test objective: The objective is to query information of active subscriptions list to of API consumer to get Paged Response. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get all Subscriptions + Check HTTP Response Status Code Is 200 + Check LINK in Header + +GET Subscriptions - invalid attribute-based filter + [Documentation] Test ID: 8.3.1.10.4 + ... Test title: GET Subscriptions - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Subscriptions with invalid attribute-based filters + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + + +GET Subscriptions - Bad Request Response too Big + [Documentation] Test ID: 8.3.1.10.5 + ... Test title: GET Subscriptions - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get all Subscriptions + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Subscriptions - invalid resource endpoint + [Documentation] Test ID: 8.3.1.10.6 + ... Test title: GET Subscriptions - invalid resource endpoint + ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when using invalid resource endpoint. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get all Subscriptions + Check HTTP Response Status Code Is 404 + + +Create new Subscription + [Documentation] Test ID 8.3.1.10.7 + ... Test title: Create new Subscription + ... Test objective: The objective is to test the creation of a new subscription and perform a JSON schema and content validation of the returned subscription data structure + ... Pre-conditions: + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The subscription is successfully set and it matches the issued subscription + Send Post Request for Subscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is CimSubscription + Check HTTP Response Body CimSubscription Attributes Values Match the Issued Subscription + Check Postcondition Subscription Is Set + + +Create request for duplicated Subscription not creating duplicated subscriptions + [Tags] no-duplicated-subs + [Documentation] Test ID 8.3.1.10.8 + ... Test title: Create request for duplicated Subscription not creating duplicated subscriptions + ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO does not support the creation of duplicated subscriptions + ... Post-Conditions: The existing Subscription returned is available in the NFV-MANO + Send Post Request for Duplicated Subscription + Check HTTP Response Status Code Is 303 + Check HTTP Response Body Is Empty + Check HTTP Response Header Contains Location + Check Postcondition Subscription Resource Returned in Location Header Is Available + +Create request for duplicated Subscription creating duplicated subscriptions + [Tags] duplicated-subs + [Documentation] Test ID 8.3.1.10.9 + ... Test title: Create request for duplicated Subscription creating duplicated subscriptions + ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO supports the creation of duplicated subscriptions + ... Post-Conditions: The duplicated subscription is successfully set and it matches the issued subscription + Send Post Request for Duplicated Subscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PmSubscription + Check HTTP Response Body CimSubscription Attributes Values Match the Issued Subscription + Check Postcondition Subscription Is Set + +PUT Subscriptions - Method not implemented + [Documentation] Test ID 8.3.1.10.10 + ... Test title: PUT Subscriptions - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put Request for Subscriptions + Check HTTP Response Status Code Is 405 + +PATCH Subscriptions - Method not implemented + [Documentation] Test ID 8.3.1.10.11 + ... Test title: PATCH Subscriptions - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Patch Request for Subscriptions + Check HTTP Response Status Code Is 405 + +DELETE Subscriptions - Method not implemented + [Documentation] Test ID 8.3.1.10.12 + ... Test title: DELETE Subscriptions - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The subscriptions are not deleted by the failed operation + Send Delete Request for Subscriptions + Check HTTP Response Status Code Is 405 + Check Postcondition Subscriptions Exists diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt index 8ae28f3ad..7d785da9a 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt @@ -31,4 +31,27 @@ ${changeStateOpOccId} ${manoServiceInterfaceId} -${peerEntityId} \ No newline at end of file +${peerEntityId} + +${callback_port} 9091 +${callback_uri} http://172.22.1.7:${callback_port} +${callback_endpoint} /nfvmanocim/subscriptions +${filter_ok} callbackUri=${callbackUri} +${filter_ko} erroneousFilter=erroneous +${callback_endpoint_fwd} /endpoint/check +${callback_endpoint_error} /subs_404 +${sleep_interval} 20s + +${total_polling_time} 2 min +${polling_interval} 10 sec + +${notification_request} [] +${notification_response} [] + +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa +${erroneousSubscriptionId} erroneousSubscriptionId +${newSubscriptionId} newSubsciptionId + +${origResponse} {} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CimSubscriptionRequest.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CimSubscriptionRequest.json new file mode 100644 index 000000000..3475fa745 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CimSubscriptionRequest.json @@ -0,0 +1,3 @@ +{ + "callbackUri": "http://172.22.1.7:9091" +} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/CimSubscription.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/CimSubscription.json new file mode 100644 index 000000000..819a5d99e --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/CimSubscription.json @@ -0,0 +1,113 @@ +{ + "description": "This type represents a subscription related to notifications about NFV-MANO configuration and information management changes\n", + "type": "object", + "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 NFV-MANO configuration and information management. \n", + "type": "object", + "properties": { + "manoEntitySubscriptionFilter": { + "description": "This type represents subscription filter criteria to match NFV-MANO functional entities and their associated managed objects. \n", + "type": "object", + "properties": { + "manoEntityId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "manoServiceIds": { + "description": "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceNames": { + "description": "If present, match NFV-MANO services with an NFV-MANO service name listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "manoServiceInterfaceIds": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance identifier listed in this attribute.\nThe attributes \"manoServiceInterfaceIds\" and \"manoServiceInterfaceNames\" are alternatives to reference to NFV-MANO functional entity produced interfaces 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 that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceInterfaceNames": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance Name listed in this attribute.\nThe attributes \"manoServiceInterfaceIds\" and \"manoServiceInterfaceNames\" are alternatives to reference to NFV-MANO functional entity produced interfaces 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" + } + }, + "consumedManoInterfaceIds": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance identifier listed in this attribute.\nThe attributes \"consumedManoInterfaceIds\" and \"consumedManoInterfaceNames\" are alternatives to reference to NFV-MANO functional entity consumed interfaces 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" + } + }, + "consumedManoInterfaceNames": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance Name listed in this attribute.\nThe attributes \"consumedManoInterfaceIds\" and \"consumedManoInterfaceNames\" are alternatives to reference to NFV-MANO functional entity consumed interfaces 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. \nPermitted values:\n - InformationChangedNotification\n - ChangeStateNotification\n\nNOTE:\tThe 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": [ + "InformationChangedNotification", + "ChangeStateNotification" + ] + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + }, + "required": [ + "self" + ] + } + }, + "required": [ + "id", + "callbackUri", + "_links" + ] + } \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/CimSubscriptions.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/CimSubscriptions.json new file mode 100644 index 000000000..6ac082d31 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/CimSubscriptions.json @@ -0,0 +1,117 @@ +{ "type": "array", + "items": { + "description": "This type represents a subscription related to notifications about NFV-MANO configuration and information management changes\n", + "type": "object", + "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 NFV-MANO configuration and information management. \n", + "type": "object", + "properties": { + "manoEntitySubscriptionFilter": { + "description": "This type represents subscription filter criteria to match NFV-MANO functional entities and their associated managed objects. \n", + "type": "object", + "properties": { + "manoEntityId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "manoServiceIds": { + "description": "manoServiceIds\tIdentifierInManoEntity\t0..N\tIf present, match NFV-MANO services with an instance identifier listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceNames": { + "description": "If present, match NFV-MANO services with an NFV-MANO service name listed in this attribute.\nThe attributes \"manoServiceIds\" and \"manoServiceNames\" are alternatives to reference to NFV-MANO services in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "manoServiceInterfaceIds": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance identifier listed in this attribute.\nThe attributes \"manoServiceInterfaceIds\" and \"manoServiceInterfaceNames\" are alternatives to reference to NFV-MANO functional entity produced interfaces 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 that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceInterfaceNames": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance Name listed in this attribute.\nThe attributes \"manoServiceInterfaceIds\" and \"manoServiceInterfaceNames\" are alternatives to reference to NFV-MANO functional entity produced interfaces 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" + } + }, + "consumedManoInterfaceIds": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance identifier listed in this attribute.\nThe attributes \"consumedManoInterfaceIds\" and \"consumedManoInterfaceNames\" are alternatives to reference to NFV-MANO functional entity consumed interfaces 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" + } + }, + "consumedManoInterfaceNames": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance Name listed in this attribute.\nThe attributes \"consumedManoInterfaceIds\" and \"consumedManoInterfaceNames\" are alternatives to reference to NFV-MANO functional entity consumed interfaces 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. \nPermitted values:\n - InformationChangedNotification\n - ChangeStateNotification\n\nNOTE:\tThe 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": [ + "InformationChangedNotification", + "ChangeStateNotification" + ] + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + }, + "required": [ + "self" + ] + } + }, + "required": [ + "id", + "callbackUri", + "_links" + ] + } + + +} \ No newline at end of file -- GitLab From a7cf9f0b1b1a5f6891cc02218a645629740468f2 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 13 Aug 2020 15:11:30 +0500 Subject: [PATCH 488/580] Added Test Cases for IndividualSubscription.robot --- .../IndividualSubscription.robot | 98 +++++++++++++++++++ .../NFVMANOCimKeywords.robot | 81 ++++++++++++++- 2 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot new file mode 100644 index 000000000..26f01755e --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot @@ -0,0 +1,98 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Resource NFVMANOCimKeywords.robot + +*** Test Cases *** +GET Individual Subscription + [Documentation] Test ID: 8.3.1.11.1 + ... Test title: GET Individual Subscription + ... Test objective: The objective is to test the retrieval of individual subscription and perform a JSON schema and content validation of the returned subscription data structure + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Subscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CimSubscription + Check HTTP Response Body Subscription Identifier matches the requested Subscription + +GET Individual Subscription - invalid resource identifier + [Documentation] Test ID: 8.3.1.11.2 + ... Test title: GET Individual Subscription - invalid resource identifier + ... Test objective: The objective is to test that the retrieval of an individual subscription fails when using an invalid resource identifier + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET individual Subscription with invalid resource identifier + Check HTTP Response Status Code Is 404 + +DELETE Individual Subscription + [Documentation] Test ID: 8.3.1.11.3 + ... Test title: DELETE Individual Subscription + ... Test objective: The objective is to test the deletion of an individual subscription + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The is not available anymore in the NFV-MANO + Send Delete request for individual Subscription + Check HTTP Response Status Code Is 204 + Check Postcondition Subscription is Deleted + +DELETE Individual Subscription - invalid resource identifier + [Documentation] Test ID: 8.3.1.11.4 + ... Test title: DELETE Individual Subscription - invalid resource identifier + ... Test objective: The objective is to test that the deletion of an individual subscription fails when using an invalid resource identifier + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for individual Subscription with invalid resource identifier + Check HTTP Response Status Code Is 404 + +POST Individual Subscription - Method not implemented + [Documentation] Test ID: 8.3.1.11.5 + ... Test title: POST Individual Subscription - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new Subscription + ... Pre-conditions: + ... Reference: clause 5.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The VNF Performance Subscription is not created on the NFV-MANO + Send Post request for individual Subscription + Check HTTP Response Status Code Is 405 + Check Postcondition Subscription is not Created + +PUT Individual Subscription - Method not implemented + [Documentation] Test ID: 8.3.1.11.6 + ... Test title: PUT Individual Subscription - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an existing subscription + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.5.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The subscription is not modified by the operation + Send Put request for individual Subscription + Check HTTP Response Status Code Is 405 + Check Postcondition Subscription is Unmodified (Implicit) + +PATCH Individual Subscription - Method not implemented + [Documentation] Test ID: 8.3.1.11.7 + ... Test title: PATCH Individual Subscription - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing subscription + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.5.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The subscription is not modified by the operation + Send Patch request for individual Subscription + Check HTTP Response Status Code Is 405 + Check Postcondition Subscription is Unmodified (Implicit) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 5843e8823..f2a01f2aa 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -686,4 +686,83 @@ Send Delete Request for Subscriptions Check Postcondition Subscriptions Exists Log Checking that subscriptions exists Get all Subscriptions - Check HTTP Response Status Code Is 200 \ No newline at end of file + Check HTTP Response Status Code Is 200 + +Get Individual Subscription + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check HTTP Response Body Subscription Identifier matches the requested Subscription + Log Trying to check response ID + Should Be Equal As Strings ${response['body']['id']} ${subscriptionId} + Log Subscription identifier as expected + +GET individual Subscription with invalid resource identifier + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Delete request for individual Subscription + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check Postcondition Subscription is Deleted + Log Check Postcondition Subscription is deleted + GET individual Subscription + Check HTTP Response Status Code Is 404 + +Send Delete request for individual Subscription with invalid resource identifier + Log Trying to delete a subscription in the VNFM with invalid id + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Send Post request for individual Subscription + 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 Subscription + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Send Patch request for individual Subscription + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${origOutput}= Output response + Set Suite Variable ${origResponse} ${origOutput} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +Check Postcondition Subscription is Unmodified (Implicit) + Log Check postconidtion subscription not modified + GET individual Subscription + Log Check Response matches original Subscription + ${subscription}= evaluate json.loads('''${response['body']}''') json + Should Be Equal As Strings ${origResponse['body']['id']} ${subscription.id} + Should Be Equal As Strings ${origResponse['body']['callbackUri']} ${subscription.callbackUri} + +Check Postcondition 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} + ${output}= Output response + Set Suite Variable @{response} ${output} + Check HTTP Response Status Code Is 404 \ No newline at end of file -- GitLab From 2831cc8a4aada1df5dfcfdb8d9e7dfab7b8c3e8b Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 13 Aug 2020 15:27:31 +0500 Subject: [PATCH 489/580] Added Test Cases for NotificationEndpoint.robot --- .../NotificationEndpoint.robot | 112 +++++++++++++ .../schemas/ChangeStateNotification.json | 151 ++++++++++++++++++ .../InformationChangedNotification.json | 81 ++++++++++ 3 files changed, 344 insertions(+) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ChangeStateNotification.json create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/InformationChangedNotification.json diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot new file mode 100644 index 000000000..9a8e00d21 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot @@ -0,0 +1,112 @@ +*** Setting *** +Resource environment/variables.txt +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true +Library MockServerLibrary +Library Process +Library OperatingSystem +Library BuiltIn +Library Collections +Library String + + +*** Test Cases *** +Information Changed Notification + [Documentation] Test ID: 8.3.1.12.1 + ... Test title: Information Changed Notification + ... Test objective: The objective is to test the dispatch of Information Changed Notification when configuration or information is changed in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A subscription for information availability notifications is available in the NFV-MANO. + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Trigger the availability of Information Changed Notification (external action) + Check Information Changed Notification Available Http POST Request Body Json Schema Is InformationChangedNotification + Check Information Changed Notification Available Http POST Request Body notificationType attribute Is InformationChangedNotification + +Change State Notification + [Documentation] Test ID: 8.3.1.12.2 + ... Test title: Change State Notification + ... Test objective: The objective is to test the dispatch of Change State Notification when state changes of the NFV-MANO functional entity and its managed objects, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A performance job is created, and a state change subscription is available in the NFV-MANO. + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANOz + ... Applicability: none + ... Post-Conditions: none + Trigger the cross of Change State (external action) + Check Change State Notification Http POST Request Body Json Schema Is ChangeStateNotification + Check Change State Notification Http POST Request Body notificationType attribute Is ChangeStateNotification + + +*** Keywords *** +Trigger the availability of Information Changed Notification (external action) + #do nothing + Log do nothing + +Trigger the cross of Change State (external action) + #do nothing + Log do nothing + +Check Information Changed Notification Available Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + +Check Information Changed Notification Available Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification Information Changed Notification Available Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + +Check Change State Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + + +Check Change State Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification State Crossed Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + + +Check Change State Notification Http POST Request Body changeType attribute Is + [Arguments] ${type} + #do nothing + Log do nothing + + +Configure Notification Information Changed Notification Available Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Configure Notification State Crossed Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Configure Notification Forward + [Arguments] ${schema} ${endpoint} ${endpoint_fwd} + Log Creating mock Http POST forward to handle ${schema} + &{notification_tmp}= Create Mock Request Matcher POST ${endpoint} body_type="JSON_SCHEMA" body=${schema} + &{notification_fwd}= Create Mock Http Forward ${endpoint_fwd} + Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} + +Create Sessions + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ChangeStateNotification.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ChangeStateNotification.json new file mode 100644 index 000000000..fc3b68c99 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ChangeStateNotification.json @@ -0,0 +1,151 @@ +{ + "description": "This type represents a Change state operation occurrence.\n", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"ChangeStateNotification\" for this notification type.\n", + "type": "string" + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timestamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "changeStateOpOccId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "stateChangedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "changeStateOperationState": { + "description": "The enumeration ChangeStateOpOccStateEnumType defines permitted values for the change state operation. It shall comply with the provisions :\n - PROCESSING\tThe change state operation is currently in execution.\n - COMPLETED\tThe change state operation has been completed successfully.\n - FAILED\tThe change state operation has failed.\n", + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "FAILED" + ] + }, + "managedObjectRef": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "required": [ + "type", + "objectId" + ] + }, + "operationalState": { + "description": "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n - STARTED\tThe managed entity is operational.\n - STOPPED\tThe managed entity is not operational.\n - STOPPING\tThe managed entity is in the transition to stop.\n - STARTING\tThe managed entity is in the transition to start and become operational.\n - RESTARTING\tThe managed entity is in the transition to stop and start again.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED", + "STOPPING", + "STARTING", + "RESTARTING" + ] + }, + "administrativeState": { + "description": "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n - LOCKED\tThe managed entity is administratively prohibited to be used.\n - UNLOCKED\tThe managed entity is administratively allowed to be used.\n - LOCKING\tThe managed entity is in the transition to be locked.\n", + "type": "string", + "enum": [ + "LOCKED", + "UNLOCKED", + "LOCKING" + ] + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "type": "object", + "properties": { + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objectInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeStateOpOcc": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + }, + "required": [ + "subscription", + "objectInstance", + "changeStateOpOcc" + ] + } + }, + "required": [ + "id", + "notificationType", + "subscriptionId", + "timestamp", + "changeStateOpOccId", + "stateChangedTime", + "changeStateOperationState", + "managedObjectRef", + "_links" + ] + } \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/InformationChangedNotification.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/InformationChangedNotification.json new file mode 100644 index 000000000..941a4bb5c --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/InformationChangedNotification.json @@ -0,0 +1,81 @@ +{ + "description": "This type represents a notification that is sent when data about configuration and information of the NFV-MANO functional entity have been changed.\n", + "type": "object", + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"InformationChangedNotification\" for this notification type.\n", + "type": "string" + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "informationChangedTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "manoEntityId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changedInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "type": "object", + "properties": { + "self": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + }, + "required": [ + "self" + ] + } + }, + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "informationChangedTime", + "manoEntityId", + "changedInfo", + "_links" + ] + } \ No newline at end of file -- GitLab From f2a4732dd8a3f85c7e3a8bb0f6fc7c56365a63a4 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 17 Aug 2020 12:21:13 +0500 Subject: [PATCH 490/580] Added Test Cases for ApiVersion.robot --- .../ApiVersion.robot | 211 ++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot new file mode 100644 index 000000000..fac4978ca --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot @@ -0,0 +1,211 @@ +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 8.3.1.13.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 8.3.1.13.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 8.3.1.13.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 8.3.1.13.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 8.3.1.13.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.1.13.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 8.3.1.13.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.1.13.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.1.13.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.1.13.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK -- GitLab From 8e9b422adfd67e1734f82b2afdfcac328a16fa42 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 27 Aug 2020 13:53:15 +0500 Subject: [PATCH 491/580] fixed issues --- .../ChangeInterfaceStateTask.robot | 28 +++---- .../ChangeNFVMANOEntityStateTask.robot | 24 +++--- .../ChangeStateOperationOccurance.robot | 40 +++++----- ...vidualStateChangeOpperationOccurance.robot | 22 +++--- .../NFVMANOEntity.robot | 14 ++-- .../NFVMANOServiceInterface.robot | 74 +++++++++---------- 6 files changed, 101 insertions(+), 101 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot index 62b638355..76278ffc6 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot @@ -12,11 +12,11 @@ POST Change interface state task [Documentation] Test ID: 8.3.1.7.1 ... Test title: POST Change interface state task ... Test objective: The objective is send put request to change the state of the NFV-MANO service interface produced by the NFV-MANO functional entity - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Post request for Change interface state task Check HTTP Response Status Code Is 202 Check Operation Occurrence Id @@ -25,24 +25,24 @@ POST Change interface state task - Conflict [Documentation] Test ID: 8.3.1.7.2 ... Test title: POST Change interface state task - Conflict ... Test objective: The objective is to test that request to cchange the state of the NFV-MANO service interface produced by the NFV-MANO functional entity failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Post request for Change interface state task Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails -GET Change interface state task - Conflict - Method not implemented +GET Change interface state task - Method not implemented [Documentation] Test ID: 8.3.1.7.3 - ... Test title: GET Change interface state task - Conflict - Method not implemented + ... Test title: GET Change interface state task - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.12.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Get request for Change interface state task Check HTTP Response Status Code Is 405 @@ -50,11 +50,11 @@ PUT Change interface state task - Conflict - Method not implemented [Documentation] Test ID: 8.3.1.7.4 ... Test title: PUT Change interface state task - Conflict - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.12.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Put request for Change interface state task Check HTTP Response Status Code Is 405 @@ -62,11 +62,11 @@ PATCH Change interface state task - Conflict - Method not implemented [Documentation] Test ID: 8.3.1.7.5 ... Test title: PATCH Change interface state task - Conflict - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.12.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Patch request for Change interface state task Check HTTP Response Status Code Is 405 @@ -74,10 +74,10 @@ DELETE Change interface state task - Conflict - Method not implemented [Documentation] Test ID: 8.3.1.7.6 ... Test title: DELETE Change interface state task - Conflict - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.12.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Delete request for Change interface state task Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot index c1914e7c8..a4a4b9935 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot @@ -11,11 +11,11 @@ POST NFV-MANO functional entity application state change [Documentation] Test ID: 8.3.1.2.1 ... Test title: POST NFV-MANO functional entity application state change ... Test objective: The objective is to request state change of the NFV-MANO functional entity application. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Post request for NFV-MANO functional entity application state change Check HTTP Response Status Code Is 202 Check Operation Occurrence Id @@ -24,11 +24,11 @@ POST NFV-MANO functional entity application state change - Conflict [Documentation] Test ID: 8.3.1.2.2 ... Test title: POST NFV-MANO functional entity application state change - Conflict ... Test objective: The objective is to test that request to change the state of the NFV-MANO functional entity application failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Post request for NFV-MANO functional entity application state change Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -37,11 +37,11 @@ GET NFV-MANO functional entity application state change - Method not implemented [Documentation] Test ID: 8.3.1.2.3 ... Test title: GET NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Get request for NFV-MANO functional entity application state change Check HTTP Response Status Code Is 405 @@ -49,11 +49,11 @@ PUT NFV-MANO functional entity application state change - Method not implemented [Documentation] Test ID: 8.3.1.2.4 ... Test title: PUT NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.7.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Put request for NFV-MANO functional entity application state change Check HTTP Response Status Code Is 405 @@ -61,11 +61,11 @@ PATCH NFV-MANO functional entity application state change - Method not implement [Documentation] Test ID: 8.3.1.2.5 ... Test title: PATCH NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.7.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Patch request for NFV-MANO functional entity application state change Check HTTP Response Status Code Is 405 @@ -73,10 +73,10 @@ DELETE NFV-MANO functional entity application state change - Method not implemen [Documentation] Test ID: 8.3.1.2.6 ... Test title: DELETE NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Delete request for NFV-MANO functional entity application state change Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot index 323e678d4..f3bbd69d0 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot @@ -12,11 +12,11 @@ POST Change State Operation Occurance - Method not implemented [Documentation] Test ID: 8.3.1.3.1 ... Test title: POST Change State Operation Occurance - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Post request for Change State Operation Occurance Check HTTP Response Status Code Is 405 @@ -24,11 +24,11 @@ GET Change State Operation Occurance [Documentation] Test ID: 8.3.1.3.2 ... Test title: GET Change State Operation Occurance ... Test objective: The objective is to query status information about multiple change state operation occurrences. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Change State OpOcc Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOccs @@ -37,11 +37,11 @@ GET Change State Operation Occurance - invalid attribute-based filter [Documentation] Test ID: 8.3.1.3.3 ... Test title: GET Change State Operation Occurance - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of Change State Operation Occurance fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Change State OpOcc with invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -50,11 +50,11 @@ GET Change State Operation Occurance - invalid attribute selector [Documentation] Test ID: 8.3.1.3.4 ... Test title: GET Change State Operation Occurance - invalid attribute selector ... Test objective: The objective is to test that the retrieval of Change State Operation Occurance fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Change State OpOcc with invalid selector Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -63,11 +63,11 @@ GET Change State Operation Occurance - Bad Request Response too Big [Documentation] Test ID: 8.3.1.3.5 ... Test title: GET Change State Operation Occurance - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of Change State Operation Occurance fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Change State OpOcc Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -76,11 +76,11 @@ GET Change State Operation Occurance with attribute-based filter [Documentation] Test ID: 8.3.1.3.6 ... Test title: GET Change State Operation Occurance with attribute-based filter ... Test objective: The objective is to query status information about multiple change state operation occurrences with attribute filters - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Change State OpOcc with filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc @@ -89,11 +89,11 @@ GET Change State Operation Occurance with "all_fields" attribute selector [Documentation] Test ID: 8.3.1.3.7 ... Test title: GET Change State Operation Occurance with "all_fields" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurance with "all_fields" attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Change State OpOcc with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot index 765b7b866..dd5e63246 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot @@ -12,11 +12,11 @@ POST Individual Change State Operation Occurance - Method not implemented [Documentation] Test ID: 8.3.1.4.1 ... Test title: POST Individual Change State Operation Occurance - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.9.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Post request for Individual Change State Operation Occurance Check HTTP Response Status Code Is 405 @@ -24,11 +24,11 @@ GET Individual Change State Operation Occurance [Documentation] Test ID: 8.3.1.4.2 ... Test title: GET Individual Change State Operation Occurance ... Test objective: The objective is to query status information about Individual change state operation occurrences. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Individual Change State OpOcc Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc @@ -37,11 +37,11 @@ PUT Individual Change State Operation Occurance - Method not implemented [Documentation] Test ID: 8.3.1.4.3 ... Test title: PUT Individual Change State Operation Occurance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.9.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Put request for Individual Change State Operation Occurance Check HTTP Response Status Code Is 405 @@ -49,11 +49,11 @@ PATCH Individual Change State Operation Occurance - Method not implemented [Documentation] Test ID: 8.3.1.4.4 ... Test title: PATCH Individual Change State Operation Occurance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.9.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Patch request for Individual Change State Operation Occurance Check HTTP Response Status Code Is 405 @@ -61,10 +61,10 @@ DELETE Individual Change State Operation Occurance - Method not implemented [Documentation] Test ID: 8.3.1.4.5 ... Test title: DELETE Individual Change State Operation Occurance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.9.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Delete request for Individual Change State Operation Occurance Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot index 2a4d56277..edbdfe53f 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot @@ -12,11 +12,11 @@ POST NFV-MANO entity - Method not implemented [Documentation] Test ID: 8.3.1.1.1 ... Test title: POST NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create an NFV-MANO Entity. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Post request for NFV-MANO Entity Check HTTP Response Status Code Is 405 @@ -24,7 +24,7 @@ GET NFV-MANO entity [Documentation] Test ID: 8.3.1.1.2 ... Test title: Get NFV-MANO entity ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource and perform a JSON schema and content validation of the collected job data structure. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -37,11 +37,11 @@ PUT NFV-MANO entity - Method not implemented [Documentation] Test ID: 8.3.1.1.3 ... Test title: PUT NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an NFV-MANO Entity. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.3.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Put request for NFV-MANO Entity Check HTTP Response Status Code Is 405 @@ -88,10 +88,10 @@ DELETE NFV-MANO entity - Method not implemented [Documentation] Test ID: 8.3.1.1.7 ... Test title: DELETE NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an NFV-MANO Entity. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.3.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Delete request for NFV-MANO Entity Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot index 46fcf9102..3c88c58d8 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot @@ -12,11 +12,11 @@ POST NFV-MANO Serive Interface - Method not implemented [Documentation] Test ID: 8.3.1.5.1 ... Test title: POST NFV-MANO Serive Interface - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Post request for NFV-MANO Serive Interface Check HTTP Response Status Code Is 405 @@ -24,11 +24,11 @@ GET NFV-MANO Serive Interface [Documentation] Test ID: 8.3.1.5.2 ... Test title: GET NFV-MANO Serive Interface ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get NFV-MANO Serive Interface Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces @@ -37,11 +37,11 @@ GET NFV-MANO Serive Interface - invalid attribute-based filter [Documentation] Test ID: 8.3.1.5.3 ... Test title: GET NFV-MANO Serive Interface - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NFV-MANO Serive Interface fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get NFV-MANO Serive Interface with invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -50,11 +50,11 @@ GET NFV-MANO Serive Interface - invalid attribute selector [Documentation] Test ID: 8.3.1.5.4 ... Test title: GET NFV-MANO Serive Interface - invalid attribute selector ... Test objective: The objective is to test that the retrieval of NFV-MANO Serive Interface fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get NFV-MANO Serive Interface with invalid selector Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -63,11 +63,11 @@ GET NFV-MANO Serive Interface - Bad Request Response too Big [Documentation] Test ID: 8.3.1.5.5 ... Test title: GET NFV-MANO Serive Interface - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NFV-MANO Serive Interface fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get NFV-MANO Serive Interface Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -76,11 +76,11 @@ GET NFV-MANO Serive Interface with attribute-based filter [Documentation] Test ID: 8.3.1.5.6 ... Test title: GET NFV-MANO Serive Interface with attribute-based filter ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entities with attribute filters - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get NFV-MANO Serive Interface with filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces @@ -89,11 +89,11 @@ GET NFV-MANO Serive Interface with "all_fields" attribute selector [Documentation] Test ID: 8.3.1.5.7 ... Test title: GET NFV-MANO Serive Interface with "all_fields" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Serive Interface with "all_fields" attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get NFV-MANO Serive Interface with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces @@ -102,11 +102,11 @@ GET NFV-MANO Serive Interface with "exclude_default" attribute selector [Documentation] Test ID: 8.3.1.5.8 ... Test title: GET NFV-MANO Serive Interface with "exclude_default" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Serive Interface with "exclude_default" attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get NFV-MANO Serive Interface with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces @@ -116,11 +116,11 @@ GET NFV-MANO Serive Interface with "fields" attribute selector [Documentation] Test ID: 8.3.1.5.9 ... Test title: GET NFV-MANO Serive Interface with "fields" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Serive Interface with fields attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get NFV-MANO Serive Interface with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces @@ -129,10 +129,10 @@ GET NFV-MANO Serive Interface with "exclude_fields" attribute selector [Documentation] Test ID: 8.3.1.5.10 ... Test title: GET NFV-MANO Serive Interface with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Serive Interface with "exclude_fields" attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: + ... Applicability: none ... Post-Conditions: none Get NFV-MANO Serive Interface with exclude_fields attribute selector Check HTTP Response Status Code Is 200 @@ -142,11 +142,11 @@ GET NFV-MANO Serive Interface with Paged Response [Documentation] Test ID: 8.3.1.5.11 ... Test title: GET NFV-MANO Serive Interface with Paged Response ... Test objective: The objective is to query NFV-MANO Serive Interface to get Paged Response. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get NFV-MANO Serive Interface Check HTTP Response Status Code Is 200 Check LINK in Header @@ -155,11 +155,11 @@ PUT NFV-MANO Serive Interface - Method not implemented [Documentation] Test ID: 8.3.1.5.12 ... Test title: PUT NFV-MANO Serive Interface - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Put request for NFV-MANO Serive Interface Check HTTP Response Status Code Is 405 @@ -167,11 +167,11 @@ PATCH NFV-MANO Serive Interface - Method not implemented [Documentation] Test ID: 8.3.1.5.13 ... Test title: PATCH NFV-MANO Serive Interface - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Patch request for NFV-MANO Serive Interface Check HTTP Response Status Code Is 405 @@ -179,10 +179,10 @@ DELETE NFV-MANO Serive Interface - Method not implemented [Documentation] Test ID: 8.3.1.5.14 ... Test title: DELETE NFV-MANO Serive Interface - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.10.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Delete request for NFV-MANO Serive Interface Check HTTP Response Status Code Is 405 \ No newline at end of file -- GitLab From e1a6043bd0997b5c96642162764340b3e2faefeb Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 3 Sep 2020 10:20:58 +0200 Subject: [PATCH 492/580] Fixe typos on NFVMANOCIM API tests --- .../ChangeStateOperationOccurance.robot | 100 +++++++++--------- .../NFVMANOCimKeywords.robot | 64 +++++------ .../NFVMANOServiceInterface.robot | 100 +++++++++--------- 3 files changed, 132 insertions(+), 132 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot index f3bbd69d0..388272b51 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot @@ -8,181 +8,181 @@ Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} Library MockServerLibrary *** Test Cases *** -POST Change State Operation Occurance - Method not implemented +POST Change State Operation Occurrence - Method not implemented [Documentation] Test ID: 8.3.1.3.1 - ... Test title: POST Change State Operation Occurance - Method not implemented + ... Test title: POST Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Post request for Change State Operation Occurance + Send Post request for Change State Operation Occurrence Check HTTP Response Status Code Is 405 -GET Change State Operation Occurance +GET Change State Operation Occurrence [Documentation] Test ID: 8.3.1.3.2 - ... Test title: GET Change State Operation Occurance + ... Test title: GET Change State Operation Occurrence ... Test objective: The objective is to query status information about multiple change state operation occurrences. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State OpOcc + Get Change State Operation Occurrence Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOccs -GET Change State Operation Occurance - invalid attribute-based filter +GET Change State Operation Occurrence - invalid attribute-based filter [Documentation] Test ID: 8.3.1.3.3 - ... Test title: GET Change State Operation Occurance - invalid attribute-based filter - ... Test objective: The objective is to test that the retrieval of Change State Operation Occurance fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. + ... Test title: GET Change State Operation Occurrence - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrence fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State OpOcc with invalid filter + Get Change State Operation Occurrence with invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET Change State Operation Occurance - invalid attribute selector +GET Change State Operation Occurrence - invalid attribute selector [Documentation] Test ID: 8.3.1.3.4 - ... Test title: GET Change State Operation Occurance - invalid attribute selector - ... Test objective: The objective is to test that the retrieval of Change State Operation Occurance fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Test title: GET Change State Operation Occurrence - invalid attribute selector + ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrence fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State OpOcc with invalid selector + Get Change State Operation Occurrence with invalid selector Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET Change State Operation Occurance - Bad Request Response too Big +GET Change State Operation Occurrence - Bad Request Response too Big [Documentation] Test ID: 8.3.1.3.5 - ... Test title: GET Change State Operation Occurance - Bad Request Response too Big - ... Test objective: The objective is to test that the retrieval of Change State Operation Occurance fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Test title: GET Change State Operation Occurrence - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrence fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State OpOcc + Get Change State Operation Occurrence Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET Change State Operation Occurance with attribute-based filter +GET Change State Operation Occurrence with attribute-based filter [Documentation] Test ID: 8.3.1.3.6 - ... Test title: GET Change State Operation Occurance with attribute-based filter + ... Test title: GET Change State Operation Occurrence with attribute-based filter ... Test objective: The objective is to query status information about multiple change state operation occurrences with attribute filters ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State OpOcc with filter + Get Change State Operation Occurrence with filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc -GET Change State Operation Occurance with "all_fields" attribute selector +GET Change State Operation Occurrence with "all_fields" attribute selector [Documentation] Test ID: 8.3.1.3.7 - ... Test title: GET Change State Operation Occurance with "all_fields" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurance with "all_fields" attribute selector + ... Test title: GET Change State Operation Occurrence with "all_fields" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrence with "all_fields" attribute selector ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State OpOcc with all_fields attribute selector + Get Change State Operation Occurrence with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc -GET Change State Operation Occurance with "exclude_default" attribute selector +GET Change State Operation Occurrence with "exclude_default" attribute selector [Documentation] Test ID: 8.3.1.3.8 - ... Test title: GET Change State Operation Occurance with "exclude_default" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurance with "exclude_default" attribute selector + ... Test title: GET Change State Operation Occurrence with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrence with "exclude_default" attribute selector ... Pre-conditions: ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: - Get Change State OpOcc with all_fields attribute selector + Get Change State Operation Occurrence with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc -GET Change State Operation Occurance with "fields" attribute selector +GET Change State Operation Occurrence with "fields" attribute selector [Documentation] Test ID: 8.3.1.3.9 - ... Test title: GET Change State Operation Occurance with "fields" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurance with fields attribute selector + ... Test title: GET Change State Operation Occurrence with "fields" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrence with fields attribute selector ... Pre-conditions: ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: - Get Change State OpOcc with fields attribute selector + Get Change State Operation Occurrence with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc -GET Change State Operation Occurance with "exclude_fields" attribute selector +GET Change State Operation Occurrence with "exclude_fields" attribute selector [Documentation] Test ID: 8.3.1.3.10 - ... Test title: GET Change State Operation Occurance with "exclude_fields" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurance with "exclude_fields" attribute selector + ... Test title: GET Change State Operation Occurrence with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrence with "exclude_fields" attribute selector ... Pre-conditions: ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: none - Get Change State OpOcc with exclude_fields attribute selector + Get Change State Operation Occurrence with exclude_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc -GET Change State Operation Occurance with Paged Response +GET Change State Operation Occurrence with Paged Response [Documentation] Test ID: 8.3.1.3.11 - ... Test title: GET Change State Operation Occurance with Paged Response - ... Test objective: The objective is to query Change State Operation Occurance to get Paged Response. + ... Test title: GET Change State Operation Occurrence with Paged Response + ... Test objective: The objective is to query Change State Operation Occurrence to get Paged Response. ... Pre-conditions: ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: - Get Change State OpOcc + Get Change State Operation Occurrence Check HTTP Response Status Code Is 200 Check LINK in Header -PUT Change State Operation Occurance - Method not implemented +PUT Change State Operation Occurrence - Method not implemented [Documentation] Test ID: 8.3.1.3.12 - ... Test title: PUT Change State Operation Occurance - Method not implemented + ... Test title: PUT Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: ... Reference: clause 5.5.8.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: - Send Put request for Change State Operation Occurance + Send Put request for Change State Operation Occurrence Check HTTP Response Status Code Is 405 -PATCH Change State Operation Occurance - Method not implemented +PATCH Change State Operation Occurrence - Method not implemented [Documentation] Test ID: 8.3.1.3.13 - ... Test title: PATCH Change State Operation Occurance - Method not implemented + ... Test title: PATCH Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: ... Reference: clause 5.5.8.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: - Send Patch request for Change State Operation Occurance + Send Patch request for Change State Operation Occurrence Check HTTP Response Status Code Is 405 -DELETE Change State Operation Occurance - Method not implemented +DELETE Change State Operation Occurrence - Method not implemented [Documentation] Test ID: 8.3.1.3.14 - ... Test title: DELETE Change State Operation Occurance - Method not implemented + ... Test title: DELETE Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: ... Reference: clause 5.5.8.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: - Send Delete request for Change State Operation Occurance + Send Delete request for Change State Operation Occurrence Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index f2a01f2aa..a6a71fa43 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -120,7 +120,7 @@ Send Delete request for NFV-MANO functional entity application state change ${output}= Output response Set Suite Variable ${response} ${output} -Send Post request for Change State Operation Occurance +Send Post request for Change State Operation Occurrence 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}"} @@ -128,7 +128,7 @@ Send Post request for Change State Operation Occurance ${output}= Output response Set Suite Variable ${response} ${output} -Get Change State OpOcc +Get Change State Operation Occurrence Log Query to GET information about multiple change state operation occurrences. Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -137,7 +137,7 @@ Get Change State OpOcc ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get Change State OpOcc with invalid filter +Get Change State Operation Occurrence with invalid filter Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response @@ -145,7 +145,7 @@ Get Change State OpOcc with invalid filter ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get Change State OpOcc with invalid selector +Get Change State Operation Occurrence with invalid selector Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response @@ -153,7 +153,7 @@ Get Change State OpOcc with invalid selector ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get Change State OpOcc with filter +Get Change State Operation Occurrence with filter Log Query information about multiple change state operation occurrences with attribute filters. Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -162,7 +162,7 @@ Get Change State OpOcc with filter ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get Change State OpOcc with all_fields attribute selector +Get Change State Operation Occurrence with all_fields attribute selector Log Queries information about multiple change state operation occurrences, using all_fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -170,7 +170,7 @@ Get Change State OpOcc with all_fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Get Change State OpOcc with fields attribute selector +Get Change State Operation Occurrence with fields attribute selector Log Queries information about multiple change state operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -178,7 +178,7 @@ Get Change State OpOcc with fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Get Change State OpOcc with exclude_fields attribute selector +Get Change State Operation Occurrence with exclude_fields attribute selector Log Queries information about multiple change state operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -190,7 +190,7 @@ Check LINK in Header ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} -Send PUT request for Change State Operation Occurance +Send PUT request for Change State Operation Occurrence 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}"} @@ -198,7 +198,7 @@ Send PUT request for Change State Operation Occurance ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send PATCH request for Change State Operation Occurance +Send PATCH request for Change State Operation Occurrence 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}"} @@ -206,7 +206,7 @@ Send PATCH request for Change State Operation Occurance ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send DELETE request for Change State Operation Occurance +Send DELETE request for Change State Operation Occurrence 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}"} @@ -214,7 +214,7 @@ Send DELETE request for Change State Operation Occurance ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send Post request for Individual Change State Operation Occurance +Send Post request for Individual Change State Operation Occurrence 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}"} @@ -222,7 +222,7 @@ Send Post request for Individual Change State Operation Occurance ${output}= Output response Set Suite Variable ${response} ${output} -Get Individual Change State OpOcc +Get Individual Change State Operation Occurrence Log Query to GET information about individual change state operation occurrences. Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -231,7 +231,7 @@ Get Individual Change State OpOcc ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send PUT request for Individual Change State Operation Occurance +Send PUT request for Individual Change State Operation Occurrence 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}"} @@ -239,7 +239,7 @@ Send PUT request for Individual Change State Operation Occurance ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send PATCH request for Individual Change State Operation Occurance +Send PATCH request for Individual Change State Operation Occurrence 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}"} @@ -247,7 +247,7 @@ Send PATCH request for Individual Change State Operation Occurance ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send DELETE request for Individual Change State Operation Occurance +Send DELETE request for Individual Change State Operation Occurrence 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}"} @@ -255,7 +255,7 @@ Send DELETE request for Individual Change State Operation Occurance ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send Post request for NFV-MANO Serive Interface +Send Post request for NFV-MANO Service Interface 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}"} @@ -263,7 +263,7 @@ Send Post request for NFV-MANO Serive Interface ${output}= Output response Set Suite Variable ${response} ${output} -Get NFV-MANO Serive Interface +Get NFV-MANO Service Interface Log Query to GET information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity. Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -272,7 +272,7 @@ Get NFV-MANO Serive Interface ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get NFV-MANO Serive Interface with invalid filter +Get NFV-MANO Service Interface with invalid filter Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response @@ -280,7 +280,7 @@ Get NFV-MANO Serive Interface with invalid filter ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get NFV-MANO Serive Interface with invalid selector +Get NFV-MANO Service Interface with invalid selector Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response @@ -288,7 +288,7 @@ Get NFV-MANO Serive Interface with invalid selector ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get NFV-MANO Serive Interface with filter +Get NFV-MANO Service Interface with filter Log Query information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity with attribute filters. Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -297,7 +297,7 @@ Get NFV-MANO Serive Interface with filter ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get NFV-MANO Serive Interface with all_fields attribute selector +Get NFV-MANO Service Interface with all_fields attribute selector Log Queries information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, using all_fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -305,7 +305,7 @@ Get NFV-MANO Serive Interface with all_fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Get NFV-MANO Serive Interface with fields attribute selector +Get NFV-MANO Service Interface with fields attribute selector Log Queries information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -313,7 +313,7 @@ Get NFV-MANO Serive Interface with fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Get NFV-MANO Serive Interface with exclude_fields attribute selector +Get NFV-MANO Service Interface with exclude_fields attribute selector Log Queries information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -321,7 +321,7 @@ Get NFV-MANO Serive Interface with exclude_fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Send PUT request for NFV-MANO Serive Interface +Send PUT request for NFV-MANO Service Interface 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}"} @@ -329,7 +329,7 @@ Send PUT request for NFV-MANO Serive Interface ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send PATCH request for NFV-MANO Serive Interface +Send PATCH request for NFV-MANO Service Interface 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}"} @@ -337,7 +337,7 @@ Send PATCH request for NFV-MANO Serive Interface ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send DELETE request for NFV-MANO Serive Interface +Send DELETE request for NFV-MANO Service Interface 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}"} @@ -345,7 +345,7 @@ Send DELETE request for NFV-MANO Serive Interface ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send Post request for Individual NFV-MANO Serive Interface +Send Post request for Individual NFV-MANO Service Interface 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}"} @@ -353,7 +353,7 @@ Send Post request for Individual NFV-MANO Serive Interface ${output}= Output response Set Suite Variable ${response} ${output} -Get Individual NFV-MANO Serive Interface +Get Individual NFV-MANO Service Interface Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response @@ -361,7 +361,7 @@ Get Individual NFV-MANO Serive Interface ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send Put request for Individual NFV-MANO Serive Interface +Send Put request for Individual NFV-MANO Service Interface 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}"} @@ -369,7 +369,7 @@ Send Put request for Individual NFV-MANO Serive Interface ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send Patch request for Individual NFV-MANO Serive Interface +Send Patch request for Individual NFV-MANO Service Interface log Trying to modify an NFV-MANO Entity Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} @@ -379,7 +379,7 @@ Send Patch request for Individual NFV-MANO Serive Interface ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send Delete request for Individual NFV-MANO Serive Interface +Send Delete request for Individual NFV-MANO Service Interface 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}"} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot index 3c88c58d8..4badcf112 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot @@ -8,181 +8,181 @@ Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} Library MockServerLibrary *** Test Cases *** -POST NFV-MANO Serive Interface - Method not implemented +POST NFV-MANO Service Interface - Method not implemented [Documentation] Test ID: 8.3.1.5.1 - ... Test title: POST NFV-MANO Serive Interface - Method not implemented + ... Test title: POST NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.10.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Post request for NFV-MANO Serive Interface + Send Post request for NFV-MANO Service Interface Check HTTP Response Status Code Is 405 -GET NFV-MANO Serive Interface +GET NFV-MANO Service Interface [Documentation] Test ID: 8.3.1.5.2 - ... Test title: GET NFV-MANO Serive Interface + ... Test title: GET NFV-MANO Service Interface ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Serive Interface + Get NFV-MANO Service Interface Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces -GET NFV-MANO Serive Interface - invalid attribute-based filter +GET NFV-MANO Service Interface - invalid attribute-based filter [Documentation] Test ID: 8.3.1.5.3 - ... Test title: GET NFV-MANO Serive Interface - invalid attribute-based filter - ... Test objective: The objective is to test that the retrieval of NFV-MANO Serive Interface fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. + ... Test title: GET NFV-MANO Service Interface - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interface fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Serive Interface with invalid filter + Get NFV-MANO Service Interface with invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET NFV-MANO Serive Interface - invalid attribute selector +GET NFV-MANO Service Interface - invalid attribute selector [Documentation] Test ID: 8.3.1.5.4 - ... Test title: GET NFV-MANO Serive Interface - invalid attribute selector - ... Test objective: The objective is to test that the retrieval of NFV-MANO Serive Interface fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Test title: GET NFV-MANO Service Interface - invalid attribute selector + ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interface fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Serive Interface with invalid selector + Get NFV-MANO Service Interface with invalid selector Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET NFV-MANO Serive Interface - Bad Request Response too Big +GET NFV-MANO Service Interface - Bad Request Response too Big [Documentation] Test ID: 8.3.1.5.5 - ... Test title: GET NFV-MANO Serive Interface - Bad Request Response too Big - ... Test objective: The objective is to test that the retrieval of NFV-MANO Serive Interface fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Test title: GET NFV-MANO Service Interface - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interface fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Serive Interface + Get NFV-MANO Service Interface Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET NFV-MANO Serive Interface with attribute-based filter +GET NFV-MANO Service Interface with attribute-based filter [Documentation] Test ID: 8.3.1.5.6 - ... Test title: GET NFV-MANO Serive Interface with attribute-based filter + ... Test title: GET NFV-MANO Service Interface with attribute-based filter ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entities with attribute filters ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Serive Interface with filter + Get NFV-MANO Service Interface with filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces -GET NFV-MANO Serive Interface with "all_fields" attribute selector +GET NFV-MANO Service Interface with "all_fields" attribute selector [Documentation] Test ID: 8.3.1.5.7 - ... Test title: GET NFV-MANO Serive Interface with "all_fields" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Serive Interface with "all_fields" attribute selector + ... Test title: GET NFV-MANO Service Interface with "all_fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interface with "all_fields" attribute selector ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Serive Interface with all_fields attribute selector + Get NFV-MANO Service Interface with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces -GET NFV-MANO Serive Interface with "exclude_default" attribute selector +GET NFV-MANO Service Interface with "exclude_default" attribute selector [Documentation] Test ID: 8.3.1.5.8 - ... Test title: GET NFV-MANO Serive Interface with "exclude_default" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Serive Interface with "exclude_default" attribute selector + ... Test title: GET NFV-MANO Service Interface with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interface with "exclude_default" attribute selector ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Serive Interface with all_fields attribute selector + Get NFV-MANO Service Interface with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces -GET NFV-MANO Serive Interface with "fields" attribute selector +GET NFV-MANO Service Interface with "fields" attribute selector [Documentation] Test ID: 8.3.1.5.9 - ... Test title: GET NFV-MANO Serive Interface with "fields" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Serive Interface with fields attribute selector + ... Test title: GET NFV-MANO Service Interface with "fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interface with fields attribute selector ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Serive Interface with fields attribute selector + Get NFV-MANO Service Interface with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces -GET NFV-MANO Serive Interface with "exclude_fields" attribute selector +GET NFV-MANO Service Interface with "exclude_fields" attribute selector [Documentation] Test ID: 8.3.1.5.10 - ... Test title: GET NFV-MANO Serive Interface with "exclude_fields" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Serive Interface with "exclude_fields" attribute selector + ... Test title: GET NFV-MANO Service Interface with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interface with "exclude_fields" attribute selector ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Serive Interface with exclude_fields attribute selector + Get NFV-MANO Service Interface with exclude_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces -GET NFV-MANO Serive Interface with Paged Response +GET NFV-MANO Service Interface with Paged Response [Documentation] Test ID: 8.3.1.5.11 - ... Test title: GET NFV-MANO Serive Interface with Paged Response - ... Test objective: The objective is to query NFV-MANO Serive Interface to get Paged Response. + ... Test title: GET NFV-MANO Service Interface with Paged Response + ... Test objective: The objective is to query NFV-MANO Service Interface to get Paged Response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Serive Interface + Get NFV-MANO Service Interface Check HTTP Response Status Code Is 200 Check LINK in Header -PUT NFV-MANO Serive Interface - Method not implemented +PUT NFV-MANO Service Interface - Method not implemented [Documentation] Test ID: 8.3.1.5.12 - ... Test title: PUT NFV-MANO Serive Interface - Method not implemented + ... Test title: PUT NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.10.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Put request for NFV-MANO Serive Interface + Send Put request for NFV-MANO Service Interface Check HTTP Response Status Code Is 405 -PATCH NFV-MANO Serive Interface - Method not implemented +PATCH NFV-MANO Service Interface - Method not implemented [Documentation] Test ID: 8.3.1.5.13 - ... Test title: PATCH NFV-MANO Serive Interface - Method not implemented + ... Test title: PATCH NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.10.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Patch request for NFV-MANO Serive Interface + Send Patch request for NFV-MANO Service Interface Check HTTP Response Status Code Is 405 -DELETE NFV-MANO Serive Interface - Method not implemented +DELETE NFV-MANO Service Interface - Method not implemented [Documentation] Test ID: 8.3.1.5.14 - ... Test title: DELETE NFV-MANO Serive Interface - Method not implemented + ... Test title: DELETE NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.10.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Delete request for NFV-MANO Serive Interface + Send Delete request for NFV-MANO Service Interface Check HTTP Response Status Code Is 405 \ No newline at end of file -- GitLab From 15aa8b084a1c992e4560283ccd82910148c7776c Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 3 Sep 2020 16:04:38 +0500 Subject: [PATCH 493/580] added new test case in NFVMANOEntity --- .../NFVMANOEntity.robot | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot index edbdfe53f..d3b9e2fd4 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot @@ -33,8 +33,22 @@ GET NFV-MANO entity Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoEntity -PUT NFV-MANO entity - Method not implemented +GET NFV-MANO entity - Not Found [Documentation] Test ID: 8.3.1.1.3 + ... Test title: Get NFV-MANO entity - Not Found + ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource fails when the resource is not present and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET NFV-MANO entity resource + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + + +PUT NFV-MANO entity - Method not implemented + [Documentation] Test ID: 8.3.1.1.4 ... Test title: PUT NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an NFV-MANO Entity. ... Pre-conditions: none @@ -46,7 +60,7 @@ PUT NFV-MANO entity - Method not implemented Check HTTP Response Status Code Is 405 PATCH NFV-MANO entity - [Documentation] Test ID: 8.3.1.1.4 + [Documentation] Test ID: 8.3.1.1.5 ... Test title: PATCH NFV-MANO entity ... Test objective: This method modifies the NFV-MANO entity resource ... Pre-conditions: NFV-MANO entity resource is already created. @@ -59,7 +73,7 @@ PATCH NFV-MANO entity Check HTTP Response Body Json Schema Is ManoConfigModifications PATCH NFV-MANO entity - Conflict - [Documentation] Test ID: 8.3.1.1.5 + [Documentation] Test ID: 8.3.1.1.6 ... Test title: PATCH NFV-MANO entity - Conflict ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: NFV-MANO entity resource is already created. @@ -72,7 +86,7 @@ PATCH NFV-MANO entity - Conflict Check HTTP Response Body Json Schema Is ProblemDetails PATCH NFV-MANO entity - PreCondition Failed - [Documentation] Test ID: 8.3.1.1.6 + [Documentation] Test ID: 8.3.1.1.7 ... Test title: PATCH NFV-MANO entity - PreCondition Failed ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: NFV-MANO entity resource is already created. @@ -85,7 +99,7 @@ PATCH NFV-MANO entity - PreCondition Failed Check HTTP Response Body Json Schema Is ProblemDetails DELETE NFV-MANO entity - Method not implemented - [Documentation] Test ID: 8.3.1.1.7 + [Documentation] Test ID: 8.3.1.1.8 ... Test title: DELETE NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an NFV-MANO Entity. ... Pre-conditions: none -- GitLab From bf31dc9753de88f235d98a8935e2d3cb5644b401 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 3 Sep 2020 17:46:17 +0500 Subject: [PATCH 494/580] fix typo --- .../NFVMANOEntity.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot index d3b9e2fd4..113a69e6c 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot @@ -43,7 +43,7 @@ GET NFV-MANO entity - Not Found ... Applicability: none ... Post-Conditions: none GET NFV-MANO entity resource - Check HTTP Response Status Code Is 404 + Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails -- GitLab From fa4335f07a47923d4810ca27020e6bfab1f08c79 Mon Sep 17 00:00:00 2001 From: uihassan Date: Thu, 10 Sep 2020 10:14:41 +0500 Subject: [PATCH 495/580] added suggestion, fixed bugs and keywords mismatch --- .../ChangeInterfaceStateTask.robot | 2 +- .../ChangeNFVMANOEntityStateTask.robot | 2 +- .../ChangeStateOperationOccurance.robot | 34 ++++---- .../IndividualNFVMANOServiceInterface.robot | 78 +++++++++---------- .../IndividualPeerEntity.robot | 18 ++--- .../IndividualSubscription.robot | 2 +- .../NFVMANOCimKeywords.robot | 24 ++++-- .../PeerEntities.robot | 59 +++++++------- 8 files changed, 116 insertions(+), 103 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot index 76278ffc6..cbd81a3ce 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot @@ -19,7 +19,7 @@ POST Change interface state task ... Post-Conditions: none Send Post request for Change interface state task Check HTTP Response Status Code Is 202 - Check Operation Occurrence Id + Check HTTP Response Header Contains Location POST Change interface state task - Conflict [Documentation] Test ID: 8.3.1.7.2 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot index a4a4b9935..c9bc8ec49 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot @@ -18,7 +18,7 @@ POST NFV-MANO functional entity application state change ... Post-Conditions: none Send Post request for NFV-MANO functional entity application state change Check HTTP Response Status Code Is 202 - Check Operation Occurrence Id + Check HTTP Response Header Contains Location POST NFV-MANO functional entity application state change - Conflict [Documentation] Test ID: 8.3.1.2.2 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot index 388272b51..b1163478a 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot @@ -102,11 +102,11 @@ GET Change State Operation Occurrence with "exclude_default" attribute selector [Documentation] Test ID: 8.3.1.3.8 ... Test title: GET Change State Operation Occurrence with "exclude_default" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrence with "exclude_default" attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Change State Operation Occurrence with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc @@ -116,11 +116,11 @@ GET Change State Operation Occurrence with "fields" attribute selector [Documentation] Test ID: 8.3.1.3.9 ... Test title: GET Change State Operation Occurrence with "fields" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrence with fields attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Change State Operation Occurrence with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc @@ -129,10 +129,10 @@ GET Change State Operation Occurrence with "exclude_fields" attribute selector [Documentation] Test ID: 8.3.1.3.10 ... Test title: GET Change State Operation Occurrence with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrence with "exclude_fields" attribute selector - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: + ... Applicability: none ... Post-Conditions: none Get Change State Operation Occurrence with exclude_fields attribute selector Check HTTP Response Status Code Is 200 @@ -142,11 +142,11 @@ GET Change State Operation Occurrence with Paged Response [Documentation] Test ID: 8.3.1.3.11 ... Test title: GET Change State Operation Occurrence with Paged Response ... Test objective: The objective is to query Change State Operation Occurrence to get Paged Response. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Change State Operation Occurrence Check HTTP Response Status Code Is 200 Check LINK in Header @@ -155,11 +155,11 @@ PUT Change State Operation Occurrence - Method not implemented [Documentation] Test ID: 8.3.1.3.12 ... Test title: PUT Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Put request for Change State Operation Occurrence Check HTTP Response Status Code Is 405 @@ -167,11 +167,11 @@ PATCH Change State Operation Occurrence - Method not implemented [Documentation] Test ID: 8.3.1.3.13 ... Test title: PATCH Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Patch request for Change State Operation Occurrence Check HTTP Response Status Code Is 405 @@ -179,10 +179,10 @@ DELETE Change State Operation Occurrence - Method not implemented [Documentation] Test ID: 8.3.1.3.14 ... Test title: DELETE Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.8.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Delete request for Change State Operation Occurrence Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot index f5815448d..8115bf4bb 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot @@ -8,90 +8,90 @@ Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} Library MockServerLibrary *** Test Cases *** -POST Individual NFV-MANO Serive Interface - Method not implemented +POST Individual NFV-MANO Service Interface - Method not implemented [Documentation] Test ID: 8.3.1.6.1 - ... Test title: POST Individual NFV-MANO Serive Interface - Method not implemented + ... Test title: POST Individual NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.11.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: - Send Post request for Individual NFV-MANO Serive Interface + ... Post-Conditions: none + Send Post request for Individual NFV-MANO Service Interface Check HTTP Response Status Code Is 405 -GET Individual NFV-MANO Serive Interface +GET Individual NFV-MANO Service Interface [Documentation] Test ID: 8.3.1.6.2 - ... Test title: GET Individual NFV-MANO Serive Interface + ... Test title: GET Individual NFV-MANO Service Interface ... Test objective: The objective is to query status information about an NFV-MANO service interface of the producer NFV-MANO functional entity by reading an "Individual NFV-MANO service interface" resource. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: - Get Individual NFV-MANO Serive Interface + ... Applicability: none + ... Post-Conditions: none + Get Individual NFV-MANO Service Interface Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterface -PUT Individual NFV-MANO Serive Interface - Method not implemented +PUT Individual NFV-MANO Service Interface - Method not implemented [Documentation] Test ID: 8.3.1.6.3 - ... Test title: PUT Individual NFV-MANO Serive Interface - Method not implemented + ... Test title: PUT Individual NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.11.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: - Send Put request for Individual NFV-MANO Serive Interface + ... Post-Conditions: none + Send Put request for Individual NFV-MANO Service Interface Check HTTP Response Status Code Is 405 -PATCH Individual NFV-MANO Serive Interface +PATCH Individual NFV-MANO Service Interface [Documentation] Test ID: 8.3.1.6.4 - ... Test title: PATCH Individual NFV-MANO Serive Interface - ... Test objective: This method modifies the Individual NFV-MANO Serive Interface resource - ... Pre-conditions: Individual NFV-MANO Serive Interface resource is already created. + ... Test title: PATCH Individual NFV-MANO Service Interface + ... Test objective: This method modifies the Individual NFV-MANO Service Interface resource + ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The Individual NFV-MANO Serive Interface is modified by the operation - Send Patch request for Individual NFV-MANO Serive Interface + ... Post-Conditions: The Individual NFV-MANO Service Interface is modified by the operation + Send Patch request for Individual NFV-MANO Service Interface Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaceModifications -PATCH Individual NFV-MANO Serive Interface - Conflict +PATCH Individual NFV-MANO Service Interface - Conflict [Documentation] Test ID: 8.3.1.6.5 - ... Test title: PATCH Individual NFV-MANO Serive Interface - Conflict - ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Serive Interface resource failed due to a conflict with the state of the Individual NFV-MANO Serive Interface resource and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: Individual NFV-MANO Serive Interface resource is already created. + ... Test title: PATCH Individual NFV-MANO Service Interface - Conflict + ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Service Interface resource failed due to a conflict with the state of the Individual NFV-MANO Service Interface resource and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The Individual NFV-MANO Serive Interface is not modified by the operation - Send Patch request for Individual NFV-MANO Serive Interface + ... Post-Conditions: The Individual NFV-MANO Service Interface is not modified by the operation + Send Patch request for Individual NFV-MANO Service Interface Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails -PATCH Individual NFV-MANO Serive Interface - PreCondition Failed +PATCH Individual NFV-MANO Service Interface - PreCondition Failed [Documentation] Test ID: 8.3.1.6.6 - ... Test title: PATCH Individual NFV-MANO Serive Interface - PreCondition Failed - ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Serive Interface resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: Individual NFV-MANO Serive Interface resource is already created. + ... Test title: PATCH Individual NFV-MANO Service Interface - PreCondition Failed + ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Service Interface resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The Individual NFV-MANO Serive Interface is not modified by the operation - Send Patch request for Individual NFV-MANO Serive Interface + ... Post-Conditions: The Individual NFV-MANO Service Interface is not modified by the operation + Send Patch request for Individual NFV-MANO Service Interface Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails -DELETE Individual NFV-MANO Serive Interface - Method not implemented +DELETE Individual NFV-MANO Service Interface - Method not implemented [Documentation] Test ID: 8.3.1.6.7 - ... Test title: DELETE Individual NFV-MANO Serive Interface - Method not implemented + ... Test title: DELETE Individual NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.11.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: - Send Delete request for Individual NFV-MANO Serive Interface + ... Post-Conditions: none + Send Delete request for Individual NFV-MANO Service Interface Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot index 1eaf748e1..e8b7bc85d 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot @@ -12,11 +12,11 @@ POST Individual Peer Entity - Method not implemented [Documentation] Test ID: 8.3.1.9.1 ... Test title: POST Individual Peer Entity - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.14.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Post request for Individual Peer Entity Check HTTP Response Status Code Is 405 @@ -24,11 +24,11 @@ GET Individual Peer Entity [Documentation] Test ID: 8.3.1.9.2 ... Test title: GET Individual Peer Entity ... Test objective: The objective is to retrieves information and configuration hold in the producer NFV-MANO functional entity with regards to a peer entity by reading an individual peer entity resource - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Individual Peer Entity Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntity @@ -37,11 +37,11 @@ PUT Individual Peer Entity - Method not implemented [Documentation] Test ID: 8.3.1.9.3 ... Test title: PUT Individual Peer Entity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.14.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Put request for Individual Peer Entity Check HTTP Response Status Code Is 405 @@ -88,10 +88,10 @@ DELETE Individual Peer Entity - Method not implemented [Documentation] Test ID: 8.3.1.9.7 ... Test title: DELETE Individual Peer Entity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.14.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Delete request for Individual Peer Entity Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot index 26f01755e..8801e21f1 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot @@ -62,7 +62,7 @@ POST Individual Subscription - Method not implemented [Documentation] Test ID: 8.3.1.11.5 ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Subscription - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index a6a71fa43..427eef2c9 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -214,7 +214,7 @@ Send DELETE request for Change State Operation Occurrence ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send Post request for Individual Change State Operation Occurrence +Send Post request for Individual Change State Operation Occurance 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}"} @@ -222,7 +222,7 @@ Send Post request for Individual Change State Operation Occurrence ${output}= Output response Set Suite Variable ${response} ${output} -Get Individual Change State Operation Occurrence +Get Individual Change State OpOcc Log Query to GET information about individual change state operation occurrences. Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -231,7 +231,7 @@ Get Individual Change State Operation Occurrence ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send PUT request for Individual Change State Operation Occurrence +Send Put request for Individual Change State Operation Occurance 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}"} @@ -239,7 +239,7 @@ Send PUT request for Individual Change State Operation Occurrence ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send PATCH request for Individual Change State Operation Occurrence +Send Patch request for Individual Change State Operation Occurance 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}"} @@ -247,7 +247,7 @@ Send PATCH request for Individual Change State Operation Occurrence ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send DELETE request for Individual Change State Operation Occurrence +Send Delete request for Individual Change State Operation Occurance 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}"} @@ -765,4 +765,16 @@ Check Postcondition Subscription is not Created GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable @{response} ${output} - Check HTTP Response Status Code Is 404 \ No newline at end of file + Check HTTP Response Status Code Is 404 + +Check Postcondition Peer Entity Resource is created + Log Check Postcondition Peer Entity resource + Set Headers {"Accept": "${ACCEPT_JSON}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 200 + +Check HTTP Response Header Contains Location + ${loc}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${loc} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot index e40ee058a..4423fa77b 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot @@ -11,16 +11,17 @@ Library MockServerLibrary POST Peer Entity [Documentation] Test ID: 8.3.1.8.1 ... Test title: POST Peer Entity - ... Test objective: The objective is to creates in the producer NFV-MANO functional entity a new peer entity resource which contains configuration and information with regards to the peer functional entity. - ... Pre-conditions: + ... Test objective: The objective is to creates in the producer NFV-MANO functional entity a new peer entity resource which contains configuration and information with regards to the peer functional entity and perform the JSON schema validation of the returned job data structure. + ... Pre-conditions: none ... Reference: clause 5.5.13.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: Peer Entity is created Send Post request for Peer Entity Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is PeerEntity - Check Operation Occurrence Id + Check HTTP Response Header Contains Location + Check Postcondition Peer Entity Resource is created GET Peer Entity [Documentation] Test ID: 8.3.1.8.2 @@ -29,8 +30,8 @@ GET Peer Entity ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Peer Entity Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities @@ -42,8 +43,8 @@ GET Peer Entity - invalid attribute-based filter ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Peer Entity with invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -55,8 +56,8 @@ GET Peer Entity - invalid attribute selector ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Peer Entity with invalid selector Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -68,8 +69,8 @@ GET Peer Entity - Bad Request Response too Big ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Peer Entity Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -81,8 +82,8 @@ GET Peer Entity with attribute-based filter ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Peer Entity with filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities @@ -94,8 +95,8 @@ GET Peer Entity with "all_fields" attribute selector ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Peer Entity with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities @@ -107,8 +108,8 @@ GET Peer Entity with "exclude_default" attribute selector ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Peer Entity with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities @@ -121,8 +122,8 @@ GET Peer Entity with "fields" attribute selector ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Peer Entity with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities @@ -134,7 +135,7 @@ GET Peer Entity with "exclude_fields" attribute selector ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: + ... Applicability: none ... Post-Conditions: none Get Peer Entity with exclude_fields attribute selector Check HTTP Response Status Code Is 200 @@ -147,8 +148,8 @@ GET Peer Entity with Paged Response ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: + ... Applicability: none + ... Post-Conditions: none Get Peer Entity Check HTTP Response Status Code Is 200 Check LINK in Header @@ -157,11 +158,11 @@ PUT Peer Entity - Method not implemented [Documentation] Test ID: 8.3.1.8.12 ... Test title: PUT Peer Entity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.13.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Put request for Peer Entity Check HTTP Response Status Code Is 405 @@ -169,11 +170,11 @@ PATCH Peer Entity - Method not implemented [Documentation] Test ID: 8.3.1.8.13 ... Test title: PATCH Peer Entity - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. - ... Pre-conditions: + ... Pre-conditions:none ... Reference: clause 5.5.13.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Patch request for Peer Entity Check HTTP Response Status Code Is 405 @@ -181,10 +182,10 @@ DELETE Peer Entity - Method not implemented [Documentation] Test ID: 8.3.1.8.14 ... Test title: DELETE Peer Entity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.13.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: + ... Post-Conditions: none Send Delete request for Peer Entity Check HTTP Response Status Code Is 405 \ No newline at end of file -- GitLab From 9f98f8481726236e527577f1d10bba3272d9d62d Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 9 Sep 2020 18:02:43 +0200 Subject: [PATCH 496/580] fixed typos and added missing documentation --- .../NFVMANOCimKeywords.robot | 20 +++---- .../PeerEntities.robot | 54 +++++++++---------- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 427eef2c9..7db5af64e 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -440,7 +440,7 @@ Send Post request for Peer Entity ${output}= Output response Set Suite Variable ${response} ${output} -Get Peer Entity +Get Peer Entities Log Query to GET information about multiple peer entities. Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -449,7 +449,7 @@ Get Peer Entity ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get Peer Entity with invalid filter +Get Peer Entities with invalid filter Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response @@ -457,7 +457,7 @@ Get Peer Entity with invalid filter ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get Peer Entity with invalid selector +Get Peer Entities with invalid selector Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response @@ -465,7 +465,7 @@ Get Peer Entity with invalid selector ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get Peer Entity with filter +Get Peer Entities with filter Log Query information about multiple peer entities with attribute filters. Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -474,7 +474,7 @@ Get Peer Entity with filter ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get Peer Entity with all_fields attribute selector +Get Peer Entities with all_fields attribute selector Log Queries information about multiple peer entities, using all_fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -482,7 +482,7 @@ Get Peer Entity with all_fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Get Peer Entity with fields attribute selector +Get Peer Entities with fields attribute selector Log Queries information about multiple peer entities, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -490,7 +490,7 @@ Get Peer Entity with fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Get Peer Entity with exclude_fields attribute selector +Get Peer Entities with exclude_fields attribute selector Log Queries information about multiple peer entities, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -498,7 +498,7 @@ Get Peer Entity with exclude_fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Send PUT request for Peer Entity +Send PUT request for Peer Entities 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}"} @@ -506,7 +506,7 @@ Send PUT request for Peer Entity ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send PATCH request for Peer Entity +Send PATCH request for Peer Entities 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}"} @@ -514,7 +514,7 @@ Send PATCH request for Peer Entity ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send DELETE request for Peer Entity +Send DELETE request for Peer Entities 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}"} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot index 4423fa77b..b1adf732e 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot @@ -23,10 +23,10 @@ POST Peer Entity Check HTTP Response Header Contains Location Check Postcondition Peer Entity Resource is created -GET Peer Entity +GET Peer Entities [Documentation] Test ID: 8.3.1.8.2 - ... Test title: GET Peer Entity - ... Test objective: The objective is to queries information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities. + ... Test title: GET Peer Entities + ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities. ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -36,9 +36,9 @@ GET Peer Entity Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities -GET Peer Entity - invalid attribute-based filter +GET Peer Entities - invalid attribute-based filter [Documentation] Test ID: 8.3.1.8.3 - ... Test title: GET Peer Entity - invalid attribute-based filter + ... Test title: GET Peer Entities - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 @@ -49,9 +49,9 @@ GET Peer Entity - invalid attribute-based filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET Peer Entity - invalid attribute selector +GET Peer Entities - invalid attribute selector [Documentation] Test ID: 8.3.1.8.4 - ... Test title: GET Peer Entity - invalid attribute selector + ... Test title: GET Peer Entities - invalid attribute selector ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 @@ -62,9 +62,9 @@ GET Peer Entity - invalid attribute selector Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET Peer Entity - Bad Request Response too Big +GET Peer Entities - Bad Request Response too Big [Documentation] Test ID: 8.3.1.8.5 - ... Test title: GET Peer Entity - Bad Request Response too Big + ... Test title: GET Peer Entities - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 @@ -75,9 +75,9 @@ GET Peer Entity - Bad Request Response too Big Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET Peer Entity with attribute-based filter +GET Peer Entities with attribute-based filter [Documentation] Test ID: 8.3.1.8.6 - ... Test title: GET Peer Entity with attribute-based filter + ... Test title: GET Peer Entities with attribute-based filter ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with attribute filters ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 @@ -88,9 +88,9 @@ GET Peer Entity with attribute-based filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities -GET Peer Entity with "all_fields" attribute selector +GET Peer Entities with "all_fields" attribute selector [Documentation] Test ID: 8.3.1.8.7 - ... Test title: GET Peer Entity with "all_fields" attribute selector + ... Test title: GET Peer Entities with "all_fields" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "all_fields" attribute selector ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 @@ -101,9 +101,9 @@ GET Peer Entity with "all_fields" attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities -GET Peer Entity with "exclude_default" attribute selector +GET Peer Entities with "exclude_default" attribute selector [Documentation] Test ID: 8.3.1.8.8 - ... Test title: GET Peer Entity with "exclude_default" attribute selector + ... Test title: GET Peer Entities with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_default" attribute selector ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 @@ -115,9 +115,9 @@ GET Peer Entity with "exclude_default" attribute selector Check HTTP Response Body Json Schema Is PeerEntities -GET Peer Entity with "fields" attribute selector +GET Peer Entities with "fields" attribute selector [Documentation] Test ID: 8.3.1.8.9 - ... Test title: GET Peer Entity with "fields" attribute selector + ... Test title: GET Peer Entities with "fields" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with fields attribute selector ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 @@ -128,16 +128,16 @@ GET Peer Entity with "fields" attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities -GET Peer Entity with "exclude_fields" attribute selector +GET Peer Entities with "exclude_fields" attribute selector [Documentation] Test ID: 8.3.1.8.10 - ... Test title: GET Peer Entity with "exclude_fields" attribute selector + ... Test title: GET Peer Entities with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_fields" attribute selector ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Peer Entity with exclude_fields attribute selector + Get Peer Entities with exclude_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities @@ -154,9 +154,9 @@ GET Peer Entity with Paged Response Check HTTP Response Status Code Is 200 Check LINK in Header -PUT Peer Entity - Method not implemented +PUT Peer Entities - Method not implemented [Documentation] Test ID: 8.3.1.8.12 - ... Test title: PUT Peer Entity - Method not implemented + ... Test title: PUT Peer Entities - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.13.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 @@ -166,9 +166,9 @@ PUT Peer Entity - Method not implemented Send Put request for Peer Entity Check HTTP Response Status Code Is 405 -PATCH Peer Entity - Method not implemented +PATCH Peer Entities - Method not implemented [Documentation] Test ID: 8.3.1.8.13 - ... Test title: PATCH Peer Entity - Method not implemented + ... Test title: PATCH Peer Entities - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions:none ... Reference: clause 5.5.13.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 @@ -178,9 +178,9 @@ PATCH Peer Entity - Method not implemented Send Patch request for Peer Entity Check HTTP Response Status Code Is 405 -DELETE Peer Entity - Method not implemented +DELETE Peer Entities - Method not implemented [Documentation] Test ID: 8.3.1.8.14 - ... Test title: DELETE Peer Entity - Method not implemented + ... Test title: DELETE Peer Entities - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.13.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 @@ -188,4 +188,4 @@ DELETE Peer Entity - Method not implemented ... Applicability: none ... Post-Conditions: none Send Delete request for Peer Entity - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 -- GitLab From 892598a26216510d4175fe9df87398e15793f593 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 9 Sep 2020 18:30:20 +0200 Subject: [PATCH 497/580] fixed typos and updated NFVMANOCim tests --- .../ChangeNFVMANOEntityStateTask.robot | 2 +- ... => ChangeStateOperationOccurrences.robot} | 74 +++++++++---------- ...vidualStateChangeOpperationOccurance.robot | 32 ++++---- .../NFVMANOCimKeywords.robot | 22 +++--- 4 files changed, 65 insertions(+), 65 deletions(-) rename SOL009/NFVManoConfigurationAndInformationManagement-API/{ChangeStateOperationOccurance.robot => ChangeStateOperationOccurrences.robot} (71%) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot index c9bc8ec49..4de972ff3 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot @@ -23,7 +23,7 @@ POST NFV-MANO functional entity application state change POST NFV-MANO functional entity application state change - Conflict [Documentation] Test ID: 8.3.1.2.2 ... Test title: POST NFV-MANO functional entity application state change - Conflict - ... Test objective: The objective is to test that request to change the state of the NFV-MANO functional entity application failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. + ... Test objective: The objective is to test that request to change the state of the NFV-MANO functional entity application fails due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot similarity index 71% rename from SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot rename to SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot index b1163478a..052f60013 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurance.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot @@ -8,97 +8,97 @@ Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} Library MockServerLibrary *** Test Cases *** -POST Change State Operation Occurrence - Method not implemented +POST Change State Operation Occurrences - Method not implemented [Documentation] Test ID: 8.3.1.3.1 - ... Test title: POST Change State Operation Occurrence - Method not implemented + ... Test title: POST Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Post request for Change State Operation Occurrence + Send Post request for Change State Operation Occurrences Check HTTP Response Status Code Is 405 -GET Change State Operation Occurrence +GET Change State Operation Occurrences [Documentation] Test ID: 8.3.1.3.2 - ... Test title: GET Change State Operation Occurrence + ... Test title: GET Change State Operation Occurrences ... Test objective: The objective is to query status information about multiple change state operation occurrences. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State Operation Occurrence + Get Change State Operation Occurrences Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOccs -GET Change State Operation Occurrence - invalid attribute-based filter +GET Change State Operation Occurrences - invalid attribute-based filter [Documentation] Test ID: 8.3.1.3.3 - ... Test title: GET Change State Operation Occurrence - invalid attribute-based filter - ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrence fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. + ... Test title: GET Change State Operation Occurrences - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State Operation Occurrence with invalid filter + Get Change State Operation Occurrences with invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET Change State Operation Occurrence - invalid attribute selector +GET Change State Operation Occurrences - invalid attribute selector [Documentation] Test ID: 8.3.1.3.4 - ... Test title: GET Change State Operation Occurrence - invalid attribute selector - ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrence fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Test title: GET Change State Operation Occurrences - invalid attribute selector + ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State Operation Occurrence with invalid selector + Get Change State Operation Occurrences with invalid selector Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET Change State Operation Occurrence - Bad Request Response too Big +GET Change State Operation Occurrences - Bad Request Response too Big [Documentation] Test ID: 8.3.1.3.5 - ... Test title: GET Change State Operation Occurrence - Bad Request Response too Big - ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrence fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Test title: GET Change State Operation Occurrences - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State Operation Occurrence + Get Change State Operation Occurrences Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET Change State Operation Occurrence with attribute-based filter +GET Change State Operation Occurrences with attribute-based filter [Documentation] Test ID: 8.3.1.3.6 - ... Test title: GET Change State Operation Occurrence with attribute-based filter + ... Test title: GET Change State Operation Occurrences with attribute-based filter ... Test objective: The objective is to query status information about multiple change state operation occurrences with attribute filters ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State Operation Occurrence with filter + Get Change State Operation Occurrences with filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc -GET Change State Operation Occurrence with "all_fields" attribute selector +GET Change State Operation Occurrences with "all_fields" attribute selector [Documentation] Test ID: 8.3.1.3.7 - ... Test title: GET Change State Operation Occurrence with "all_fields" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurrence with "all_fields" attribute selector + ... Test title: GET Change State Operation Occurrences with "all_fields" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrences with "all_fields" attribute selector ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State Operation Occurrence with all_fields attribute selector + Get Change State Operation Occurrences with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc -GET Change State Operation Occurrence with "exclude_default" attribute selector +GET Change State Operation Occurrences with "exclude_default" attribute selector [Documentation] Test ID: 8.3.1.3.8 ... Test title: GET Change State Operation Occurrence with "exclude_default" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrence with "exclude_default" attribute selector @@ -112,7 +112,7 @@ GET Change State Operation Occurrence with "exclude_default" attribute selector Check HTTP Response Body Json Schema Is ChangeStateOpOcc -GET Change State Operation Occurrence with "fields" attribute selector +GET Change State Operation Occurrences with "fields" attribute selector [Documentation] Test ID: 8.3.1.3.9 ... Test title: GET Change State Operation Occurrence with "fields" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrence with fields attribute selector @@ -125,7 +125,7 @@ GET Change State Operation Occurrence with "fields" attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc -GET Change State Operation Occurrence with "exclude_fields" attribute selector +GET Change State Operation Occurrences with "exclude_fields" attribute selector [Documentation] Test ID: 8.3.1.3.10 ... Test title: GET Change State Operation Occurrence with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrence with "exclude_fields" attribute selector @@ -134,11 +134,11 @@ GET Change State Operation Occurrence with "exclude_fields" attribute selector ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State Operation Occurrence with exclude_fields attribute selector + Get Change State Operation Occurrences with exclude_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc -GET Change State Operation Occurrence with Paged Response +GET Change State Operation Occurrences with Paged Response [Documentation] Test ID: 8.3.1.3.11 ... Test title: GET Change State Operation Occurrence with Paged Response ... Test objective: The objective is to query Change State Operation Occurrence to get Paged Response. @@ -151,9 +151,9 @@ GET Change State Operation Occurrence with Paged Response Check HTTP Response Status Code Is 200 Check LINK in Header -PUT Change State Operation Occurrence - Method not implemented +PUT Change State Operation Occurrences - Method not implemented [Documentation] Test ID: 8.3.1.3.12 - ... Test title: PUT Change State Operation Occurrence - Method not implemented + ... Test title: PUT Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.8.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 @@ -163,9 +163,9 @@ PUT Change State Operation Occurrence - Method not implemented Send Put request for Change State Operation Occurrence Check HTTP Response Status Code Is 405 -PATCH Change State Operation Occurrence - Method not implemented +PATCH Change State Operation Occurrences - Method not implemented [Documentation] Test ID: 8.3.1.3.13 - ... Test title: PATCH Change State Operation Occurrence - Method not implemented + ... Test title: PATCH Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.8.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 @@ -175,9 +175,9 @@ PATCH Change State Operation Occurrence - Method not implemented Send Patch request for Change State Operation Occurrence Check HTTP Response Status Code Is 405 -DELETE Change State Operation Occurrence - Method not implemented +DELETE Change State Operation Occurrences - Method not implemented [Documentation] Test ID: 8.3.1.3.14 - ... Test title: DELETE Change State Operation Occurrence - Method not implemented + ... Test title: DELETE Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.8.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 @@ -185,4 +185,4 @@ DELETE Change State Operation Occurrence - Method not implemented ... Applicability: none ... Post-Conditions: none Send Delete request for Change State Operation Occurrence - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot index dd5e63246..ccd61f63b 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot @@ -8,63 +8,63 @@ Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} Library MockServerLibrary *** Test Cases *** -POST Individual Change State Operation Occurance - Method not implemented +POST Individual Change State Operation Occurrence - Method not implemented [Documentation] Test ID: 8.3.1.4.1 - ... Test title: POST Individual Change State Operation Occurance - Method not implemented + ... Test title: POST Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.9.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Post request for Individual Change State Operation Occurance + Send Post request for Individual Change State Operation Occurrence Check HTTP Response Status Code Is 405 -GET Individual Change State Operation Occurance +GET Individual Change State Operation Occurrence [Documentation] Test ID: 8.3.1.4.2 - ... Test title: GET Individual Change State Operation Occurance - ... Test objective: The objective is to query status information about Individual change state operation occurrences. + ... Test title: GET Individual Change State Operation Occurrence + ... Test objective: The objective is to query status information about Individual change state operation occurrence. ... Pre-conditions: none ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Individual Change State OpOcc + Get Individual Change State Operation Occurrence Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc -PUT Individual Change State Operation Occurance - Method not implemented +PUT Individual Change State Operation Occurrence - Method not implemented [Documentation] Test ID: 8.3.1.4.3 - ... Test title: PUT Individual Change State Operation Occurance - Method not implemented + ... Test title: PUT Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.9.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Put request for Individual Change State Operation Occurance + Send Put request for Individual Change State Operation Occurrence Check HTTP Response Status Code Is 405 -PATCH Individual Change State Operation Occurance - Method not implemented +PATCH Individual Change State Operation Occurrence - Method not implemented [Documentation] Test ID: 8.3.1.4.4 - ... Test title: PATCH Individual Change State Operation Occurance - Method not implemented + ... Test title: PATCH Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.9.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Patch request for Individual Change State Operation Occurance + Send Patch request for Individual Change State Operation Occurrence Check HTTP Response Status Code Is 405 -DELETE Individual Change State Operation Occurance - Method not implemented +DELETE Individual Change State Operation Occurrence - Method not implemented [Documentation] Test ID: 8.3.1.4.5 - ... Test title: DELETE Individual Change State Operation Occurance - Method not implemented + ... Test title: DELETE Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.9.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Delete request for Individual Change State Operation Occurance + Send Delete request for Individual Change State Operation Occurrence Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 7db5af64e..bc59060fa 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -120,7 +120,7 @@ Send Delete request for NFV-MANO functional entity application state change ${output}= Output response Set Suite Variable ${response} ${output} -Send Post request for Change State Operation Occurrence +Send Post request for Change State Operation Occurrences 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}"} @@ -128,7 +128,7 @@ Send Post request for Change State Operation Occurrence ${output}= Output response Set Suite Variable ${response} ${output} -Get Change State Operation Occurrence +Get Change State Operation Occurrences Log Query to GET information about multiple change state operation occurrences. Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -137,7 +137,7 @@ Get Change State Operation Occurrence ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get Change State Operation Occurrence with invalid filter +Get Change State Operation Occurrences with invalid filter Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response @@ -145,7 +145,7 @@ Get Change State Operation Occurrence with invalid filter ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get Change State Operation Occurrence with invalid selector +Get Change State Operation Occurrences with invalid selector Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response @@ -153,7 +153,7 @@ Get Change State Operation Occurrence with invalid selector ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get Change State Operation Occurrence with filter +Get Change State Operation Occurrences with filter Log Query information about multiple change state operation occurrences with attribute filters. Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -162,7 +162,7 @@ Get Change State Operation Occurrence with filter ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get Change State Operation Occurrence with all_fields attribute selector +Get Change State Operation Occurrences with all_fields attribute selector Log Queries information about multiple change state operation occurrences, using all_fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -170,7 +170,7 @@ Get Change State Operation Occurrence with all_fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Get Change State Operation Occurrence with fields attribute selector +Get Change State Operation Occurrences with fields attribute selector Log Queries information about multiple change state operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -178,7 +178,7 @@ Get Change State Operation Occurrence with fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Get Change State Operation Occurrence with exclude_fields attribute selector +Get Change State Operation Occurrences with exclude_fields attribute selector Log Queries information about multiple change state operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -190,7 +190,7 @@ Check LINK in Header ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} -Send PUT request for Change State Operation Occurrence +Send PUT request for Change State Operation Occurrences 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}"} @@ -198,7 +198,7 @@ Send PUT request for Change State Operation Occurrence ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send PATCH request for Change State Operation Occurrence +Send PATCH request for Change State Operation Occurrences 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}"} @@ -206,7 +206,7 @@ Send PATCH request for Change State Operation Occurrence ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send DELETE request for Change State Operation Occurrence +Send DELETE request for Change State Operation Occurrences 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}"} -- GitLab From 11670aa4a84ea6180a32c007743444973fb4a7ea Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 9 Sep 2020 18:30:58 +0200 Subject: [PATCH 498/580] renamed NFVMANOCim robot file --- ...rance.robot => IndividualStateChangeOperationOccurrence.robot} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename SOL009/NFVManoConfigurationAndInformationManagement-API/{IndividualStateChangeOpperationOccurance.robot => IndividualStateChangeOperationOccurrence.robot} (100%) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot similarity index 100% rename from SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOpperationOccurance.robot rename to SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot -- GitLab From ea3a36e77c2adbaa6d343d4a95832a04bddd0068 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 9 Sep 2020 18:36:10 +0200 Subject: [PATCH 499/580] fixed NFVMANOCim NFVMANO interface(s) --- .../IndividualNFVMANOServiceInterface.robot | 2 +- .../NFVMANOCimKeywords.robot | 22 ++--- .../NFVMANOServiceInterface.robot | 96 +++++++++---------- 3 files changed, 60 insertions(+), 60 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot index 8115bf4bb..2d2417ffd 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot @@ -94,4 +94,4 @@ DELETE Individual NFV-MANO Service Interface - Method not implemented ... Applicability: none ... Post-Conditions: none Send Delete request for Individual NFV-MANO Service Interface - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index bc59060fa..9f556dda6 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -255,7 +255,7 @@ Send Delete request for Individual Change State Operation Occurance ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send Post request for NFV-MANO Service Interface +Send Post request for NFV-MANO Service Interfaces 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}"} @@ -263,7 +263,7 @@ Send Post request for NFV-MANO Service Interface ${output}= Output response Set Suite Variable ${response} ${output} -Get NFV-MANO Service Interface +Get NFV-MANO Service Interfaces Log Query to GET information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity. Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -272,7 +272,7 @@ Get NFV-MANO Service Interface ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get NFV-MANO Service Interface with invalid filter +Get NFV-MANO Service Interfaces with invalid filter Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response @@ -280,7 +280,7 @@ Get NFV-MANO Service Interface with invalid filter ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get NFV-MANO Service Interface with invalid selector +Get NFV-MANO Service Interfaces with invalid selector Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Log Execute Query and validate response @@ -288,7 +288,7 @@ Get NFV-MANO Service Interface with invalid selector ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get NFV-MANO Service Interface with filter +Get NFV-MANO Service Interfaces with filter Log Query information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity with attribute filters. Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -297,7 +297,7 @@ Get NFV-MANO Service Interface with filter ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Get NFV-MANO Service Interface with all_fields attribute selector +Get NFV-MANO Service Interfaces with all_fields attribute selector Log Queries information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, using all_fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -305,7 +305,7 @@ Get NFV-MANO Service Interface with all_fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Get NFV-MANO Service Interface with fields attribute selector +Get NFV-MANO Service Interfaces with fields attribute selector Log Queries information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -313,7 +313,7 @@ Get NFV-MANO Service Interface with fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Get NFV-MANO Service Interface with exclude_fields attribute selector +Get NFV-MANO Service Interfaces with exclude_fields attribute selector Log Queries information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -321,7 +321,7 @@ Get NFV-MANO Service Interface with exclude_fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Send PUT request for NFV-MANO Service Interface +Send PUT request for NFV-MANO Service Interfaces 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}"} @@ -329,7 +329,7 @@ Send PUT request for NFV-MANO Service Interface ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send PATCH request for NFV-MANO Service Interface +Send PATCH request for NFV-MANO Service Interfaces 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}"} @@ -337,7 +337,7 @@ Send PATCH request for NFV-MANO Service Interface ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send DELETE request for NFV-MANO Service Interface +Send DELETE request for NFV-MANO Service Interfaces 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}"} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot index 4badcf112..ba1c97bf2 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot @@ -8,181 +8,181 @@ Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} Library MockServerLibrary *** Test Cases *** -POST NFV-MANO Service Interface - Method not implemented +POST NFV-MANO Service Interfaces - Method not implemented [Documentation] Test ID: 8.3.1.5.1 - ... Test title: POST NFV-MANO Service Interface - Method not implemented + ... Test title: POST NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.10.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Post request for NFV-MANO Service Interface + Send Post request for NFV-MANO Service Interfaces Check HTTP Response Status Code Is 405 -GET NFV-MANO Service Interface +GET NFV-MANO Service Interfaces [Documentation] Test ID: 8.3.1.5.2 - ... Test title: GET NFV-MANO Service Interface + ... Test title: GET NFV-MANO Service Interfaces ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Service Interface + Get NFV-MANO Service Interfaces Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces -GET NFV-MANO Service Interface - invalid attribute-based filter +GET NFV-MANO Service Interfaces - invalid attribute-based filter [Documentation] Test ID: 8.3.1.5.3 - ... Test title: GET NFV-MANO Service Interface - invalid attribute-based filter - ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interface fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. + ... Test title: GET NFV-MANO Service Interfaces - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Service Interface with invalid filter + Get NFV-MANO Service Interfaces with invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET NFV-MANO Service Interface - invalid attribute selector +GET NFV-MANO Service Interfaces - invalid attribute selector [Documentation] Test ID: 8.3.1.5.4 - ... Test title: GET NFV-MANO Service Interface - invalid attribute selector - ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interface fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Test title: GET NFV-MANO Service Interfaces - invalid attribute selector + ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Service Interface with invalid selector + Get NFV-MANO Service Interfaces with invalid selector Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET NFV-MANO Service Interface - Bad Request Response too Big +GET NFV-MANO Service Interfaces - Bad Request Response too Big [Documentation] Test ID: 8.3.1.5.5 - ... Test title: GET NFV-MANO Service Interface - Bad Request Response too Big - ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interface fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Test title: GET NFV-MANO Service Interfaces - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Service Interface + Get NFV-MANO Service Interfaces Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET NFV-MANO Service Interface with attribute-based filter +GET NFV-MANO Service Interfaces with attribute-based filter [Documentation] Test ID: 8.3.1.5.6 - ... Test title: GET NFV-MANO Service Interface with attribute-based filter + ... Test title: GET NFV-MANO Service Interfaces with attribute-based filter ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entities with attribute filters ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Service Interface with filter + Get NFV-MANO Service Interfaces with filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces -GET NFV-MANO Service Interface with "all_fields" attribute selector +GET NFV-MANO Service Interfaces with "all_fields" attribute selector [Documentation] Test ID: 8.3.1.5.7 ... Test title: GET NFV-MANO Service Interface with "all_fields" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Service Interface with "all_fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "all_fields" attribute selector ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Service Interface with all_fields attribute selector + Get NFV-MANO Service Interfaces with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces -GET NFV-MANO Service Interface with "exclude_default" attribute selector +GET NFV-MANO Service Interfaces with "exclude_default" attribute selector [Documentation] Test ID: 8.3.1.5.8 - ... Test title: GET NFV-MANO Service Interface with "exclude_default" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Service Interface with "exclude_default" attribute selector + ... Test title: GET NFV-MANO Service Interfaces with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_default" attribute selector ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Service Interface with all_fields attribute selector + Get NFV-MANO Service Interfaces with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces -GET NFV-MANO Service Interface with "fields" attribute selector +GET NFV-MANO Service Interfaces with "fields" attribute selector [Documentation] Test ID: 8.3.1.5.9 - ... Test title: GET NFV-MANO Service Interface with "fields" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Service Interface with fields attribute selector + ... Test title: GET NFV-MANO Service Interfaces with "fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with fields attribute selector ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Service Interface with fields attribute selector + Get NFV-MANO Service Interfaces with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces -GET NFV-MANO Service Interface with "exclude_fields" attribute selector +GET NFV-MANO Service Interfaces with "exclude_fields" attribute selector [Documentation] Test ID: 8.3.1.5.10 - ... Test title: GET NFV-MANO Service Interface with "exclude_fields" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Service Interface with "exclude_fields" attribute selector + ... Test title: GET NFV-MANO Service Interfaces with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_fields" attribute selector ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Service Interface with exclude_fields attribute selector + Get NFV-MANO Service Interfaces with exclude_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces -GET NFV-MANO Service Interface with Paged Response +GET NFV-MANO Service Interfaces with Paged Response [Documentation] Test ID: 8.3.1.5.11 - ... Test title: GET NFV-MANO Service Interface with Paged Response + ... Test title: GET NFV-MANO Service Interfaces with Paged Response ... Test objective: The objective is to query NFV-MANO Service Interface to get Paged Response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get NFV-MANO Service Interface + Get NFV-MANO Service Interfaces Check HTTP Response Status Code Is 200 Check LINK in Header -PUT NFV-MANO Service Interface - Method not implemented +PUT NFV-MANO Service Interfaces - Method not implemented [Documentation] Test ID: 8.3.1.5.12 - ... Test title: PUT NFV-MANO Service Interface - Method not implemented + ... Test title: PUT NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.10.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Put request for NFV-MANO Service Interface + Send Put request for NFV-MANO Service Interfaces Check HTTP Response Status Code Is 405 -PATCH NFV-MANO Service Interface - Method not implemented +PATCH NFV-MANO Service Interfaces - Method not implemented [Documentation] Test ID: 8.3.1.5.13 - ... Test title: PATCH NFV-MANO Service Interface - Method not implemented + ... Test title: PATCH NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.10.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Patch request for NFV-MANO Service Interface + Send Patch request for NFV-MANO Service Interfaces Check HTTP Response Status Code Is 405 -DELETE NFV-MANO Service Interface - Method not implemented +DELETE NFV-MANO Service Interfaces - Method not implemented [Documentation] Test ID: 8.3.1.5.14 - ... Test title: DELETE NFV-MANO Service Interface - Method not implemented + ... Test title: DELETE NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none ... Reference: clause 5.5.10.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Delete request for NFV-MANO Service Interface + Send Delete request for NFV-MANO Service Interfaces Check HTTP Response Status Code Is 405 \ No newline at end of file -- GitLab From 3a8ca1326dadbeacd5e241b778bf8320f2cafda7 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 9 Sep 2020 18:36:39 +0200 Subject: [PATCH 500/580] renamed NFVMANOCim robot file --- ...VMANOServiceInterface.robot => NFVMANOServiceInterfaces.robot} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename SOL009/NFVManoConfigurationAndInformationManagement-API/{NFVMANOServiceInterface.robot => NFVMANOServiceInterfaces.robot} (100%) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot similarity index 100% rename from SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterface.robot rename to SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot -- GitLab From a4f4cc7fa05449e03faecfa2591fbd2cf382b16d Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 10 Sep 2020 17:23:22 +0200 Subject: [PATCH 501/580] updated check link in header --- .../NFVMANOCimKeywords.robot | 2 +- .../Subscriptions.robot | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 9f556dda6..1e9e1bee9 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -186,7 +186,7 @@ Get Change State Operation Occurrences with exclude_fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} -Check LINK in Header +Check HTTP Response Header Contains Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot index 142a5c08d..2bc55ce8b 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot @@ -48,8 +48,8 @@ GET Subscriptions with Paged Response ... Post-Conditions: Get all Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header - + Check HTTP Response Header Contains Link + GET Subscriptions - invalid attribute-based filter [Documentation] Test ID: 8.3.1.10.4 ... Test title: GET Subscriptions - invalid attribute-based filter -- GitLab From 88238de5b0dd69abb6c2d50f86d6c6e8a943b598 Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 11 Sep 2020 16:55:32 +0500 Subject: [PATCH 502/580] added authentication tests --- .../NFVMANOCimKeywords.robot | 31 ++++++++++++- .../PeerEntities.robot | 43 +++++++++++++++++-- .../environment/variables.txt | 3 +- 3 files changed, 72 insertions(+), 5 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 1e9e1bee9..84229bf75 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -777,4 +777,33 @@ Check Postcondition Peer Entity Resource is created Check HTTP Response Header Contains Location ${loc}= Get Value From Json ${response['headers']} $..Location - Should Not Be Empty ${loc} \ No newline at end of file + Should Not Be Empty ${loc} + +GET Peer Entity with malformed authorization token + Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting authentication + Log The GET method queries using invalid token + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Peer Entity without authorization token + Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication + Log The GET method queries omitting token + Set Headers {"Accept": "${ACCEPT_JSON}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET Peer Entity with expired or revoked authorization token + Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication + Log The GET method queries using invalid token + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities + ${output}= Output response + Set Suite Variable ${response} ${output} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot index b1adf732e..3a4768c23 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot @@ -153,9 +153,46 @@ GET Peer Entity with Paged Response Get Peer Entity Check HTTP Response Status Code Is 200 Check LINK in Header + +Get Peer Entity with malformed authorization token + [Documentation] Test ID: 8.3.1.8.12 + ... Test title: Get Peer Entity with malformed authorization token + ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using malformed authorization token. + ... Pre-conditions: none + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Peer Entity with malformed authorization token + Check HTTP Response Status Code Is 400 + +Get Peer Entity without authorization token + [Documentation] Test ID: 8.3.1.8.13 + ... Test title: Get Peer Entity without authorization token + ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when omitting the authorization token. + ... Pre-conditions: none + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Peer Entity without authorization token + Check HTTP Response Status Code Is 401 + +GET information about multiple alarms with expired or revoked authorization token + [Documentation] Test ID: 8.3.1.8.14 + ... Test title: GET information about multiple alarms with expired or revoked authorization token + ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using expired or revoked authorization token. + ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Peer Entity with expired or revoked authorization token + Check HTTP Response Status Code Is 401 + PUT Peer Entities - Method not implemented - [Documentation] Test ID: 8.3.1.8.12 + [Documentation] Test ID: 8.3.1.8.15 ... Test title: PUT Peer Entities - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none @@ -167,7 +204,7 @@ PUT Peer Entities - Method not implemented Check HTTP Response Status Code Is 405 PATCH Peer Entities - Method not implemented - [Documentation] Test ID: 8.3.1.8.13 + [Documentation] Test ID: 8.3.1.8.16 ... Test title: PATCH Peer Entities - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions:none @@ -179,7 +216,7 @@ PATCH Peer Entities - Method not implemented Check HTTP Response Status Code Is 405 DELETE Peer Entities - Method not implemented - [Documentation] Test ID: 8.3.1.8.14 + [Documentation] Test ID: 8.3.1.8.17 ... Test title: DELETE Peer Entities - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt index 7d785da9a..8d85c39e0 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt @@ -3,9 +3,10 @@ ${NFVMANOHOST} localhost ${NFVMANO_PORT} 8080 ${NFVMANO_SCHEMA} https - ${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${NEG_AUTHORIZATION} Bearer negativetoken +${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX +${BAD_AUTHORIZATION} Bear sometoken ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json -- GitLab From fea6a5766899b420983a4c60858f74422a1489be Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 11 Sep 2020 19:34:10 +0500 Subject: [PATCH 503/580] templating, minor bugs fix and new testcases added --- .../ChangeStateOperationOccurrences.robot | 42 ++++++++----- .../IndividualNFVMANOServiceInterface.robot | 26 +++++--- .../IndividualPeerEntity.robot | 22 +++++-- ...vidualStateChangeOperationOccurrence.robot | 18 +++++- .../IndividualSubscription.robot | 2 +- .../NFVMANOCimKeywords.robot | 61 ++++++++++++++----- .../NFVMANOEntity.robot | 6 +- .../NFVMANOServiceInterfaces.robot | 38 ++++++++---- .../PeerEntities.robot | 43 ++++++++----- .../Subscriptions.robot | 7 +-- .../environment/variables.txt | 6 +- .../jsons/ChangeStateRequest.json | 10 +-- .../jsons/CimSubscriptionRequest.json | 6 +- .../jsons/CreatePeerEntityRequest.json | 10 +-- 14 files changed, 200 insertions(+), 97 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot index 052f60013..d105b16bc 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot @@ -23,7 +23,7 @@ POST Change State Operation Occurrences - Method not implemented GET Change State Operation Occurrences [Documentation] Test ID: 8.3.1.3.2 ... Test title: GET Change State Operation Occurrences - ... Test objective: The objective is to query status information about multiple change state operation occurrences. + ... Test objective: The objective is to query status information about multiple change state operation occurrences, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -75,7 +75,7 @@ GET Change State Operation Occurrences - Bad Request Response too Big GET Change State Operation Occurrences with attribute-based filter [Documentation] Test ID: 8.3.1.3.6 ... Test title: GET Change State Operation Occurrences with attribute-based filter - ... Test objective: The objective is to query status information about multiple change state operation occurrences with attribute filters + ... Test objective: The objective is to query status information about multiple change state operation occurrences with attribute filters, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -88,7 +88,7 @@ GET Change State Operation Occurrences with attribute-based filter GET Change State Operation Occurrences with "all_fields" attribute selector [Documentation] Test ID: 8.3.1.3.7 ... Test title: GET Change State Operation Occurrences with "all_fields" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurrences with "all_fields" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrences with "all_fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -101,34 +101,33 @@ GET Change State Operation Occurrences with "all_fields" attribute selector GET Change State Operation Occurrences with "exclude_default" attribute selector [Documentation] Test ID: 8.3.1.3.8 ... Test title: GET Change State Operation Occurrence with "exclude_default" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurrence with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrence with "exclude_default" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State Operation Occurrence with all_fields attribute selector + Get Change State Operation Occurrences with exclude_default attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc - GET Change State Operation Occurrences with "fields" attribute selector [Documentation] Test ID: 8.3.1.3.9 - ... Test title: GET Change State Operation Occurrence with "fields" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurrence with fields attribute selector + ... Test title: GET Change State Operation Occurrences with "fields" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrences with fields attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State Operation Occurrence with fields attribute selector + Get Change State Operation Occurrences with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc GET Change State Operation Occurrences with "exclude_fields" attribute selector [Documentation] Test ID: 8.3.1.3.10 - ... Test title: GET Change State Operation Occurrence with "exclude_fields" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurrence with "exclude_fields" attribute selector + ... Test title: GET Change State Operation Occurrences with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrences with "exclude_fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -149,10 +148,23 @@ GET Change State Operation Occurrences with Paged Response ... Post-Conditions: none Get Change State Operation Occurrence Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Link + +GET Change State Operation Occurrences with "fields" and "exclude_default" attribute selector + [Documentation] Test ID: 8.3.1.3.12 + ... Test title: GET Change State Operation Occurrences with "fields" and "exclude_default" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrences with fields and exclude default attribute selector, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Change State Operation Occurrences with fields and exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc PUT Change State Operation Occurrences - Method not implemented - [Documentation] Test ID: 8.3.1.3.12 + [Documentation] Test ID: 8.3.1.3.13 ... Test title: PUT Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none @@ -164,7 +176,7 @@ PUT Change State Operation Occurrences - Method not implemented Check HTTP Response Status Code Is 405 PATCH Change State Operation Occurrences - Method not implemented - [Documentation] Test ID: 8.3.1.3.13 + [Documentation] Test ID: 8.3.1.3.14 ... Test title: PATCH Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none @@ -176,7 +188,7 @@ PATCH Change State Operation Occurrences - Method not implemented Check HTTP Response Status Code Is 405 DELETE Change State Operation Occurrences - Method not implemented - [Documentation] Test ID: 8.3.1.3.14 + [Documentation] Test ID: 8.3.1.3.15 ... Test title: DELETE Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot index 2d2417ffd..265293770 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot @@ -23,7 +23,7 @@ POST Individual NFV-MANO Service Interface - Method not implemented GET Individual NFV-MANO Service Interface [Documentation] Test ID: 8.3.1.6.2 ... Test title: GET Individual NFV-MANO Service Interface - ... Test objective: The objective is to query status information about an NFV-MANO service interface of the producer NFV-MANO functional entity by reading an "Individual NFV-MANO service interface" resource. + ... Test objective: The objective is to query status information about an NFV-MANO service interface of the producer NFV-MANO functional entity by reading an "Individual NFV-MANO service interface" resource, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -33,8 +33,20 @@ GET Individual NFV-MANO Service Interface Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterface -PUT Individual NFV-MANO Service Interface - Method not implemented +GET Individual NFV-MANO Service Interface - Not Found [Documentation] Test ID: 8.3.1.6.3 + ... Test title: GET Individual NFV-MANO Service Interface - Not Found + ... Test objective: The objective is to test the retrieval of information about an NFV-MANO service interface of the producer NFV-MANO functional entity by reading an "Individual NFV-MANO service interface" resource fails when the resource is not present. + ... Pre-conditions: none + ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual NFV-MANO Service Interface + Check HTTP Response Status Code Is 404 + +PUT Individual NFV-MANO Service Interface - Method not implemented + [Documentation] Test ID: 8.3.1.6.4 ... Test title: PUT Individual NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none @@ -46,9 +58,9 @@ PUT Individual NFV-MANO Service Interface - Method not implemented Check HTTP Response Status Code Is 405 PATCH Individual NFV-MANO Service Interface - [Documentation] Test ID: 8.3.1.6.4 + [Documentation] Test ID: 8.3.1.6.5 ... Test title: PATCH Individual NFV-MANO Service Interface - ... Test objective: This method modifies the Individual NFV-MANO Service Interface resource + ... Test objective: This method modifies the Individual NFV-MANO Service Interface resource, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -59,7 +71,7 @@ PATCH Individual NFV-MANO Service Interface Check HTTP Response Body Json Schema Is ManoServiceInterfaceModifications PATCH Individual NFV-MANO Service Interface - Conflict - [Documentation] Test ID: 8.3.1.6.5 + [Documentation] Test ID: 8.3.1.6.6 ... Test title: PATCH Individual NFV-MANO Service Interface - Conflict ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Service Interface resource failed due to a conflict with the state of the Individual NFV-MANO Service Interface resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. @@ -72,7 +84,7 @@ PATCH Individual NFV-MANO Service Interface - Conflict Check HTTP Response Body Json Schema Is ProblemDetails PATCH Individual NFV-MANO Service Interface - PreCondition Failed - [Documentation] Test ID: 8.3.1.6.6 + [Documentation] Test ID: 8.3.1.6.7 ... Test title: PATCH Individual NFV-MANO Service Interface - PreCondition Failed ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Service Interface resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. @@ -85,7 +97,7 @@ PATCH Individual NFV-MANO Service Interface - PreCondition Failed Check HTTP Response Body Json Schema Is ProblemDetails DELETE Individual NFV-MANO Service Interface - Method not implemented - [Documentation] Test ID: 8.3.1.6.7 + [Documentation] Test ID: 8.3.1.6.8 ... Test title: DELETE Individual NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot index e8b7bc85d..f59e3e0b1 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot @@ -33,8 +33,20 @@ GET Individual Peer Entity Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntity -PUT Individual Peer Entity - Method not implemented +GET Individual Peer Entity - Not Found [Documentation] Test ID: 8.3.1.9.3 + ... Test title: GET Individual Peer Entity - Not Found + ... Test objective: The objective is to test the retrieval of information and configuration hold in the producer NFV-MANO functional entity with regards to a peer entity by reading an individual peer entity resource fails when the resource is not present. + ... Pre-conditions: none + ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Peer Entity + Check HTTP Response Status Code Is 404 + +PUT Individual Peer Entity - Method not implemented + [Documentation] Test ID: 8.3.1.9.4 ... Test title: PUT Individual Peer Entity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none @@ -46,7 +58,7 @@ PUT Individual Peer Entity - Method not implemented Check HTTP Response Status Code Is 405 PATCH Individual Peer Entity - [Documentation] Test ID: 8.3.1.9.4 + [Documentation] Test ID: 8.3.1.9.5 ... Test title: PATCH Individual Peer Entity ... Test objective: This method modifies configuration and information of the producer NFV-MANO functional entity with regards to a peer functional entity by updating the corresponding "Individual peer entity" resource. ... Pre-conditions: At least one Peer Entity resource is created @@ -59,7 +71,7 @@ PATCH Individual Peer Entity Check HTTP Response Body Json Schema Is ManoServiceInterfaceModifications PATCH Individual Peer Entity - Conflict - [Documentation] Test ID: 8.3.1.9.5 + [Documentation] Test ID: 8.3.1.9.6 ... Test title: PATCH Individual Peer Entity - Conflict ... Test objective: The objective is to test that the modification of configuration and information of the producer NFV-MANO functional entity with regards to a peer functional entity by updating the corresponding "Individual peer entity" resource failed due to a conflict with the state of the Individual Peer Entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity resource is created @@ -72,7 +84,7 @@ PATCH Individual Peer Entity - Conflict Check HTTP Response Body Json Schema Is ProblemDetails PATCH Individual Peer Entity - PreCondition Failed - [Documentation] Test ID: 8.3.1.9.6 + [Documentation] Test ID: 8.3.1.9.7 ... Test title: PATCH Individual Peer Entity - PreCondition Failed ... Test objective: The objective is to test that the modification of the Individual Peer Entity resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity resource is created @@ -85,7 +97,7 @@ PATCH Individual Peer Entity - PreCondition Failed Check HTTP Response Body Json Schema Is ProblemDetails DELETE Individual Peer Entity - Method not implemented - [Documentation] Test ID: 8.3.1.9.7 + [Documentation] Test ID: 8.3.1.9.8 ... Test title: DELETE Individual Peer Entity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot index ccd61f63b..be04cc838 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot @@ -33,8 +33,20 @@ GET Individual Change State Operation Occurrence Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ChangeStateOpOcc -PUT Individual Change State Operation Occurrence - Method not implemented +GET Individual Change State Operation Occurrence - Not Found [Documentation] Test ID: 8.3.1.4.3 + ... Test title: GET Individual Change State Operation Occurrence - Not Found + ... Test objective: The objective is to test the retrieval of information about individual change state operation occurence fails when the resource is not present. + ... Pre-conditions: none + ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Change State Operation Occurrence + Check HTTP Response Status Code Is 404 + +PUT Individual Change State Operation Occurrence - Method not implemented + [Documentation] Test ID: 8.3.1.4.4 ... Test title: PUT Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none @@ -46,7 +58,7 @@ PUT Individual Change State Operation Occurrence - Method not implemented Check HTTP Response Status Code Is 405 PATCH Individual Change State Operation Occurrence - Method not implemented - [Documentation] Test ID: 8.3.1.4.4 + [Documentation] Test ID: 8.3.1.4.5 ... Test title: PATCH Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none @@ -58,7 +70,7 @@ PATCH Individual Change State Operation Occurrence - Method not implemented Check HTTP Response Status Code Is 405 DELETE Individual Change State Operation Occurrence - Method not implemented - [Documentation] Test ID: 8.3.1.4.5 + [Documentation] Test ID: 8.3.1.4.6 ... Test title: DELETE Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot index 8801e21f1..c40816dcc 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot @@ -41,7 +41,7 @@ DELETE Individual Subscription ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The is not available anymore in the NFV-MANO + ... Post-Conditions: The resource is not available anymore in the NFV-MANO Send Delete request for individual Subscription Check HTTP Response Status Code Is 204 Check Postcondition Subscription is Deleted diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 84229bf75..57ce6dcff 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -1,4 +1,5 @@ *** Settings *** +Library String Resource environment/variables.txt Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false Library MockServerLibrary @@ -27,10 +28,6 @@ Check HTTP Response Body Json Schema Is ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK - -Check Operation Occurrence Id - ${OpOccId}= Get Value From Json ${response['headers']} $..Location - Should Not Be Empty ${OpOccId} Send Post request for NFV-MANO Entity Log Trying to perform a POST (method should not be implemented) @@ -177,6 +174,14 @@ Get Change State Operation Occurrences with fields attribute selector GET ${apiRoot}/${apiName}/${apiMajorVersion}/change_state_ops?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} + +Get Change State Operation Occurrences with exclude_default attribute selector + Log Queries information about multiple change state operation occurrences, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/change_state_ops?exclude_default + ${output}= Output response + Set Suite Variable ${response} ${output} Get Change State Operation Occurrences with exclude_fields attribute selector Log Queries information about multiple change state operation occurrences, using fields @@ -186,6 +191,14 @@ Get Change State Operation Occurrences with exclude_fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} +Get Change State Operation Occurrences with fields and exclude_default attribute selector + Log Queries information about multiple change state operation occurrences, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/change_state_ops?exclude_default&fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Header Contains Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} @@ -304,6 +317,14 @@ Get NFV-MANO Service Interfaces with all_fields attribute selector GET ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} + +Get NFV-MANO Service Interfaces with exclude_default and fields attribute selector + Log Queries information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, using all_fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces?exclude_default&fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} Get NFV-MANO Service Interfaces with fields attribute selector Log Queries information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, using fields @@ -390,8 +411,9 @@ Send Delete request for Individual NFV-MANO Service Interface Send Post request for Change interface state task Log Trying to perform a POST for Change interface state task Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/ChangeStateRequest.json + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${template}= Get File jsons/ChangeStateRequest.json + ${body}= Format String ${template} operationalStateAction=${operationalStateAction} POST ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces/${manoServiceInterfaceId}/change_state ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -434,8 +456,9 @@ Send Delete request for Change interface state task Send Post request for Peer Entity Log Trying to perform a POST for Peer Entity Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/CreatePeerEntityRequest.json + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${template}= Get File jsons/CreatePeerEntityRequest.json + ${body}= Format String ${template} peerEntityId=${peerEntityId} name=${name} type=${type} POST ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -489,6 +512,14 @@ Get Peer Entities with fields attribute selector GET ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} + +Get Peer Entity with exclude_default and fields attribute selector + Log Queries information about multiple peer entities, using fields + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/peer_entities?exclude_default&fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} Get Peer Entities with exclude_fields attribute selector Log Queries information about multiple peer entities, using fields @@ -564,9 +595,6 @@ Send Delete request for Individual Peer Entity ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} - - - Create Sessions Pass Execution If ${NFVMANO_CHECKS_NOTIF_ENDPOINT} == 0 MockServer not necessary to run Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance @@ -609,8 +637,9 @@ Get Subscriptions with invalid attribute-based filters Send Post Request for Subscription Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} - ${body_request}= Get File jsons/CimSubscriptionRequest.json + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + ${template}= Get File jsons/CimSubscriptionRequest.json + ${body_request}= Format String ${template} callback_uri=${callback_uri} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} ${output}= Output response Set Suite Variable ${response} ${output} @@ -619,7 +648,8 @@ Send Post Request for Subscription Check HTTP Response Body CimSubscription Attributes Values Match the Issued Subscription Log Check Response matches subscription - ${body}= Get File jsons/subscriptions.json + ${template}= Get File jsons/CimSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri} ${subscription}= evaluate json.loads('''${body}''') json Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} @@ -635,7 +665,8 @@ Send Post Request for Duplicated Subscription Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body_request}= Get File jsons/CimSubscriptionRequest.json + ${template}= Get File jsons/CimSubscriptionRequest.json + ${body_request}= Format String ${template} callback_uri=${callback_uri} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot index 113a69e6c..a9bfd9b55 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot @@ -36,7 +36,7 @@ GET NFV-MANO entity GET NFV-MANO entity - Not Found [Documentation] Test ID: 8.3.1.1.3 ... Test title: Get NFV-MANO entity - Not Found - ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource fails when the resource is not present and perform the JSON schema validation of the failed operation HTTP response. + ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource fails when the resource is not present. ... Pre-conditions: none ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -44,8 +44,6 @@ GET NFV-MANO entity - Not Found ... Post-Conditions: none GET NFV-MANO entity resource Check HTTP Response Status Code Is 404 - Check HTTP Response Body Json Schema Is ProblemDetails - PUT NFV-MANO entity - Method not implemented [Documentation] Test ID: 8.3.1.1.4 @@ -62,7 +60,7 @@ PUT NFV-MANO entity - Method not implemented PATCH NFV-MANO entity [Documentation] Test ID: 8.3.1.1.5 ... Test title: PATCH NFV-MANO entity - ... Test objective: This method modifies the NFV-MANO entity resource + ... Test objective: The objective is to test that PATCH method modifies the NFV-MANO entity resource and perform a JSON schema and content validation of the modified response. ... Pre-conditions: NFV-MANO entity resource is already created. ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot index ba1c97bf2..e3f619468 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot @@ -23,7 +23,7 @@ POST NFV-MANO Service Interfaces - Method not implemented GET NFV-MANO Service Interfaces [Documentation] Test ID: 8.3.1.5.2 ... Test title: GET NFV-MANO Service Interfaces - ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity. + ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -75,7 +75,7 @@ GET NFV-MANO Service Interfaces - Bad Request Response too Big GET NFV-MANO Service Interfaces with attribute-based filter [Documentation] Test ID: 8.3.1.5.6 ... Test title: GET NFV-MANO Service Interfaces with attribute-based filter - ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entities with attribute filters + ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entities with attribute filters, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -88,7 +88,7 @@ GET NFV-MANO Service Interfaces with attribute-based filter GET NFV-MANO Service Interfaces with "all_fields" attribute selector [Documentation] Test ID: 8.3.1.5.7 ... Test title: GET NFV-MANO Service Interface with "all_fields" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "all_fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "all_fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -101,7 +101,7 @@ GET NFV-MANO Service Interfaces with "all_fields" attribute selector GET NFV-MANO Service Interfaces with "exclude_default" attribute selector [Documentation] Test ID: 8.3.1.5.8 ... Test title: GET NFV-MANO Service Interfaces with "exclude_default" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_default" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -110,12 +110,11 @@ GET NFV-MANO Service Interfaces with "exclude_default" attribute selector Get NFV-MANO Service Interfaces with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces - - + GET NFV-MANO Service Interfaces with "fields" attribute selector [Documentation] Test ID: 8.3.1.5.9 ... Test title: GET NFV-MANO Service Interfaces with "fields" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with fields attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with fields attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -128,7 +127,7 @@ GET NFV-MANO Service Interfaces with "fields" attribute selector GET NFV-MANO Service Interfaces with "exclude_fields" attribute selector [Documentation] Test ID: 8.3.1.5.10 ... Test title: GET NFV-MANO Service Interfaces with "exclude_fields" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -138,8 +137,21 @@ GET NFV-MANO Service Interfaces with "exclude_fields" attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ManoServiceInterfaces -GET NFV-MANO Service Interfaces with Paged Response +GET NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute selector [Documentation] Test ID: 8.3.1.5.11 + ... Test title: GET NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute selector, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get NFV-MANO Service Interfaces with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + +GET NFV-MANO Service Interfaces with Paged Response + [Documentation] Test ID: 8.3.1.5.12 ... Test title: GET NFV-MANO Service Interfaces with Paged Response ... Test objective: The objective is to query NFV-MANO Service Interface to get Paged Response. ... Pre-conditions: none @@ -149,10 +161,10 @@ GET NFV-MANO Service Interfaces with Paged Response ... Post-Conditions: none Get NFV-MANO Service Interfaces Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Link PUT NFV-MANO Service Interfaces - Method not implemented - [Documentation] Test ID: 8.3.1.5.12 + [Documentation] Test ID: 8.3.1.5.13 ... Test title: PUT NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none @@ -164,7 +176,7 @@ PUT NFV-MANO Service Interfaces - Method not implemented Check HTTP Response Status Code Is 405 PATCH NFV-MANO Service Interfaces - Method not implemented - [Documentation] Test ID: 8.3.1.5.13 + [Documentation] Test ID: 8.3.1.5.14 ... Test title: PATCH NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none @@ -176,7 +188,7 @@ PATCH NFV-MANO Service Interfaces - Method not implemented Check HTTP Response Status Code Is 405 DELETE NFV-MANO Service Interfaces - Method not implemented - [Documentation] Test ID: 8.3.1.5.14 + [Documentation] Test ID: 8.3.1.5.15 ... Test title: DELETE NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot index 3a4768c23..e5c10b793 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot @@ -26,7 +26,7 @@ POST Peer Entity GET Peer Entities [Documentation] Test ID: 8.3.1.8.2 ... Test title: GET Peer Entities - ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities. + ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -78,7 +78,7 @@ GET Peer Entities - Bad Request Response too Big GET Peer Entities with attribute-based filter [Documentation] Test ID: 8.3.1.8.6 ... Test title: GET Peer Entities with attribute-based filter - ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with attribute filters + ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with attribute filters, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -91,7 +91,7 @@ GET Peer Entities with attribute-based filter GET Peer Entities with "all_fields" attribute selector [Documentation] Test ID: 8.3.1.8.7 ... Test title: GET Peer Entities with "all_fields" attribute selector - ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "all_fields" attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "all_fields" attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -104,7 +104,7 @@ GET Peer Entities with "all_fields" attribute selector GET Peer Entities with "exclude_default" attribute selector [Documentation] Test ID: 8.3.1.8.8 ... Test title: GET Peer Entities with "exclude_default" attribute selector - ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_default" attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -114,11 +114,10 @@ GET Peer Entities with "exclude_default" attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities - GET Peer Entities with "fields" attribute selector [Documentation] Test ID: 8.3.1.8.9 ... Test title: GET Peer Entities with "fields" attribute selector - ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with fields attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with fields attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -131,7 +130,7 @@ GET Peer Entities with "fields" attribute selector GET Peer Entities with "exclude_fields" attribute selector [Documentation] Test ID: 8.3.1.8.10 ... Test title: GET Peer Entities with "exclude_fields" attribute selector - ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_fields" attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -141,8 +140,21 @@ GET Peer Entities with "exclude_fields" attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities -GET Peer Entity with Paged Response +GET Peer Entities with "exclude_default" and "fields" attribute selector [Documentation] Test ID: 8.3.1.8.11 + ... Test title: GET Peer Entities with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_default" and "fields" attribute selector, and perform the JSON schema validation of the returned job data structure. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Peer Entity with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + +GET Peer Entity with Paged Response + [Documentation] Test ID: 8.3.1.8.12 ... Test title: GET Peer Entity with Paged Response ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities to get Paged Response. ... Pre-conditions: At least one Peer Entity is already created. @@ -152,10 +164,10 @@ GET Peer Entity with Paged Response ... Post-Conditions: none Get Peer Entity Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contains Link Get Peer Entity with malformed authorization token - [Documentation] Test ID: 8.3.1.8.12 + [Documentation] Test ID: 8.3.1.8.13 ... Test title: Get Peer Entity with malformed authorization token ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using malformed authorization token. ... Pre-conditions: none @@ -167,7 +179,7 @@ Get Peer Entity with malformed authorization token Check HTTP Response Status Code Is 400 Get Peer Entity without authorization token - [Documentation] Test ID: 8.3.1.8.13 + [Documentation] Test ID: 8.3.1.8.14 ... Test title: Get Peer Entity without authorization token ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when omitting the authorization token. ... Pre-conditions: none @@ -179,7 +191,7 @@ Get Peer Entity without authorization token Check HTTP Response Status Code Is 401 GET information about multiple alarms with expired or revoked authorization token - [Documentation] Test ID: 8.3.1.8.14 + [Documentation] Test ID: 8.3.1.8.15 ... Test title: GET information about multiple alarms with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using expired or revoked authorization token. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO @@ -190,9 +202,8 @@ GET information about multiple alarms with expired or revoked authorization toke GET Peer Entity with expired or revoked authorization token Check HTTP Response Status Code Is 401 - PUT Peer Entities - Method not implemented - [Documentation] Test ID: 8.3.1.8.15 + [Documentation] Test ID: 8.3.1.8.16 ... Test title: PUT Peer Entities - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none @@ -204,7 +215,7 @@ PUT Peer Entities - Method not implemented Check HTTP Response Status Code Is 405 PATCH Peer Entities - Method not implemented - [Documentation] Test ID: 8.3.1.8.16 + [Documentation] Test ID: 8.3.1.8.17 ... Test title: PATCH Peer Entities - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions:none @@ -216,7 +227,7 @@ PATCH Peer Entities - Method not implemented Check HTTP Response Status Code Is 405 DELETE Peer Entities - Method not implemented - [Documentation] Test ID: 8.3.1.8.17 + [Documentation] Test ID: 8.3.1.8.18 ... Test title: DELETE Peer Entities - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot index 2bc55ce8b..6395146fb 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot @@ -14,7 +14,7 @@ Suite Teardown Terminate All Processes kill=true GET all Subscriptions [Documentation] Test ID: 8.3.1.10.1 ... Test title: GET all Subscriptions - ... Test objective: The objective is to test the retrieval list of active subscriptions of API consumer and perform a JSON schema validation of the returned subscriptions data structure + ... Test objective: The objective is to test the retrieval list of active subscriptions of API consumer and perform a JSON schema validation of the returned subscriptions data structure. ... Pre-conditions: At least one subscription is available in the NFV-MANO. ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -27,7 +27,7 @@ GET all Subscriptions GET Subscriptions with attribute-based filter [Documentation] Test ID: 8.3.1.10.2 ... Test title: GET Subscriptions with attribute-based filter - ... Test objective: The objective is to test the retrieval of active subscriptions list of API consumer using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters + ... Test objective: The objective is to test the retrieval of active subscriptions list of API consumer using attribute-based filter and perform a JSON schema validation of the collected indicators data structure. ... Pre-conditions: At least one subscription is available in the NFV-MANO. ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO @@ -89,12 +89,11 @@ GET Subscriptions - invalid resource endpoint Get all Subscriptions Check HTTP Response Status Code Is 404 - Create new Subscription [Documentation] Test ID 8.3.1.10.7 ... Test title: Create new Subscription ... Test objective: The objective is to test the creation of a new subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: + ... Pre-conditions: none ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt index 8d85c39e0..2403b026b 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt @@ -55,4 +55,8 @@ ${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa ${erroneousSubscriptionId} erroneousSubscriptionId ${newSubscriptionId} newSubsciptionId -${origResponse} {} \ No newline at end of file +${origResponse} {} + +${name} EntityName +${type} NFVO +${operationalStateAction} START \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json index 82608e379..1245a6b65 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json @@ -1,7 +1,7 @@ -{ +{{ "operationalStateChange": - { - "operationalStateAction":"START" - } + {{ + "operationalStateAction":"{operationalStateAction}" + }} -} \ No newline at end of file +}} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CimSubscriptionRequest.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CimSubscriptionRequest.json index 3475fa745..a86c405f9 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CimSubscriptionRequest.json +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CimSubscriptionRequest.json @@ -1,3 +1,3 @@ -{ - "callbackUri": "http://172.22.1.7:9091" -} \ No newline at end of file +{{ + "callbackUri": "{callback_uri}{callback_endpoint}" +}} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CreatePeerEntityRequest.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CreatePeerEntityRequest.json index baa48b7e2..256bd547b 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CreatePeerEntityRequest.json +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/CreatePeerEntityRequest.json @@ -1,5 +1,5 @@ -{ - "peerEntityId": "", - "name": "NFV-MANO Entity", - "type": "NFVO" -} \ No newline at end of file +{{ + "peerEntityId": "{peerEntityId}", + "name": "{name}", + "type": "{type}" +}} \ No newline at end of file -- GitLab From 3c97e28d45875b0bbcf593bd978e9d7035c00b48 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 14 Sep 2020 13:21:11 +0500 Subject: [PATCH 504/580] minor bugs fixed and redundant post-conditions removed --- .../IndividualSubscription.robot | 9 +++----- .../NFVMANOCimKeywords.robot | 22 ------------------- .../PeerEntities.robot | 2 +- .../Subscriptions.robot | 3 +-- .../jsons/ManoConfigModificationRequest.json | 2 +- 5 files changed, 6 insertions(+), 32 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot index c40816dcc..15832f9a6 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot @@ -66,10 +66,9 @@ POST Individual Subscription - Method not implemented ... Reference: clause 5.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The VNF Performance Subscription is not created on the NFV-MANO + ... Post-Conditions: none Send Post request for individual Subscription Check HTTP Response Status Code Is 405 - Check Postcondition Subscription is not Created PUT Individual Subscription - Method not implemented [Documentation] Test ID: 8.3.1.11.6 @@ -79,10 +78,9 @@ PUT Individual Subscription - Method not implemented ... Reference: clause 5.5.5.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The subscription is not modified by the operation + ... Post-Conditions: none Send Put request for individual Subscription Check HTTP Response Status Code Is 405 - Check Postcondition Subscription is Unmodified (Implicit) PATCH Individual Subscription - Method not implemented [Documentation] Test ID: 8.3.1.11.7 @@ -92,7 +90,6 @@ PATCH Individual Subscription - Method not implemented ... Reference: clause 5.5.5.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The subscription is not modified by the operation + ... Post-Conditions: none Send Patch request for individual Subscription Check HTTP Response Status Code Is 405 - Check Postcondition Subscription is Unmodified (Implicit) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 57ce6dcff..7fb6f6466 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -714,11 +714,6 @@ Send Delete Request for Subscriptions ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition Subscriptions Exists - Log Checking that subscriptions exists - Get all Subscriptions - Check HTTP Response Status Code Is 200 - Get Individual Subscription Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} @@ -780,23 +775,6 @@ Send Patch request for individual Subscription PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable @{response} ${output} - -Check Postcondition Subscription is Unmodified (Implicit) - Log Check postconidtion subscription not modified - GET individual Subscription - Log Check Response matches original Subscription - ${subscription}= evaluate json.loads('''${response['body']}''') json - Should Be Equal As Strings ${origResponse['body']['id']} ${subscription.id} - Should Be Equal As Strings ${origResponse['body']['callbackUri']} ${subscription.callbackUri} - -Check Postcondition 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} - ${output}= Output response - Set Suite Variable @{response} ${output} - Check HTTP Response Status Code Is 404 Check Postcondition Peer Entity Resource is created Log Check Postcondition Peer Entity resource diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot index e5c10b793..f1917fe1e 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot @@ -176,7 +176,7 @@ Get Peer Entity with malformed authorization token ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none GET Peer Entity with malformed authorization token - Check HTTP Response Status Code Is 400 + Check HTTP Response Status Code Is 401 Get Peer Entity without authorization token [Documentation] Test ID: 8.3.1.8.14 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot index 6395146fb..c3094aa2e 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot @@ -169,7 +169,6 @@ DELETE Subscriptions - Method not implemented ... Reference: clause 5.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: The subscriptions are not deleted by the failed operation + ... Post-Conditions: none Send Delete Request for Subscriptions Check HTTP Response Status Code Is 405 - Check Postcondition Subscriptions Exists diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ManoConfigModificationRequest.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ManoConfigModificationRequest.json index eca04e508..906b3143f 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ManoConfigModificationRequest.json +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ManoConfigModificationRequest.json @@ -1,3 +1,3 @@ { - "name": "NFV-MANO Entity" + "name": "NFV-MANO_Entity" } \ No newline at end of file -- GitLab From 88f336262c1aec45860756e60447faa05f17f0e3 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 14 Sep 2020 10:25:21 +0200 Subject: [PATCH 505/580] removed bad pre-condition --- .../PeerEntities.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot index f1917fe1e..54e5f11a4 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot @@ -194,7 +194,7 @@ GET information about multiple alarms with expired or revoked authorization toke [Documentation] Test ID: 8.3.1.8.15 ... Test title: GET information about multiple alarms with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using expired or revoked authorization token. - ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO + ... Pre-conditions: none ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. -- GitLab From 1f96373a911da8d47eb7a3c910d2f4033ffcf9c0 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 14 Sep 2020 15:07:50 +0500 Subject: [PATCH 506/580] pre-conditions updated --- .../IndividualSubscription.robot | 4 ++-- .../Subscriptions.robot | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot index 15832f9a6..845145baa 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot @@ -74,7 +74,7 @@ PUT Individual Subscription - Method not implemented [Documentation] Test ID: 8.3.1.11.6 ... Test title: PUT Individual Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing subscription - ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 5.5.5.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -86,7 +86,7 @@ PATCH Individual Subscription - Method not implemented [Documentation] Test ID: 8.3.1.11.7 ... Test title: PATCH Individual Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing subscription - ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 5.5.5.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot index c3094aa2e..76465b7e9 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot @@ -141,7 +141,7 @@ PUT Subscriptions - Method not implemented [Documentation] Test ID 8.3.1.10.10 ... Test title: PUT Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions - ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 5.5.4.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -153,7 +153,7 @@ PATCH Subscriptions - Method not implemented [Documentation] Test ID 8.3.1.10.11 ... Test title: PATCH Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions - ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 5.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none @@ -165,7 +165,7 @@ DELETE Subscriptions - Method not implemented [Documentation] Test ID 8.3.1.10.12 ... Test title: DELETE Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions - ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Pre-conditions: none ... Reference: clause 5.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none -- GitLab From 34766cfb5d80f06be856c2d2118abefdc9064bf9 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 6 Oct 2020 18:07:01 +0500 Subject: [PATCH 507/580] template bug fix added --- .../NFVMANOCimKeywords.robot | 6 +++--- .../environment/variables.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 7fb6f6466..57afc035a 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -639,7 +639,7 @@ Send Post Request for Subscription Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} ${template}= Get File jsons/CimSubscriptionRequest.json - ${body_request}= Format String ${template} callback_uri=${callback_uri} + ${body_request}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} ${output}= Output response Set Suite Variable ${response} ${output} @@ -649,7 +649,7 @@ Send Post Request for Subscription Check HTTP Response Body CimSubscription Attributes Values Match the Issued Subscription Log Check Response matches subscription ${template}= Get File jsons/CimSubscriptionRequest.json - ${body}= Format String ${template} callback_uri=${callback_uri} + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} ${subscription}= evaluate json.loads('''${body}''') json Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} @@ -666,7 +666,7 @@ Send Post Request for Duplicated Subscription Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/CimSubscriptionRequest.json - ${body_request}= Format String ${template} callback_uri=${callback_uri} + ${body_request}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt index 2403b026b..3e933f290 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt @@ -36,7 +36,7 @@ ${peerEntityId} ${callback_port} 9091 ${callback_uri} http://172.22.1.7:${callback_port} -${callback_endpoint} /nfvmanocim/subscriptions +${callback_endpoint} /subscriptions ${filter_ok} callbackUri=${callbackUri} ${filter_ko} erroneousFilter=erroneous ${callback_endpoint_fwd} /endpoint/check -- GitLab From 41ac1b80b54b596217fcec21cfa7bff4d83fdae0 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 22 Oct 2020 18:14:31 +0200 Subject: [PATCH 508/580] updated references --- .../ChangeNFVMANOEntityStateTask.robot | 12 +++--- .../ChangeStateOperationOccurrences.robot | 30 +++++++-------- .../IndividualNFVMANOServiceInterface.robot | 16 ++++---- .../IndividualPeerEntity.robot | 16 ++++---- ...vidualStateChangeOperationOccurrence.robot | 12 +++--- .../IndividualSubscription.robot | 14 +++---- .../NFVMANOEntity.robot | 16 ++++---- .../NFVMANOServiceInterfaces.robot | 30 +++++++-------- .../NotificationEndpoint.robot | 4 +- .../PeerEntities.robot | 38 +++++++++---------- .../Subscriptions.robot | 24 ++++++------ 11 files changed, 106 insertions(+), 106 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot index 4de972ff3..00e63bda4 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot @@ -12,7 +12,7 @@ POST NFV-MANO functional entity application state change ... Test title: POST NFV-MANO functional entity application state change ... Test objective: The objective is to request state change of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ POST NFV-MANO functional entity application state change - Conflict ... Test title: POST NFV-MANO functional entity application state change - Conflict ... Test objective: The objective is to test that request to change the state of the NFV-MANO functional entity application fails due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET NFV-MANO functional entity application state change - Method not implemented ... Test title: GET NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT NFV-MANO functional entity application state change - Method not implemented ... Test title: PUT NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.7.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH NFV-MANO functional entity application state change - Method not implement ... Test title: PATCH NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.7.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE NFV-MANO functional entity application state change - Method not implemen ... Test title: DELETE NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.7.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot index d105b16bc..d0b06d71d 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot @@ -13,7 +13,7 @@ POST Change State Operation Occurrences - Method not implemented ... Test title: POST Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Change State Operation Occurrences ... Test title: GET Change State Operation Occurrences ... Test objective: The objective is to query status information about multiple change state operation occurrences, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Change State Operation Occurrences - invalid attribute-based filter ... Test title: GET Change State Operation Occurrences - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET Change State Operation Occurrences - invalid attribute selector ... Test title: GET Change State Operation Occurrences - invalid attribute selector ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ GET Change State Operation Occurrences - Bad Request Response too Big ... Test title: GET Change State Operation Occurrences - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ GET Change State Operation Occurrences with attribute-based filter ... Test title: GET Change State Operation Occurrences with attribute-based filter ... Test objective: The objective is to query status information about multiple change state operation occurrences with attribute filters, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ GET Change State Operation Occurrences with "all_fields" attribute selector ... Test title: GET Change State Operation Occurrences with "all_fields" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrences with "all_fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ GET Change State Operation Occurrences with "exclude_default" attribute selector ... Test title: GET Change State Operation Occurrence with "exclude_default" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrence with "exclude_default" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ GET Change State Operation Occurrences with "fields" attribute selector ... Test title: GET Change State Operation Occurrences with "fields" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrences with fields attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ GET Change State Operation Occurrences with "exclude_fields" attribute selector ... Test title: GET Change State Operation Occurrences with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrences with "exclude_fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ GET Change State Operation Occurrences with Paged Response ... Test title: GET Change State Operation Occurrence with Paged Response ... Test objective: The objective is to query Change State Operation Occurrence to get Paged Response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -155,7 +155,7 @@ GET Change State Operation Occurrences with "fields" and "exclude_default" attri ... Test title: GET Change State Operation Occurrences with "fields" and "exclude_default" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrences with fields and exclude default attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -168,7 +168,7 @@ PUT Change State Operation Occurrences - Method not implemented ... Test title: PUT Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -180,7 +180,7 @@ PATCH Change State Operation Occurrences - Method not implemented ... Test title: PATCH Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -192,7 +192,7 @@ DELETE Change State Operation Occurrences - Method not implemented ... Test title: DELETE Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.8.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot index 265293770..3e811b026 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot @@ -13,7 +13,7 @@ POST Individual NFV-MANO Service Interface - Method not implemented ... Test title: POST Individual NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.11.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.11.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual NFV-MANO Service Interface ... Test title: GET Individual NFV-MANO Service Interface ... Test objective: The objective is to query status information about an NFV-MANO service interface of the producer NFV-MANO functional entity by reading an "Individual NFV-MANO service interface" resource, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Individual NFV-MANO Service Interface - Not Found ... Test title: GET Individual NFV-MANO Service Interface - Not Found ... Test objective: The objective is to test the retrieval of information about an NFV-MANO service interface of the producer NFV-MANO functional entity by reading an "Individual NFV-MANO service interface" resource fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual NFV-MANO Service Interface - Method not implemented ... Test title: PUT Individual NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.11.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.11.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual NFV-MANO Service Interface ... Test title: PATCH Individual NFV-MANO Service Interface ... Test objective: This method modifies the Individual NFV-MANO Service Interface resource, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. - ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Individual NFV-MANO Service Interface is modified by the operation @@ -75,7 +75,7 @@ PATCH Individual NFV-MANO Service Interface - Conflict ... Test title: PATCH Individual NFV-MANO Service Interface - Conflict ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Service Interface resource failed due to a conflict with the state of the Individual NFV-MANO Service Interface resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. - ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Individual NFV-MANO Service Interface is not modified by the operation @@ -88,7 +88,7 @@ PATCH Individual NFV-MANO Service Interface - PreCondition Failed ... Test title: PATCH Individual NFV-MANO Service Interface - PreCondition Failed ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Service Interface resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. - ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Individual NFV-MANO Service Interface is not modified by the operation @@ -101,7 +101,7 @@ DELETE Individual NFV-MANO Service Interface - Method not implemented ... Test title: DELETE Individual NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.11.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.11.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot index f59e3e0b1..eda38f18e 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot @@ -13,7 +13,7 @@ POST Individual Peer Entity - Method not implemented ... Test title: POST Individual Peer Entity - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.14.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.14.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual Peer Entity ... Test title: GET Individual Peer Entity ... Test objective: The objective is to retrieves information and configuration hold in the producer NFV-MANO functional entity with regards to a peer entity by reading an individual peer entity resource ... Pre-conditions: none - ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Individual Peer Entity - Not Found ... Test title: GET Individual Peer Entity - Not Found ... Test objective: The objective is to test the retrieval of information and configuration hold in the producer NFV-MANO functional entity with regards to a peer entity by reading an individual peer entity resource fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual Peer Entity - Method not implemented ... Test title: PUT Individual Peer Entity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.14.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.14.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual Peer Entity ... Test title: PATCH Individual Peer Entity ... Test objective: This method modifies configuration and information of the producer NFV-MANO functional entity with regards to a peer functional entity by updating the corresponding "Individual peer entity" resource. ... Pre-conditions: At least one Peer Entity resource is created - ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Peer Entity Resource is modified by the operation @@ -75,7 +75,7 @@ PATCH Individual Peer Entity - Conflict ... Test title: PATCH Individual Peer Entity - Conflict ... Test objective: The objective is to test that the modification of configuration and information of the producer NFV-MANO functional entity with regards to a peer functional entity by updating the corresponding "Individual peer entity" resource failed due to a conflict with the state of the Individual Peer Entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity resource is created - ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Peer Entity Resource is not modified by the operation @@ -88,7 +88,7 @@ PATCH Individual Peer Entity - PreCondition Failed ... Test title: PATCH Individual Peer Entity - PreCondition Failed ... Test objective: The objective is to test that the modification of the Individual Peer Entity resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity resource is created - ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Peer Entity Resource is not modified by the operation @@ -101,7 +101,7 @@ DELETE Individual Peer Entity - Method not implemented ... Test title: DELETE Individual Peer Entity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.14.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.14.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot index be04cc838..b2f606aa8 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot @@ -13,7 +13,7 @@ POST Individual Change State Operation Occurrence - Method not implemented ... Test title: POST Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.9.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual Change State Operation Occurrence ... Test title: GET Individual Change State Operation Occurrence ... Test objective: The objective is to query status information about Individual change state operation occurrence. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Individual Change State Operation Occurrence - Not Found ... Test title: GET Individual Change State Operation Occurrence - Not Found ... Test objective: The objective is to test the retrieval of information about individual change state operation occurence fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual Change State Operation Occurrence - Method not implemented ... Test title: PUT Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.9.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual Change State Operation Occurrence - Method not implemented ... Test title: PATCH Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.9.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual Change State Operation Occurrence - Method not implemented ... Test title: DELETE Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.9.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot index 845145baa..a1d37e215 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the retrieval of individual subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual Subscription - invalid resource identifier ... Test title: GET Individual Subscription - invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual subscription fails when using an invalid resource identifier ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ DELETE Individual Subscription ... Test title: DELETE Individual Subscription ... Test objective: The objective is to test the deletion of an individual subscription ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The resource is not available anymore in the NFV-MANO @@ -51,7 +51,7 @@ DELETE Individual Subscription - invalid resource identifier ... Test title: DELETE Individual Subscription - invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual subscription fails when using an invalid resource identifier ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Subscription ... Pre-conditions: none - ... Reference: clause 5.5.5.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.5.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PUT Individual Subscription - Method not implemented ... Test title: PUT Individual Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing subscription ... Pre-conditions: none - ... Reference: clause 5.5.5.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.5.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ PATCH Individual Subscription - Method not implemented ... Test title: PATCH Individual Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing subscription ... Pre-conditions: none - ... Reference: clause 5.5.5.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.5.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot index a9bfd9b55..97268a15b 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot @@ -13,7 +13,7 @@ POST NFV-MANO entity - Method not implemented ... Test title: POST NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create an NFV-MANO Entity. ... Pre-conditions: none - ... Reference: clause 5.5.3.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.3.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET NFV-MANO entity ... Test title: Get NFV-MANO entity ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource and perform a JSON schema and content validation of the collected job data structure. ... Pre-conditions: none - ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET NFV-MANO entity - Not Found ... Test title: Get NFV-MANO entity - Not Found ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT NFV-MANO entity - Method not implemented ... Test title: PUT NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an NFV-MANO Entity. ... Pre-conditions: none - ... Reference: clause 5.5.3.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.3.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH NFV-MANO entity ... Test title: PATCH NFV-MANO entity ... Test objective: The objective is to test that PATCH method modifies the NFV-MANO entity resource and perform a JSON schema and content validation of the modified response. ... Pre-conditions: NFV-MANO entity resource is already created. - ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO entity is modified by the operation @@ -75,7 +75,7 @@ PATCH NFV-MANO entity - Conflict ... Test title: PATCH NFV-MANO entity - Conflict ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: NFV-MANO entity resource is already created. - ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO entity is not modified by the operation @@ -88,7 +88,7 @@ PATCH NFV-MANO entity - PreCondition Failed ... Test title: PATCH NFV-MANO entity - PreCondition Failed ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: NFV-MANO entity resource is already created. - ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO entity is not modified by the operation @@ -101,7 +101,7 @@ DELETE NFV-MANO entity - Method not implemented ... Test title: DELETE NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an NFV-MANO Entity. ... Pre-conditions: none - ... Reference: clause 5.5.3.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.3.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot index e3f619468..9d0a7f2e4 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot @@ -13,7 +13,7 @@ POST NFV-MANO Service Interfaces - Method not implemented ... Test title: POST NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET NFV-MANO Service Interfaces ... Test title: GET NFV-MANO Service Interfaces ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET NFV-MANO Service Interfaces - invalid attribute-based filter ... Test title: GET NFV-MANO Service Interfaces - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET NFV-MANO Service Interfaces - invalid attribute selector ... Test title: GET NFV-MANO Service Interfaces - invalid attribute selector ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ GET NFV-MANO Service Interfaces - Bad Request Response too Big ... Test title: GET NFV-MANO Service Interfaces - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ GET NFV-MANO Service Interfaces with attribute-based filter ... Test title: GET NFV-MANO Service Interfaces with attribute-based filter ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entities with attribute filters, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ GET NFV-MANO Service Interfaces with "all_fields" attribute selector ... Test title: GET NFV-MANO Service Interface with "all_fields" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "all_fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ GET NFV-MANO Service Interfaces with "exclude_default" attribute selector ... Test title: GET NFV-MANO Service Interfaces with "exclude_default" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_default" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ GET NFV-MANO Service Interfaces with "fields" attribute selector ... Test title: GET NFV-MANO Service Interfaces with "fields" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with fields attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ GET NFV-MANO Service Interfaces with "exclude_fields" attribute selector ... Test title: GET NFV-MANO Service Interfaces with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ GET NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute se ... Test title: GET NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -155,7 +155,7 @@ GET NFV-MANO Service Interfaces with Paged Response ... Test title: GET NFV-MANO Service Interfaces with Paged Response ... Test objective: The objective is to query NFV-MANO Service Interface to get Paged Response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -168,7 +168,7 @@ PUT NFV-MANO Service Interfaces - Method not implemented ... Test title: PUT NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -180,7 +180,7 @@ PATCH NFV-MANO Service Interfaces - Method not implemented ... Test title: PATCH NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -192,7 +192,7 @@ DELETE NFV-MANO Service Interfaces - Method not implemented ... Test title: DELETE NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.10.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot index 9a8e00d21..2e77ce90b 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot @@ -16,7 +16,7 @@ Information Changed Notification ... Test title: Information Changed Notification ... Test objective: The objective is to test the dispatch of Information Changed Notification when configuration or information is changed in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for information availability notifications is available in the NFV-MANO. - ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Change State Notification ... Test title: Change State Notification ... Test objective: The objective is to test the dispatch of Change State Notification when state changes of the NFV-MANO functional entity and its managed objects, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A performance job is created, and a state change subscription is available in the NFV-MANO. - ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANOz ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot index 54e5f11a4..55ce8d910 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot @@ -13,7 +13,7 @@ POST Peer Entity ... Test title: POST Peer Entity ... Test objective: The objective is to creates in the producer NFV-MANO functional entity a new peer entity resource which contains configuration and information with regards to the peer functional entity and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Peer Entity is created @@ -28,7 +28,7 @@ GET Peer Entities ... Test title: GET Peer Entities ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET Peer Entities - invalid attribute-based filter ... Test title: GET Peer Entities - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Peer Entities - invalid attribute selector ... Test title: GET Peer Entities - invalid attribute selector ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET Peer Entities - Bad Request Response too Big ... Test title: GET Peer Entities - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ GET Peer Entities with attribute-based filter ... Test title: GET Peer Entities with attribute-based filter ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with attribute filters, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET Peer Entities with "all_fields" attribute selector ... Test title: GET Peer Entities with "all_fields" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "all_fields" attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ GET Peer Entities with "exclude_default" attribute selector ... Test title: GET Peer Entities with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_default" attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -119,7 +119,7 @@ GET Peer Entities with "fields" attribute selector ... Test title: GET Peer Entities with "fields" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with fields attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -132,7 +132,7 @@ GET Peer Entities with "exclude_fields" attribute selector ... Test title: GET Peer Entities with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_fields" attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -145,7 +145,7 @@ GET Peer Entities with "exclude_default" and "fields" attribute selector ... Test title: GET Peer Entities with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_default" and "fields" attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -158,7 +158,7 @@ GET Peer Entity with Paged Response ... Test title: GET Peer Entity with Paged Response ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities to get Paged Response. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -171,7 +171,7 @@ Get Peer Entity with malformed authorization token ... Test title: Get Peer Entity with malformed authorization token ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using malformed authorization token. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -183,7 +183,7 @@ Get Peer Entity without authorization token ... Test title: Get Peer Entity without authorization token ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when omitting the authorization token. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -195,7 +195,7 @@ GET information about multiple alarms with expired or revoked authorization toke ... Test title: GET information about multiple alarms with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using expired or revoked authorization token. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [5] v3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -207,7 +207,7 @@ PUT Peer Entities - Method not implemented ... Test title: PUT Peer Entities - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -218,8 +218,8 @@ PATCH Peer Entities - Method not implemented [Documentation] Test ID: 8.3.1.8.17 ... Test title: PATCH Peer Entities - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. - ... Pre-conditions:none - ... Reference: clause 5.5.13.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Pre-conditions: none + ... Reference: clause 5.5.13.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -231,7 +231,7 @@ DELETE Peer Entities - Method not implemented ... Test title: DELETE Peer Entities - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.13.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot index 76465b7e9..40a5165ff 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ GET all Subscriptions ... Test title: GET all Subscriptions ... Test objective: The objective is to test the retrieval list of active subscriptions of API consumer and perform a JSON schema validation of the returned subscriptions data structure. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ GET Subscriptions with attribute-based filter ... Test title: GET Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of active subscriptions list of API consumer using attribute-based filter and perform a JSON schema validation of the collected indicators data structure. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ GET Subscriptions with Paged Response ... Test title: GET Subscriptions with Paged Response ... Test objective: The objective is to query information of active subscriptions list to of API consumer to get Paged Response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: @@ -55,7 +55,7 @@ GET Subscriptions - invalid attribute-based filter ... Test title: GET Subscriptions - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ GET Subscriptions - Bad Request Response too Big ... Test title: GET Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ GET Subscriptions - invalid resource endpoint ... Test title: GET Subscriptions - invalid resource endpoint ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when using invalid resource endpoint. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ Create new Subscription ... Test title: Create new Subscription ... Test objective: The objective is to test the creation of a new subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The subscription is successfully set and it matches the issued subscription @@ -111,7 +111,7 @@ Create request for duplicated Subscription not creating duplicated subscriptions ... Test title: Create request for duplicated Subscription not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing Subscription returned is available in the NFV-MANO @@ -127,7 +127,7 @@ Create request for duplicated Subscription creating duplicated subscriptions ... Test title: Create request for duplicated Subscription creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated subscription is successfully set and it matches the issued subscription @@ -142,7 +142,7 @@ PUT Subscriptions - Method not implemented ... Test title: PUT Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions ... Pre-conditions: none - ... Reference: clause 5.5.4.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.4.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -154,7 +154,7 @@ PATCH Subscriptions - Method not implemented ... Test title: PATCH Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions ... Pre-conditions: none - ... Reference: clause 5.5.4.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ DELETE Subscriptions - Method not implemented ... Test title: DELETE Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions ... Pre-conditions: none - ... Reference: clause 5.5.4.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.4.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none -- GitLab From 5e8639d8bec7ee0911c2234375c084d5d24c691b Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 22 Oct 2020 18:18:27 +0200 Subject: [PATCH 509/580] updated references bis --- .../ApiVersion.robot | 20 +++++++++---------- .../ChangeInterfaceStateTask.robot | 12 +++++------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot index fac4978ca..b9c86942f 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot @@ -11,7 +11,7 @@ POST API Version - Method not implemented ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET API Version ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT API Version - Method not implemented ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH API Version - Method not implemented ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE API Version - Method not implemented ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ POST API Version with apiMajorVerion - Method not implemented ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET API Version with apiMajorVerion ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT API Version with apiMajorVerion - Method not implemented ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PATCH API Version with apiMajorVerion - Method not implemented ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot index cbd81a3ce..c31bdd830 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot @@ -13,7 +13,7 @@ POST Change interface state task ... Test title: POST Change interface state task ... Test objective: The objective is send put request to change the state of the NFV-MANO service interface produced by the NFV-MANO functional entity ... Pre-conditions: none - ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Change interface state task - Conflict ... Test title: POST Change interface state task - Conflict ... Test objective: The objective is to test that request to cchange the state of the NFV-MANO service interface produced by the NFV-MANO functional entity failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Change interface state task - Method not implemented ... Test title: GET Change interface state task - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.2 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.12.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Change interface state task - Conflict - Method not implemented ... Test title: PUT Change interface state task - Conflict - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.3 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.12.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Change interface state task - Conflict - Method not implemented ... Test title: PATCH Change interface state task - Conflict - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.4 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.12.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Change interface state task - Conflict - Method not implemented ... Test title: DELETE Change interface state task - Conflict - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.5 - ETSI GS NFV-SOL 009 [5] V3.3.1 + ... Reference: clause 5.5.12.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none -- GitLab From 116dc06d49e25dad2a3242a783fa963a0649403e Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 26 Oct 2020 12:45:44 +0500 Subject: [PATCH 510/580] added keywords to check state is changed as intended --- .../ChangeInterfaceStateTask.robot | 3 +- .../ChangeNFVMANOEntityStateTask.robot | 3 +- .../IndividualNFVMANOServiceInterface.robot | 1 + .../NFVMANOCimKeywords.robot | 28 ++++++++++++++++++- .../environment/variables.txt | 7 ++++- .../jsons/ChangeStateRequest.json | 2 +- 6 files changed, 39 insertions(+), 5 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot index c31bdd830..a036a1118 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot @@ -16,10 +16,11 @@ POST Change interface state task ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: none + ... Post-Conditions: interface status changed Send Post request for Change interface state task Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location + Wait for interface state change success notification and validate status POST Change interface state task - Conflict [Documentation] Test ID: 8.3.1.7.2 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot index 00e63bda4..020c545e9 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot @@ -15,10 +15,11 @@ POST NFV-MANO functional entity application state change ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none - ... Post-Conditions: none + ... Post-Conditions: entity status changed Send Post request for NFV-MANO functional entity application state change Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location + Wait for entity state change success notification and validate status POST NFV-MANO functional entity application state change - Conflict [Documentation] Test ID: 8.3.1.2.2 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot index 3e811b026..b662f5c30 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot @@ -44,6 +44,7 @@ GET Individual NFV-MANO Service Interface - Not Found ... Post-Conditions: none Get Individual NFV-MANO Service Interface Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails PUT Individual NFV-MANO Service Interface - Method not implemented [Documentation] Test ID: 8.3.1.6.4 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 57afc035a..bf84e5ab8 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -78,10 +78,24 @@ Send Post request for NFV-MANO functional entity application state change Log Trying to perform a POST for NFV-MANO functional entity application state change Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + ${template}= Get File jsons/ChangeStateRequest.json + ${body}= Format String ${template} state=${state} operationalStateAction=${operationalStateAction} POST ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/change_state ${output}= Output response Set Suite Variable ${response} ${output} +Wait for entity state change success notification and validate status + Wait Until Keyword Succeeds ${retry} ${polling} Check entity state + +Check entity state + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${response['headers']['Location']} + Log Validate Status code + Integer response status 200 + Should Be Equal As Strings response body manoApplicationState ${state} ${operationalStateAction} + Log Validated + Send Get request for NFV-MANO functional entity application state change Log Trying to perform a GET (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -413,11 +427,23 @@ Send Post request for Change interface state task Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/ChangeStateRequest.json - ${body}= Format String ${template} operationalStateAction=${operationalStateAction} + ${body}= Format String ${template} state=${state} operationalStateAction=${operationalStateAction} POST ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces/${manoServiceInterfaceId}/change_state ${body} ${output}= Output response Set Suite Variable ${response} ${output} +Wait for interface state change success notification and validate status + Wait Until Keyword Succeeds ${retry} ${polling} Check interface state + +Check interface state + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${response['headers']['Location']} + Log Validate Status code + Integer response status 200 + Should Be Equal As Strings response body interfaceState ${state} ${operationalStateAction} + Log Validated + Send Get request for Change interface state task Log Trying to perform a GET (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt index 3e933f290..ca1dc0b75 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt @@ -59,4 +59,9 @@ ${origResponse} {} ${name} EntityName ${type} NFVO -${operationalStateAction} START \ No newline at end of file + +${state} operationalStateChange +${operationalStateAction} START + +${retry} 2 min +${polling} 10 sec \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json index 1245a6b65..d1cdc12b2 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json @@ -1,5 +1,5 @@ {{ - "operationalStateChange": + "{state}": {{ "operationalStateAction":"{operationalStateAction}" }} -- GitLab From 80282fd2dcc750b0ba67ae17151b67b9888a43b2 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 26 Oct 2020 17:20:35 +0500 Subject: [PATCH 511/580] bug fix added --- .../NFVMANOCimKeywords.robot | 10 ++++++---- .../environment/variables.txt | 4 ++-- .../jsons/ChangeStateRequest.json | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index bf84e5ab8..2240a6068 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -79,7 +79,7 @@ Send Post request for NFV-MANO functional entity application state change Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/ChangeStateRequest.json - ${body}= Format String ${template} state=${state} operationalStateAction=${operationalStateAction} + ${body}= Format String ${template} state=${state} stateAction=${stateAction} POST ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/change_state ${output}= Output response Set Suite Variable ${response} ${output} @@ -93,7 +93,8 @@ Check entity state Get ${response['headers']['Location']} Log Validate Status code Integer response status 200 - Should Be Equal As Strings response body manoApplicationState ${state} ${operationalStateAction} + ${respState} = Catenate SEPARATOR= change ${state} StateRequest + Should Be Equal As Strings response body ${respState} ${stateAction} Log Validated Send Get request for NFV-MANO functional entity application state change @@ -427,7 +428,7 @@ Send Post request for Change interface state task Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/ChangeStateRequest.json - ${body}= Format String ${template} state=${state} operationalStateAction=${operationalStateAction} + ${body}= Format String ${template} state=${state} stateAction=${stateAction} POST ${apiRoot}/${apiName}/${apiMajorVersion}/mano_entity/mano_interfaces/${manoServiceInterfaceId}/change_state ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -441,7 +442,8 @@ Check interface state Get ${response['headers']['Location']} Log Validate Status code Integer response status 200 - Should Be Equal As Strings response body interfaceState ${state} ${operationalStateAction} + ${respState} = Catenate SEPARATOR= change ${state} StateRequest + Should Be Equal As Strings response body ${respState} ${stateAction} Log Validated Send Get request for Change interface state task diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt index ca1dc0b75..e94ee646d 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt @@ -60,8 +60,8 @@ ${origResponse} {} ${name} EntityName ${type} NFVO -${state} operationalStateChange -${operationalStateAction} START +${state} operational +${stateAction} START ${retry} 2 min ${polling} 10 sec \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json index d1cdc12b2..b93e142ef 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateRequest.json @@ -1,7 +1,7 @@ {{ - "{state}": + "{state}StateChange": {{ - "operationalStateAction":"{operationalStateAction}" + "{state}StateAction":"{stateAction}" }} }} \ No newline at end of file -- GitLab From 2d116dfdd37485c17410a6b356f58b449eee6dc0 Mon Sep 17 00:00:00 2001 From: Najam UI Hassan Date: Wed, 4 Nov 2020 11:24:21 +0100 Subject: [PATCH 512/580] Added keyword "Check PostCondition NFV-MANO service interface state matches the requested state" --- .../ChangeInterfaceStateTask.robot | 166 +++++++++--------- .../NFVMANOCimKeywords.robot | 2 +- 2 files changed, 84 insertions(+), 84 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot index a036a1118..4cdc1a3ac 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot @@ -1,84 +1,84 @@ -** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library JSONLibrary -Library OperatingSystem -Resource NFVMANOCimKeywords.robot -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library MockServerLibrary - -*** Test Cases *** -POST Change interface state task - [Documentation] Test ID: 8.3.1.7.1 - ... Test title: POST Change interface state task - ... Test objective: The objective is send put request to change the state of the NFV-MANO service interface produced by the NFV-MANO functional entity - ... Pre-conditions: none - ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: interface status changed - Send Post request for Change interface state task - Check HTTP Response Status Code Is 202 - Check HTTP Response Header Contains Location - Wait for interface state change success notification and validate status - -POST Change interface state task - Conflict - [Documentation] Test ID: 8.3.1.7.2 - ... Test title: POST Change interface state task - Conflict - ... Test objective: The objective is to test that request to cchange the state of the NFV-MANO service interface produced by the NFV-MANO functional entity failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Post request for Change interface state task - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET Change interface state task - Method not implemented - [Documentation] Test ID: 8.3.1.7.3 - ... Test title: GET Change interface state task - Method not implemented - ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: none - ... Reference: clause 5.5.12.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Get request for Change interface state task - Check HTTP Response Status Code Is 405 - -PUT Change interface state task - Conflict - Method not implemented - [Documentation] Test ID: 8.3.1.7.4 - ... Test title: PUT Change interface state task - Conflict - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: none - ... Reference: clause 5.5.12.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Put request for Change interface state task - Check HTTP Response Status Code Is 405 - -PATCH Change interface state task - Conflict - Method not implemented - [Documentation] Test ID: 8.3.1.7.5 - ... Test title: PATCH Change interface state task - Conflict - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: none - ... Reference: clause 5.5.12.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Patch request for Change interface state task - Check HTTP Response Status Code Is 405 - -DELETE Change interface state task - Conflict - Method not implemented - [Documentation] Test ID: 8.3.1.7.6 - ... Test title: DELETE Change interface state task - Conflict - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: none - ... Reference: clause 5.5.12.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for Change interface state task +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST Change interface state task + [Documentation] Test ID: 8.3.1.7.1 + ... Test title: POST Change interface state task + ... Test objective: The objective is send put request to change the state of the NFV-MANO service interface produced by the NFV-MANO functional entity + ... Pre-conditions: none + ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: interface status changed + Send Post request for Change interface state task + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check PostCondition NFV-MANO service interface state matches the requested state + +POST Change interface state task - Conflict + [Documentation] Test ID: 8.3.1.7.2 + ... Test title: POST Change interface state task - Conflict + ... Test objective: The objective is to test that request to cchange the state of the NFV-MANO service interface produced by the NFV-MANO functional entity failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Post request for Change interface state task + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Change interface state task - Method not implemented + [Documentation] Test ID: 8.3.1.7.3 + ... Test title: GET Change interface state task - Method not implemented + ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: none + ... Reference: clause 5.5.12.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Get request for Change interface state task + Check HTTP Response Status Code Is 405 + +PUT Change interface state task - Conflict - Method not implemented + [Documentation] Test ID: 8.3.1.7.4 + ... Test title: PUT Change interface state task - Conflict - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: none + ... Reference: clause 5.5.12.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put request for Change interface state task + Check HTTP Response Status Code Is 405 + +PATCH Change interface state task - Conflict - Method not implemented + [Documentation] Test ID: 8.3.1.7.5 + ... Test title: PATCH Change interface state task - Conflict - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: none + ... Reference: clause 5.5.12.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Patch request for Change interface state task + Check HTTP Response Status Code Is 405 + +DELETE Change interface state task - Conflict - Method not implemented + [Documentation] Test ID: 8.3.1.7.6 + ... Test title: DELETE Change interface state task - Conflict - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: none + ... Reference: clause 5.5.12.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for Change interface state task Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 2240a6068..57e609f64 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -433,7 +433,7 @@ Send Post request for Change interface state task ${output}= Output response Set Suite Variable ${response} ${output} -Wait for interface state change success notification and validate status +Check PostCondition NFV-MANO service interface state matches the requested state Wait Until Keyword Succeeds ${retry} ${polling} Check interface state Check interface state -- GitLab From 62c853c68e27d55c7de21e2155678e8bca2640ec Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 4 Nov 2020 15:22:21 +0100 Subject: [PATCH 513/580] removed libspecs --- libspecs/BuiltIn.libspec | 2823 -------------------- libspecs/Collections.libspec | 880 ------ libspecs/DateTime.libspec | 512 ---- libspecs/DependencyLibrary_bb1d1ad.libspec | 55 - libspecs/Dialogs.libspec | 112 - libspecs/Easter.libspec | 15 - libspecs/JSONLibrary_17ae429.libspec | 171 -- libspecs/JSONSchemaLibrary_c1d7acb.libspec | 31 - libspecs/MockServerLibrary_03fd3d4.libspec | 258 -- libspecs/OperatingSystem.libspec | 1138 -------- libspecs/Process.libspec | 637 ----- libspecs/REST_04a9321.libspec | 999 ------- libspecs/Reserved.libspec | 87 - libspecs/Screenshot.libspec | 132 - libspecs/String.libspec | 722 ----- libspecs/Telnet.libspec | 744 ------ libspecs/XML.libspec | 1365 ---------- 17 files changed, 10681 deletions(-) delete mode 100644 libspecs/BuiltIn.libspec delete mode 100644 libspecs/Collections.libspec delete mode 100644 libspecs/DateTime.libspec delete mode 100644 libspecs/DependencyLibrary_bb1d1ad.libspec delete mode 100644 libspecs/Dialogs.libspec delete mode 100644 libspecs/Easter.libspec delete mode 100644 libspecs/JSONLibrary_17ae429.libspec delete mode 100644 libspecs/JSONSchemaLibrary_c1d7acb.libspec delete mode 100644 libspecs/MockServerLibrary_03fd3d4.libspec delete mode 100644 libspecs/OperatingSystem.libspec delete mode 100644 libspecs/Process.libspec delete mode 100644 libspecs/REST_04a9321.libspec delete mode 100644 libspecs/Reserved.libspec delete mode 100644 libspecs/Screenshot.libspec delete mode 100644 libspecs/String.libspec delete mode 100644 libspecs/Telnet.libspec delete mode 100644 libspecs/XML.libspec diff --git a/libspecs/BuiltIn.libspec b/libspecs/BuiltIn.libspec deleted file mode 100644 index 1f1b093cf..000000000 --- a/libspecs/BuiltIn.libspec +++ /dev/null @@ -1,2823 +0,0 @@ - - -3.1 -global -yes -An always available standard library with often needed keywords. - -``BuiltIn`` is Robot Framework's standard library that provides a set -of generic keywords needed often. It is imported automatically and -thus always available. The provided keywords can be used, for example, -for verifications (e.g. `Should Be Equal`, `Should Contain`), -conversions (e.g. `Convert To Integer`) and for various other purposes -(e.g. `Log`, `Sleep`, `Run Keyword If`, `Set Global Variable`). - -== Table of contents == - -- `HTML error messages` -- `Evaluating expressions` -- `Boolean arguments` -- `Pattern matching` -- `Multiline string comparisons` -- `Shortcuts` -- `Keywords` - -= HTML error messages = - -Many of the keywords accept an optional error message to use if the keyword -fails, and it is possible to use HTML in these messages by prefixing them -with ``*HTML*``. See `Fail` keyword for a usage example. Notice that using -HTML in messages is not limited to BuiltIn library but works with any -error message. - -= Evaluating expressions = - -Many keywords, such as `Evaluate`, `Run Keyword If` and `Should Be True`, -accept an expression that is evaluated in Python. These expressions are -evaluated using Python's -[http://docs.python.org/library/functions.html#eval|eval] function so -that all Python built-ins like ``len()`` and ``int()`` are available. -`Evaluate` allows configuring the execution namespace with custom modules, -and other keywords have [http://docs.python.org/library/os.html|os] -and [http://docs.python.org/library/sys.html|sys] modules available -automatically. - -Examples: -| `Run Keyword If` | os.sep == '/' | Log | Not on Windows | -| ${random int} = | `Evaluate` | random.randint(0, 5) | modules=random | - -When a variable is used in the expressing using the normal ``${variable}`` -syntax, its value is replaces before the expression is evaluated. This -means that the value used in the expression will be the string -representation of the variable value, not the variable value itself. -This is not a problem with numbers and other objects that have a string -representation that can be evaluated directly, but with other objects -the behavior depends on the string representation. Most importantly, -strings must always be quoted, and if they can contain newlines, they must -be triple quoted. - -Examples: -| `Should Be True` | ${rc} < 10 | Return code greater than 10 | -| `Run Keyword If` | '${status}' == 'PASS' | Log | Passed | -| `Run Keyword If` | 'FAIL' in '''${output}''' | Log | Output contains FAIL | - -Starting from Robot Framework 2.9, variables themselves are automatically -available in the evaluation namespace. They can be accessed using special -variable syntax without the curly braces like ``$variable``. These -variables should never be quoted, and in fact they are not even replaced -inside strings. - -Examples: -| `Should Be True` | $rc < 10 | Return code greater than 10 | -| `Run Keyword If` | $status == 'PASS' | `Log` | Passed | -| `Run Keyword If` | 'FAIL' in $output | `Log` | Output contains FAIL | -| `Should Be True` | len($result) > 1 and $result[1] == 'OK' | - -Using the ``$variable`` syntax slows down expression evaluation a little. -This should not typically matter, but should be taken into account if -complex expressions are evaluated often and there are strict time -constrains. - -Notice that instead of creating complicated expressions, it is often better -to move the logic into a test library. That eases maintenance and can also -enhance execution speed. - -= Boolean arguments = - -Some keywords accept arguments that are handled as Boolean values true or -false. If such an argument is given as a string, it is considered false if -it is an empty string or equal to ``FALSE``, ``NONE``, ``NO``, ``OFF`` or -``0``, case-insensitively. Keywords verifying something that allow dropping -actual and expected values from the possible error message also consider -string ``no values`` to be false. Other strings are considered true -regardless their value, and other argument types are tested using the same -[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. - -True examples: -| `Should Be Equal` | ${x} | ${y} | Custom error | values=True | # Strings are generally true. | -| `Should Be Equal` | ${x} | ${y} | Custom error | values=yes | # Same as the above. | -| `Should Be Equal` | ${x} | ${y} | Custom error | values=${TRUE} | # Python ``True`` is true. | -| `Should Be Equal` | ${x} | ${y} | Custom error | values=${42} | # Numbers other than 0 are true. | - -False examples: -| `Should Be Equal` | ${x} | ${y} | Custom error | values=False | # String ``false`` is false. | -| `Should Be Equal` | ${x} | ${y} | Custom error | values=no | # Also string ``no`` is false. | -| `Should Be Equal` | ${x} | ${y} | Custom error | values=${EMPTY} | # Empty string is false. | -| `Should Be Equal` | ${x} | ${y} | Custom error | values=${FALSE} | # Python ``False`` is false. | -| `Should Be Equal` | ${x} | ${y} | Custom error | values=no values | # ``no values`` works with ``values`` argument | - -Considering string ``NONE`` false is new in Robot Framework 3.0.3 and -considering also ``OFF`` and ``0`` false is new in Robot Framework 3.1. - -= Pattern matching = - -Many keywords accepts arguments as either glob or regular expression -patterns. - -== Glob patterns == - -Some keywords, for example `Should Match`, support so called -[http://en.wikipedia.org/wiki/Glob_(programming)|glob patterns] where: - -| ``*`` | matches any string, even an empty string | -| ``?`` | matches any single character | -| ``[chars]`` | matches one character in the bracket | -| ``[!chars]`` | matches one character not in the bracket | -| ``[a-z]`` | matches one character from the range in the bracket | -| ``[!a-z]`` | matches one character not from the range in the bracket | - -Unlike with glob patterns normally, path separator characters ``/`` and -``\`` and the newline character ``\n`` are matches by the above -wildcards. - -Support for brackets like ``[abc]`` and ``[!a-z]`` is new in -Robot Framework 3.1 - -== Regular expressions == - -Some keywords, for example `Should Match Regexp`, support -[http://en.wikipedia.org/wiki/Regular_expression|regular expressions] -that are more powerful but also more complicated that glob patterns. -The regular expression support is implemented using Python's -[http://docs.python.org/library/re.html|re module] and its documentation -should be consulted for more information about the syntax. - -Because the backslash character (``\``) is an escape character in -Robot Framework test data, possible backslash characters in regular -expressions need to be escaped with another backslash like ``\\d\\w+``. -Strings that may contain special characters but should be handled -as literal strings, can be escaped with the `Regexp Escape` keyword. - -= Multiline string comparisons = - -`Should Be Equal` and `Should Be Equal As Strings` report the failures using -[http://en.wikipedia.org/wiki/Diff_utility#Unified_format|unified diff -format] if both strings have more than two lines. New in Robot Framework -2.9.1. - -Example: -| ${first} = | `Catenate` | SEPARATOR=\n | Not in second | Same | Differs | Same | -| ${second} = | `Catenate` | SEPARATOR=\n | Same | Differs2 | Same | Not in first | -| `Should Be Equal` | ${first} | ${second} | - -Results in the following error message: - -| Multiline strings are different: -| --- first -| +++ second -| @@ -1,4 +1,4 @@ -| -Not in second -| Same -| -Differs -| +Differs2 -| Same -| +Not in first - - -object -method_name -*args -**kwargs - -Calls the named method of the given object with the provided arguments. - -The possible return value from the method is returned and can be -assigned to a variable. Keyword fails both if the object does not have -a method with the given name or if executing the method raises an -exception. - -Support for ``**kwargs`` is new in Robot Framework 2.9. Since that -possible equal signs in other arguments must be escaped with a -backslash like ``\=``. - -Examples: -| Call Method | ${hashtable} | put | myname | myvalue | -| ${isempty} = | Call Method | ${hashtable} | isEmpty | | -| Should Not Be True | ${isempty} | | | | -| ${value} = | Call Method | ${hashtable} | get | myname | -| Should Be Equal | ${value} | myvalue | | | -| Call Method | ${object} | kwargs | name=value | foo=bar | -| Call Method | ${object} | positional | escaped\=equals | - - - - - -*items - -Catenates the given items together and returns the resulted string. - -By default, items are catenated with spaces, but if the first item -contains the string ``SEPARATOR=<sep>``, the separator ``<sep>`` is -used instead. Items are converted into strings when necessary. - -Examples: -| ${str1} = | Catenate | Hello | world | | -| ${str2} = | Catenate | SEPARATOR=--- | Hello | world | -| ${str3} = | Catenate | SEPARATOR= | Hello | world | -=> -| ${str1} = 'Hello world' -| ${str2} = 'Hello---world' -| ${str3} = 'Helloworld' - - - - - -*messages - -Displays the given messages in the log file as keyword arguments. - -This keyword does nothing with the arguments it receives, but as they -are visible in the log, this keyword can be used to display simple -messages. Given arguments are ignored so thoroughly that they can even -contain non-existing variables. If you are interested about variable -values, you can use the `Log` or `Log Many` keywords. - - - - - - -Skips the current for loop iteration and continues from the next. - -Skips the remaining keywords in the current for loop iteration and -continues from the next one. Can be used directly in a for loop or -in a keyword that the loop uses. - -Example: -| :FOR | ${var} | IN | @{VALUES} | -| | Run Keyword If | '${var}' == 'CONTINUE' | Continue For Loop | -| | Do Something | ${var} | - -See `Continue For Loop If` to conditionally continue a for loop without -using `Run Keyword If` or other wrapper keywords. - - - - - -condition - -Skips the current for loop iteration if the ``condition`` is true. - -A wrapper for `Continue For Loop` to continue a for loop based on -the given condition. The condition is evaluated using the same -semantics as with `Should Be True` keyword. - -Example: -| :FOR | ${var} | IN | @{VALUES} | -| | Continue For Loop If | '${var}' == 'CONTINUE' | -| | Do Something | ${var} | - - - - - -item -base=None -prefix=None -length=None - -Converts the given item to a binary string. - -The ``item``, with an optional ``base``, is first converted to an -integer using `Convert To Integer` internally. After that it -is converted to a binary number (base 2) represented as a -string such as ``1011``. - -The returned value can contain an optional ``prefix`` and can be -required to be of minimum ``length`` (excluding the prefix and a -possible minus sign). If the value is initially shorter than -the required length, it is padded with zeros. - -Examples: -| ${result} = | Convert To Binary | 10 | | | # Result is 1010 | -| ${result} = | Convert To Binary | F | base=16 | prefix=0b | # Result is 0b1111 | -| ${result} = | Convert To Binary | -2 | prefix=B | length=4 | # Result is -B0010 | - -See also `Convert To Integer`, `Convert To Octal` and `Convert To Hex`. - - - - - -item - -Converts the given item to Boolean true or false. - -Handles strings ``True`` and ``False`` (case-insensitive) as expected, -otherwise returns item's -[http://docs.python.org/library/stdtypes.html#truth|truth value] -using Python's ``bool()`` method. - - - - - -input -input_type=text - -Converts the given ``input`` to bytes according to the ``input_type``. - -Valid input types are listed below: - -- ``text:`` Converts text to bytes character by character. All - characters with ordinal below 256 can be used and are converted to - bytes with same values. Many characters are easiest to represent - using escapes like ``\x00`` or ``\xff``. Supports both Unicode - strings and bytes. - -- ``int:`` Converts integers separated by spaces to bytes. Similarly as - with `Convert To Integer`, it is possible to use binary, octal, or - hex values by prefixing the values with ``0b``, ``0o``, or ``0x``, - respectively. - -- ``hex:`` Converts hexadecimal values to bytes. Single byte is always - two characters long (e.g. ``01`` or ``FF``). Spaces are ignored and - can be used freely as a visual separator. - -- ``bin:`` Converts binary values to bytes. Single byte is always eight - characters long (e.g. ``00001010``). Spaces are ignored and can be - used freely as a visual separator. - -In addition to giving the input as a string, it is possible to use -lists or other iterables containing individual characters or numbers. -In that case numbers do not need to be padded to certain length and -they cannot contain extra spaces. - -Examples (last column shows returned bytes): -| ${bytes} = | Convert To Bytes | hyvä | | # hyv\xe4 | -| ${bytes} = | Convert To Bytes | \xff\x07 | | # \xff\x07 | -| ${bytes} = | Convert To Bytes | 82 70 | int | # RF | -| ${bytes} = | Convert To Bytes | 0b10 0x10 | int | # \x02\x10 | -| ${bytes} = | Convert To Bytes | ff 00 07 | hex | # \xff\x00\x07 | -| ${bytes} = | Convert To Bytes | 5246212121 | hex | # RF!!! | -| ${bytes} = | Convert To Bytes | 0000 1000 | bin | # \x08 | -| ${input} = | Create List | 1 | 2 | 12 | -| ${bytes} = | Convert To Bytes | ${input} | int | # \x01\x02\x0c | -| ${bytes} = | Convert To Bytes | ${input} | hex | # \x01\x02\x12 | - -Use `Encode String To Bytes` in ``String`` library if you need to -convert text to bytes using a certain encoding. - - - - - -item -base=None -prefix=None -length=None -lowercase=False - -Converts the given item to a hexadecimal string. - -The ``item``, with an optional ``base``, is first converted to an -integer using `Convert To Integer` internally. After that it -is converted to a hexadecimal number (base 16) represented as -a string such as ``FF0A``. - -The returned value can contain an optional ``prefix`` and can be -required to be of minimum ``length`` (excluding the prefix and a -possible minus sign). If the value is initially shorter than -the required length, it is padded with zeros. - -By default the value is returned as an upper case string, but the -``lowercase`` argument a true value (see `Boolean arguments`) turns -the value (but not the given prefix) to lower case. - -Examples: -| ${result} = | Convert To Hex | 255 | | | # Result is FF | -| ${result} = | Convert To Hex | -10 | prefix=0x | length=2 | # Result is -0x0A | -| ${result} = | Convert To Hex | 255 | prefix=X | lowercase=yes | # Result is Xff | - -See also `Convert To Integer`, `Convert To Binary` and `Convert To Octal`. - - - - - -item -base=None - -Converts the given item to an integer number. - -If the given item is a string, it is by default expected to be an -integer in base 10. There are two ways to convert from other bases: - -- Give base explicitly to the keyword as ``base`` argument. - -- Prefix the given string with the base so that ``0b`` means binary - (base 2), ``0o`` means octal (base 8), and ``0x`` means hex (base 16). - The prefix is considered only when ``base`` argument is not given and - may itself be prefixed with a plus or minus sign. - -The syntax is case-insensitive and possible spaces are ignored. - -Examples: -| ${result} = | Convert To Integer | 100 | | # Result is 100 | -| ${result} = | Convert To Integer | FF AA | 16 | # Result is 65450 | -| ${result} = | Convert To Integer | 100 | 8 | # Result is 64 | -| ${result} = | Convert To Integer | -100 | 2 | # Result is -4 | -| ${result} = | Convert To Integer | 0b100 | | # Result is 4 | -| ${result} = | Convert To Integer | -0x100 | | # Result is -256 | - -See also `Convert To Number`, `Convert To Binary`, `Convert To Octal`, -`Convert To Hex`, and `Convert To Bytes`. - - - - - -item -precision=None - -Converts the given item to a floating point number. - -If the optional ``precision`` is positive or zero, the returned number -is rounded to that number of decimal digits. Negative precision means -that the number is rounded to the closest multiple of 10 to the power -of the absolute precision. If a number is equally close to a certain -precision, it is always rounded away from zero. - -Examples: -| ${result} = | Convert To Number | 42.512 | | # Result is 42.512 | -| ${result} = | Convert To Number | 42.512 | 1 | # Result is 42.5 | -| ${result} = | Convert To Number | 42.512 | 0 | # Result is 43.0 | -| ${result} = | Convert To Number | 42.512 | -1 | # Result is 40.0 | - -Notice that machines generally cannot store floating point numbers -accurately. This may cause surprises with these numbers in general -and also when they are rounded. For more information see, for example, -these resources: - -- http://docs.python.org/tutorial/floatingpoint.html -- http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition - -If you want to avoid possible problems with floating point numbers, -you can implement custom keywords using Python's -[http://docs.python.org/library/decimal.html|decimal] or -[http://docs.python.org/library/fractions.html|fractions] modules. - -If you need an integer number, use `Convert To Integer` instead. - - - - - -item -base=None -prefix=None -length=None - -Converts the given item to an octal string. - -The ``item``, with an optional ``base``, is first converted to an -integer using `Convert To Integer` internally. After that it -is converted to an octal number (base 8) represented as a -string such as ``775``. - -The returned value can contain an optional ``prefix`` and can be -required to be of minimum ``length`` (excluding the prefix and a -possible minus sign). If the value is initially shorter than -the required length, it is padded with zeros. - -Examples: -| ${result} = | Convert To Octal | 10 | | | # Result is 12 | -| ${result} = | Convert To Octal | -F | base=16 | prefix=0 | # Result is -017 | -| ${result} = | Convert To Octal | 16 | prefix=oct | length=4 | # Result is oct0020 | - -See also `Convert To Integer`, `Convert To Binary` and `Convert To Hex`. - - - - - -item - -Converts the given item to a Unicode string. - -Uses ``__unicode__`` or ``__str__`` method with Python objects and -``toString`` with Java objects. - -Use `Encode String To Bytes` and `Decode Bytes To String` keywords -in ``String`` library if you need to convert between Unicode and byte -strings using different encodings. Use `Convert To Bytes` if you just -want to create byte strings. - - - - - -*items - -Creates and returns a dictionary based on the given ``items``. - -Items are typically given using the ``key=value`` syntax same way as -``&{dictionary}`` variables are created in the Variable table. Both -keys and values can contain variables, and possible equal sign in key -can be escaped with a backslash like ``escaped\=key=value``. It is -also possible to get items from existing dictionaries by simply using -them like ``&{dict}``. - -Alternatively items can be specified so that keys and values are given -separately. This and the ``key=value`` syntax can even be combined, -but separately given items must be first. - -If same key is used multiple times, the last value has precedence. -The returned dictionary is ordered, and values with strings as keys -can also be accessed using a convenient dot-access syntax like -``${dict.key}``. - -Examples: -| &{dict} = | Create Dictionary | key=value | foo=bar | | | # key=value syntax | -| Should Be True | ${dict} == {'key': 'value', 'foo': 'bar'} | -| &{dict2} = | Create Dictionary | key | value | foo | bar | # separate key and value | -| Should Be Equal | ${dict} | ${dict2} | -| &{dict} = | Create Dictionary | ${1}=${2} | &{dict} | foo=new | | # using variables | -| Should Be True | ${dict} == {1: 2, 'key': 'value', 'foo': 'new'} | -| Should Be Equal | ${dict.key} | value | | | | # dot-access | - -This keyword was changed in Robot Framework 2.9 in many ways: -- Moved from ``Collections`` library to ``BuiltIn``. -- Support also non-string keys in ``key=value`` syntax. -- Returned dictionary is ordered and dot-accessible. -- Old syntax to give keys and values separately was deprecated, but - deprecation was later removed in RF 3.0.1. - - - - - -*items - -Returns a list containing given items. - -The returned list can be assigned both to ``${scalar}`` and ``@{list}`` -variables. - -Examples: -| @{list} = | Create List | a | b | c | -| ${scalar} = | Create List | a | b | c | -| ${ints} = | Create List | ${1} | ${2} | ${3} | - - - - - -expression -modules=None -namespace=None - -Evaluates the given expression in Python and returns the results. - -``expression`` is evaluated in Python as explained in `Evaluating -expressions`. - -``modules`` argument can be used to specify a comma separated -list of Python modules to be imported and added to the evaluation -namespace. - -``namespace`` argument can be used to pass a custom evaluation -namespace as a dictionary. Possible ``modules`` are added to this -namespace. - -Variables used like ``${variable}`` are replaced in the expression -before evaluation. Variables are also available in the evaluation -namespace and can be accessed using special syntax ``$variable``. -This is a new feature in Robot Framework 2.9 and it is explained more -thoroughly in `Evaluating expressions`. - -Examples (expecting ``${result}`` is 3.14): -| ${status} = | Evaluate | 0 < ${result} < 10 | # Would also work with string '3.14' | -| ${status} = | Evaluate | 0 < $result < 10 | # Using variable itself, not string representation | -| ${random} = | Evaluate | random.randint(0, sys.maxint) | modules=random, sys | -| ${ns} = | Create Dictionary | x=${4} | y=${2} | -| ${result} = | Evaluate | x*10 + y | namespace=${ns} | -=> -| ${status} = True -| ${random} = <random integer> -| ${result} = 42 - - - - - - -Stops executing the enclosing for loop. - -Exits the enclosing for loop and continues execution after it. -Can be used directly in a for loop or in a keyword that the loop uses. - -Example: -| :FOR | ${var} | IN | @{VALUES} | -| | Run Keyword If | '${var}' == 'EXIT' | Exit For Loop | -| | Do Something | ${var} | - -See `Exit For Loop If` to conditionally exit a for loop without -using `Run Keyword If` or other wrapper keywords. - - - - - -condition - -Stops executing the enclosing for loop if the ``condition`` is true. - -A wrapper for `Exit For Loop` to exit a for loop based on -the given condition. The condition is evaluated using the same -semantics as with `Should Be True` keyword. - -Example: -| :FOR | ${var} | IN | @{VALUES} | -| | Exit For Loop If | '${var}' == 'EXIT' | -| | Do Something | ${var} | - - - - - -msg=None -*tags - -Fails the test with the given message and optionally alters its tags. - -The error message is specified using the ``msg`` argument. -It is possible to use HTML in the given error message, similarly -as with any other keyword accepting an error message, by prefixing -the error with ``*HTML*``. - -It is possible to modify tags of the current test case by passing tags -after the message. Tags starting with a hyphen (e.g. ``-regression``) -are removed and others added. Tags are modified using `Set Tags` and -`Remove Tags` internally, and the semantics setting and removing them -are the same as with these keywords. - -Examples: -| Fail | Test not ready | | | # Fails with the given message. | -| Fail | *HTML*<b>Test not ready</b> | | | # Fails using HTML in the message. | -| Fail | Test not ready | not-ready | | # Fails and adds 'not-ready' tag. | -| Fail | OS not supported | -regression | | # Removes tag 'regression'. | -| Fail | My message | tag | -t* | # Removes all tags starting with 't' except the newly added 'tag'. | - -See `Fatal Error` if you need to stop the whole test execution. - - - - - -msg=None - -Stops the whole test execution. - -The test or suite where this keyword is used fails with the provided -message, and subsequent tests fail with a canned message. -Possible teardowns will nevertheless be executed. - -See `Fail` if you only want to stop one test case unconditionally. - - - - - -item1 -item2 - -Returns and logs how many times ``item2`` is found from ``item1``. - -This keyword works with Python strings and lists and all objects -that either have ``count`` method or can be converted to Python lists. - -Example: -| ${count} = | Get Count | ${some item} | interesting value | -| Should Be True | 5 < ${count} < 10 | - - - - - -item - -Returns and logs the length of the given item as an integer. - -The item can be anything that has a length, for example, a string, -a list, or a mapping. The keyword first tries to get the length with -the Python function ``len``, which calls the item's ``__len__`` method -internally. If that fails, the keyword tries to call the item's -possible ``length`` and ``size`` methods directly. The final attempt is -trying to get the value of the item's ``length`` attribute. If all -these attempts are unsuccessful, the keyword fails. - -Examples: -| ${length} = | Get Length | Hello, world! | | -| Should Be Equal As Integers | ${length} | 13 | -| @{list} = | Create List | Hello, | world! | -| ${length} = | Get Length | ${list} | | -| Should Be Equal As Integers | ${length} | 2 | - -See also `Length Should Be`, `Should Be Empty` and `Should Not Be -Empty`. - - - - - -name=None -all=False - -Returns the currently active instance of the specified test library. - -This keyword makes it easy for test libraries to interact with -other test libraries that have state. This is illustrated by -the Python example below: - -| from robot.libraries.BuiltIn import BuiltIn -| -| def title_should_start_with(expected): -| seleniumlib = BuiltIn().get_library_instance('SeleniumLibrary') -| title = seleniumlib.get_title() -| if not title.startswith(expected): -| raise AssertionError("Title '%s' did not start with '%s'" -| % (title, expected)) - -It is also possible to use this keyword in the test data and -pass the returned library instance to another keyword. If a -library is imported with a custom name, the ``name`` used to get -the instance must be that name and not the original library name. - -If the optional argument ``all`` is given a true value, then a -dictionary mapping all library names to instances will be returned. -This feature is new in Robot Framework 2.9.2. - -Example: -| &{all libs} = | Get library instance | all=True | - - - - - -format=timestamp -time_=NOW - -Returns the given time in the requested format. - -*NOTE:* DateTime library contains much more flexible keywords for -getting the current date and time and for date and time handling in -general. - -How time is returned is determined based on the given ``format`` -string as follows. Note that all checks are case-insensitive. - -1) If ``format`` contains the word ``epoch``, the time is returned - in seconds after the UNIX epoch (1970-01-01 00:00:00 UTC). - The return value is always an integer. - -2) If ``format`` contains any of the words ``year``, ``month``, - ``day``, ``hour``, ``min``, or ``sec``, only the selected parts are - returned. The order of the returned parts is always the one - in the previous sentence and the order of words in ``format`` - is not significant. The parts are returned as zero-padded - strings (e.g. May -> ``05``). - -3) Otherwise (and by default) the time is returned as a - timestamp string in the format ``2006-02-24 15:08:31``. - -By default this keyword returns the current local time, but -that can be altered using ``time`` argument as explained below. -Note that all checks involving strings are case-insensitive. - -1) If ``time`` is a number, or a string that can be converted to - a number, it is interpreted as seconds since the UNIX epoch. - This documentation was originally written about 1177654467 - seconds after the epoch. - -2) If ``time`` is a timestamp, that time will be used. Valid - timestamp formats are ``YYYY-MM-DD hh:mm:ss`` and - ``YYYYMMDD hhmmss``. - -3) If ``time`` is equal to ``NOW`` (default), the current local - time is used. - -4) If ``time`` is equal to ``UTC``, the current time in - [http://en.wikipedia.org/wiki/Coordinated_Universal_Time|UTC] - is used. - -5) If ``time`` is in the format like ``NOW - 1 day`` or ``UTC + 1 hour - 30 min``, the current local/UTC time plus/minus the time - specified with the time string is used. The time string format - is described in an appendix of Robot Framework User Guide. - -Examples (expecting the current local time is 2006-03-29 15:06:21): -| ${time} = | Get Time | | | | -| ${secs} = | Get Time | epoch | | | -| ${year} = | Get Time | return year | | | -| ${yyyy} | ${mm} | ${dd} = | Get Time | year,month,day | -| @{time} = | Get Time | year month day hour min sec | | | -| ${y} | ${s} = | Get Time | seconds and year | | -=> -| ${time} = '2006-03-29 15:06:21' -| ${secs} = 1143637581 -| ${year} = '2006' -| ${yyyy} = '2006', ${mm} = '03', ${dd} = '29' -| @{time} = ['2006', '03', '29', '15', '06', '21'] -| ${y} = '2006' -| ${s} = '21' - -Examples (expecting the current local time is 2006-03-29 15:06:21 and -UTC time is 2006-03-29 12:06:21): -| ${time} = | Get Time | | 1177654467 | # Time given as epoch seconds | -| ${secs} = | Get Time | sec | 2007-04-27 09:14:27 | # Time given as a timestamp | -| ${year} = | Get Time | year | NOW | # The local time of execution | -| @{time} = | Get Time | hour min sec | NOW + 1h 2min 3s | # 1h 2min 3s added to the local time | -| @{utc} = | Get Time | hour min sec | UTC | # The UTC time of execution | -| ${hour} = | Get Time | hour | UTC - 1 hour | # 1h subtracted from the UTC time | -=> -| ${time} = '2007-04-27 09:14:27' -| ${secs} = 27 -| ${year} = '2006' -| @{time} = ['16', '08', '24'] -| @{utc} = ['12', '06', '21'] -| ${hour} = '11' - - - - - -name -default=None - -Returns variable value or ``default`` if the variable does not exist. - -The name of the variable can be given either as a normal variable name -(e.g. ``${NAME}``) or in escaped format (e.g. ``\${NAME}``). Notice -that the former has some limitations explained in `Set Suite Variable`. - -Examples: -| ${x} = | Get Variable Value | ${a} | default | -| ${y} = | Get Variable Value | ${a} | ${b} | -| ${z} = | Get Variable Value | ${z} | | -=> -| ${x} gets value of ${a} if ${a} exists and string 'default' otherwise -| ${y} gets value of ${a} if ${a} exists and value of ${b} otherwise -| ${z} is set to Python None if it does not exist previously - -See `Set Variable If` for another keyword to set variables dynamically. - - - - - -no_decoration=False - -Returns a dictionary containing all variables in the current scope. - -Variables are returned as a special dictionary that allows accessing -variables in space, case, and underscore insensitive manner similarly -as accessing variables in the test data. This dictionary supports all -same operations as normal Python dictionaries and, for example, -Collections library can be used to access or modify it. Modifying the -returned dictionary has no effect on the variables available in the -current scope. - -By default variables are returned with ``${}``, ``@{}`` or ``&{}`` -decoration based on variable types. Giving a true value (see `Boolean -arguments`) to the optional argument ``no_decoration`` will return -the variables without the decoration. This option is new in Robot -Framework 2.9. - -Example: -| ${example_variable} = | Set Variable | example value | -| ${variables} = | Get Variables | | -| Dictionary Should Contain Key | ${variables} | \${example_variable} | -| Dictionary Should Contain Key | ${variables} | \${ExampleVariable} | -| Set To Dictionary | ${variables} | \${name} | value | -| Variable Should Not Exist | \${name} | | | -| ${no decoration} = | Get Variables | no_decoration=Yes | -| Dictionary Should Contain Key | ${no decoration} | example_variable | - - - - - -name -*args - -Imports a library with the given name and optional arguments. - -This functionality allows dynamic importing of libraries while tests -are running. That may be necessary, if the library itself is dynamic -and not yet available when test data is processed. In a normal case, -libraries should be imported using the Library setting in the Setting -table. - -This keyword supports importing libraries both using library -names and physical paths. When paths are used, they must be -given in absolute format or found from -[http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#pythonpath-jythonpath-and-ironpythonpath| -search path]. Forward slashes can be used as path separators in all -operating systems. - -It is possible to pass arguments to the imported library and also -named argument syntax works if the library supports it. ``WITH NAME`` -syntax can be used to give a custom name to the imported library. - -Examples: -| Import Library | MyLibrary | -| Import Library | ${CURDIR}/../Library.py | arg1 | named=arg2 | -| Import Library | ${LIBRARIES}/Lib.java | arg | WITH NAME | JavaLib | - - - - - -path - -Imports a resource file with the given path. - -Resources imported with this keyword are set into the test suite scope -similarly when importing them in the Setting table using the Resource -setting. - -The given path must be absolute or found from -[http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#pythonpath-jythonpath-and-ironpythonpath| -search path]. Forward slashes can be used as path separator regardless -the operating system. - -Examples: -| Import Resource | ${CURDIR}/resource.txt | -| Import Resource | ${CURDIR}/../resources/resource.html | -| Import Resource | found_from_pythonpath.robot | - - - - - -path -*args - -Imports a variable file with the given path and optional arguments. - -Variables imported with this keyword are set into the test suite scope -similarly when importing them in the Setting table using the Variables -setting. These variables override possible existing variables with -the same names. This functionality can thus be used to import new -variables, for example, for each test in a test suite. - -The given path must be absolute or found from -[http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#pythonpath-jythonpath-and-ironpythonpath| -search path]. Forward slashes can be used as path separator regardless -the operating system. - -Examples: -| Import Variables | ${CURDIR}/variables.py | | | -| Import Variables | ${CURDIR}/../vars/env.py | arg1 | arg2 | -| Import Variables | file_from_pythonpath.py | | | - - - - - -name -msg=None - -Fails unless the given keyword exists in the current scope. - -Fails also if there are more than one keywords with the same name. -Works both with the short name (e.g. ``Log``) and the full name -(e.g. ``BuiltIn.Log``). - -The default error message can be overridden with the ``msg`` argument. - -See also `Variable Should Exist`. - - - - - -item -length -msg=None - -Verifies that the length of the given item is correct. - -The length of the item is got using the `Get Length` keyword. The -default error message can be overridden with the ``msg`` argument. - - - - - -message -level=INFO -html=False -console=False -repr=False - -Logs the given message with the given level. - -Valid levels are TRACE, DEBUG, INFO (default), HTML, WARN, and ERROR. -Messages below the current active log level are ignored. See -`Set Log Level` keyword and ``--loglevel`` command line option -for more details about setting the level. - -Messages logged with the WARN or ERROR levels will be automatically -visible also in the console and in the Test Execution Errors section -in the log file. - -Logging can be configured using optional ``html``, ``console`` and -``repr`` arguments. They are off by default, but can be enabled -by giving them a true value. See `Boolean arguments` section for more -information about true and false values. - -If the ``html`` argument is given a true value, the message will be -considered HTML and special characters such as ``<`` in it are not -escaped. For example, logging ``<img src="image.png">`` creates an -image when ``html`` is true, but otherwise the message is that exact -string. An alternative to using the ``html`` argument is using the HTML -pseudo log level. It logs the message as HTML using the INFO level. - -If the ``console`` argument is true, the message will be written to -the console where test execution was started from in addition to -the log file. This keyword always uses the standard output stream -and adds a newline after the written message. Use `Log To Console` -instead if either of these is undesirable, - -If the ``repr`` argument is true, the given item will be passed through -a custom version of Python's ``pprint.pformat()`` function before -logging it. This is useful, for example, when working with strings or -bytes containing invisible characters, or when working with nested data -structures. The custom version differs from the standard one so that it -omits the ``u`` prefix from Unicode strings and adds ``b`` prefix to -byte strings on Python 2. - -Examples: -| Log | Hello, world! | | | # Normal INFO message. | -| Log | Warning, world! | WARN | | # Warning. | -| Log | <b>Hello</b>, world! | html=yes | | # INFO message as HTML. | -| Log | <b>Hello</b>, world! | HTML | | # Same as above. | -| Log | <b>Hello</b>, world! | DEBUG | html=true | # DEBUG as HTML. | -| Log | Hello, console! | console=yes | | # Log also to the console. | -| Log | Hyvä \x00 | repr=yes | | # Log ``'Hyv\xe4 \x00'``. | - -See `Log Many` if you want to log multiple messages in one go, and -`Log To Console` if you only want to write to the console. - - - - - -*messages - -Logs the given messages as separate entries using the INFO level. - -Supports also logging list and dictionary variable items individually. - -Examples: -| Log Many | Hello | ${var} | -| Log Many | @{list} | &{dict} | - -See `Log` and `Log To Console` keywords if you want to use alternative -log levels, use HTML, or log to the console. - - - - - -message -stream=STDOUT -no_newline=False - -Logs the given message to the console. - -By default uses the standard output stream. Using the standard error -stream is possibly by giving the ``stream`` argument value ``STDERR`` -(case-insensitive). - -By default appends a newline to the logged message. This can be -disabled by giving the ``no_newline`` argument a true value (see -`Boolean arguments`). - -Examples: -| Log To Console | Hello, console! | | -| Log To Console | Hello, stderr! | STDERR | -| Log To Console | Message starts here and is | no_newline=true | -| Log To Console | continued without newline. | | - -This keyword does not log the message to the normal log file. Use -`Log` keyword, possibly with argument ``console``, if that is desired. - - - - - -level=INFO - -Logs all variables in the current scope with given log level. - - - - - - -Does absolutely nothing. - - - - - -message -*tags - -Skips rest of the current test, setup, or teardown with PASS status. - -This keyword can be used anywhere in the test data, but the place where -used affects the behavior: - -- When used in any setup or teardown (suite, test or keyword), passes - that setup or teardown. Possible keyword teardowns of the started - keywords are executed. Does not affect execution or statuses - otherwise. -- When used in a test outside setup or teardown, passes that particular - test case. Possible test and keyword teardowns are executed. - -Possible continuable failures before this keyword is used, as well as -failures in executed teardowns, will fail the execution. - -It is mandatory to give a message explaining why execution was passed. -By default the message is considered plain text, but starting it with -``*HTML*`` allows using HTML formatting. - -It is also possible to modify test tags passing tags after the message -similarly as with `Fail` keyword. Tags starting with a hyphen -(e.g. ``-regression``) are removed and others added. Tags are modified -using `Set Tags` and `Remove Tags` internally, and the semantics -setting and removing them are the same as with these keywords. - -Examples: -| Pass Execution | All features available in this version tested. | -| Pass Execution | Deprecated test. | deprecated | -regression | - -This keyword is typically wrapped to some other keyword, such as -`Run Keyword If`, to pass based on a condition. The most common case -can be handled also with `Pass Execution If`: - -| Run Keyword If | ${rc} < 0 | Pass Execution | Negative values are cool. | -| Pass Execution If | ${rc} < 0 | Negative values are cool. | - -Passing execution in the middle of a test, setup or teardown should be -used with care. In the worst case it leads to tests that skip all the -parts that could actually uncover problems in the tested application. -In cases where execution cannot continue do to external factors, -it is often safer to fail the test case and make it non-critical. - - - - - -condition -message -*tags - -Conditionally skips rest of the current test, setup, or teardown with PASS status. - -A wrapper for `Pass Execution` to skip rest of the current test, -setup or teardown based the given ``condition``. The condition is -evaluated similarly as with `Should Be True` keyword, and ``message`` -and ``*tags`` have same semantics as with `Pass Execution`. - -Example: -| :FOR | ${var} | IN | @{VALUES} | -| | Pass Execution If | '${var}' == 'EXPECTED' | Correct value was found | -| | Do Something | ${var} | - - - - - -*patterns - -Returns each argument string escaped for use as a regular expression. - -This keyword can be used to escape strings to be used with -`Should Match Regexp` and `Should Not Match Regexp` keywords. - -Escaping is done with Python's ``re.escape()`` function. - -Examples: -| ${escaped} = | Regexp Escape | ${original} | -| @{strings} = | Regexp Escape | @{strings} | - - - - - -name_or_instance - -Rechecks what keywords the specified library provides. - -Can be called explicitly in the test data or by a library itself -when keywords it provides have changed. - -The library can be specified by its name or as the active instance of -the library. The latter is especially useful if the library itself -calls this keyword as a method. - -New in Robot Framework 2.9. - - - - - -*tags - -Removes given ``tags`` from the current test or all tests in a suite. - -Tags can be given exactly or using a pattern with ``*``, ``?`` and -``[chars]`` acting as wildcards. See the `Glob patterns` section -for more information. - -This keyword can affect either one test case or all test cases in a -test suite similarly as `Set Tags` keyword. - -The current tags are available as a built-in variable ``@{TEST TAGS}``. - -Example: -| Remove Tags | mytag | something-* | ?ython | - -See `Set Tags` if you want to add certain tags and `Fail` if you want -to fail the test case after setting and/or removing tags. - - - - - -repeat -name -*args - -Executes the specified keyword multiple times. - -``name`` and ``args`` define the keyword that is executed similarly as -with `Run Keyword`. ``repeat`` specifies how many times (as a count) or -how long time (as a timeout) the keyword should be executed. - -If ``repeat`` is given as count, it specifies how many times the -keyword should be executed. ``repeat`` can be given as an integer or -as a string that can be converted to an integer. If it is a string, -it can have postfix ``times`` or ``x`` (case and space insensitive) -to make the expression more explicit. - -If ``repeat`` is given as timeout, it must be in Robot Framework's -time format (e.g. ``1 minute``, ``2 min 3 s``). Using a number alone -(e.g. ``1`` or ``1.5``) does not work in this context. - -If ``repeat`` is zero or negative, the keyword is not executed at -all. This keyword fails immediately if any of the execution -rounds fails. - -Examples: -| Repeat Keyword | 5 times | Go to Previous Page | -| Repeat Keyword | ${var} | Some Keyword | arg1 | arg2 | -| Repeat Keyword | 2 minutes | Some Keyword | arg1 | arg2 | - -Specifying ``repeat`` as a timeout is new in Robot Framework 3.0. - - - - - -text - -Replaces variables in the given text with their current values. - -If the text contains undefined variables, this keyword fails. -If the given ``text`` contains only a single variable, its value is -returned as-is and it can be any object. Otherwise this keyword -always returns a string. - -Example: - -The file ``template.txt`` contains ``Hello ${NAME}!`` and variable -``${NAME}`` has the value ``Robot``. - -| ${template} = | Get File | ${CURDIR}/template.txt | -| ${message} = | Replace Variables | ${template} | -| Should Be Equal | ${message} | Hello Robot! | - - - - - -*return_values - -Returns from the enclosing user keyword. - -This keyword can be used to return from a user keyword with PASS status -without executing it fully. It is also possible to return values -similarly as with the ``[Return]`` setting. For more detailed information -about working with the return values, see the User Guide. - -This keyword is typically wrapped to some other keyword, such as -`Run Keyword If` or `Run Keyword If Test Passed`, to return based -on a condition: - -| Run Keyword If | ${rc} < 0 | Return From Keyword | -| Run Keyword If Test Passed | Return From Keyword | - -It is possible to use this keyword to return from a keyword also inside -a for loop. That, as well as returning values, is demonstrated by the -`Find Index` keyword in the following somewhat advanced example. -Notice that it is often a good idea to move this kind of complicated -logic into a test library. - -| ***** Variables ***** -| @{LIST} = foo baz -| -| ***** Test Cases ***** -| Example -| ${index} = Find Index baz @{LIST} -| Should Be Equal ${index} ${1} -| ${index} = Find Index non existing @{LIST} -| Should Be Equal ${index} ${-1} -| -| ***** Keywords ***** -| Find Index -| [Arguments] ${element} @{items} -| ${index} = Set Variable ${0} -| :FOR ${item} IN @{items} -| \ Run Keyword If '${item}' == '${element}' Return From Keyword ${index} -| \ ${index} = Set Variable ${index + 1} -| Return From Keyword ${-1} # Also [Return] would work here. - -The most common use case, returning based on an expression, can be -accomplished directly with `Return From Keyword If`. See also -`Run Keyword And Return` and `Run Keyword And Return If`. - - - - - -condition -*return_values - -Returns from the enclosing user keyword if ``condition`` is true. - -A wrapper for `Return From Keyword` to return based on the given -condition. The condition is evaluated using the same semantics as -with `Should Be True` keyword. - -Given the same example as in `Return From Keyword`, we can rewrite the -`Find Index` keyword as follows: - -| ***** Keywords ***** -| Find Index -| [Arguments] ${element} @{items} -| ${index} = Set Variable ${0} -| :FOR ${item} IN @{items} -| \ Return From Keyword If '${item}' == '${element}' ${index} -| \ ${index} = Set Variable ${index + 1} -| Return From Keyword ${-1} # Also [Return] would work here. - -See also `Run Keyword And Return` and `Run Keyword And Return If`. - - - - - -name -*args - -Executes the given keyword with the given arguments. - -Because the name of the keyword to execute is given as an argument, it -can be a variable and thus set dynamically, e.g. from a return value of -another keyword or from the command line. - - - - - -name -*args - -Runs the keyword and continues execution even if a failure occurs. - -The keyword name and arguments work as with `Run Keyword`. - -Example: -| Run Keyword And Continue On Failure | Fail | This is a stupid example | -| Log | This keyword is executed | - -The execution is not continued if the failure is caused by invalid syntax, -timeout, or fatal exception. -Since Robot Framework 2.9, variable errors are caught by this keyword. - - - - - -expected_error -name -*args - -Runs the keyword and checks that the expected error occurred. - -The keyword to execute and its arguments are specified using ``name`` -and ``*args`` exactly like with `Run Keyword`. - -The expected error must be given in the same format as in Robot -Framework reports. By default it is interpreted as a glob pattern -with ``*``, ``?`` and ``[chars]`` as wildcards, but starting from -Robot Framework 3.1 that can be changed by using various prefixes -explained in the table below. Prefixes are case-sensitive and they -must be separated from the actual message with a colon and an -optional space like ``PREFIX: Message`` or ``PREFIX:Message``. - -| = Prefix = | = Explanation = | -| ``EQUALS`` | Exact match. Especially useful if the error contains glob wildcards. | -| ``STARTS`` | Error must start with the specified error. | -| ``REGEXP`` | Regular expression match. | -| ``GLOB`` | Same as the default behavior. | - -See the `Pattern matching` section for more information about glob -patterns and regular expressions. - -If the expected error occurs, the error message is returned and it can -be further processed or tested if needed. If there is no error, or the -error does not match the expected error, this keyword fails. - -Examples: -| Run Keyword And Expect Error | My error | Keyword | arg | -| Run Keyword And Expect Error | ValueError: * | Some Keyword | -| Run Keyword And Expect Error | STARTS: ValueError: | Some Keyword | -| Run Keyword And Expect Error | EQUALS:No match for '//input[@type="text"]' | -| ... | Find Element | //input[@type="text"] | -| ${msg} = | Run Keyword And Expect Error | * | -| ... | Keyword | arg1 | arg2 | -| Log To Console | ${msg} | - -Errors caused by invalid syntax, timeouts, or fatal exceptions are not -caught by this keyword. -Since Robot Framework 2.9, variable errors are caught by this keyword. - - - - - -name -*args - -Runs the given keyword with the given arguments and ignores possible error. - -This keyword returns two values, so that the first is either string -``PASS`` or ``FAIL``, depending on the status of the executed keyword. -The second value is either the return value of the keyword or the -received error message. See `Run Keyword And Return Status` If you are -only interested in the execution status. - -The keyword name and arguments work as in `Run Keyword`. See -`Run Keyword If` for a usage example. - -Errors caused by invalid syntax, timeouts, or fatal exceptions are not -caught by this keyword. Otherwise this keyword itself never fails. -Since Robot Framework 2.9, variable errors are caught by this keyword. - - - - - -name -*args - -Runs the specified keyword and returns from the enclosing user keyword. - -The keyword to execute is defined with ``name`` and ``*args`` exactly -like with `Run Keyword`. After running the keyword, returns from the -enclosing user keyword and passes possible return value from the -executed keyword further. Returning from a keyword has exactly same -semantics as with `Return From Keyword`. - -Example: -| `Run Keyword And Return` | `My Keyword` | arg1 | arg2 | -| # Above is equivalent to: | -| ${result} = | `My Keyword` | arg1 | arg2 | -| `Return From Keyword` | ${result} | | | - -Use `Run Keyword And Return If` if you want to run keyword and return -based on a condition. - - - - - -condition -name -*args - -Runs the specified keyword and returns from the enclosing user keyword. - -A wrapper for `Run Keyword And Return` to run and return based on -the given ``condition``. The condition is evaluated using the same -semantics as with `Should Be True` keyword. - -Example: -| `Run Keyword And Return If` | ${rc} > 0 | `My Keyword` | arg1 | arg2 | -| # Above is equivalent to: | -| `Run Keyword If` | ${rc} > 0 | `Run Keyword And Return` | `My Keyword ` | arg1 | arg2 | - -Use `Return From Keyword If` if you want to return a certain value -based on a condition. - - - - - -name -*args - -Runs the given keyword with given arguments and returns the status as a Boolean value. - -This keyword returns Boolean ``True`` if the keyword that is executed -succeeds and ``False`` if it fails. This is useful, for example, in -combination with `Run Keyword If`. If you are interested in the error -message or return value, use `Run Keyword And Ignore Error` instead. - -The keyword name and arguments work as in `Run Keyword`. - -Example: -| ${passed} = | `Run Keyword And Return Status` | Keyword | args | -| `Run Keyword If` | ${passed} | Another keyword | - -Errors caused by invalid syntax, timeouts, or fatal exceptions are not -caught by this keyword. Otherwise this keyword itself never fails. - - - - - -condition -name -*args - -Runs the given keyword with the given arguments, if ``condition`` is true. - -The given ``condition`` is evaluated in Python as explained in -`Evaluating expressions`, and ``name`` and ``*args`` have same -semantics as with `Run Keyword`. - -Example, a simple if/else construct: -| ${status} | ${value} = | `Run Keyword And Ignore Error` | `My Keyword` | -| `Run Keyword If` | '${status}' == 'PASS' | `Some Action` | arg | -| `Run Keyword Unless` | '${status}' == 'PASS' | `Another Action` | - -In this example, only either `Some Action` or `Another Action` is -executed, based on the status of `My Keyword`. Instead of `Run Keyword -And Ignore Error` you can also use `Run Keyword And Return Status`. - -Variables used like ``${variable}``, as in the examples above, are -replaced in the expression before evaluation. Variables are also -available in the evaluation namespace and can be accessed using special -syntax ``$variable``. This is a new feature in Robot Framework 2.9 -and it is explained more thoroughly in `Evaluating expressions`. - -Example: -| `Run Keyword If` | $result is None or $result == 'FAIL' | `Keyword` | - -This keyword supports also optional ELSE and ELSE IF branches. Both -of them are defined in ``*args`` and must use exactly format ``ELSE`` -or ``ELSE IF``, respectively. ELSE branches must contain first the -name of the keyword to execute and then its possible arguments. ELSE -IF branches must first contain a condition, like the first argument -to this keyword, and then the keyword to execute and its possible -arguments. It is possible to have ELSE branch after ELSE IF and to -have multiple ELSE IF branches. Nested `Run Keyword If` usage is not -supported when using ELSE and/or ELSE IF branches. - -Given previous example, if/else construct can also be created like this: -| ${status} | ${value} = | `Run Keyword And Ignore Error` | `My Keyword` | -| `Run Keyword If` | '${status}' == 'PASS' | `Some Action` | arg | ELSE | `Another Action` | - -The return value of this keyword is the return value of the actually -executed keyword or Python ``None`` if no keyword was executed (i.e. -if ``condition`` was false). Hence, it is recommended to use ELSE -and/or ELSE IF branches to conditionally assign return values from -keyword to variables (see `Set Variable If` if you need to set fixed -values conditionally). This is illustrated by the example below: - -| ${var1} = | `Run Keyword If` | ${rc} == 0 | `Some keyword returning a value` | -| ... | ELSE IF | 0 < ${rc} < 42 | `Another keyword` | -| ... | ELSE IF | ${rc} < 0 | `Another keyword with args` | ${rc} | arg2 | -| ... | ELSE | `Final keyword to handle abnormal cases` | ${rc} | -| ${var2} = | `Run Keyword If` | ${condition} | `Some keyword` | - -In this example, ${var2} will be set to ``None`` if ${condition} is -false. - -Notice that ``ELSE`` and ``ELSE IF`` control words must be used -explicitly and thus cannot come from variables. If you need to use -literal ``ELSE`` and ``ELSE IF`` strings as arguments, you can escape -them with a backslash like ``\ELSE`` and ``\ELSE IF``. - -Python's [http://docs.python.org/library/os.html|os] and -[http://docs.python.org/library/sys.html|sys] modules are -automatically imported when evaluating the ``condition``. -Attributes they contain can thus be used in the condition: - -| `Run Keyword If` | os.sep == '/' | `Unix Keyword` | -| ... | ELSE IF | sys.platform.startswith('java') | `Jython Keyword` | -| ... | ELSE | `Windows Keyword` | - - - - - -name -*args - -Runs the given keyword with the given arguments, if all critical tests passed. - -This keyword can only be used in suite teardown. Trying to use it in -any other place will result in an error. - -Otherwise, this keyword works exactly like `Run Keyword`, see its -documentation for more details. - - - - - -name -*args - -Runs the given keyword with the given arguments, if all tests passed. - -This keyword can only be used in a suite teardown. Trying to use it -anywhere else results in an error. - -Otherwise, this keyword works exactly like `Run Keyword`, see its -documentation for more details. - - - - - -name -*args - -Runs the given keyword with the given arguments, if any critical tests failed. - -This keyword can only be used in a suite teardown. Trying to use it -anywhere else results in an error. - -Otherwise, this keyword works exactly like `Run Keyword`, see its -documentation for more details. - - - - - -name -*args - -Runs the given keyword with the given arguments, if one or more tests failed. - -This keyword can only be used in a suite teardown. Trying to use it -anywhere else results in an error. - -Otherwise, this keyword works exactly like `Run Keyword`, see its -documentation for more details. - - - - - -name -*args - -Runs the given keyword with the given arguments, if the test failed. - -This keyword can only be used in a test teardown. Trying to use it -anywhere else results in an error. - -Otherwise, this keyword works exactly like `Run Keyword`, see its -documentation for more details. - -Prior to Robot Framework 2.9 failures in test teardown itself were -not detected by this keyword. - - - - - -name -*args - -Runs the given keyword with the given arguments, if the test passed. - -This keyword can only be used in a test teardown. Trying to use it -anywhere else results in an error. - -Otherwise, this keyword works exactly like `Run Keyword`, see its -documentation for more details. - -Prior to Robot Framework 2.9 failures in test teardown itself were -not detected by this keyword. - - - - - -name -*args - -Runs the given keyword if either a test or a keyword timeout has occurred. - -This keyword can only be used in a test teardown. Trying to use it -anywhere else results in an error. - -Otherwise, this keyword works exactly like `Run Keyword`, see its -documentation for more details. - - - - - -condition -name -*args - -Runs the given keyword with the given arguments if ``condition`` is false. - -See `Run Keyword If` for more information and an example. Notice that -this keyword does not support ``ELSE`` or ``ELSE IF`` branches like -`Run Keyword If` does, though. - - - - - -*keywords - -Executes all the given keywords in a sequence. - -This keyword is mainly useful in setups and teardowns when they need -to take care of multiple actions and creating a new higher level user -keyword would be an overkill. - -By default all arguments are expected to be keywords to be executed. - -Examples: -| `Run Keywords` | `Initialize database` | `Start servers` | `Clear logs` | -| `Run Keywords` | ${KW 1} | ${KW 2} | -| `Run Keywords` | @{KEYWORDS} | - -Keywords can also be run with arguments using upper case ``AND`` as -a separator between keywords. The keywords are executed so that the -first argument is the first keyword and proceeding arguments until -the first ``AND`` are arguments to it. First argument after the first -``AND`` is the second keyword and proceeding arguments until the next -``AND`` are its arguments. And so on. - -Examples: -| `Run Keywords` | `Initialize database` | db1 | AND | `Start servers` | server1 | server2 | -| `Run Keywords` | `Initialize database` | ${DB NAME} | AND | `Start servers` | @{SERVERS} | AND | `Clear logs` | -| `Run Keywords` | ${KW} | AND | @{KW WITH ARGS} | - -Notice that the ``AND`` control argument must be used explicitly and -cannot itself come from a variable. If you need to use literal ``AND`` -string as argument, you can either use variables or escape it with -a backslash like ``\AND``. - - - - - -name -*values - -Makes a variable available globally in all tests and suites. - -Variables set with this keyword are globally available in all -subsequent test suites, test cases and user keywords. Also variables -in variable tables are overridden. Variables assigned locally based -on keyword return values or by using `Set Test Variable` and -`Set Suite Variable` override these variables in that scope, but -the global value is not changed in those cases. - -In practice setting variables with this keyword has the same effect -as using command line options ``--variable`` and ``--variablefile``. -Because this keyword can change variables everywhere, it should be -used with care. - -See `Set Suite Variable` for more information and examples. - - - - - -*search_order - -Sets the resolution order to use when a name matches multiple keywords. - -The library search order is used to resolve conflicts when a keyword -name in the test data matches multiple keywords. The first library -(or resource, see below) containing the keyword is selected and that -keyword implementation used. If the keyword is not found from any library -(or resource), test executing fails the same way as when the search -order is not set. - -When this keyword is used, there is no need to use the long -``LibraryName.Keyword Name`` notation. For example, instead of -having - -| MyLibrary.Keyword | arg | -| MyLibrary.Another Keyword | -| MyLibrary.Keyword | xxx | - -you can have - -| Set Library Search Order | MyLibrary | -| Keyword | arg | -| Another Keyword | -| Keyword | xxx | - -This keyword can be used also to set the order of keywords in different -resource files. In this case resource names must be given without paths -or extensions like: - -| Set Library Search Order | resource | another_resource | - -*NOTE:* -- The search order is valid only in the suite where this keywords is used. -- Keywords in resources always have higher priority than - keywords in libraries regardless the search order. -- The old order is returned and can be used to reset the search order later. -- Library and resource names in the search order are both case and space - insensitive. - - - - - -level - -Sets the log threshold to the specified level and returns the old level. - -Messages below the level will not logged. The default logging level is -INFO, but it can be overridden with the command line option -``--loglevel``. - -The available levels: TRACE, DEBUG, INFO (default), WARN, ERROR and NONE (no -logging). - - - - - -doc -append=False -top=False - -Sets documentation for the current test suite. - -By default the possible existing documentation is overwritten, but -this can be changed using the optional ``append`` argument similarly -as with `Set Test Message` keyword. - -This keyword sets the documentation of the current suite by default. -If the optional ``top`` argument is given a true value (see `Boolean -arguments`), the documentation of the top level suite is altered -instead. - -The documentation of the current suite is available as a built-in -variable ``${SUITE DOCUMENTATION}``. - - - - - -name -value -append=False -top=False - -Sets metadata for the current test suite. - -By default possible existing metadata values are overwritten, but -this can be changed using the optional ``append`` argument similarly -as with `Set Test Message` keyword. - -This keyword sets the metadata of the current suite by default. -If the optional ``top`` argument is given a true value (see `Boolean -arguments`), the metadata of the top level suite is altered instead. - -The metadata of the current suite is available as a built-in variable -``${SUITE METADATA}`` in a Python dictionary. Notice that modifying this -variable directly has no effect on the actual metadata the suite has. - - - - - -name -*values - -Makes a variable available everywhere within the scope of the current suite. - -Variables set with this keyword are available everywhere within the -scope of the currently executed test suite. Setting variables with this -keyword thus has the same effect as creating them using the Variable -table in the test data file or importing them from variable files. - -Possible child test suites do not see variables set with this keyword -by default. Starting from Robot Framework 2.9, that can be controlled -by using ``children=<option>`` as the last argument. If the specified -``<option>`` is a non-empty string or any other value considered true -in Python, the variable is set also to the child suites. Parent and -sibling suites will never see variables set with this keyword. - -The name of the variable can be given either as a normal variable name -(e.g. ``${NAME}``) or in escaped format as ``\${NAME}`` or ``$NAME``. -Variable value can be given using the same syntax as when variables -are created in the Variable table. - -If a variable already exists within the new scope, its value will be -overwritten. Otherwise a new variable is created. If a variable already -exists within the current scope, the value can be left empty and the -variable within the new scope gets the value within the current scope. - -Examples: -| Set Suite Variable | ${SCALAR} | Hello, world! | -| Set Suite Variable | ${SCALAR} | Hello, world! | children=true | -| Set Suite Variable | @{LIST} | First item | Second item | -| Set Suite Variable | &{DICT} | key=value | foo=bar | -| ${ID} = | Get ID | -| Set Suite Variable | ${ID} | - -To override an existing value with an empty value, use built-in -variables ``${EMPTY}``, ``@{EMPTY}`` or ``&{EMPTY}``: - -| Set Suite Variable | ${SCALAR} | ${EMPTY} | -| Set Suite Variable | @{LIST} | @{EMPTY} | -| Set Suite Variable | &{DICT} | &{EMPTY} | - -*NOTE:* If the variable has value which itself is a variable (escaped -or not), you must always use the escaped format to set the variable: - -Example: -| ${NAME} = | Set Variable | \${var} | -| Set Suite Variable | ${NAME} | value | # Sets variable ${var} | -| Set Suite Variable | \${NAME} | value | # Sets variable ${NAME} | - -This limitation applies also to `Set Test Variable`, `Set Global -Variable`, `Variable Should Exist`, `Variable Should Not Exist` and -`Get Variable Value` keywords. - - - - - -*tags - -Adds given ``tags`` for the current test or all tests in a suite. - -When this keyword is used inside a test case, that test gets -the specified tags and other tests are not affected. - -If this keyword is used in a suite setup, all test cases in -that suite, recursively, gets the given tags. It is a failure -to use this keyword in a suite teardown. - -The current tags are available as a built-in variable ``@{TEST TAGS}``. - -See `Remove Tags` if you want to remove certain tags and `Fail` if -you want to fail the test case after setting and/or removing tags. - - - - - -name -*values - -Makes a variable available everywhere within the scope of the current task. - -This is an alias for `Set Test Variable` that is more applicable when -creating tasks, not tests. New in RF 3.1. - - - - - -doc -append=False - -Sets documentation for the current test case. - -By default the possible existing documentation is overwritten, but -this can be changed using the optional ``append`` argument similarly -as with `Set Test Message` keyword. - -The current test documentation is available as a built-in variable -``${TEST DOCUMENTATION}``. This keyword can not be used in suite -setup or suite teardown. - - - - - -message -append=False - -Sets message for the current test case. - -If the optional ``append`` argument is given a true value (see `Boolean -arguments`), the given ``message`` is added after the possible earlier -message by joining the messages with a space. - -In test teardown this keyword can alter the possible failure message, -but otherwise failures override messages set by this keyword. Notice -that in teardown the message is available as a built-in variable -``${TEST MESSAGE}``. - -It is possible to use HTML format in the message by starting the message -with ``*HTML*``. - -Examples: -| Set Test Message | My message | | -| Set Test Message | is continued. | append=yes | -| Should Be Equal | ${TEST MESSAGE} | My message is continued. | -| Set Test Message | `*`HTML`*` <b>Hello!</b> | | - -This keyword can not be used in suite setup or suite teardown. - - - - - -name -*values - -Makes a variable available everywhere within the scope of the current test. - -Variables set with this keyword are available everywhere within the -scope of the currently executed test case. For example, if you set a -variable in a user keyword, it is available both in the test case level -and also in all other user keywords used in the current test. Other -test cases will not see variables set with this keyword. - -See `Set Suite Variable` for more information and examples. - - - - - -*values - -Returns the given values which can then be assigned to a variables. - -This keyword is mainly used for setting scalar variables. -Additionally it can be used for converting a scalar variable -containing a list to a list variable or to multiple scalar variables. -It is recommended to use `Create List` when creating new lists. - -Examples: -| ${hi} = | Set Variable | Hello, world! | -| ${hi2} = | Set Variable | I said: ${hi} | -| ${var1} | ${var2} = | Set Variable | Hello | world | -| @{list} = | Set Variable | ${list with some items} | -| ${item1} | ${item2} = | Set Variable | ${list with 2 items} | - -Variables created with this keyword are available only in the -scope where they are created. See `Set Global Variable`, -`Set Test Variable` and `Set Suite Variable` for information on how to -set variables so that they are available also in a larger scope. - - - - - -condition -*values - -Sets variable based on the given condition. - -The basic usage is giving a condition and two values. The -given condition is first evaluated the same way as with the -`Should Be True` keyword. If the condition is true, then the -first value is returned, and otherwise the second value is -returned. The second value can also be omitted, in which case -it has a default value None. This usage is illustrated in the -examples below, where ``${rc}`` is assumed to be zero. - -| ${var1} = | Set Variable If | ${rc} == 0 | zero | nonzero | -| ${var2} = | Set Variable If | ${rc} > 0 | value1 | value2 | -| ${var3} = | Set Variable If | ${rc} > 0 | whatever | | -=> -| ${var1} = 'zero' -| ${var2} = 'value2' -| ${var3} = None - -It is also possible to have 'else if' support by replacing the -second value with another condition, and having two new values -after it. If the first condition is not true, the second is -evaluated and one of the values after it is returned based on -its truth value. This can be continued by adding more -conditions without a limit. - -| ${var} = | Set Variable If | ${rc} == 0 | zero | -| ... | ${rc} > 0 | greater than zero | less then zero | -| | -| ${var} = | Set Variable If | -| ... | ${rc} == 0 | zero | -| ... | ${rc} == 1 | one | -| ... | ${rc} == 2 | two | -| ... | ${rc} > 2 | greater than two | -| ... | ${rc} < 0 | less than zero | - -Use `Get Variable Value` if you need to set variables -dynamically based on whether a variable exist or not. - - - - - -item -msg=None - -Verifies that the given item is empty. - -The length of the item is got using the `Get Length` keyword. The -default error message can be overridden with the ``msg`` argument. - - - - - -first -second -msg=None -values=True -ignore_case=False - -Fails if the given objects are unequal. - -Optional ``msg`` and ``values`` arguments specify how to construct -the error message if this keyword fails: - -- If ``msg`` is not given, the error message is ``<first> != <second>``. -- If ``msg`` is given and ``values`` gets a true value (default), - the error message is ``<msg>: <first> != <second>``. -- If ``msg`` is given and ``values`` gets a false value, the error - message is simply ``<msg>``. See `Boolean arguments` for more details - about using false values. - -If ``ignore_case`` is given a true value (see `Boolean arguments`) and -arguments are strings, it indicates that comparison should be -case-insensitive. New option in Robot Framework 3.0.1. - -If both arguments are multiline strings, the comparison is done using -`multiline string comparisons`. - -Examples: -| Should Be Equal | ${x} | expected | -| Should Be Equal | ${x} | expected | Custom error message | -| Should Be Equal | ${x} | expected | Custom message | values=False | -| Should Be Equal | ${x} | expected | ignore_case=True | - - - - - -first -second -msg=None -values=True -base=None - -Fails if objects are unequal after converting them to integers. - -See `Convert To Integer` for information how to convert integers from -other bases than 10 using ``base`` argument or ``0b/0o/0x`` prefixes. - -See `Should Be Equal` for an explanation on how to override the default -error message with ``msg`` and ``values``. - -Examples: -| Should Be Equal As Integers | 42 | ${42} | Error message | -| Should Be Equal As Integers | ABCD | abcd | base=16 | -| Should Be Equal As Integers | 0b1011 | 11 | - - - - - -first -second -msg=None -values=True -precision=6 - -Fails if objects are unequal after converting them to real numbers. - -The conversion is done with `Convert To Number` keyword using the -given ``precision``. - -Examples: -| Should Be Equal As Numbers | ${x} | 1.1 | | # Passes if ${x} is 1.1 | -| Should Be Equal As Numbers | 1.123 | 1.1 | precision=1 | # Passes | -| Should Be Equal As Numbers | 1.123 | 1.4 | precision=0 | # Passes | -| Should Be Equal As Numbers | 112.3 | 75 | precision=-2 | # Passes | - -As discussed in the documentation of `Convert To Number`, machines -generally cannot store floating point numbers accurately. Because of -this limitation, comparing floats for equality is problematic and -a correct approach to use depends on the context. This keyword uses -a very naive approach of rounding the numbers before comparing them, -which is both prone to rounding errors and does not work very well if -numbers are really big or small. For more information about comparing -floats, and ideas on how to implement your own context specific -comparison algorithm, see -http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/. - -If you want to avoid possible problems with floating point numbers, -you can implement custom keywords using Python's -[http://docs.python.org/library/decimal.html|decimal] or -[http://docs.python.org/library/fractions.html|fractions] modules. - -See `Should Not Be Equal As Numbers` for a negative version of this -keyword and `Should Be Equal` for an explanation on how to override -the default error message with ``msg`` and ``values``. - - - - - -first -second -msg=None -values=True -ignore_case=False - -Fails if objects are unequal after converting them to strings. - -See `Should Be Equal` for an explanation on how to override the default -error message with ``msg`` and ``values``. - -If ``ignore_case`` is given a true value (see `Boolean arguments`), it -indicates that comparison should be case-insensitive. New option in -Robot Framework 3.0.1. - -If both arguments are multiline strings, the comparison is done using -`multiline string comparisons`. - - - - - -condition -msg=None - -Fails if the given condition is not true. - -If ``condition`` is a string (e.g. ``${rc} < 10``), it is evaluated as -a Python expression as explained in `Evaluating expressions` and the -keyword status is decided based on the result. If a non-string item is -given, the status is got directly from its -[http://docs.python.org/library/stdtypes.html#truth|truth value]. - -The default error message (``<condition> should be true``) is not very -informative, but it can be overridden with the ``msg`` argument. - -Examples: -| Should Be True | ${rc} < 10 | -| Should Be True | '${status}' == 'PASS' | # Strings must be quoted | -| Should Be True | ${number} | # Passes if ${number} is not zero | -| Should Be True | ${list} | # Passes if ${list} is not empty | - -Variables used like ``${variable}``, as in the examples above, are -replaced in the expression before evaluation. Variables are also -available in the evaluation namespace and can be accessed using special -syntax ``$variable``. This is a new feature in Robot Framework 2.9 -and it is explained more thoroughly in `Evaluating expressions`. - -Examples: -| Should Be True | $rc < 10 | -| Should Be True | $status == 'PASS' | # Expected string must be quoted | - -`Should Be True` automatically imports Python's -[http://docs.python.org/library/os.html|os] and -[http://docs.python.org/library/sys.html|sys] modules that contain -several useful attributes: - -| Should Be True | os.linesep == '\n' | # Unixy | -| Should Be True | os.linesep == '\r\n' | # Windows | -| Should Be True | sys.platform == 'darwin' | # OS X | -| Should Be True | sys.platform.startswith('java') | # Jython | - - - - - -container -item -msg=None -values=True -ignore_case=False - -Fails if ``container`` does not contain ``item`` one or more times. - -Works with strings, lists, and anything that supports Python's ``in`` -operator. - -See `Should Be Equal` for an explanation on how to override the default -error message with arguments ``msg`` and ``values``. - -If ``ignore_case`` is given a true value (see `Boolean arguments`) and -compared items are strings, it indicates that comparison should be -case-insensitive. If the ``container`` is a list-like object, string -items in it are compared case-insensitively. New option in Robot -Framework 3.0.1. - -Examples: -| Should Contain | ${output} | PASS | -| Should Contain | ${some list} | value | msg=Failure! | values=False | -| Should Contain | ${some list} | value | ignore_case=True | - - - - - -container -*items -**configuration - -Fails if ``container`` does not contain any of the ``*items``. - -Works with strings, lists, and anything that supports Python's ``in`` -operator. - -Supports additional configuration parameters ``msg``, ``values`` -and ``ignore_case``, which have exactly the same semantics as arguments -with same names have with `Should Contain`. These arguments must -always be given using ``name=value`` syntax after all ``items``. - -Note that possible equal signs in ``items`` must be escaped with -a backslash (e.g. ``foo\=bar``) to avoid them to be passed in -as ``**configuration``. - -Examples: -| Should Contain Any | ${string} | substring 1 | substring 2 | -| Should Contain Any | ${list} | item 1 | item 2 | item 3 | -| Should Contain Any | ${list} | item 1 | item 2 | item 3 | ignore_case=True | -| Should Contain Any | ${list} | @{items} | msg=Custom message | values=False | - -New in Robot Framework 3.0.1. - - - - - -item1 -item2 -count -msg=None -ignore_case=False - -Fails if ``item1`` does not contain ``item2`` ``count`` times. - -Works with strings, lists and all objects that `Get Count` works -with. The default error message can be overridden with ``msg`` and -the actual count is always logged. - -If ``ignore_case`` is given a true value (see `Boolean arguments`) and -compared items are strings, it indicates that comparison should be -case-insensitive. If the ``item1`` is a list-like object, string -items in it are compared case-insensitively. New option in Robot -Framework 3.0.1. - -Examples: -| Should Contain X Times | ${output} | hello | 2 | -| Should Contain X Times | ${some list} | value | 3 | ignore_case=True | - - - - - -str1 -str2 -msg=None -values=True -ignore_case=False - -Fails if the string ``str1`` does not end with the string ``str2``. - -See `Should Be Equal` for an explanation on how to override the default -error message with ``msg`` and ``values``, as well as for semantics -of the ``ignore_case`` option. - - - - - -string -pattern -msg=None -values=True -ignore_case=False - -Fails if the given ``string`` does not match the given ``pattern``. - -Pattern matching is similar as matching files in a shell with -``*``, ``?`` and ``[chars]`` acting as wildcards. See the -`Glob patterns` section for more information. - -See `Should Be Equal` for an explanation on how to override the default -error message with ``msg`` and ``values``, as well as for semantics -of the ``ignore_case`` option. - - - - - -string -pattern -msg=None -values=True - -Fails if ``string`` does not match ``pattern`` as a regular expression. - -See the `Regular expressions` section for more information about -regular expressions and how to use then in Robot Framework test data. - -Notice that the given pattern does not need to match the whole string. -For example, the pattern ``ello`` matches the string ``Hello world!``. -If a full match is needed, the ``^`` and ``$`` characters can be used -to denote the beginning and end of the string, respectively. -For example, ``^ello$`` only matches the exact string ``ello``. - -Possible flags altering how the expression is parsed (e.g. -``re.IGNORECASE``, ``re.MULTILINE``) must be embedded to the -pattern like ``(?im)pattern``. The most useful flags are ``i`` -(case-insensitive), ``m`` (multiline mode), ``s`` (dotall mode) -and ``x`` (verbose). - -If this keyword passes, it returns the portion of the string that -matched the pattern. Additionally, the possible captured groups are -returned. - -See the `Should Be Equal` keyword for an explanation on how to override -the default error message with the ``msg`` and ``values`` arguments. - -Examples: -| Should Match Regexp | ${output} | \\d{6} | # Output contains six numbers | -| Should Match Regexp | ${output} | ^\\d{6}$ | # Six numbers and nothing more | -| ${ret} = | Should Match Regexp | Foo: 42 | (?i)foo: \\d+ | -| ${match} | ${group1} | ${group2} = | -| ... | Should Match Regexp | Bar: 43 | (Foo|Bar): (\\d+) | -=> -| ${ret} = 'Foo: 42' -| ${match} = 'Bar: 43' -| ${group1} = 'Bar' -| ${group2} = '43' - - - - - -item -msg=None - -Verifies that the given item is not empty. - -The length of the item is got using the `Get Length` keyword. The -default error message can be overridden with the ``msg`` argument. - - - - - -first -second -msg=None -values=True -ignore_case=False - -Fails if the given objects are equal. - -See `Should Be Equal` for an explanation on how to override the default -error message with ``msg`` and ``values``. - -If ``ignore_case`` is given a true value (see `Boolean arguments`) and -both arguments are strings, it indicates that comparison should be -case-insensitive. New option in Robot Framework 3.0.1. - - - - - -first -second -msg=None -values=True -base=None - -Fails if objects are equal after converting them to integers. - -See `Convert To Integer` for information how to convert integers from -other bases than 10 using ``base`` argument or ``0b/0o/0x`` prefixes. - -See `Should Be Equal` for an explanation on how to override the default -error message with ``msg`` and ``values``. - -See `Should Be Equal As Integers` for some usage examples. - - - - - -first -second -msg=None -values=True -precision=6 - -Fails if objects are equal after converting them to real numbers. - -The conversion is done with `Convert To Number` keyword using the -given ``precision``. - -See `Should Be Equal As Numbers` for examples on how to use -``precision`` and why it does not always work as expected. See also -`Should Be Equal` for an explanation on how to override the default -error message with ``msg`` and ``values``. - - - - - -first -second -msg=None -values=True -ignore_case=False - -Fails if objects are equal after converting them to strings. - -If ``ignore_case`` is given a true value (see `Boolean arguments`), it -indicates that comparison should be case-insensitive. New option in -Robot Framework 3.0.1. - -See `Should Be Equal` for an explanation on how to override the default -error message with ``msg`` and ``values``. - - - - - -condition -msg=None - -Fails if the given condition is true. - -See `Should Be True` for details about how ``condition`` is evaluated -and how ``msg`` can be used to override the default error message. - - - - - -container -item -msg=None -values=True -ignore_case=False - -Fails if ``container`` contains ``item`` one or more times. - -Works with strings, lists, and anything that supports Python's ``in`` -operator. - -See `Should Be Equal` for an explanation on how to override the default -error message with arguments ``msg`` and ``values``. ``ignore_case`` -has exactly the same semantics as with `Should Contain`. - -Examples: -| Should Not Contain | ${some list} | value | -| Should Not Contain | ${output} | FAILED | ignore_case=True | - - - - - -container -*items -**configuration - -Fails if ``container`` contains one or more of the ``*items``. - -Works with strings, lists, and anything that supports Python's ``in`` -operator. - -Supports additional configuration parameters ``msg``, ``values`` -and ``ignore_case``, which have exactly the same semantics as arguments -with same names have with `Should Contain`. These arguments must -always be given using ``name=value`` syntax after all ``items``. - -Note that possible equal signs in ``items`` must be escaped with -a backslash (e.g. ``foo\=bar``) to avoid them to be passed in -as ``**configuration``. - -Examples: -| Should Not Contain Any | ${string} | substring 1 | substring 2 | -| Should Not Contain Any | ${list} | item 1 | item 2 | item 3 | -| Should Not Contain Any | ${list} | item 1 | item 2 | item 3 | ignore_case=True | -| Should Not Contain Any | ${list} | @{items} | msg=Custom message | values=False | - -New in Robot Framework 3.0.1. - - - - - -str1 -str2 -msg=None -values=True -ignore_case=False - -Fails if the string ``str1`` ends with the string ``str2``. - -See `Should Be Equal` for an explanation on how to override the default -error message with ``msg`` and ``values``, as well as for semantics -of the ``ignore_case`` option. - - - - - -string -pattern -msg=None -values=True -ignore_case=False - -Fails if the given ``string`` matches the given ``pattern``. - -Pattern matching is similar as matching files in a shell with -``*``, ``?`` and ``[chars]`` acting as wildcards. See the -`Glob patterns` section for more information. - -See `Should Be Equal` for an explanation on how to override the default -error message with ``msg`` and ``values``, as well as for semantics -of the ``ignore_case`` option. - - - - - -string -pattern -msg=None -values=True - -Fails if ``string`` matches ``pattern`` as a regular expression. - -See `Should Match Regexp` for more information about arguments. - - - - - -str1 -str2 -msg=None -values=True -ignore_case=False - -Fails if the string ``str1`` starts with the string ``str2``. - -See `Should Be Equal` for an explanation on how to override the default -error message with ``msg`` and ``values``, as well as for semantics -of the ``ignore_case`` option. - - - - - -str1 -str2 -msg=None -values=True -ignore_case=False - -Fails if the string ``str1`` does not start with the string ``str2``. - -See `Should Be Equal` for an explanation on how to override the default -error message with ``msg`` and ``values``, as well as for semantics -of the ``ignore_case`` option. - - - - - -time_ -reason=None - -Pauses the test executed for the given time. - -``time`` may be either a number or a time string. Time strings are in -a format such as ``1 day 2 hours 3 minutes 4 seconds 5milliseconds`` or -``1d 2h 3m 4s 5ms``, and they are fully explained in an appendix of -Robot Framework User Guide. Optional `reason` can be used to explain why -sleeping is necessary. Both the time slept and the reason are logged. - -Examples: -| Sleep | 42 | -| Sleep | 1.5 | -| Sleep | 2 minutes 10 seconds | -| Sleep | 10s | Wait for a reply | - - - - - -name -msg=None - -Fails unless the given variable exists within the current scope. - -The name of the variable can be given either as a normal variable name -(e.g. ``${NAME}``) or in escaped format (e.g. ``\${NAME}``). Notice -that the former has some limitations explained in `Set Suite Variable`. - -The default error message can be overridden with the ``msg`` argument. - -See also `Variable Should Not Exist` and `Keyword Should Exist`. - - - - - -name -msg=None - -Fails if the given variable exists within the current scope. - -The name of the variable can be given either as a normal variable name -(e.g. ``${NAME}``) or in escaped format (e.g. ``\${NAME}``). Notice -that the former has some limitations explained in `Set Suite Variable`. - -The default error message can be overridden with the ``msg`` argument. - -See also `Variable Should Exist` and `Keyword Should Exist`. - - - - - -retry -retry_interval -name -*args - -Runs the specified keyword and retries if it fails. - -``name`` and ``args`` define the keyword that is executed similarly -as with `Run Keyword`. How long to retry running the keyword is -defined using ``retry`` argument either as timeout or count. -``retry_interval`` is the time to wait before trying to run the -keyword again after the previous run has failed. - -If ``retry`` is given as timeout, it must be in Robot Framework's -time format (e.g. ``1 minute``, ``2 min 3 s``, ``4.5``) that is -explained in an appendix of Robot Framework User Guide. If it is -given as count, it must have ``times`` or ``x`` postfix (e.g. -``5 times``, ``10 x``). ``retry_interval`` must always be given in -Robot Framework's time format. - -If the keyword does not succeed regardless of retries, this keyword -fails. If the executed keyword passes, its return value is returned. - -Examples: -| Wait Until Keyword Succeeds | 2 min | 5 sec | My keyword | argument | -| ${result} = | Wait Until Keyword Succeeds | 3x | 200ms | My keyword | - -All normal failures are caught by this keyword. Errors caused by -invalid syntax, test or keyword timeouts, or fatal exceptions (caused -e.g. by `Fatal Error`) are not caught. - -Running the same keyword multiple times inside this keyword can create -lots of output and considerably increase the size of the generated -output files. It is possible to remove unnecessary keywords from -the outputs using ``--RemoveKeywords WUKS`` command line option. - -Support for specifying ``retry`` as a number of times to retry is -a new feature in Robot Framework 2.9. -Since Robot Framework 2.9, variable errors are caught by this keyword. - - - - diff --git a/libspecs/Collections.libspec b/libspecs/Collections.libspec deleted file mode 100644 index 75feb0881..000000000 --- a/libspecs/Collections.libspec +++ /dev/null @@ -1,880 +0,0 @@ - - -3.1 -global -yes -A test library providing keywords for handling lists and dictionaries. - -``Collections`` is Robot Framework's standard library that provides a -set of keywords for handling Python lists and dictionaries. This -library has keywords, for example, for modifying and getting -values from lists and dictionaries (e.g. `Append To List`, `Get -From Dictionary`) and for verifying their contents (e.g. `Lists -Should Be Equal`, `Dictionary Should Contain Value`). - -= Related keywords in BuiltIn = - -Following keywords in the BuiltIn library can also be used with -lists and dictionaries: - -| = Keyword Name = | = Applicable With = | = Comment = | -| `Create List` | lists | -| `Create Dictionary` | dicts | Was in Collections until RF 2.9. | -| `Get Length` | both | -| `Length Should Be` | both | -| `Should Be Empty` | both | -| `Should Not Be Empty` | both | -| `Should Contain` | both | -| `Should Not Contain` | both | -| `Should Contain X Times` | lists | -| `Should Not Contain X Times` | lists | -| `Get Count` | lists | - -= Using with list-like and dictionary-like objects = - -List keywords that do not alter the given list can also be used -with tuples, and to some extend also with other iterables. -`Convert To List` can be used to convert tuples and other iterables -to Python ``list`` objects. - -Similarly dictionary keywords can, for most parts, be used with other -mappings. `Convert To Dictionary` can be used if real Python ``dict`` -objects are needed. - -= Boolean arguments = - -Some keywords accept arguments that are handled as Boolean values true or -false. If such an argument is given as a string, it is considered false if -it is an empty string or equal to ``FALSE``, ``NONE``, ``NO``, ``OFF`` or -``0``, case-insensitively. Keywords verifying something that allow dropping -actual and expected values from the possible error message also consider -string ``no values`` to be false. Other strings are considered true -regardless their value, and other argument types are tested using the same -[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. - -True examples: -| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=True | # Strings are generally true. | -| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=yes | # Same as the above. | -| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=${TRUE} | # Python ``True`` is true. | -| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=${42} | # Numbers other than 0 are true. | - -False examples: -| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=False | # String ``false`` is false. | -| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=no | # Also string ``no`` is false. | -| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=${EMPTY} | # Empty string is false. | -| `Should Contain Match` | ${list} | ${pattern} | case_insensitive=${FALSE} | # Python ``False`` is false. | -| `Lists Should Be Equal` | ${x} | ${y} | Custom error | values=no values | # ``no values`` works with ``values`` argument | - -Considering string ``NONE`` false is new in Robot Framework 3.0.3 and -considering also ``OFF`` and ``0`` false is new in Robot Framework 3.1. - -= Data in examples = - -List related keywords use variables in format ``${Lx}`` in their examples. -They mean lists with as many alphabetic characters as specified by ``x``. -For example, ``${L1}`` means ``['a']`` and ``${L3}`` means -``['a', 'b', 'c']``. - -Dictionary keywords use similar ``${Dx}`` variables. For example, ``${D1}`` -means ``{'a': 1}`` and ``${D3}`` means ``{'a': 1, 'b': 2, 'c': 3}``. - - -list_ -*values - -Adds ``values`` to the end of ``list``. - -Example: -| Append To List | ${L1} | xxx | | | -| Append To List | ${L2} | x | y | z | -=> -| ${L1} = ['a', 'xxx'] -| ${L2} = ['a', 'b', 'x', 'y', 'z'] - - - - - -*lists - -Combines the given ``lists`` together and returns the result. - -The given lists are not altered by this keyword. - -Example: -| ${x} = | Combine List | ${L1} | ${L2} | | -| ${y} = | Combine List | ${L1} | ${L2} | ${L1} | -=> -| ${x} = ['a', 'a', 'b'] -| ${y} = ['a', 'a', 'b', 'a'] -| ${L1} and ${L2} are not changed. - - - - - -item - -Converts the given ``item`` to a Python ``dict`` type. - -Mainly useful for converting other mappings to dictionaries. Use -`Create Dictionary` from the BuiltIn library for constructing new -dictionaries. - -New in Robot Framework 2.9. - - - - - -item - -Converts the given ``item`` to a Python ``list`` type. - -Mainly useful for converting tuples and other iterable to lists. -Use `Create List` from the BuiltIn library for constructing new lists. - - - - - -dictionary - -Returns a copy of the given dictionary. - -The given dictionary is never altered by this keyword. - - - - - -list_ - -Returns a copy of the given list. - -The given list is never altered by this keyword. - - - - - -list_ -value -start=0 -end=None - -Returns the number of occurrences of the given ``value`` in ``list``. - -The search can be narrowed to the selected sublist by the ``start`` and -``end`` indexes having the same semantics as with `Get Slice From List` -keyword. The given list is never altered by this keyword. - -Example: -| ${x} = | Count Values In List | ${L3} | b | -=> -| ${x} = 1 -| ${L3} is not changed - - - - - -dict1 -dict2 -msg=None -values=True - -Fails if the given dictionaries are not equal. - -First the equality of dictionaries' keys is checked and after that all -the key value pairs. If there are differences between the values, those -are listed in the error message. The types of the dictionaries do not -need to be same. - -See `Lists Should Be Equal` for more information about configuring -the error message with ``msg`` and ``values`` arguments. - -The given dictionaries are never altered by this keyword. - - - - - -dictionary -key -value -msg=None - -An item of ``key`` / ``value`` must be found in a ``dictionary``. - -Value is converted to unicode for comparison. - -See `Lists Should Be Equal` for an explanation of ``msg``. -The given dictionary is never altered by this keyword. - - - - - -dictionary -key -msg=None - -Fails if ``key`` is not found from ``dictionary``. - -See `List Should Contain Value` for an explanation of ``msg``. - -The given dictionary is never altered by this keyword. - - - - - -dict1 -dict2 -msg=None -values=True - -Fails unless all items in ``dict2`` are found from ``dict1``. - -See `Lists Should Be Equal` for more information about configuring -the error message with ``msg`` and ``values`` arguments. - -The given dictionaries are never altered by this keyword. - - - - - -dictionary -value -msg=None - -Fails if ``value`` is not found from ``dictionary``. - -See `List Should Contain Value` for an explanation of ``msg``. - -The given dictionary is never altered by this keyword. - - - - - -dictionary -key -msg=None - -Fails if ``key`` is found from ``dictionary``. - -See `List Should Contain Value` for an explanation of ``msg``. - -The given dictionary is never altered by this keyword. - - - - - -dictionary -value -msg=None - -Fails if ``value`` is found from ``dictionary``. - -See `List Should Contain Value` for an explanation of ``msg``. - -The given dictionary is never altered by this keyword. - - - - - -dictionary - -Returns items of the given ``dictionary``. - -Items are returned sorted by keys. The given ``dictionary`` is not -altered by this keyword. - -Example: -| ${items} = | Get Dictionary Items | ${D3} | -=> -| ${items} = ['a', 1, 'b', 2, 'c', 3] - - - - - -dictionary - -Returns keys of the given ``dictionary``. - -If keys are sortable, they are returned in sorted order. The given -``dictionary`` is never altered by this keyword. - -Example: -| ${keys} = | Get Dictionary Keys | ${D3} | -=> -| ${keys} = ['a', 'b', 'c'] - - - - - -dictionary - -Returns values of the given dictionary. - -Values are returned sorted according to keys. The given dictionary is -never altered by this keyword. - -Example: -| ${values} = | Get Dictionary Values | ${D3} | -=> -| ${values} = [1, 2, 3] - - - - - -dictionary -key - -Returns a value from the given ``dictionary`` based on the given ``key``. - -If the given ``key`` cannot be found from the ``dictionary``, this -keyword fails. - -The given dictionary is never altered by this keyword. - -Example: -| ${value} = | Get From Dictionary | ${D3} | b | -=> -| ${value} = 2 - - - - - -list_ -index - -Returns the value specified with an ``index`` from ``list``. - -The given list is never altered by this keyword. - -Index ``0`` means the first position, ``1`` the second, and so on. -Similarly, ``-1`` is the last position, ``-2`` the second last, and so on. -Using an index that does not exist on the list causes an error. -The index can be either an integer or a string that can be converted -to an integer. - -Examples (including Python equivalents in comments): -| ${x} = | Get From List | ${L5} | 0 | # L5[0] | -| ${y} = | Get From List | ${L5} | -2 | # L5[-2] | -=> -| ${x} = 'a' -| ${y} = 'd' -| ${L5} is not changed - - - - - -list_ -value -start=0 -end=None - -Returns the index of the first occurrence of the ``value`` on the list. - -The search can be narrowed to the selected sublist by the ``start`` and -``end`` indexes having the same semantics as with `Get Slice From List` -keyword. In case the value is not found, -1 is returned. The given list -is never altered by this keyword. - -Example: -| ${x} = | Get Index From List | ${L5} | d | -=> -| ${x} = 3 -| ${L5} is not changed - - - - - -list -pattern -case_insensitive=False -whitespace_insensitive=False - -Returns the count of matches to ``pattern`` in ``list``. - -For more information on ``pattern``, ``case_insensitive``, and -``whitespace_insensitive``, see `Should Contain Match`. - -Examples: -| ${count}= | Get Match Count | ${list} | a* | # ${count} will be the count of strings beginning with 'a' | -| ${count}= | Get Match Count | ${list} | regexp=a.* | # ${matches} will be the count of strings beginning with 'a' (regexp version) | -| ${count}= | Get Match Count | ${list} | a* | case_insensitive=${True} | # ${matches} will be the count of strings beginning with 'a' or 'A' | - - - - - -list -pattern -case_insensitive=False -whitespace_insensitive=False - -Returns a list of matches to ``pattern`` in ``list``. - -For more information on ``pattern``, ``case_insensitive``, and -``whitespace_insensitive``, see `Should Contain Match`. - -Examples: -| ${matches}= | Get Matches | ${list} | a* | # ${matches} will contain any string beginning with 'a' | -| ${matches}= | Get Matches | ${list} | regexp=a.* | # ${matches} will contain any string beginning with 'a' (regexp version) | -| ${matches}= | Get Matches | ${list} | a* | case_insensitive=${True} | # ${matches} will contain any string beginning with 'a' or 'A' | - - - - - -list_ -start=0 -end=None - -Returns a slice of the given list between ``start`` and ``end`` indexes. - -The given list is never altered by this keyword. - -If both ``start`` and ``end`` are given, a sublist containing values -from ``start`` to ``end`` is returned. This is the same as -``list[start:end]`` in Python. To get all items from the beginning, -use 0 as the start value, and to get all items until and including -the end, use ``None`` (default) as the end value. - -Using ``start`` or ``end`` not found on the list is the same as using -the largest (or smallest) available index. - -Examples (incl. Python equivalents in comments): -| ${x} = | Get Slice From List | ${L5} | 2 | 4 | # L5[2:4] | -| ${y} = | Get Slice From List | ${L5} | 1 | | # L5[1:None] | -| ${z} = | Get Slice From List | ${L5} | | -2 | # L5[0:-2] | -=> -| ${x} = ['c', 'd'] -| ${y} = ['b', 'c', 'd', 'e'] -| ${z} = ['a', 'b', 'c'] -| ${L5} is not changed - - - - - -list_ -index -value - -Inserts ``value`` into ``list`` to the position specified with ``index``. - -Index ``0`` adds the value into the first position, ``1`` to the second, -and so on. Inserting from right works with negative indices so that -``-1`` is the second last position, ``-2`` third last, and so on. Use -`Append To List` to add items to the end of the list. - -If the absolute value of the index is greater than -the length of the list, the value is added at the end -(positive index) or the beginning (negative index). An index -can be given either as an integer or a string that can be -converted to an integer. - -Example: -| Insert Into List | ${L1} | 0 | xxx | -| Insert Into List | ${L2} | ${-1} | xxx | -=> -| ${L1} = ['xxx', 'a'] -| ${L2} = ['a', 'xxx', 'b'] - - - - - -dictionary -*keys - -Keeps the given ``keys`` in the ``dictionary`` and removes all other. - -If the given ``key`` cannot be found from the ``dictionary``, it -is ignored. - -Example: -| Keep In Dictionary | ${D5} | b | x | d | -=> -| ${D5} = {'b': 2, 'd': 4} - - - - - -list1 -list2 -msg=None -values=True - -Fails if not all of the elements in ``list2`` are found in ``list1``. - -The order of values and the number of values are not taken into -account. - -See `Lists Should Be Equal` for more information about configuring -the error message with ``msg`` and ``values`` arguments. - - - - - -list_ -value -msg=None - -Fails if the ``value`` is not found from ``list``. - -If the keyword fails, the default error messages is ``<list> does -not contain value '<value>'``. A custom message can be given using -the ``msg`` argument. - - - - - -list_ -msg=None - -Fails if any element in the ``list`` is found from it more than once. - -The default error message lists all the elements that were found -from the ``list`` multiple times, but it can be overridden by giving -a custom ``msg``. All multiple times found items and their counts are -also logged. - -This keyword works with all iterables that can be converted to a list. -The original iterable is never altered. - - - - - -list_ -value -msg=None - -Fails if the ``value`` is found from ``list``. - -See `List Should Contain Value` for an explanation of ``msg``. - - - - - -list1 -list2 -msg=None -values=True -names=None - -Fails if given lists are unequal. - -The keyword first verifies that the lists have equal lengths, and then -it checks are all their values equal. Possible differences between the -values are listed in the default error message like ``Index 4: ABC != -Abc``. The types of the lists do not need to be the same. For example, -Python tuple and list with same content are considered equal. - - -The error message can be configured using ``msg`` and ``values`` -arguments: -- If ``msg`` is not given, the default error message is used. -- If ``msg`` is given and ``values`` gets a value considered true - (see `Boolean arguments`), the error message starts with the given - ``msg`` followed by a newline and the default message. -- If ``msg`` is given and ``values`` is not given a true value, - the error message is just the given ``msg``. - -Optional ``names`` argument can be used for naming the indices shown in -the default error message. It can either be a list of names matching -the indices in the lists or a dictionary where keys are indices that -need to be named. It is not necessary to name all of the indices. When -using a dictionary, keys can be either integers or strings that can be -converted to integers. - -Examples: -| ${names} = | Create List | First Name | Family Name | Email | -| Lists Should Be Equal | ${people1} | ${people2} | names=${names} | -| ${names} = | Create Dictionary | 0=First Name | 2=Email | -| Lists Should Be Equal | ${people1} | ${people2} | names=${names} | - -If the items in index 2 would differ in the above examples, the error -message would contain a row like ``Index 2 (email): name@foo.com != -name@bar.com``. - - - - - -dictionary -level=INFO - -Logs the size and contents of the ``dictionary`` using given ``level``. - -Valid levels are TRACE, DEBUG, INFO (default), and WARN. - -If you only want to log the size, use keyword `Get Length` from -the BuiltIn library. - - - - - -list_ -level=INFO - -Logs the length and contents of the ``list`` using given ``level``. - -Valid levels are TRACE, DEBUG, INFO (default), and WARN. - -If you only want to the length, use keyword `Get Length` from -the BuiltIn library. - - - - - -dictionary -key -default= - -Pops the given ``key`` from the ``dictionary`` and returns its value. - -By default the keyword fails if the given ``key`` cannot be found from -the ``dictionary``. If optional ``default`` value is given, it will be -returned instead of failing. - -Example: -| ${val}= | Pop From Dictionary | ${D3} | b | -=> -| ${val} = 2 -| ${D3} = {'a': 1, 'c': 3} - -New in Robot Framework 2.9.2. - - - - - -list_ - -Returns a list without duplicates based on the given ``list``. - -Creates and returns a new list that contains all items in the given -list so that one item can appear only once. Order of the items in -the new list is the same as in the original except for missing -duplicates. Number of the removed duplicates is logged. - - - - - -dictionary -*keys - -Removes the given ``keys`` from the ``dictionary``. - -If the given ``key`` cannot be found from the ``dictionary``, it -is ignored. - -Example: -| Remove From Dictionary | ${D3} | b | x | y | -=> -| ${D3} = {'a': 1, 'c': 3} - - - - - -list_ -index - -Removes and returns the value specified with an ``index`` from ``list``. - -Index ``0`` means the first position, ``1`` the second and so on. -Similarly, ``-1`` is the last position, ``-2`` the second last, and so on. -Using an index that does not exist on the list causes an error. -The index can be either an integer or a string that can be converted -to an integer. - -Example: -| ${x} = | Remove From List | ${L2} | 0 | -=> -| ${x} = 'a' -| ${L2} = ['b'] - - - - - -list_ -*values - -Removes all occurrences of given ``values`` from ``list``. - -It is not an error if a value does not exist in the list at all. - -Example: -| Remove Values From List | ${L4} | a | c | e | f | -=> -| ${L4} = ['b', 'd'] - - - - - -list_ - -Reverses the given list in place. - -Note that the given list is changed and nothing is returned. Use -`Copy List` first, if you need to keep also the original order. - -| Reverse List | ${L3} | -=> -| ${L3} = ['c', 'b', 'a'] - - - - - -list_ -index -value - -Sets the value of ``list`` specified by ``index`` to the given ``value``. - -Index ``0`` means the first position, ``1`` the second and so on. -Similarly, ``-1`` is the last position, ``-2`` second last, and so on. -Using an index that does not exist on the list causes an error. -The index can be either an integer or a string that can be converted to -an integer. - -Example: -| Set List Value | ${L3} | 1 | xxx | -| Set List Value | ${L3} | -1 | yyy | -=> -| ${L3} = ['a', 'xxx', 'yyy'] - - - - - -dictionary -*key_value_pairs -**items - -Adds the given ``key_value_pairs`` and ``items`` to the ``dictionary``. - -Giving items as ``key_value_pairs`` means giving keys and values -as separate arguments: - -| Set To Dictionary | ${D1} | key | value | second | ${2} | -=> -| ${D1} = {'a': 1, 'key': 'value', 'second': 2} - -| Set To Dictionary | ${D1} | key=value | second=${2} | - -The latter syntax is typically more convenient to use, but it has -a limitation that keys must be strings. - -If given keys already exist in the dictionary, their values are updated. - - - - - -list -pattern -msg=None -case_insensitive=False -whitespace_insensitive=False - -Fails if ``pattern`` is not found in ``list``. - -See `List Should Contain Value` for an explanation of ``msg``. - -By default, pattern matching is similar to matching files in a shell -and is case-sensitive and whitespace-sensitive. In the pattern syntax, -``*`` matches to anything and ``?`` matches to any single character. You -can also prepend ``glob=`` to your pattern to explicitly use this pattern -matching behavior. - -If you prepend ``regexp=`` to your pattern, your pattern will be used -according to the Python -[http://docs.python.org/library/re.html|re module] regular expression -syntax. Important note: Backslashes are an escape character, and must -be escaped with another backslash (e.g. ``regexp=\\d{6}`` to search for -``\d{6}``). See `BuiltIn.Should Match Regexp` for more details. - -If ``case_insensitive`` is given a true value (see `Boolean arguments`), -the pattern matching will ignore case. - -If ``whitespace_insensitive`` is given a true value (see `Boolean -arguments`), the pattern matching will ignore whitespace. - -Non-string values in lists are ignored when matching patterns. - -The given list is never altered by this keyword. - -See also ``Should Not Contain Match``. - -Examples: -| Should Contain Match | ${list} | a* | | | # Match strings beginning with 'a'. | -| Should Contain Match | ${list} | regexp=a.* | | | # Same as the above but with regexp. | -| Should Contain Match | ${list} | regexp=\\d{6} | | | # Match strings containing six digits. | -| Should Contain Match | ${list} | a* | case_insensitive=True | | # Match strings beginning with 'a' or 'A'. | -| Should Contain Match | ${list} | ab* | whitespace_insensitive=yes | | # Match strings beginning with 'ab' with possible whitespace ignored. | -| Should Contain Match | ${list} | ab* | whitespace_insensitive=true | case_insensitive=true | # Same as the above but also ignore case. | - - - - - -list -pattern -msg=None -case_insensitive=False -whitespace_insensitive=False - -Fails if ``pattern`` is found in ``list``. - -Exact opposite of `Should Contain Match` keyword. See that keyword -for information about arguments and usage in general. - - - - - -list_ - -Sorts the given list in place. - -The strings are sorted alphabetically and the numbers numerically. - -Note that the given list is changed and nothing is returned. Use -`Copy List` first, if you need to keep also the original order. - -${L} = [2,1,'a','c','b'] -| Sort List | ${L} | -=> -| ${L} = [1, 2, 'a', 'b', 'c'] - - - - diff --git a/libspecs/DateTime.libspec b/libspecs/DateTime.libspec deleted file mode 100644 index 538dd5912..000000000 --- a/libspecs/DateTime.libspec +++ /dev/null @@ -1,512 +0,0 @@ - - -3.1 -global -yes -A test library for handling date and time values. - -``DateTime`` is a Robot Framework standard library that supports creating and -converting date and time values (e.g. `Get Current Date`, `Convert Time`), -as well as doing simple calculations with them (e.g. `Subtract Time From Date`, -`Add Time To Time`). It supports dates and times in various formats, and can -also be used by other libraries programmatically. - -= Table of Contents = - -- `Terminology` -- `Date formats` -- `Time formats` -- `Millisecond handling` -- `Programmatic usage` -- `Shortcuts` -- `Keywords` - -= Terminology = - -In the context of this library, ``date`` and ``time`` generally have following -meanings: - -- ``date``: An entity with both date and time components but without any - timezone information. For example, ``2014-06-11 10:07:42``. -- ``time``: A time interval. For example, ``1 hour 20 minutes`` or ``01:20:00``. - -This terminology differs from what Python's standard -[http://docs.python.org/library/datetime.html|datetime] module uses. -Basically its -[http://docs.python.org/library/datetime.html#datetime-objects|datetime] and -[http://docs.python.org/library/datetime.html#timedelta-objects|timedelta] -objects match ``date`` and ``time`` as defined by this library. - -= Date formats = - -Dates can given to and received from keywords in `timestamp`, `custom -timestamp`, `Python datetime` and `epoch time` formats. These formats are -discussed thoroughly in subsequent sections. - -Input format is determined automatically based on the given date except when -using custom timestamps, in which case it needs to be given using -``date_format`` argument. Default result format is timestamp, but it can -be overridden using ``result_format`` argument. - -== Timestamp == - -If a date is given as a string, it is always considered to be a timestamp. -If no custom formatting is given using ``date_format`` argument, the timestamp -is expected to be in [http://en.wikipedia.org/wiki/ISO_8601|ISO 8601] like -format ``YYYY-MM-DD hh:mm:ss.mil``, where any non-digit character can be used -as a separator or separators can be omitted altogether. Additionally, -only the date part is mandatory, all possibly missing time components are -considered to be zeros. - -Dates can also be returned in the same ``YYYY-MM-DD hh:mm:ss.mil`` format by -using ``timestamp`` value with ``result_format`` argument. This is also the -default format that keywords returning dates use. Milliseconds can be excluded -using ``exclude_millis`` as explained in `Millisecond handling` section. - -Examples: -| ${date1} = | Convert Date | 2014-06-11 10:07:42.000 | -| ${date2} = | Convert Date | 20140611 100742 | result_format=timestamp | -| Should Be Equal | ${date1} | ${date2} | -| ${date} = | Convert Date | 20140612 12:57 | exclude_millis=yes | -| Should Be Equal | ${date} | 2014-06-12 12:57:00 | - -== Custom timestamp == - -It is possible to use custom timestamps in both input and output. -The custom format is same as accepted by Python's -[http://docs.python.org/library/datetime.html#strftime-strptime-behavior| -datatime.strptime] function. For example, the default timestamp discussed -in the previous section would match ``%Y-%m-%d %H:%M:%S.%f``. - -When using a custom timestamp in input, it must be specified using -``date_format`` argument. The actual input value must be a string that matches -the specified format exactly. When using a custom timestamp in output, it must -be given using ``result_format`` argument. - -Examples: -| ${date} = | Convert Date | 28.05.2014 12:05 | date_format=%d.%m.%Y %H:%M | -| Should Be Equal | ${date} | 2014-05-28 12:05:00.000 | -| ${date} = | Convert Date | ${date} | result_format=%d.%m.%Y | -| Should Be Equal | ${date} | 28.05.2014 | - -Notice that locale aware directives like ``%b`` do not work correctly with -Jython on non-English locales: http://bugs.jython.org/issue2285 - -== Python datetime == - -Python's standard -[http://docs.python.org/library/datetime.html#datetime-objects|datetime] -objects can be used both in input and output. In input they are recognized -automatically, and in output it is possible to get them by giving ``datetime`` -value to ``result_format`` argument. - -One nice benefit with datetime objects is that they have different time -components available as attributes that can be easily accessed using the -extended variable syntax. - -Examples: -| ${datetime} = | Convert Date | 2014-06-11 10:07:42.123 | datetime | -| Should Be Equal As Integers | ${datetime.year} | 2014 | -| Should Be Equal As Integers | ${datetime.month} | 6 | -| Should Be Equal As Integers | ${datetime.day} | 11 | -| Should Be Equal As Integers | ${datetime.hour} | 10 | -| Should Be Equal As Integers | ${datetime.minute} | 7 | -| Should Be Equal As Integers | ${datetime.second} | 42 | -| Should Be Equal As Integers | ${datetime.microsecond} | 123000 | - -== Epoch time == - -Epoch time is the time in seconds since the -[http://en.wikipedia.org/wiki/Unix_time|UNIX epoch] i.e. 00:00:00.000 (UTC) -1 January 1970. To give a date in epoch time, it must be given as a number -(integer or float), not as a string. To return a date in epoch time, -it is possible to use ``epoch`` value with ``result_format`` argument. -Epoch time is returned as a floating point number. - -Notice that epoch time itself is independent on timezones and thus same -around the world at a certain time. What local time a certain epoch time -matches obviously then depends on the timezone. For example, examples below -were tested in Finland but verifications would fail on other timezones. - -Examples: -| ${date} = | Convert Date | ${1000000000} | -| Should Be Equal | ${date} | 2001-09-09 04:46:40.000 | -| ${date} = | Convert Date | 2014-06-12 13:27:59.279 | epoch | -| Should Be Equal | ${date} | ${1402568879.279} | - -== Earliest supported date == - -The earliest date that is supported depends on the date format and to some -extend on the platform: - -- Timestamps support year 1900 and above. -- Python datetime objects support year 1 and above. -- Epoch time supports 1970 and above on Windows with Python and IronPython. -- On other platforms epoch time supports 1900 and above or even earlier. - -Prior to Robot Framework 2.9.2, all formats had same limitation as epoch time -has nowadays. - -= Time formats = - -Similarly as dates, times can be given to and received from keywords in -various different formats. Supported formats are `number`, `time string` -(verbose and compact), `timer string` and `Python timedelta`. - -Input format for time is always determined automatically based on the input. -Result format is number by default, but it can be customised using -``result_format`` argument. - -== Number == - -Time given as a number is interpreted to be seconds. It can be given -either as an integer or a float, or it can be a string that can be converted -to a number. - -To return a time as a number, ``result_format`` argument must have value -``number``, which is also the default. Returned number is always a float. - -Examples: -| ${time} = | Convert Time | 3.14 | -| Should Be Equal | ${time} | ${3.14} | -| ${time} = | Convert Time | ${time} | result_format=number | -| Should Be Equal | ${time} | ${3.14} | - -== Time string == - -Time strings are strings in format like ``1 minute 42 seconds`` or ``1min 42s``. -The basic idea of this format is having first a number and then a text -specifying what time that number represents. Numbers can be either -integers or floating point numbers, the whole format is case and space -insensitive, and it is possible to add a minus prefix to specify negative -times. The available time specifiers are: - -- ``days``, ``day``, ``d`` -- ``hours``, ``hour``, ``h`` -- ``minutes``, ``minute``, ``mins``, ``min``, ``m`` -- ``seconds``, ``second``, ``secs``, ``sec``, ``s`` -- ``milliseconds``, ``millisecond``, ``millis``, ``ms`` - -When returning a time string, it is possible to select between ``verbose`` -and ``compact`` representations using ``result_format`` argument. The verbose -format uses long specifiers ``day``, ``hour``, ``minute``, ``second`` and -``millisecond``, and adds ``s`` at the end when needed. The compact format uses -shorter specifiers ``d``, ``h``, ``min``, ``s`` and ``ms``, and even drops -the space between the number and the specifier. - -Examples: -| ${time} = | Convert Time | 1 minute 42 seconds | -| Should Be Equal | ${time} | ${102} | -| ${time} = | Convert Time | 4200 | verbose | -| Should Be Equal | ${time} | 1 hour 10 minutes | -| ${time} = | Convert Time | - 1.5 hours | compact | -| Should Be Equal | ${time} | - 1h 30min | - -== Timer string == - -Timer string is a string given in timer like format ``hh:mm:ss.mil``. In this -format both hour and millisecond parts are optional, leading and trailing -zeros can be left out when they are not meaningful, and negative times can -be represented by adding a minus prefix. - -To return a time as timer string, ``result_format`` argument must be given -value ``timer``. Timer strings are by default returned in full ``hh:mm:ss.mil`` -format, but milliseconds can be excluded using ``exclude_millis`` as explained -in `Millisecond handling` section. - -Examples: -| ${time} = | Convert Time | 01:42 | -| Should Be Equal | ${time} | ${102} | -| ${time} = | Convert Time | 01:10:00.123 | -| Should Be Equal | ${time} | ${4200.123} | -| ${time} = | Convert Time | 102 | timer | -| Should Be Equal | ${time} | 00:01:42.000 | -| ${time} = | Convert Time | -101.567 | timer | exclude_millis=yes | -| Should Be Equal | ${time} | -00:01:42 | - -== Python timedelta == - -Python's standard -[http://docs.python.org/library/datetime.html#datetime.timedelta|timedelta] -objects are also supported both in input and in output. In input they are -recognized automatically, and in output it is possible to receive them by -giving ``timedelta`` value to ``result_format`` argument. - -Examples: -| ${timedelta} = | Convert Time | 01:10:02.123 | timedelta | -| Should Be Equal | ${timedelta.total_seconds()} | ${4202.123} | - -= Millisecond handling = - -This library handles dates and times internally using the precision of the -given input. With `timestamp`, `time string`, and `timer string` result -formats seconds are, however, rounded to millisecond accuracy. Milliseconds -may also be included even if there would be none. - -All keywords returning dates or times have an option to leave milliseconds out -by giving a true value to ``exclude_millis`` argument. If the argument is given -as a string, it is considered true unless it is empty or case-insensitively -equal to ``false``, ``none`` or ``no``. Other argument types are tested using -same [http://docs.python.org/library/stdtypes.html#truth|rules as in -Python]. Notice that prior to Robot Framework 2.9, all strings except -the empty string were considered true, and that considering ``none`` false is -new in Robot Framework 3.0.3. - -When milliseconds are excluded, seconds in returned dates and times are -rounded to the nearest full second. With `timestamp` and `timer string` -result formats, milliseconds will also be removed from the returned string -altogether. - -Examples: -| ${date} = | Convert Date | 2014-06-11 10:07:42 | -| Should Be Equal | ${date} | 2014-06-11 10:07:42.000 | -| ${date} = | Convert Date | 2014-06-11 10:07:42.500 | exclude_millis=yes | -| Should Be Equal | ${date} | 2014-06-11 10:07:43 | -| ${dt} = | Convert Date | 2014-06-11 10:07:42.500 | datetime | exclude_millis=yes | -| Should Be Equal | ${dt.second} | ${43} | -| Should Be Equal | ${dt.microsecond} | ${0} | -| ${time} = | Convert Time | 102 | timer | exclude_millis=false | -| Should Be Equal | ${time} | 00:01:42.000 | | -| ${time} = | Convert Time | 102.567 | timer | exclude_millis=true | -| Should Be Equal | ${time} | 00:01:43 | | - -= Programmatic usage = - -In addition to be used as normal library, this library is intended to -provide a stable API for other libraries to use if they want to support -same date and time formats as this library. All the provided keywords -are available as functions that can be easily imported: - -| from robot.libraries.DateTime import convert_time -| -| def example_keyword(timeout): -| seconds = convert_time(timeout) -| # ... - -Additionally helper classes ``Date`` and ``Time`` can be used directly: - -| from robot.libraries.DateTime import Date, Time -| -| def example_keyword(date, interval): -| date = Date(date).convert('datetime') -| interval = Time(interval).convert('number') -| # ... - - -date -time -result_format=timestamp -exclude_millis=False -date_format=None - -Adds time to date and returns the resulting date. - -Arguments: -- ``date:`` Date to add time to in one of the supported - `date formats`. -- ``time:`` Time that is added in one of the supported - `time formats`. -- ``result_format:`` Format of the returned date. -- ``exclude_millis:`` When set to any true value, rounds and drops - milliseconds as explained in `millisecond handling`. -- ``date_format:`` Possible `custom timestamp` format of ``date``. - -Examples: -| ${date} = | Add Time To Date | 2014-05-28 12:05:03.111 | 7 days | -| Should Be Equal | ${date} | 2014-06-04 12:05:03.111 | | -| ${date} = | Add Time To Date | 2014-05-28 12:05:03.111 | 01:02:03:004 | -| Should Be Equal | ${date} | 2014-05-28 13:07:06.115 | - - - - - -time1 -time2 -result_format=number -exclude_millis=False - -Adds time to another time and returns the resulting time. - -Arguments: -- ``time1:`` First time in one of the supported `time formats`. -- ``time2:`` Second time in one of the supported `time formats`. -- ``result_format:`` Format of the returned time. -- ``exclude_millis:`` When set to any true value, rounds and drops - milliseconds as explained in `millisecond handling`. - -Examples: -| ${time} = | Add Time To Time | 1 minute | 42 | -| Should Be Equal | ${time} | ${102} | -| ${time} = | Add Time To Time | 3 hours 5 minutes | 01:02:03 | timer | exclude_millis=yes | -| Should Be Equal | ${time} | 04:07:03 | - - - - - -date -result_format=timestamp -exclude_millis=False -date_format=None - -Converts between supported `date formats`. - -Arguments: -- ``date:`` Date in one of the supported `date formats`. -- ``result_format:`` Format of the returned date. -- ``exclude_millis:`` When set to any true value, rounds and drops - milliseconds as explained in `millisecond handling`. -- ``date_format:`` Specifies possible `custom timestamp` format. - -Examples: -| ${date} = | Convert Date | 20140528 12:05:03.111 | -| Should Be Equal | ${date} | 2014-05-28 12:05:03.111 | -| ${date} = | Convert Date | ${date} | epoch | -| Should Be Equal | ${date} | ${1401267903.111} | -| ${date} = | Convert Date | 5.28.2014 12:05 | exclude_millis=yes | date_format=%m.%d.%Y %H:%M | -| Should Be Equal | ${date} | 2014-05-28 12:05:00 | - - - - - -time -result_format=number -exclude_millis=False - -Converts between supported `time formats`. - -Arguments: -- ``time:`` Time in one of the supported `time formats`. -- ``result_format:`` Format of the returned time. -- ``exclude_millis:`` When set to any true value, rounds and drops - milliseconds as explained in `millisecond handling`. - -Examples: -| ${time} = | Convert Time | 10 seconds | -| Should Be Equal | ${time} | ${10} | -| ${time} = | Convert Time | 1:00:01 | verbose | -| Should Be Equal | ${time} | 1 hour 1 second | -| ${time} = | Convert Time | ${3661.5} | timer | exclude_milles=yes | -| Should Be Equal | ${time} | 01:01:02 | - - - - - -time_zone=local -increment=0 -result_format=timestamp -exclude_millis=False - -Returns current local or UTC time with an optional increment. - -Arguments: -- ``time_zone:`` Get the current time on this time zone. Currently only - ``local`` (default) and ``UTC`` are supported. -- ``increment:`` Optional time increment to add to the returned date in - one of the supported `time formats`. Can be negative. -- ``result_format:`` Format of the returned date (see `date formats`). -- ``exclude_millis:`` When set to any true value, rounds and drops - milliseconds as explained in `millisecond handling`. - -Examples: -| ${date} = | Get Current Date | -| Should Be Equal | ${date} | 2014-06-12 20:00:58.946 | -| ${date} = | Get Current Date | UTC | -| Should Be Equal | ${date} | 2014-06-12 17:00:58.946 | -| ${date} = | Get Current Date | increment=02:30:00 | -| Should Be Equal | ${date} | 2014-06-12 22:30:58.946 | -| ${date} = | Get Current Date | UTC | - 5 hours | -| Should Be Equal | ${date} | 2014-06-12 12:00:58.946 | -| ${date} = | Get Current Date | result_format=datetime | -| Should Be Equal | ${date.year} | ${2014} | -| Should Be Equal | ${date.month} | ${6} | - - - - - -date1 -date2 -result_format=number -exclude_millis=False -date1_format=None -date2_format=None - -Subtracts date from another date and returns time between. - -Arguments: -- ``date1:`` Date to subtract another date from in one of the - supported `date formats`. -- ``date2:`` Date that is subtracted in one of the supported - `date formats`. -- ``result_format:`` Format of the returned time (see `time formats`). -- ``exclude_millis:`` When set to any true value, rounds and drops - milliseconds as explained in `millisecond handling`. -- ``date1_format:`` Possible `custom timestamp` format of ``date1``. -- ``date2_format:`` Possible `custom timestamp` format of ``date2``. - - Examples: -| ${time} = | Subtract Date From Date | 2014-05-28 12:05:52 | 2014-05-28 12:05:10 | -| Should Be Equal | ${time} | ${42} | -| ${time} = | Subtract Date From Date | 2014-05-28 12:05:52 | 2014-05-27 12:05:10 | verbose | -| Should Be Equal | ${time} | 1 day 42 seconds | - - - - - -date -time -result_format=timestamp -exclude_millis=False -date_format=None - -Subtracts time from date and returns the resulting date. - -Arguments: -- ``date:`` Date to subtract time from in one of the supported - `date formats`. -- ``time:`` Time that is subtracted in one of the supported - `time formats`. -- ``result_format:`` Format of the returned date. -- ``exclude_millis:`` When set to any true value, rounds and drops - milliseconds as explained in `millisecond handling`. -- ``date_format:`` Possible `custom timestamp` format of ``date``. - -Examples: -| ${date} = | Subtract Time From Date | 2014-06-04 12:05:03.111 | 7 days | -| Should Be Equal | ${date} | 2014-05-28 12:05:03.111 | -| ${date} = | Subtract Time From Date | 2014-05-28 13:07:06.115 | 01:02:03:004 | -| Should Be Equal | ${date} | 2014-05-28 12:05:03.111 | - - - - - -time1 -time2 -result_format=number -exclude_millis=False - -Subtracts time from another time and returns the resulting time. - -Arguments: -- ``time1:`` Time to subtract another time from in one of - the supported `time formats`. -- ``time2:`` Time to subtract in one of the supported `time formats`. -- ``result_format:`` Format of the returned time. -- ``exclude_millis:`` When set to any true value, rounds and drops - milliseconds as explained in `millisecond handling`. - -Examples: -| ${time} = | Subtract Time From Time | 00:02:30 | 100 | -| Should Be Equal | ${time} | ${50} | -| ${time} = | Subtract Time From Time | ${time} | 1 minute | compact | -| Should Be Equal | ${time} | - 10s | - - - - diff --git a/libspecs/DependencyLibrary_bb1d1ad.libspec b/libspecs/DependencyLibrary_bb1d1ad.libspec deleted file mode 100644 index 95e914a1a..000000000 --- a/libspecs/DependencyLibrary_bb1d1ad.libspec +++ /dev/null @@ -1,55 +0,0 @@ - - - -global -yes -Documentation for library ``DependencyLibrary``. - - -name - - - - - - - -name - - - - - - - -name - - - - - - - -name - - - - - - - -name - - - - - - - -name - - - - - - diff --git a/libspecs/Dialogs.libspec b/libspecs/Dialogs.libspec deleted file mode 100644 index b02219559..000000000 --- a/libspecs/Dialogs.libspec +++ /dev/null @@ -1,112 +0,0 @@ - - -3.1 -global -yes -A test library providing dialogs for interacting with users. - -``Dialogs`` is Robot Framework's standard library that provides means -for pausing the test execution and getting input from users. The -dialogs are slightly different depending on whether tests are run on -Python, IronPython or Jython but they provide the same functionality. - -Long lines in the provided messages are wrapped automatically. If you want -to wrap lines manually, you can add newlines using the ``\n`` character -sequence. - -The library has a known limitation that it cannot be used with timeouts -on Python. Support for IronPython was added in Robot Framework 2.9.2. - - -message -default_error= - -Pauses test execution until user sets the keyword status. - -User can press either ``PASS`` or ``FAIL`` button. In the latter case execution -fails and an additional dialog is opened for defining the error message. - -``message`` is the instruction shown in the initial dialog and -``default_error`` is the default value shown in the possible error message -dialog. - - - - - -message -*values - -Pauses test execution and asks user to select a value. - -The selected value is returned. Pressing ``Cancel`` fails the keyword. - -``message`` is the instruction shown in the dialog and ``values`` are -the options given to the user. - -Example: -| ${user} = | Get Selection From User | Select user | user1 | user2 | admin | - - - - - -message -*values - -Pauses test execution and asks user to select multiple values. - -The selected values are returned as a list. Selecting no values is OK -and in that case the returned list is empty. Pressing ``Cancel`` fails -the keyword. - -``message`` is the instruction shown in the dialog and ``values`` are -the options given to the user. - -Example: -| ${users} = | Get Selections From User | Select users | user1 | user2 | admin | - -New in Robot Framework 3.1. - - - - - -message -default_value= -hidden=False - -Pauses test execution and asks user to input a value. - -Value typed by the user, or the possible default value, is returned. -Returning an empty value is fine, but pressing ``Cancel`` fails the keyword. - -``message`` is the instruction shown in the dialog and ``default_value`` is -the possible default value shown in the input field. - -If ``hidden`` is given a true value, the value typed by the user is hidden. -``hidden`` is considered true if it is a non-empty string not equal to -``false``, ``none`` or ``no``, case-insensitively. If it is not a string, -its truth value is got directly using same -[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. - -Example: -| ${username} = | Get Value From User | Input user name | default | -| ${password} = | Get Value From User | Input password | hidden=yes | - -Considering strings ``false`` and ``no`` to be false is new in RF 2.9 -and considering string ``none`` false is new in RF 3.0.3. - - - - - -message=Test execution paused. Press OK to continue. - -Pauses test execution until user clicks ``Ok`` button. - -``message`` is the message shown in the dialog. - - - - diff --git a/libspecs/Easter.libspec b/libspecs/Easter.libspec deleted file mode 100644 index de6bc76ca..000000000 --- a/libspecs/Easter.libspec +++ /dev/null @@ -1,15 +0,0 @@ - - - -global -yes -Documentation for library ``Easter``. - - -who - - - - - - diff --git a/libspecs/JSONLibrary_17ae429.libspec b/libspecs/JSONLibrary_17ae429.libspec deleted file mode 100644 index ce5576ce9..000000000 --- a/libspecs/JSONLibrary_17ae429.libspec +++ /dev/null @@ -1,171 +0,0 @@ - - - -global -yes -JSONLibrary is a robotframework testlibrary for manipulating JSON object (dictionary) - -You can get, add, update and delete your json object using JSONPath. - -== JSONPath Syntax == -| JSONPath | Description | -| $ | the root object/element | -| @ | the current object/element | -| . or [] | child operator | -| .. | recursive descent. JSONPath borrows this syntax from E4X | -| * | wildcard. All objects/element regardless their names. | -| [] | subscript operator. XPath uses it to iterate over element collections and for predicates. In Javascript and JSON it is the native array operator. | -| [,] | Union operator in XPath results in a combination of node sets. JSONPath allows alternate names or array indices as a set. | -| [start:end:step] | array slice operator borrowed from ES4 | -| ?() | applies a filter (script) expression. | -| () | script expression, using the underlying script engine. | - -== *** Known issue *** == -If there is a space in JSONPath expression, the module used by this library will throw an exception. -Therefore, please avoid the space in JSONPath expression if possible. - -*Example:* -| JSONPath | Exception? | -| $.[?(@.id == 1)] | Y | -| $.[?(@.id==1)] | N | -| $.[?(@.name=='test 123')] | N | - -== Example Test Cases == -| *** Settings *** | -| Library | JSONLibrary | -| | -| *** Test Cases *** | -| TestManipulatingJSON | -| ${json_object}= | Load JSON From File | example.json | -| ${object_to_add}= | Create Dictionary | country=Thailand | -| ${json_object}= | Add Object To Json | ${json_object} | $..address | ${object_to_add} | -| ${value}= | Get Value From Json | ${json_object} | $..country | -| Should Be Equal As Strings | ${value[0]} | Thailand | - - -json_object -json_path -object_to_add - -Add an dictionary or list object to json object using json_path - -Arguments: - - json_object: json as a dictionary object. - - json_path: jsonpath expression - - object_to_add: dictionary or list object to add to json_object which is matched by json_path - -Return new json object. - -Examples: -| ${dict}= | Create Dictionary | latitude=13.1234 | longitude=130.1234 | -| ${json}= | Add Object To Json | ${json} | $..address | ${dict} | - - - - - -json_object - -Convert JSON object to string - -Arguments: - - json_object: json as a dictionary object. - -Return new json_string - -Examples: -| ${json_str}= | Convert JSON To String | ${json_obj} | - - - - - -json_string - -Convert String to JSON object - -Arguments: - - json_string: JSON string - -Return new json_object - -Examples: -| ${json_object}= | Convert String to JSON | ${json_string} | - - - - - -json_object -json_path - -Delete Object From JSON using json_path - -Arguments: - - json_object: json as a dictionary object. - - json_path: jsonpath expression - -Return new json_object - -Examples: -| ${json_object}= | Delete Object From Json | ${json} | $..address.streetAddress | - - - - - -json_object -json_path - -Get Value From JSON using JSONPath - -Arguments: - - json_object: json as a dictionary object. - - json_path: jsonpath expression - -Return array of values - -Examples: -| ${values}= | Get Value From Json | ${json} | $..phone_number | - - - - - -file_name - -Load JSON from file. - -Return json as a dictionary object. - -Arguments: - - file_name: absolute json file name - -Return json object (list or dictionary) - -Examples: -| ${result}= | Load Json From File | /path/to/file.json | - - - - - -json_object -json_path -new_value - -Update value to JSON using JSONPath - -Arguments: - - json_object: json as a dictionary object. - - json_path: jsonpath expression - - new_value: value to update - -Return new json_object - -Examples: -| ${json_object}= | Update Value To Json | ${json} | $..address.streetAddress | Ratchadapisek Road | - - - - diff --git a/libspecs/JSONSchemaLibrary_c1d7acb.libspec b/libspecs/JSONSchemaLibrary_c1d7acb.libspec deleted file mode 100644 index 1e176c935..000000000 --- a/libspecs/JSONSchemaLibrary_c1d7acb.libspec +++ /dev/null @@ -1,31 +0,0 @@ - - - -global -yes -JSONSchemaLibrary is a library to validate JSON against JSON Schema definitions using Robot Framework. - -It uses the jsonschema library for Python: https://github.com/Julian/jsonschema - -*Before running tests* - -Prior to running JSONSchemaLibrary tests, you must make sure that the JSON Schema definitions are available -somewhere on the local filesystem. The default is to look in a subdirectory called `schemas`. - - -schema_location=schemas - -Initialize self. See help(type(self)) for accurate signature. - - - - - -schema_filename -sample - -Validates the sample JSON against the given schema. - - - - diff --git a/libspecs/MockServerLibrary_03fd3d4.libspec b/libspecs/MockServerLibrary_03fd3d4.libspec deleted file mode 100644 index 46a38b604..000000000 --- a/libspecs/MockServerLibrary_03fd3d4.libspec +++ /dev/null @@ -1,258 +0,0 @@ - - -0.0.6 -global -yes -Robot Framework library for interacting with [http://www.mock-server.com|MockServer] - -The purpose of this library is to provide a keyword-based API -towards MockServer to be used in robot tests. The project is hosted in -[https://github.com/etsi-cti-admin/robotframework-mockserver|GitHub], -and packages are released to PyPI. - -= Installation = - -| pip install robotframework-mockserver - -= Importing = - -The library does not currently support any import arguments, so use the -following setting to take the library into use: - -| Library | MockServerLibrary | - - -path - -Clears expectations and requests for a specific endpoint from the mockserver. - -`path` is the url of the endpoint for which to clean expectations and requests, e.g. /api - - - - - -method -path -response_code=200 -response_headers=None -body_type=JSON -response_body=None - -Creates a default expectation to be used by mockserver. - -`method` is the HTTP method of the mocked endpoint - -`path` is the url of the mocked endpoint, e.g. /api - -`response_code` is the HTTP status code of the response - -`response_headers` is a dictionary of headers to be added to the response - -`body_type` is the type of the response body, e.g. JSON - -`response_body` is a dictonary of JSON attribute(s) to be added to the response body - - - - - -request -response -count=1 -unlimited=True - -Creates a mock expectation to be used by mockserver. - -`request` is a mock request matcher in a dictionary format. - -`response` is a mock response in a dictionary format. - -`count` is the number of expected requests - -`unlimited` is a boolean value which, if enabled, allows unspecified number of -requests to reply to - - - - - -data - -Creates a mock expectation with defined data to be used by mockserver. - -`data` is a dictionary or JSON string with mock data. Please see -[https://app.swaggerhub.com/apis/jamesdbloom/mock-server_api|MockServer documentation] -for the detailed API reference. - - - - - -request -forward -count=1 -unlimited=True - -Creates a mock expectation with request and forward action to be used by mockserver. - -`request` is a mock request matcher in a dictionary format. - -`forward` is a mock forward in a dictionary format. - -`count` is the number of expected requests - -`unlimited` is a boolean value which, if enabled, allows unspecified number of -requests to reply to - - - - - -path -delay=1 -unit=SECONDS - -Creates a mock http override forward to be used by mockserver. - -Returns the http forward in a dictionary format. - -`path` is the new url where to forward the request - -`delay` is the delay of the forward action - -`unit` is the unit of the delay time (default "SECONDS") - - - - - -method -path -body_type=JSON -body=None -exact=True - -Creates a mock request matcher to be used by mockserver. - -Returns the request matcher in a dictionary format. - -`method` is the HTTP method of the mocked endpoint - -`path` is the url of the mocked endpoint, e.g. /api - -`body_type` is the type of the request body, e.g. JSON - -`body` is a dictionary of the json attribute(s) to match - -`exact` is a boolean value which specifies whether the body should match fully (=true), -or if only specified fields should match (=false) - - - - - -status_code -headers=None -body_type=JSON -body=None - -Creates a mock response to be used by mockserver. - -Returns the response in a dictionary format. - -`status_code` is the HTTP status code of the response - -`headers` is a dictionary of headers to be added to the response - -`body_type` is the type of the response body, e.g. JSON - -`body` is a dictonary of JSON attribute(s) to be added to the response body - - - - - -base_url - -Creates an HTTP session towards mockserver. - -`base_url` is the full url (including port, if applicable) of the mockserver, -e.g. http://localhost:1080. - - - - - - -Dumps logs at the mockserver. - - - - - - -Clears all expectations and received requests from the mockserver. - - - - - -path - -Retrieves expectations from the mockserver. - -`path` is the url of the endpoint for which to retrieve expectations, e.g. /api - - - - - -path - -Retrieves requests from the mockserver - -`path` is the url of the endpoint for which to retrieve requests, e.g. /api - - - - - -request -count=1 -exact=True - -Verifies that the mockserver has received a specific request. - -`request` is a request expectation created using the keyword `Create Mock Request Matcher` - -`count` is the minimum expected number of requests - -`exact` specifies whether the expected count should match the actual received count - - - - - -data - -Verifies a mock expectation with specified data. - -`data` is a dictionary or JSON string with mock data. Please see -[https://app.swaggerhub.com/apis/jamesdbloom/mock-server_api|MockServer documentation] -for the detailed API reference. - - - - - -requests - -Verifies that the mockserver has received a specific ordered request sequence. - -`requests` is a list of request expectations created using the keyword -`Create Mock Request Matcher` - - - - diff --git a/libspecs/OperatingSystem.libspec b/libspecs/OperatingSystem.libspec deleted file mode 100644 index 2ec003cd7..000000000 --- a/libspecs/OperatingSystem.libspec +++ /dev/null @@ -1,1138 +0,0 @@ - - -3.1 -global -yes -A test library providing keywords for OS related tasks. - -``OperatingSystem`` is Robot Framework's standard library that -enables various operating system related tasks to be performed in -the system where Robot Framework is running. It can, among other -things, execute commands (e.g. `Run`), create and remove files and -directories (e.g. `Create File`, `Remove Directory`), check -whether files or directories exists or contain something -(e.g. `File Should Exist`, `Directory Should Be Empty`) and -manipulate environment variables (e.g. `Set Environment Variable`). - -== Table of contents == - -- `Path separators` -- `Pattern matching` -- `Tilde expansion` -- `Boolean arguments` -- `Example` -- `Shortcuts` -- `Keywords` - -= Path separators = - -Because Robot Framework uses the backslash (``\``) as an escape character -in the test data, using a literal backslash requires duplicating it like -in ``c:\\path\\file.txt``. That can be inconvenient especially with -longer Windows paths, and thus all keywords expecting paths as arguments -convert forward slashes to backslashes automatically on Windows. This also -means that paths like ``${CURDIR}/path/file.txt`` are operating system -independent. - -Notice that the automatic path separator conversion does not work if -the path is only a part of an argument like with `Run` and `Start Process` -keywords. In these cases the built-in variable ``${/}`` that contains -``\`` or ``/``, depending on the operating system, can be used instead. - -= Pattern matching = - -Some keywords allow their arguments to be specified as -[http://en.wikipedia.org/wiki/Glob_(programming)|glob patterns] where: - -| ``*`` | matches any string, even an empty string | -| ``?`` | matches any single character | -| ``[chars]`` | matches one character in the bracket | -| ``[!chars]`` | matches one character not in the bracket | -| ``[a-z]`` | matches one character from the range in the bracket | -| ``[!a-z]`` | matches one character not from the range in the bracket | - -Unless otherwise noted, matching is case-insensitive on -case-insensitive operating systems such as Windows. - -Starting from Robot Framework 2.9.1, globbing is not done if the given path -matches an existing file even if it would contain a glob pattern. - -= Tilde expansion = - -Paths beginning with ``~`` or ``~username`` are expanded to the current or -specified user's home directory, respectively. The resulting path is -operating system dependent, but typically e.g. ``~/robot`` is expanded to -``C:\Users\<user>\robot`` on Windows and ``/home/<user>/robot`` on -Unixes. - -The ``~username`` form does not work on Jython. - -= Boolean arguments = - -Some keywords accept arguments that are handled as Boolean values true or -false. If such an argument is given as a string, it is considered false if -it is an empty string or equal to ``FALSE``, ``NONE``, ``NO``, ``OFF`` or -``0``, case-insensitively. Other strings are considered true regardless -their value, and other argument types are tested using the same -[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. - -True examples: -| `Remove Directory` | ${path} | recursive=True | # Strings are generally true. | -| `Remove Directory` | ${path} | recursive=yes | # Same as the above. | -| `Remove Directory` | ${path} | recursive=${TRUE} | # Python ``True`` is true. | -| `Remove Directory` | ${path} | recursive=${42} | # Numbers other than 0 are true. | - -False examples: -| `Remove Directory` | ${path} | recursive=False | # String ``false`` is false. | -| `Remove Directory` | ${path} | recursive=no | # Also string ``no`` is false. | -| `Remove Directory` | ${path} | recursive=${EMPTY} | # Empty string is false. | -| `Remove Directory` | ${path} | recursive=${FALSE} | # Python ``False`` is false. | - -Considering string ``NONE`` false is new in Robot Framework 3.0.3 and -considering also ``OFF`` and ``0`` false is new in Robot Framework 3.1. - -= Example = - -| =Setting= | =Value= | -| Library | OperatingSystem | - -| =Variable= | =Value= | -| ${PATH} | ${CURDIR}/example.txt | - -| =Test Case= | =Action= | =Argument= | =Argument= | -| Example | Create File | ${PATH} | Some text | -| | File Should Exist | ${PATH} | | -| | Copy File | ${PATH} | ~/file.txt | -| | ${output} = | Run | ${TEMPDIR}${/}script.py arg | - - -name -*values -**config - -Appends given ``values`` to environment variable ``name``. - -If the environment variable already exists, values are added after it, -and otherwise a new environment variable is created. - -Values are, by default, joined together using the operating system -path separator (``;`` on Windows, ``:`` elsewhere). This can be changed -by giving a separator after the values like ``separator=value``. No -other configuration parameters are accepted. - -Examples (assuming ``NAME`` and ``NAME2`` do not exist initially): -| Append To Environment Variable | NAME | first | | -| Should Be Equal | %{NAME} | first | | -| Append To Environment Variable | NAME | second | third | -| Should Be Equal | %{NAME} | first${:}second${:}third | -| Append To Environment Variable | NAME2 | first | separator=- | -| Should Be Equal | %{NAME2} | first | | -| Append To Environment Variable | NAME2 | second | separator=- | -| Should Be Equal | %{NAME2} | first-second | - - - - - -path -content -encoding=UTF-8 - -Appends the given content to the specified file. - -If the file does not exists, this keyword works exactly the same -way as `Create File`. - - - - - -source -destination - -Copies the source directory into the destination. - -If the destination exists, the source is copied under it. Otherwise -the destination directory and the possible missing intermediate -directories are created. - - - - - -source -destination - -Copies the source file into the destination. - -Source must be a path to an existing file or a glob pattern (see -`Pattern matching`) that matches exactly one file. How the -destination is interpreted is explained below. - -1) If the destination is an existing file, the source file is copied -over it. - -2) If the destination is an existing directory, the source file is -copied into it. A possible file with the same name as the source is -overwritten. - -3) If the destination does not exist and it ends with a path -separator (``/`` or ``\``), it is considered a directory. That -directory is created and a source file copied into it. -Possible missing intermediate directories are also created. - -4) If the destination does not exist and it does not end with a path -separator, it is considered a file. If the path to the file does not -exist, it is created. - -The resulting destination path is returned since Robot Framework 2.9.2. - -See also `Copy Files`, `Move File`, and `Move Files`. - - - - - -*sources_and_destination - -Copies specified files to the target directory. - -Source files can be given as exact paths and as glob patterns (see -`Pattern matching`). At least one source must be given, but it is -not an error if it is a pattern that does not match anything. - -Last argument must be the destination directory. If the destination -does not exist, it will be created. - -Examples: -| Copy Files | ${dir}/file1.txt | ${dir}/file2.txt | ${dir2} | -| Copy Files | ${dir}/file-*.txt | ${dir2} | | - -See also `Copy File`, `Move File`, and `Move Files`. - - - - - -path -pattern=None - -Wrapper for `Count Items In Directory` returning only directory count. - - - - - -path -pattern=None - -Wrapper for `Count Items In Directory` returning only file count. - - - - - -path -pattern=None - -Returns and logs the number of all items in the given directory. - -The argument ``pattern`` has the same semantics as with `List Directory` -keyword. The count is returned as an integer, so it must be checked e.g. -with the built-in keyword `Should Be Equal As Integers`. - - - - - -path -content - -Creates a binary file with the given content. - -If content is given as a Unicode string, it is first converted to bytes -character by character. All characters with ordinal below 256 can be -used and are converted to bytes with same values. Using characters -with higher ordinal is an error. - -Byte strings, and possible other types, are written to the file as is. - -If the directory for the file does not exist, it is created, along -with missing intermediate directories. - -Examples: -| Create Binary File | ${dir}/example.png | ${image content} | -| Create Binary File | ${path} | \x01\x00\xe4\x00 | - -Use `Create File` if you want to create a text file using a certain -encoding. `File Should Not Exist` can be used to avoid overwriting -existing files. - - - - - -path - -Creates the specified directory. - -Also possible intermediate directories are created. Passes if the -directory already exists, but fails if the path exists and is not -a directory. - - - - - -path -content= -encoding=UTF-8 - -Creates a file with the given content and encoding. - -If the directory for the file does not exist, it is created, along -with missing intermediate directories. - -See `Get File` for more information about possible ``encoding`` values, -including special values ``SYSTEM`` and ``CONSOLE``. - -Examples: -| Create File | ${dir}/example.txt | Hello, world! | | -| Create File | ${path} | Hyv\xe4 esimerkki | Latin-1 | -| Create File | /tmp/foo.txt | ${content} | SYSTEM | - -Use `Append To File` if you want to append to an existing file -and `Create Binary File` if you need to write bytes without encoding. -`File Should Not Exist` can be used to avoid overwriting existing -files. - -The support for ``SYSTEM`` and ``CONSOLE`` encodings is new in Robot -Framework 3.0. - - - - - -path -msg=None - -Fails unless the specified directory is empty. - -The default error message can be overridden with the ``msg`` argument. - - - - - -path -msg=None - -Fails unless the given path points to an existing directory. - -The path can be given as an exact path or as a glob pattern. -The pattern matching syntax is explained in `introduction`. -The default error message can be overridden with the ``msg`` argument. - - - - - -path -msg=None - -Fails if the specified directory is empty. - -The default error message can be overridden with the ``msg`` argument. - - - - - -path -msg=None - -Fails if the given path points to an existing file. - -The path can be given as an exact path or as a glob pattern. -The pattern matching syntax is explained in `introduction`. -The default error message can be overridden with the ``msg`` argument. - - - - - -path - -Deletes all the content from the given directory. - -Deletes both files and sub-directories, but the specified directory -itself if not removed. Use `Remove Directory` if you want to remove -the whole directory. - - - - - -name -msg=None - -Fails if the specified environment variable is not set. - -The default error message can be overridden with the ``msg`` argument. - - - - - -name -msg=None - -Fails if the specified environment variable is set. - -The default error message can be overridden with the ``msg`` argument. - - - - - -path -msg=None - -Fails unless the specified file is empty. - -The default error message can be overridden with the ``msg`` argument. - - - - - -path -msg=None - -Fails unless the given ``path`` points to an existing file. - -The path can be given as an exact path or as a glob pattern. -The pattern matching syntax is explained in `introduction`. -The default error message can be overridden with the ``msg`` argument. - - - - - -path -msg=None - -Fails if the specified directory is empty. - -The default error message can be overridden with the ``msg`` argument. - - - - - -path -msg=None - -Fails if the given path points to an existing file. - -The path can be given as an exact path or as a glob pattern. -The pattern matching syntax is explained in `introduction`. -The default error message can be overridden with the ``msg`` argument. - - - - - -path - -Returns the contents of a specified file. - -This keyword reads the specified file and returns the contents as is. -See also `Get File`. - - - - - -name -default=None - -Returns the value of an environment variable with the given name. - -If no such environment variable is set, returns the default value, if -given. Otherwise fails the test case. - -Returned variables are automatically decoded to Unicode using -the system encoding. - -Note that you can also access environment variables directly using -the variable syntax ``%{ENV_VAR_NAME}``. - - - - - - -Returns currently available environment variables as a dictionary. - -Both keys and values are decoded to Unicode using the system encoding. -Altering the returned dictionary has no effect on the actual environment -variables. - - - - - -path -encoding=UTF-8 -encoding_errors=strict - -Returns the contents of a specified file. - -This keyword reads the specified file and returns the contents. -Line breaks in content are converted to platform independent form. -See also `Get Binary File`. - -``encoding`` defines the encoding of the file. The default value is -``UTF-8``, which means that UTF-8 and ASCII encoded files are read -correctly. In addition to the encodings supported by the underlying -Python implementation, the following special encoding values can be -used: - -- ``SYSTEM``: Use the default system encoding. -- ``CONSOLE``: Use the console encoding. Outside Windows this is same - as the system encoding. - -``encoding_errors`` argument controls what to do if decoding some bytes -fails. All values accepted by ``decode`` method in Python are valid, but -in practice the following values are most useful: - -- ``strict``: Fail if characters cannot be decoded (default). -- ``ignore``: Ignore characters that cannot be decoded. -- ``replace``: Replace characters that cannot be decoded with - a replacement character. - -Support for ``SYSTEM`` and ``CONSOLE`` encodings in Robot Framework 3.0. - - - - - -path - -Returns and logs file size as an integer in bytes. - - - - - -path -format=timestamp - -Returns the last modification time of a file or directory. - -How time is returned is determined based on the given ``format`` -string as follows. Note that all checks are case-insensitive. -Returned time is also automatically logged. - -1) If ``format`` contains the word ``epoch``, the time is returned - in seconds after the UNIX epoch. The return value is always - an integer. - -2) If ``format`` contains any of the words ``year``, ``month``, - ``day``, ``hour``, ``min`` or ``sec``, only the selected parts are - returned. The order of the returned parts is always the one - in the previous sentence and the order of the words in - ``format`` is not significant. The parts are returned as - zero-padded strings (e.g. May -> ``05``). - -3) Otherwise, and by default, the time is returned as a - timestamp string in the format ``2006-02-24 15:08:31``. - -Examples (when the modified time of ``${CURDIR}`` is -2006-03-29 15:06:21): -| ${time} = | Get Modified Time | ${CURDIR} | -| ${secs} = | Get Modified Time | ${CURDIR} | epoch | -| ${year} = | Get Modified Time | ${CURDIR} | return year | -| ${y} | ${d} = | Get Modified Time | ${CURDIR} | year,day | -| @{time} = | Get Modified Time | ${CURDIR} | year,month,day,hour,min,sec | -=> -- ${time} = '2006-03-29 15:06:21' -- ${secs} = 1143637581 -- ${year} = '2006' -- ${y} = '2006' & ${d} = '29' -- @{time} = ['2006', '03', '29', '15', '06', '21'] - - - - - -path -pattern -encoding=UTF-8 -encoding_errors=strict - -Returns the lines of the specified file that match the ``pattern``. - -This keyword reads a file from the file system using the defined -``path``, ``encoding`` and ``encoding_errors`` similarly as `Get File`. -A difference is that only the lines that match the given ``pattern`` are -returned. Lines are returned as a single string catenated back together -with newlines and the number of matched lines is automatically logged. -Possible trailing newline is never returned. - -A line matches if it contains the ``pattern`` anywhere in it and -it *does not need to match the pattern fully*. The pattern -matching syntax is explained in `introduction`, and in this -case matching is case-sensitive. - -Examples: -| ${errors} = | Grep File | /var/log/myapp.log | ERROR | -| ${ret} = | Grep File | ${CURDIR}/file.txt | [Ww]ildc??d ex*ple | - -If more complex pattern matching is needed, it is possible to use -`Get File` in combination with String library keywords like `Get -Lines Matching Regexp`. - - - - - -base -*parts - -Joins the given path part(s) to the given base path. - -The path separator (``/`` or ``\``) is inserted when needed and -the possible absolute paths handled as expected. The resulted -path is also normalized. - -Examples: -| ${path} = | Join Path | my | path | -| ${p2} = | Join Path | my/ | path/ | -| ${p3} = | Join Path | my | path | my | file.txt | -| ${p4} = | Join Path | my | /path | -| ${p5} = | Join Path | /my/path/ | .. | path2 | -=> -- ${path} = 'my/path' -- ${p2} = 'my/path' -- ${p3} = 'my/path/my/file.txt' -- ${p4} = '/path' -- ${p5} = '/my/path2' - - - - - -base -*paths - -Joins given paths with base and returns resulted paths. - -See `Join Path` for more information. - -Examples: -| @{p1} = | Join Paths | base | example | other | | -| @{p2} = | Join Paths | /my/base | /example | other | | -| @{p3} = | Join Paths | my/base | example/path/ | other | one/more | -=> -- @{p1} = ['base/example', 'base/other'] -- @{p2} = ['/example', '/my/base/other'] -- @{p3} = ['my/base/example/path', 'my/base/other', 'my/base/one/more'] - - - - - -path -pattern=None -absolute=False - -Wrapper for `List Directory` that returns only directories. - - - - - -path -pattern=None -absolute=False - -Returns and logs items in a directory, optionally filtered with ``pattern``. - -File and directory names are returned in case-sensitive alphabetical -order, e.g. ``['A Name', 'Second', 'a lower case name', 'one more']``. -Implicit directories ``.`` and ``..`` are not returned. The returned -items are automatically logged. - -File and directory names are returned relative to the given path -(e.g. ``'file.txt'``) by default. If you want them be returned in -absolute format (e.g. ``'/home/robot/file.txt'``), give the ``absolute`` -argument a true value (see `Boolean arguments`). - -If ``pattern`` is given, only items matching it are returned. The pattern -matching syntax is explained in `introduction`, and in this case -matching is case-sensitive. - -Examples (using also other `List Directory` variants): -| @{items} = | List Directory | ${TEMPDIR} | -| @{files} = | List Files In Directory | /tmp | *.txt | absolute | -| ${count} = | Count Files In Directory | ${CURDIR} | ??? | - - - - - -path -pattern=None -absolute=False - -Wrapper for `List Directory` that returns only files. - - - - - -level=INFO - -Logs all environment variables using the given log level. - -Environment variables are also returned the same way as with -`Get Environment Variables` keyword. - - - - - -path -encoding=UTF-8 -encoding_errors=strict - -Wrapper for `Get File` that also logs the returned file. - -The file is logged with the INFO level. If you want something else, -just use `Get File` and the built-in keyword `Log` with the desired -level. - -See `Get File` for more information about ``encoding`` and -``encoding_errors`` arguments. - - - - - -source -destination - -Moves the source directory into a destination. - -Uses `Copy Directory` keyword internally, and ``source`` and -``destination`` arguments have exactly same semantics as with -that keyword. - - - - - -source -destination - -Moves the source file into the destination. - -Arguments have exactly same semantics as with `Copy File` keyword. -Destination file path is returned since Robot Framework 2.9.2. - -If the source and destination are on the same filesystem, rename -operation is used. Otherwise file is copied to the destination -filesystem and then removed from the original filesystem. - -See also `Move Files`, `Copy File`, and `Copy Files`. - - - - - -*sources_and_destination - -Moves specified files to the target directory. - -Arguments have exactly same semantics as with `Copy Files` keyword. - -See also `Move File`, `Copy File`, and `Copy Files`. - - - - - -path -case_normalize=False - -Normalizes the given path. - -- Collapses redundant separators and up-level references. -- Converts ``/`` to ``\`` on Windows. -- Replaces initial ``~`` or ``~user`` by that user's home directory. - The latter is not supported on Jython. -- If ``case_normalize`` is given a true value (see `Boolean arguments`) - on Windows, converts the path to all lowercase. New in Robot - Framework 3.1. - -Examples: -| ${path1} = | Normalize Path | abc/ | -| ${path2} = | Normalize Path | abc/../def | -| ${path3} = | Normalize Path | abc/./def//ghi | -| ${path4} = | Normalize Path | ~robot/stuff | -=> -- ${path1} = 'abc' -- ${path2} = 'def' -- ${path3} = 'abc/def/ghi' -- ${path4} = '/home/robot/stuff' - -On Windows result would use ``\`` instead of ``/`` and home directory -would be different. - - - - - -path -recursive=False - -Removes the directory pointed to by the given ``path``. - -If the second argument ``recursive`` is given a true value (see -`Boolean arguments`), the directory is removed recursively. Otherwise -removing fails if the directory is not empty. - -If the directory pointed to by the ``path`` does not exist, the keyword -passes, but it fails, if the ``path`` points to a file. - - - - - -*names - -Deletes the specified environment variable. - -Does nothing if the environment variable is not set. - -It is possible to remove multiple variables by passing them to this -keyword as separate arguments. - - - - - -path - -Removes a file with the given path. - -Passes if the file does not exist, but fails if the path does -not point to a regular file (e.g. it points to a directory). - -The path can be given as an exact path or as a glob pattern. -The pattern matching syntax is explained in `introduction`. -If the path is a pattern, all files matching it are removed. - - - - - -*paths - -Uses `Remove File` to remove multiple files one-by-one. - -Example: -| Remove Files | ${TEMPDIR}${/}foo.txt | ${TEMPDIR}${/}bar.txt | ${TEMPDIR}${/}zap.txt | - - - - - -command - -Runs the given command in the system and returns the output. - -The execution status of the command *is not checked* by this -keyword, and it must be done separately based on the returned -output. If the execution return code is needed, either `Run -And Return RC` or `Run And Return RC And Output` can be used. - -The standard error stream is automatically redirected to the standard -output stream by adding ``2>&1`` after the executed command. This -automatic redirection is done only when the executed command does not -contain additional output redirections. You can thus freely forward -the standard error somewhere else, for example, like -``my_command 2>stderr.txt``. - -The returned output contains everything written into the standard -output or error streams by the command (unless either of them -is redirected explicitly). Many commands add an extra newline -(``\n``) after the output to make it easier to read in the -console. To ease processing the returned output, this possible -trailing newline is stripped by this keyword. - -Examples: -| ${output} = | Run | ls -lhF /tmp | -| Log | ${output} | -| ${result} = | Run | ${CURDIR}${/}tester.py arg1 arg2 | -| Should Not Contain | ${result} | FAIL | -| ${stdout} = | Run | /opt/script.sh 2>/tmp/stderr.txt | -| Should Be Equal | ${stdout} | TEST PASSED | -| File Should Be Empty | /tmp/stderr.txt | - -*TIP:* `Run Process` keyword provided by the -[http://robotframework.org/robotframework/latest/libraries/Process.html| -Process library] supports better process configuration and is generally -recommended as a replacement for this keyword. - - - - - -command - -Runs the given command in the system and returns the return code. - -The return code (RC) is returned as a positive integer in -range from 0 to 255 as returned by the executed command. On -some operating systems (notable Windows) original return codes -can be something else, but this keyword always maps them to -the 0-255 range. Since the RC is an integer, it must be -checked e.g. with the keyword `Should Be Equal As Integers` -instead of `Should Be Equal` (both are built-in keywords). - -Examples: -| ${rc} = | Run and Return RC | ${CURDIR}${/}script.py arg | -| Should Be Equal As Integers | ${rc} | 0 | -| ${rc} = | Run and Return RC | /path/to/example.rb arg1 arg2 | -| Should Be True | 0 < ${rc} < 42 | - -See `Run` and `Run And Return RC And Output` if you need to get the -output of the executed command. - -*TIP:* `Run Process` keyword provided by the -[http://robotframework.org/robotframework/latest/libraries/Process.html| -Process library] supports better process configuration and is generally -recommended as a replacement for this keyword. - - - - - -command - -Runs the given command in the system and returns the RC and output. - -The return code (RC) is returned similarly as with `Run And Return RC` -and the output similarly as with `Run`. - -Examples: -| ${rc} | ${output} = | Run and Return RC and Output | ${CURDIR}${/}mytool | -| Should Be Equal As Integers | ${rc} | 0 | -| Should Not Contain | ${output} | FAIL | -| ${rc} | ${stdout} = | Run and Return RC and Output | /opt/script.sh 2>/tmp/stderr.txt | -| Should Be True | ${rc} > 42 | -| Should Be Equal | ${stdout} | TEST PASSED | -| File Should Be Empty | /tmp/stderr.txt | - -*TIP:* `Run Process` keyword provided by the -[http://robotframework.org/robotframework/latest/libraries/Process.html| -Process library] supports better process configuration and is generally -recommended as a replacement for this keyword. - - - - - -name -value - -Sets an environment variable to a specified value. - -Values are converted to strings automatically. Set variables are -automatically encoded using the system encoding. - - - - - -path -mtime - -Sets the file modification and access times. - -Changes the modification and access times of the given file to -the value determined by ``mtime``. The time can be given in -different formats described below. Note that all checks -involving strings are case-insensitive. Modified time can only -be set to regular files. - -1) If ``mtime`` is a number, or a string that can be converted - to a number, it is interpreted as seconds since the UNIX - epoch (1970-01-01 00:00:00 UTC). This documentation was - originally written about 1177654467 seconds after the epoch. - -2) If ``mtime`` is a timestamp, that time will be used. Valid - timestamp formats are ``YYYY-MM-DD hh:mm:ss`` and - ``YYYYMMDD hhmmss``. - -3) If ``mtime`` is equal to ``NOW``, the current local time is used. - -4) If ``mtime`` is equal to ``UTC``, the current time in - [http://en.wikipedia.org/wiki/Coordinated_Universal_Time|UTC] - is used. - -5) If ``mtime`` is in the format like ``NOW - 1 day`` or ``UTC + 1 - hour 30 min``, the current local/UTC time plus/minus the time - specified with the time string is used. The time string format - is described in an appendix of Robot Framework User Guide. - -Examples: -| Set Modified Time | /path/file | 1177654467 | # Time given as epoch seconds | -| Set Modified Time | /path/file | 2007-04-27 9:14:27 | # Time given as a timestamp | -| Set Modified Time | /path/file | NOW | # The local time of execution | -| Set Modified Time | /path/file | NOW - 1 day | # 1 day subtracted from the local time | -| Set Modified Time | /path/file | UTC + 1h 2min 3s | # 1h 2min 3s added to the UTC time | - - - - - -path -msg=None - -Fails unless the given path (file or directory) exists. - -The path can be given as an exact path or as a glob pattern. -The pattern matching syntax is explained in `introduction`. -The default error message can be overridden with the ``msg`` argument. - - - - - -path -msg=None - -Fails if the given path (file or directory) exists. - -The path can be given as an exact path or as a glob pattern. -The pattern matching syntax is explained in `introduction`. -The default error message can be overridden with the ``msg`` argument. - - - - - -path - -Splits the extension from the given path. - -The given path is first normalized (e.g. possible trailing -path separators removed, special directories ``..`` and ``.`` -removed). The base path and extension are returned as separate -components so that the dot used as an extension separator is -removed. If the path contains no extension, an empty string is -returned for it. Possible leading and trailing dots in the file -name are never considered to be extension separators. - -Examples: -| ${path} | ${ext} = | Split Extension | file.extension | -| ${p2} | ${e2} = | Split Extension | path/file.ext | -| ${p3} | ${e3} = | Split Extension | path/file | -| ${p4} | ${e4} = | Split Extension | p1/../p2/file.ext | -| ${p5} | ${e5} = | Split Extension | path/.file.ext | -| ${p6} | ${e6} = | Split Extension | path/.file | -=> -- ${path} = 'file' & ${ext} = 'extension' -- ${p2} = 'path/file' & ${e2} = 'ext' -- ${p3} = 'path/file' & ${e3} = '' -- ${p4} = 'p2/file' & ${e4} = 'ext' -- ${p5} = 'path/.file' & ${e5} = 'ext' -- ${p6} = 'path/.file' & ${e6} = '' - - - - - -path - -Splits the given path from the last path separator (``/`` or ``\``). - -The given path is first normalized (e.g. a possible trailing -path separator is removed, special directories ``..`` and ``.`` -removed). The parts that are split are returned as separate -components. - -Examples: -| ${path1} | ${dir} = | Split Path | abc/def | -| ${path2} | ${file} = | Split Path | abc/def/ghi.txt | -| ${path3} | ${d2} = | Split Path | abc/../def/ghi/ | -=> -- ${path1} = 'abc' & ${dir} = 'def' -- ${path2} = 'abc/def' & ${file} = 'ghi.txt' -- ${path3} = 'def' & ${d2} = 'ghi' - - - - - -path - -Emulates the UNIX touch command. - -Creates a file, if it does not exist. Otherwise changes its access and -modification times to the current time. - -Fails if used with the directories or the parent directory of the given -file does not exist. - - - - - -path -timeout=1 minute - -Waits until the given file or directory is created. - -The path can be given as an exact path or as a glob pattern. -The pattern matching syntax is explained in `introduction`. -If the path is a pattern, the keyword returns when an item matching -it is created. - -The optional ``timeout`` can be used to control the maximum time of -waiting. The timeout is given as a timeout string, e.g. in a format -``15 seconds``, ``1min 10s`` or just ``10``. The time string format is -described in an appendix of Robot Framework User Guide. - -If the timeout is negative, the keyword is never timed-out. The keyword -returns immediately, if the path already exists. - - - - - -path -timeout=1 minute - -Waits until the given file or directory is removed. - -The path can be given as an exact path or as a glob pattern. -The pattern matching syntax is explained in `introduction`. -If the path is a pattern, the keyword waits until all matching -items are removed. - -The optional ``timeout`` can be used to control the maximum time of -waiting. The timeout is given as a timeout string, e.g. in a format -``15 seconds``, ``1min 10s`` or just ``10``. The time string format is -described in an appendix of Robot Framework User Guide. - -If the timeout is negative, the keyword is never timed-out. The keyword -returns immediately, if the path does not exist in the first place. - - - - diff --git a/libspecs/Process.libspec b/libspecs/Process.libspec deleted file mode 100644 index ad9fe354c..000000000 --- a/libspecs/Process.libspec +++ /dev/null @@ -1,637 +0,0 @@ - - -3.1 -global -yes -Robot Framework test library for running processes. - -This library utilizes Python's -[http://docs.python.org/library/subprocess.html|subprocess] -module and its -[http://docs.python.org/library/subprocess.html#popen-constructor|Popen] -class. - -The library has following main usages: - -- Running processes in system and waiting for their completion using - `Run Process` keyword. -- Starting processes on background using `Start Process`. -- Waiting started process to complete using `Wait For Process` or - stopping them with `Terminate Process` or `Terminate All Processes`. - -== Table of contents == - -- `Specifying command and arguments` -- `Process configuration` -- `Active process` -- `Result object` -- `Boolean arguments` -- `Example` -- `Shortcuts` -- `Keywords` - -= Specifying command and arguments = - -Both `Run Process` and `Start Process` accept the command to execute and -all arguments passed to the command as separate arguments. This makes usage -convenient and also allows these keywords to automatically escape possible -spaces and other special characters in commands and arguments. Notice that -if a command accepts options that themselves accept values, these options -and their values must be given as separate arguments. - -When `running processes in shell`, it is also possible to give the whole -command to execute as a single string. The command can then contain -multiple commands to be run together. When using this approach, the caller -is responsible on escaping. - -Examples: -| `Run Process` | ${tools}${/}prog.py | argument | second arg with spaces | -| `Run Process` | java | -jar | ${jars}${/}example.jar | --option | value | -| `Run Process` | prog.py "one arg" && tool.sh | shell=yes | cwd=${tools} | - -Possible non-string arguments are converted to strings automatically. - -= Process configuration = - -`Run Process` and `Start Process` keywords can be configured using -optional ``**configuration`` keyword arguments. Configuration arguments -must be given after other arguments passed to these keywords and must -use syntax like ``name=value``. Available configuration arguments are -listed below and discussed further in sections afterwards. - -| = Name = | = Explanation = | -| shell | Specifies whether to run the command in shell or not. | -| cwd | Specifies the working directory. | -| env | Specifies environment variables given to the process. | -| env:<name> | Overrides the named environment variable(s) only. | -| stdout | Path of a file where to write standard output. | -| stderr | Path of a file where to write standard error. | -| output_encoding | Encoding to use when reading command outputs. | -| alias | Alias given to the process. | - -Note that because ``**configuration`` is passed using ``name=value`` syntax, -possible equal signs in other arguments passed to `Run Process` and -`Start Process` must be escaped with a backslash like ``name\=value``. -See `Run Process` for an example. - -== Running processes in shell == - -The ``shell`` argument specifies whether to run the process in a shell or -not. By default shell is not used, which means that shell specific commands, -like ``copy`` and ``dir`` on Windows, are not available. You can, however, -run shell scripts and batch files without using a shell. - -Giving the ``shell`` argument any non-false value, such as ``shell=True``, -changes the program to be executed in a shell. It allows using the shell -capabilities, but can also make the process invocation operating system -dependent. Having a shell between the actually started process and this -library can also interfere communication with the process such as stopping -it and reading its outputs. Because of these problems, it is recommended -to use the shell only when absolutely necessary. - -When using a shell it is possible to give the whole command to execute -as a single string. See `Specifying command and arguments` section for -examples and more details in general. - -== Current working directory == - -By default the child process will be executed in the same directory -as the parent process, the process running tests, is executed. This -can be changed by giving an alternative location using the ``cwd`` argument. -Forward slashes in the given path are automatically converted to -backslashes on Windows. - -`Standard output and error streams`, when redirected to files, -are also relative to the current working directory possibly set using -the ``cwd`` argument. - -Example: -| `Run Process` | prog.exe | cwd=${ROOT}/directory | stdout=stdout.txt | - -== Environment variables == - -By default the child process will get a copy of the parent process's -environment variables. The ``env`` argument can be used to give the -child a custom environment as a Python dictionary. If there is a need -to specify only certain environment variable, it is possible to use the -``env:<name>=<value>`` format to set or override only that named variables. -It is also possible to use these two approaches together. - -Examples: -| `Run Process` | program | env=${environ} | -| `Run Process` | program | env:http_proxy=10.144.1.10:8080 | env:PATH=%{PATH}${:}${PROGDIR} | -| `Run Process` | program | env=${environ} | env:EXTRA=value | - -== Standard output and error streams == - -By default processes are run so that their standard output and standard -error streams are kept in the memory. This works fine normally, -but if there is a lot of output, the output buffers may get full and -the program can hang. Additionally on Jython, everything written to -these in-memory buffers can be lost if the process is terminated. - -To avoid the above mentioned problems, it is possible to use ``stdout`` -and ``stderr`` arguments to specify files on the file system where to -redirect the outputs. This can also be useful if other processes or -other keywords need to read or manipulate the outputs somehow. - -Given ``stdout`` and ``stderr`` paths are relative to the `current working -directory`. Forward slashes in the given paths are automatically converted -to backslashes on Windows. - -As a special feature, it is possible to redirect the standard error to -the standard output by using ``stderr=STDOUT``. - -Regardless are outputs redirected to files or not, they are accessible -through the `result object` returned when the process ends. Commands are -expected to write outputs using the console encoding, but `output encoding` -can be configured using the ``output_encoding`` argument if needed. - -Examples: -| ${result} = | `Run Process` | program | stdout=${TEMPDIR}/stdout.txt | stderr=${TEMPDIR}/stderr.txt | -| `Log Many` | stdout: ${result.stdout} | stderr: ${result.stderr} | -| ${result} = | `Run Process` | program | stderr=STDOUT | -| `Log` | all output: ${result.stdout} | - -Note that the created output files are not automatically removed after -the test run. The user is responsible to remove them if needed. - -== Output encoding == - -Executed commands are, by default, expected to write outputs to the -`standard output and error streams` using the encoding used by the -system console. If the command uses some other encoding, that can be -configured using the ``output_encoding`` argument. This is especially -useful on Windows where the console uses a different encoding than rest -of the system, and many commands use the general system encoding instead -of the console encoding. - -The value used with the ``output_encoding`` argument must be a valid -encoding and must match the encoding actually used by the command. As a -convenience, it is possible to use strings ``CONSOLE`` and ``SYSTEM`` -to specify that the console or system encoding is used, respectively. -If produced outputs use different encoding then configured, values got -through the `result object` will be invalid. - -Examples: -| `Start Process` | program | output_encoding=UTF-8 | -| `Run Process` | program | stdout=${path} | output_encoding=SYSTEM | - -The support to set output encoding is new in Robot Framework 3.0. - -== Alias == - -A custom name given to the process that can be used when selecting the -`active process`. - -Examples: -| `Start Process` | program | alias=example | -| `Run Process` | python | -c | print 'hello' | alias=hello | - -= Active process = - -The test library keeps record which of the started processes is currently -active. By default it is latest process started with `Start Process`, -but `Switch Process` can be used to select a different one. Using -`Run Process` does not affect the active process. - -The keywords that operate on started processes will use the active process -by default, but it is possible to explicitly select a different process -using the ``handle`` argument. The handle can be the identifier returned by -`Start Process` or an ``alias`` explicitly given to `Start Process` or -`Run Process`. - -= Result object = - -`Run Process`, `Wait For Process` and `Terminate Process` keywords return a -result object that contains information about the process execution as its -attributes. The same result object, or some of its attributes, can also -be get using `Get Process Result` keyword. Attributes available in the -object are documented in the table below. - -| = Attribute = | = Explanation = | -| rc | Return code of the process as an integer. | -| stdout | Contents of the standard output stream. | -| stderr | Contents of the standard error stream. | -| stdout_path | Path where stdout was redirected or ``None`` if not redirected. | -| stderr_path | Path where stderr was redirected or ``None`` if not redirected. | - -Example: -| ${result} = | `Run Process` | program | -| `Should Be Equal As Integers` | ${result.rc} | 0 | -| `Should Match` | ${result.stdout} | Some t?xt* | -| `Should Be Empty` | ${result.stderr} | | -| ${stdout} = | `Get File` | ${result.stdout_path} | -| `Should Be Equal` | ${stdout} | ${result.stdout} | -| `File Should Be Empty` | ${result.stderr_path} | | - -= Boolean arguments = - -Some keywords accept arguments that are handled as Boolean values true or -false. If such an argument is given as a string, it is considered false if -it is an empty string or equal to ``FALSE``, ``NONE``, ``NO``, ``OFF`` or -``0``, case-insensitively. Other strings are considered true regardless -their value, and other argument types are tested using the same -[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. - -True examples: -| `Terminate Process` | kill=True | # Strings are generally true. | -| `Terminate Process` | kill=yes | # Same as the above. | -| `Terminate Process` | kill=${TRUE} | # Python ``True`` is true. | -| `Terminate Process` | kill=${42} | # Numbers other than 0 are true. | - -False examples: -| `Terminate Process` | kill=False | # String ``false`` is false. | -| `Terminate Process` | kill=no | # Also string ``no`` is false. | -| `Terminate Process` | kill=${EMPTY} | # Empty string is false. | -| `Terminate Process` | kill=${FALSE} | # Python ``False`` is false. | - -Considering string ``NONE`` false is new in Robot Framework 3.0.3 and -considering also ``OFF`` and ``0`` false is new in Robot Framework 3.1. - -= Example = - -| ***** Settings ***** -| Library Process -| Suite Teardown `Terminate All Processes` kill=True -| -| ***** Test Cases ***** -| Example -| `Start Process` program arg1 arg2 alias=First -| ${handle} = `Start Process` command.sh arg | command2.sh shell=True cwd=/path -| ${result} = `Run Process` ${CURDIR}/script.py -| `Should Not Contain` ${result.stdout} FAIL -| `Terminate Process` ${handle} -| ${result} = `Wait For Process` First -| `Should Be Equal As Integers` ${result.rc} 0 - - -handle=None - -Returns the process ID (pid) of the process as an integer. - -If ``handle`` is not given, uses the current `active process`. - -Notice that the pid is not the same as the handle returned by -`Start Process` that is used internally by this library. - - - - - -handle=None - -Return the underlying ``subprocess.Popen`` object. - -If ``handle`` is not given, uses the current `active process`. - - - - - -handle=None -rc=False -stdout=False -stderr=False -stdout_path=False -stderr_path=False - -Returns the specified `result object` or some of its attributes. - -The given ``handle`` specifies the process whose results should be -returned. If no ``handle`` is given, results of the current `active -process` are returned. In either case, the process must have been -finishes before this keyword can be used. In practice this means -that processes started with `Start Process` must be finished either -with `Wait For Process` or `Terminate Process` before using this -keyword. - -If no other arguments than the optional ``handle`` are given, a whole -`result object` is returned. If one or more of the other arguments -are given any true value, only the specified attributes of the -`result object` are returned. These attributes are always returned -in the same order as arguments are specified in the keyword signature. -See `Boolean arguments` section for more details about true and false -values. - -Examples: -| Run Process | python | -c | print 'Hello, world!' | alias=myproc | -| # Get result object | | | -| ${result} = | Get Process Result | myproc | -| Should Be Equal | ${result.rc} | ${0} | -| Should Be Equal | ${result.stdout} | Hello, world! | -| Should Be Empty | ${result.stderr} | | -| # Get one attribute | | | -| ${stdout} = | Get Process Result | myproc | stdout=true | -| Should Be Equal | ${stdout} | Hello, world! | -| # Multiple attributes | | | -| ${stdout} | ${stderr} = | Get Process Result | myproc | stdout=yes | stderr=yes | -| Should Be Equal | ${stdout} | Hello, world! | -| Should Be Empty | ${stderr} | | - -Although getting results of a previously executed process can be handy -in general, the main use case for this keyword is returning results -over the remote library interface. The remote interface does not -support returning the whole result object, but individual attributes -can be returned without problems. - - - - - -handle=None - -Checks is the process running or not. - -If ``handle`` is not given, uses the current `active process`. - -Returns ``True`` if the process is still running and ``False`` otherwise. - - - - - -*args - -Joins arguments into one command line string. - -In resulting command line string arguments are delimited with a space, -arguments containing spaces are surrounded with quotes, and possible -quotes are escaped with a backslash. - -If this keyword is given only one argument and that is a list like -object, then the values of that list are joined instead. - -Example: -| ${cmd} = | Join Command Line | --option | value with spaces | -| Should Be Equal | ${cmd} | --option "value with spaces" | - -New in Robot Framework 2.9.2. - - - - - -handle=None -error_message=Process is not running. - -Verifies that the process is running. - -If ``handle`` is not given, uses the current `active process`. - -Fails if the process has stopped. - - - - - -handle=None -error_message=Process is running. - -Verifies that the process is not running. - -If ``handle`` is not given, uses the current `active process`. - -Fails if the process is still running. - - - - - -command -*arguments -**configuration - -Runs a process and waits for it to complete. - -``command`` and ``*arguments`` specify the command to execute and -arguments passed to it. See `Specifying command and arguments` for -more details. - -``**configuration`` contains additional configuration related to -starting processes and waiting for them to finish. See `Process -configuration` for more details about configuration related to starting -processes. Configuration related to waiting for processes consists of -``timeout`` and ``on_timeout`` arguments that have same semantics as -with `Wait For Process` keyword. By default there is no timeout, and -if timeout is defined the default action on timeout is ``terminate``. - -Returns a `result object` containing information about the execution. - -Note that possible equal signs in ``*arguments`` must be escaped -with a backslash (e.g. ``name\=value``) to avoid them to be passed in -as ``**configuration``. - -Examples: -| ${result} = | Run Process | python | -c | print 'Hello, world!' | -| Should Be Equal | ${result.stdout} | Hello, world! | -| ${result} = | Run Process | ${command} | stderr=STDOUT | timeout=10s | -| ${result} = | Run Process | ${command} | timeout=1min | on_timeout=continue | -| ${result} = | Run Process | java -Dname\=value Example | shell=True | cwd=${EXAMPLE} | - -This keyword does not change the `active process`. - - - - - -signal -handle=None -group=False - -Sends the given ``signal`` to the specified process. - -If ``handle`` is not given, uses the current `active process`. - -Signal can be specified either as an integer as a signal name. In the -latter case it is possible to give the name both with or without ``SIG`` -prefix, but names are case-sensitive. For example, all the examples -below send signal ``INT (2)``: - -| Send Signal To Process | 2 | | # Send to active process | -| Send Signal To Process | INT | | | -| Send Signal To Process | SIGINT | myproc | # Send to named process | - -This keyword is only supported on Unix-like machines, not on Windows. -What signals are supported depends on the system. For a list of -existing signals on your system, see the Unix man pages related to -signal handling (typically ``man signal`` or ``man 7 signal``). - -By default sends the signal only to the parent process, not to possible -child processes started by it. Notice that when `running processes in -shell`, the shell is the parent process and it depends on the system -does the shell propagate the signal to the actual started process. - -To send the signal to the whole process group, ``group`` argument can -be set to any true value (see `Boolean arguments`). This is not -supported by Jython, however. - - - - - -args -escaping=False - -Splits command line string into a list of arguments. - -String is split from spaces, but argument surrounded in quotes may -contain spaces in them. If ``escaping`` is given a true value, then -backslash is treated as an escape character. It can escape unquoted -spaces, quotes inside quotes, and so on, but it also requires using -double backslashes when using Windows paths. - -Examples: -| @{cmd} = | Split Command Line | --option "value with spaces" | -| Should Be True | $cmd == ['--option', 'value with spaces'] | - -New in Robot Framework 2.9.2. - - - - - -command -*arguments -**configuration - -Starts a new process on background. - -See `Specifying command and arguments` and `Process configuration` -for more information about the arguments, and `Run Process` keyword -for related examples. - -Makes the started process new `active process`. Returns an identifier -that can be used as a handle to activate the started process if needed. - -Processes are started so that they create a new process group. This -allows sending signals to and terminating also possible child -processes. This is not supported on Jython. - - - - - -handle - -Makes the specified process the current `active process`. - -The handle can be an identifier returned by `Start Process` or -the ``alias`` given to it explicitly. - -Example: -| Start Process | prog1 | alias=process1 | -| Start Process | prog2 | alias=process2 | -| # currently active process is process2 | -| Switch Process | process1 | -| # now active process is process1 | - - - - - -kill=False - -Terminates all still running processes started by this library. - -This keyword can be used in suite teardown or elsewhere to make -sure that all processes are stopped, - -By default tries to terminate processes gracefully, but can be -configured to forcefully kill them immediately. See `Terminate Process` -that this keyword uses internally for more details. - - - - - -handle=None -kill=False - -Stops the process gracefully or forcefully. - -If ``handle`` is not given, uses the current `active process`. - -By default first tries to stop the process gracefully. If the process -does not stop in 30 seconds, or ``kill`` argument is given a true value, -(see `Boolean arguments`) kills the process forcefully. Stops also all -the child processes of the originally started process. - -Waits for the process to stop after terminating it. Returns a `result -object` containing information about the execution similarly as `Wait -For Process`. - -On Unix-like machines graceful termination is done using ``TERM (15)`` -signal and killing using ``KILL (9)``. Use `Send Signal To Process` -instead if you just want to send either of these signals without -waiting for the process to stop. - -On Windows graceful termination is done using ``CTRL_BREAK_EVENT`` -event and killing using Win32 API function ``TerminateProcess()``. - -Examples: -| ${result} = | Terminate Process | | -| Should Be Equal As Integers | ${result.rc} | -15 | # On Unixes | -| Terminate Process | myproc | kill=true | - -Limitations: -- Graceful termination is not supported on Windows when using Jython. - Process is killed instead. -- Stopping the whole process group is not supported when using Jython. -- On Windows forceful kill only stops the main process, not possible - child processes. - - - - - -handle=None -timeout=None -on_timeout=continue - -Waits for the process to complete or to reach the given timeout. - -The process to wait for must have been started earlier with -`Start Process`. If ``handle`` is not given, uses the current -`active process`. - -``timeout`` defines the maximum time to wait for the process. It can be -given in -[http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#time-format| -various time formats] supported by Robot Framework, for example, ``42``, -``42 s``, or ``1 minute 30 seconds``. - -``on_timeout`` defines what to do if the timeout occurs. Possible values -and corresponding actions are explained in the table below. Notice -that reaching the timeout never fails the test. - -| = Value = | = Action = | -| continue | The process is left running (default). | -| terminate | The process is gracefully terminated. | -| kill | The process is forcefully stopped. | - -See `Terminate Process` keyword for more details how processes are -terminated and killed. - -If the process ends before the timeout or it is terminated or killed, -this keyword returns a `result object` containing information about -the execution. If the process is left running, Python ``None`` is -returned instead. - -Examples: -| # Process ends cleanly | | | -| ${result} = | Wait For Process | example | -| Process Should Be Stopped | example | | -| Should Be Equal As Integers | ${result.rc} | 0 | -| # Process does not end | | | -| ${result} = | Wait For Process | timeout=42 secs | -| Process Should Be Running | | | -| Should Be Equal | ${result} | ${NONE} | -| # Kill non-ending process | | | -| ${result} = | Wait For Process | timeout=1min 30s | on_timeout=kill | -| Process Should Be Stopped | | | -| Should Be Equal As Integers | ${result.rc} | -9 | - - - - diff --git a/libspecs/REST_04a9321.libspec b/libspecs/REST_04a9321.libspec deleted file mode 100644 index c4e9d3a37..000000000 --- a/libspecs/REST_04a9321.libspec +++ /dev/null @@ -1,999 +0,0 @@ - - - -test suite -yes -RESTinstance is revolutionary and peaceful HTTP JSON API test library. - -It guides you to write more stable API tests relying on constraints (e.g. "people's email addresses must be valid"), rather than on values having the nature of change (e.g "the first created user's email is expected to stay foo@bar.com"). - -It bases on observations that we are more often concerned whether and which properties changed, when they should (not) had as this signals a bug, and less often what the actual values were/are. This also helps in tackling tests failing only because the test environment data was (not) reset. - -These resolutions in mind, it walks the path with you to contract-driven testing, from automatically generated JSON Schema data models to having formal OpenAPI service specs, as the both are essentially of the same origin. Both are also supported by major forces (Google, Microsoft, IBM et al. founded OpenAPI Initiative), and are language-agnostic which goes as well with Robot Framework. - -Contracts represent a common language within software teams, recognising our differing talents as designers, developers and test experts; or perhaps your new business companion wants to integrate to the system as well, but there is still some noise in signal - yet you don't feel very content providing them the source code, let alone explaining technical details, like which JSON properties are must in the response body, over the phone. - -Rest your mind. OSS got your back. - - -= Tutorial = - -There is a [https://github.com/asyrjasalo/RESTinstance/blob/master/examples/README.rst|step-by-step tutorial] in the making on using the library. - -For RESTful APIs, this library is intended to be used so that a test suite -is dedicated per endpoint. The test suite is divided into test cases so that -the differing operations (implemented by the endpoint via HTTP methods) -are tested with separate test cases. - - -= The state = - -The library represents its own state as JSON itself, as an array of objects. -Together these objects are commonly called instances. - -A single instance always has these three properties: - -- Request data as a JSON object -- Response data as a JSON object -- JSON Schema for the above two properties - -For each request-response, as soon as the response has been gotten -(and the request did not timeout), a new instance is created with these -properties. - -Request and response schemas are inferred if they are not already -expected by using expectation keywords. All the validations the library -implements are based on JSON Schema [http://json-schema.org/draft-07/json-schema-validation.html|draft-07] by default -but also [http://json-schema.org/draft-06/json-schema-validation.html|draft-06] and -[http://json-schema.org/draft-04/json-schema-validation.html|draft-04] can be configured. - -= The scope = - -All the assertion keywords, `Output` and `Output Schema` are effective -in the scope of the last instance. - -The scope of the library itself is test suite, meaning the instances -are persisted in memory until the execution of the test suite is finished, -regardless whether successfully or not. - -The last request and response is easiest seen with `Output`. -The output is written to terminal by default, as this is usually faster -for debugging purposes than finding the right keyword in ``log.html``. - -All instances can be output to a file with `RESTinstances` which can -be useful for additional logging. - - -url=None -ssl_verify=True -accept=application/json, */* -content_type=application/json -user_agent=RESTinstance/1.0.0rc4 -proxies={} -schema={} -spec={} -instances=[] - -Initialize self. See help(type(self)) for accurate signature. - - - - - -field -*enum -**validations - -*Asserts the field as JSON array.* - -The field consists of parts separated by spaces, the parts being -object property names or array indices starting from 0, and the root -being the instance created by the last request (see `Output` for it). - -For asserting deeply nested properties or multiple objects at once, -[http://goessner.net/articles/JsonPath|JSONPath] can be used with -[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], -the root being the response body. - -*Enum* - -The allowed values for the property as zero or more arguments. -If none given, the value of the property is not asserted. - -*Validations* - -The JSON Schema validation keywords -[https://json-schema.org/understanding-json-schema/reference/array.html|for array] -can be used. Validations are optional but update the schema of -the property (more accurate) if given. -`Output Schema` can be used for the current schema of the field. - -The keyword will fail if any of the given validations fail. -Given validations can be skipped altogether by adding ``skip=true``. -When skipped, the schema is updated but the validations are not ran. -Skip is intented mainly for debugging the updated schema before aborting. - -*Examples* -| `GET` | /users?_limit=10 | | | | # https://jsonplaceholder.typicode.com/users | -| `Array` | response body | | | -| `Array` | $ | | | | # same as above | -| `Array` | $ | minItems=1 | maxItems=10 | uniqueItems=true | - -assertions - - - - -field -value=None -**validations - -*Asserts the field as JSON boolean.* - -The field consists of parts separated by spaces, the parts being -object property names or array indices starting from 0, and the root -being the instance created by the last request (see `Output` for it). - -For asserting deeply nested properties or multiple objects at once, -[http://goessner.net/articles/JsonPath|JSONPath] can be used with -[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], the root being the response body. - -*Value* - -If given, the property value is validated in addition to the type. - -*Validations* - -The JSON Schema validation keywords -[https://json-schema.org/understanding-json-schema/reference/generic.html|common for all types] -can be used. Validations are optional but update the schema of -the property (more accurate) if given. -`Output Schema` can be used for the current schema of the field. - -The keyword will fail if any of the given validations fail. -Given validations can be skipped altogether by adding ``skip=true``. -When skipped, the schema is updated but the validations are not ran. -Skip is intented mainly for debugging the updated schema before aborting. - -*Examples* - -| `PUT` | /users/1 | { "verified_email": true } | | | # https://jsonplaceholder.typicode.com/users/1 | -| `Boolean` | response body verified_email | | | | # value is optional | -| `Boolean` | response body verified_email | true | -| `Boolean` | response body verified_email | ${True} | | | # same as above | -| `Boolean` | $.verified_email | true | | | # JSONPath alternative | -| `Boolean` | $.verified_email | true | enum=[1, "1"] | skip=true | # would pass | - -assertions - - - - - -*Resets the expectations for both request and response.* - -Using this keyword resets any expectations set with keywords -`Expect Response`, `Expect Response Body` and `Expect Request`. - -expectations - - - - -endpoint -timeout=None -allow_redirects=None -validate=True -headers=None - -*Sends a DELETE request to the endpoint.* - -The endpoint is joined with the URL given on library init (if any). -If endpoint starts with ``http://`` or ``https://``, it is assumed -an URL outside the tested API (which may affect logging). - -*Options* - -``timeout``: A number of seconds to wait for the response before failing the keyword. - -``allow_redirects``: If false, do not follow any redirects. - -``validate``: If false, skips any request and response validations set -by expectation keywords and a spec given on library init. - -``headers``: Headers as a JSON object to add or override for the request. - -*Examples* - -| `DELETE` | /users/6 | -| `DELETE` | http://localhost:8273/state | validate=false | - -http - - - - -schema -merge=False - -*Sets the schema to validate the request properties* - -Expectations are effective for following requests in the test suite, -or until they are reset or updated by using expectation keywords again. -On the test suite level (suite setup), they are best used for expecting -the endpoint wide properties that are common regardless of the tested -HTTP method, and on the test case level (test setup) to merge in -the HTTP method specific properties. - -`Expect Request` is intented to be used with tests that have some of the -request properties, e.g. body or query parameters, randomized ("fuzzing") -for validating that the sent values are within the expected scope. - -If the keyword is used, following HTTP keywords will fail when -their request properties are not valid against the expected schema. - -If the keyword is not used, a new schema is generated for each following -request for its ``body`` and ``query`` properties. Use `Output Schema` to output it and use it as an input to this keyword. - -*Options* - -``merge``: Merges the new schema with the current instead of replacing it - -*Examples* - -| `Expect Request` | ${CURDIR}/valid_payload.json | | # See `Output Schema` | -| `Expect Request` | { "body": { "required": ["id"] } } | merge=true | - -expectations - - - - -schema -merge=False - -*Sets the schema to validate the response properties.* - -Expectations are effective for following requests in the test suite, -or until they are reset or updated by using expectation keywords again. -On the test suite level (suite setup), they are best used for expecting -the endpoint wide properties that are common regardless of the tested -HTTP method, and on the test case level (test setup) to merge in -the HTTP method specific properties. - -`Expect Response` is intented to be used on the suite level to validate -the endpoint properties that hold regardless of the HTTP method, -such as body property types, responded headers, authentication, etc. - -If the keyword is used, following HTTP keywords will fail when -their response properties are not valid against the expected schema. - -If the keyword is not used, a new schema is inferred for each following -response for its ``body``. Use `Output Schema` to output it and use it -as an input to this keyword. - -*Options* - -``merge``: Merges the new schema with the current instead of replacing it - -*Examples* - -| `Expect Response` | ${CURDIR}/endpoint_data_model.json | | # See `Output Schema` | -| `Expect Response` | { "headers": { "required": ["Via"] } } | merge=true | -| `Expect Response` | { "seconds": { "maximum": "1.0" } } | merge=true | - -expectations - - - - -schema - -*Updates the schema to validate the response body properties.* - -Expectations are effective for following requests in the test suite, -or until they are reset or updated by using expectation keywords again. -On the test suite level (suite setup), they are best used for expecting -the endpoint wide properties that are common regardless of the tested -HTTP method, and on the test case level (test setup) to merge in -the HTTP method specific properties. - -`Expect Response Body` is intented to be used on the test case level, -to validate that the response body has the expected properties for -the particular HTTP method. Note that if something about response body -has been already expected with `Expected Response`, using this keyword -updates the expectations in terms of given response body properties. - -If the keyword is used, following HTTP keywords will fail if -their response body is not valid against the expected schema. - -If the keyword is not used, and no schema is already expected with -`Expect Response` for response ``body``, a new schema is inferred for it. -Use `Output Schema` to output it and use it as an input to this keyword. - -*Tips* - -Regardless whether the HTTP method returns one (an object) or many -(an array of objects), the validation of the object property types and features can usually be done to some extent on the test suite level -with `Expect Response`, then extended on the test case level using this -keyword. This helps in ensuring that the data model is unified between -the different HTTP methods. - -*Examples* - -| `Expect Response Body` | ${CURDIR}/user_properties.json | # See `Output Schema` | -| `Expect Response Body` | { "required": ["id", "token"] } | # Only these are required from this method | -| `Expect Response Body` | { "additionalProperties": false } | # Nothing extra should be responded by this method | - -expectations - - - - -endpoint -query=None -timeout=None -allow_redirects=None -validate=True -headers=None - -*Sends a GET request to the endpoint.* - -The endpoint is joined with the URL given on library init (if any). -If endpoint starts with ``http://`` or ``https://``, it is assumed -an URL outside the tested API (which may affect logging). - -*Options* - -``query``: Request query parameters as a JSON object or a dictionary. -Alternatively, query parameters can be given as part of endpoint as well. - -``timeout``: A number of seconds to wait for the response before failing the keyword. - -``allow_redirects``: If false, do not follow any redirects. - -``validate``: If false, skips any request and response validations set -by expectation keywords and a spec given on library init. - -``headers``: Headers as a JSON object to add or override for the request. - -*Examples* - -| `GET` | /users/1 | -| `GET` | /users | timeout=2.5 | -| `GET` | /users?_limit=2 | -| `GET` | /users | _limit=2 | -| `GET` | /users | { "_limit": "2" } | -| `GET` | https://jsonplaceholder.typicode.com/users | headers={ "Authentication": "" } | - -http - - - - -endpoint -timeout=None -allow_redirects=None -validate=True -headers=None - -*Sends a HEAD request to the endpoint.* - -The endpoint is joined with the URL given on library init (if any). -If endpoint starts with ``http://`` or ``https://``, it is assumed -an URL outside the tested API (which may affect logging). - -*Options* - -``timeout``: A number of seconds to wait for the response before failing the keyword. - -``allow_redirects``: If true, follow all redirects. -In contrary to other methods, no HEAD redirects are followed by default. - -``validate``: If false, skips any request and response validations set -by expectation keywords and a spec given on library init. - -``headers``: The headers to add or override for this request. - -*Examples* - -| `HEAD` | /users/1 | -| `HEAD` | /users/1 | timeout=0.5 | - -http - - - - -what - -*Converts the input to JSON and returns it.* - -Any of the following is accepted: - -- The path to JSON file -- Any scalar that can be interpreted as JSON -- A dictionary or a list - -*Examples* - -| ${payload} | `Input` | ${CURDIR}/payload.json | - -| ${object} | `Input` | { "name": "Julie Langford", "username": "jlangfor" } | -| ${object} | `Input` | ${dict} | - -| ${array} | `Input` | ["name", "username"] | -| ${array} | `Input` | ${list} | - -| ${boolean} | `Input` | true | -| ${boolean} | `Input` | ${True} | - -| ${number} | `Input` | 2.0 | -| ${number} | `Input` | ${2.0} | - -| ${string} | `Input` | Quotes are optional for strings | - -I/O - - - - -field -*enum -**validations - -*Asserts the field as JSON integer.* - -The field consists of parts separated by spaces, the parts being -object property names or array indices starting from 0, and the root -being the instance created by the last request (see `Output` for it). - -For asserting deeply nested properties or multiple objects at once, -[http://goessner.net/articles/JsonPath|JSONPath] can be used with -[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], -the root being the response body. - -*Enum* - -The allowed values for the property as zero or more arguments. -If none given, the value of the property is not asserted. - -*Validations* - -The JSON Schema validation keywords -[https://json-schema.org/understanding-json-schema/reference/numeric.html#integer|for numeric types] -can be used. Validations are optional but update the schema of -the property (more accurate) if given. -`Output Schema` can be used for the current schema of the field. - -The keyword will fail if any of the given validations fail. -Given validations can be skipped altogether by adding ``skip=true``. -When skipped, the schema is updated but the validations are not ran. -Skip is intented mainly for debugging the updated schema before aborting. - -*Examples* - -| `GET` | /users/1 | | # https://jsonplaceholder.typicode.com/users/1 | -| `Integer` | response body id | | # value is optional | -| `Integer` | response body id | 1 | -| `Integer` | response body id | ${1} | # same as above | -| `Integer` | $.id | 1 | # JSONPath alternative | - -| `GET` | /users?_limit=10 | | | | # https://jsonplaceholder.typicode.com/users | -| `Integer` | response body 0 id | 1 | | | -| `Integer` | $[0].id | 1 | | | # same as above | -| `Integer` | $[*].id | | minimum=1 | maximum=10 | - -assertions - - - - -field - -*Asserts the field does not exist.* - -The field consists of parts separated by spaces, the parts being -object property names or array indices starting from 0, and the root -being the instance created by the last request (see `Output` for it). - -For asserting deeply nested properties or multiple objects at once, -[http://goessner.net/articles/JsonPath|JSONPath] can be used with -[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], -the root being the response body. - -*Examples* - -| `GET` | /users/1 | # https://jsonplaceholder.typicode.com/users/1 | -| `Missing` | response body password | -| `Missing` | $.password | -| `Missing` | $..geo.elevation | # response body address geo elevation | - -| `GET` | /users | # https://jsonplaceholder.typicode.com/users | -| `Missing` | response body 0 password | -| `Missing` | $[*].password | -| `Missing` | $[*]..geo.elevation | - -assertions - - - - -field -**validations - -*Asserts the field as JSON null.* - -The field consists of parts separated by spaces, the parts being -object property names or array indices starting from 0, and the root -being the instance created by the last request (see `Output` for it). - -For asserting deeply nested properties or multiple objects at once, -[http://goessner.net/articles/JsonPath|JSONPath] can be used with -[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], -the root being the response body. - -*Validations* - -The JSON Schema validation keywords -[https://json-schema.org/understanding-json-schema/reference/generic.html|common for all types] -can be used. Validations are optional but update the schema of -the property (more accurate) if given. -`Output Schema` can be used for the current schema of the field. - -The keyword will fail if any of the given validations fail. -Given validations can be skipped altogether by adding ``skip=true``. -When skipped, the schema is updated but the validations are not ran. -Skip is intented mainly for debugging the updated schema before aborting. - -*Examples* - -| `PUT` | /users/1 | { "deactivated_at": null } | # https://jsonplaceholder.typicode.com/users/1 | -| `Null` | response body deactivated_at | | -| `Null` | $.deactivated_at | | # JSONPath alternative | - -assertions - - - - -field -*enum -**validations - -*Asserts the field as JSON number.* - -The field consists of parts separated by spaces, the parts being -object property names or array indices starting from 0, and the root -being the instance created by the last request (see `Output` for it). - -For asserting deeply nested properties or multiple objects at once, -[http://goessner.net/articles/JsonPath|JSONPath] can be used with -[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], -the root being the response body. - -*Enum* - -The allowed values for the property as zero or more arguments. -If none given, the value of the property is not asserted. - -*Validations* - -The JSON Schema validation keywords -[https://json-schema.org/understanding-json-schema/reference/numeric.html#number|for numeric types] can be used. Validations are optional but update the schema of -the property (more accurate) if given. -`Output Schema` can be used for the current schema of the field. - -The keyword will fail if any of the given validations fail. -Given validations can be skipped altogether by adding ``skip=true``. -When skipped, the schema is updated but the validations are not ran. -Skip is intented mainly for debugging the updated schema before aborting. - -*Examples* - -| `PUT` | /users/1 | { "allocation": 95.0 } | # https://jsonplaceholder.typicode.com/users/1 | -| `Number` | response body allocation | | # value is optional | -| `Number` | response body allocation | 95.0 | -| `Number` | response body allocation | ${95.0} | # same as above | -| `Number` | $.allocation | 95.0 | # JSONPath alternative | - -| `GET` | /users?_limit=10 | | | | # https://jsonplaceholder.typicode.com/users | -| `Number` | $[0].id | 1 | | | # integers are also numbers | -| `Number` | $[*].id | | minimum=1 | maximum=10 | - -assertions - - - - -field -*enum -**validations - -*Asserts the field as JSON object.* - -The field consists of parts separated by spaces, the parts being -object property names or array indices starting from 0, and the root -being the instance created by the last request (see `Output` for it). - -For asserting deeply nested properties or multiple objects at once, -[http://goessner.net/articles/JsonPath|JSONPath] can be used with -[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], the root being the response body. - -*Enum* - -The allowed values for the property as zero or more arguments. -If none given, the value of the property is not asserted. - -*Validations* - -The JSON Schema validation keywords -[https://json-schema.org/understanding-json-schema/reference/object.html|for object] -can be used. Validations are optional but update the schema of -the property (more accurate) if given. -`Output Schema` can be used for the current schema of the field. - -The keyword will fail if any of the given validations fail. -Given validations can be skipped altogether by adding ``skip=true``. -When skipped, the schema is updated but the validations are not ran. -Skip is intented mainly for debugging the updated schema before aborting. - -*Examples* - -| `GET` | /users/1 | | # https://jsonplaceholder.typicode.com/users/1 | -| `Object` | response body | | -| `Object` | response body | required=["id", "name"] | # can have other properties | - -| `GET` | /users/1 | | # https://jsonplaceholder.typicode.com/users/1 | -| `Object` | $.address.geo | required=["lat", "lng"] | -| `Object` | $..geo | additionalProperties=false | # cannot have other properties | - -assertions - - - - -endpoint -timeout=None -allow_redirects=None -validate=True -headers=None - -*Sends an OPTIONS request to the endpoint.* - -The endpoint is joined with the URL given on library init (if any). -If endpoint starts with ``http://`` or ``https://``, it is assumed -an URL outside the tested API (which may affect logging). - -*Options* - -``timeout``: A number of seconds to wait for the response before failing the keyword. - -``allow_redirects``: If false, do not follow any redirects. - -``validate``: If false, skips any request and response validations set -by expectation keywords and a spec given on library init. - -``headers``: Headers as a JSON object to add or override for the request. - -*Examples* - -| `OPTIONS` | /users/1 | -| `OPTIONS` | /users/1 | allow_redirects=false | - -http - - - - -what= -file_path=None -append=False -sort_keys=False - -*Outputs JSON to terminal or a file.* - -By default, the last request and response are output to terminal. - -The output can be limited further by: - -- The property of the last instance, e.g. ``request`` or ``response`` -- Any nested property that exists, similarly as for assertion keywords - -Also variables and values that can be converted to JSON are accepted, -in which case those are output as JSON instead. - -*Options* - -``file_path``: The JSON is written to a file instead of terminal. -The file is created if it does not exist. - -``append``: If true, the JSON is appended to the given file -instead of truncating it first. - -``sort_keys``: If true, the JSON is sorted alphabetically by -property names before it is output. - -*Examples* - -| `Output` | response | # only the response is output | -| `Output` | response body | # only the response body is output | -| `Output` | $.email | # only the response body property is output | -| `Output` | $..geo | # only the nested response body property is output | - -| `Output` | request | # only the request is output | -| `Output` | request headers | # only the request headers are output | -| `Output` | request headers Authentication | # only this header is output | - -| `Output` | response body | ${CURDIR}/response_body.json | | # write the response body to a file | -| `Output` | response seconds | ${CURDIR}/response_delays.log | append=true | # keep track of response delays in a file | - -I/O - - - - -what= -file_path=None -append=False -sort_keys=False - -*Outputs JSON Schema to terminal or a file.* - -By default, the schema is output for the last request and response. - -The output can be limited further by: - -- The property of the last instance, e.g. ``request`` or ``response`` -- Any nested property that exists, similarly as for assertion keywords - -Also variables and values that can be converted to JSON are accepted, -in which case the schema is generated for those instead. - -*Options* - -``file_path``: The JSON Schema is written to a file instead of terminal. -The file is created if it does not exist. - -``append``: If true, the JSON Schema is appended to the given file -instead of truncating it first. - -``sort_keys``: If true, the JSON Schema is sorted alphabetically by -property names before it is output. - -*Examples* - -| `Output Schema` | response | ${CURDIR}/response_schema.json | # Write a file to use with `Expect Response` | -| `Output Schema` | response body | ${CURDIR}/response_body_schema.json | # Write a file to use with `Expect Response Body` | - -| `Output Schema` | $.email | # only the schema for one response body property | -| `Output Schema` | $..geo | # only the schema for the nested response body property | - -I/O - - - - -endpoint -body=None -timeout=None -allow_redirects=None -validate=True -headers=None - -*Sends a PATCH request to the endpoint.* - -The endpoint is joined with the URL given on library init (if any). -If endpoint starts with ``http://`` or ``https://``, it is assumed -an URL outside the tested API (which may affect logging). - -*Options* - -``body``: Request body parameters as a JSON object, file or a dictionary. - -``timeout``: A number of seconds to wait for the response before failing the keyword. - -``allow_redirects``: If false, do not follow any redirects. - -``validate``: If false, skips any request and response validations set -by expectation keywords and a spec given on library init. - -``headers``: Headers as a JSON object to add or override for the request. - -*Examples* - -| `PATCH` | /users/4 | { "name": "Clementine Bauch" } | -| `PATCH` | /users/4 | ${dict} | - -http - - - - -endpoint -body=None -timeout=None -allow_redirects=None -validate=True -headers=None - -*Sends a POST request to the endpoint.* - -The endpoint is joined with the URL given on library init (if any). -If endpoint starts with ``http://`` or ``https://``, it is assumed -an URL outside the tested API (which may affect logging). - -*Options* - -``body``: Request body parameters as a JSON object, file or a dictionary. - -``timeout``: A number of seconds to wait for the response before failing the keyword. - -``allow_redirects``: If false, do not follow any redirects. - -``validate``: If false, skips any request and response validations set -by expectation keywords and a spec given on library init. - -``headers``: Headers as a JSON object to add or override for the request. - -*Examples* - -| `POST` | /users | { "id": 11, "name": "Gil Alexander" } | -| `POST` | /users | ${CURDIR}/new_user.json | - -http - - - - -endpoint -body=None -timeout=None -allow_redirects=None -validate=True -headers=None - -*Sends a PUT request to the endpoint.* - -The endpoint is joined with the URL given on library init (if any). -If endpoint starts with ``http://`` or ``https://``, it is assumed -an URL outside the tested API (which may affect logging). - -*Options* - -``body``: Request body parameters as a JSON object, file or a dictionary. - -``timeout``: A number of seconds to wait for the response before failing the keyword. - -``allow_redirects``: If false, do not follow any redirects. - -``validate``: If false, skips any request and response validations set -by expectation keywords and a spec given on library init. - -``headers``: Headers as a JSON object to add or override for the request. - -*Examples* - -| `PUT` | /users/2 | { "name": "Julie Langford", "username": "jlangfor" } | -| `PUT` | /users/2 | ${dict} | - -http - - - - -file_path=None -sort_keys=False - -*Writes the instances as JSON to a file.* - -The instances are written to file as a JSON array of JSON objects, -each object representing a single instance, and having three properties: - -- the request -- the response -- the schema for both, which have been updated according to the tests - -The file is created if it does not exist, otherwise it is truncated. - -*Options* - -``sort_keys``: If true, the instances are sorted alphabetically by -property names. - -*Examples* - -| `Rest Instances` | ${CURDIR}/log.json | - -I/O - - - - -cert - -*Sets the client cert for the requests.* - -The cert is either a path to a .pem file, or a JSON array, or a list -having the cert path and the key path. - -Values ``null`` and ``${None}`` can be used for clearing the cert. - -*Examples* - -| `Set Client Cert` | ${CURDIR}/client.pem | -| `Set Client Cert` | ["${CURDIR}/client.cert", "${CURDIR}/client.key"] | -| `Set Client Cert` | ${paths_list} | - -settings - - - - -headers - -*Sets new request headers or updates the existing.* - -``headers``: The headers to add or update as a JSON object or a -dictionary. - -*Examples* - -| `Set Headers` | { "authorization": "Basic QWxhZGRpbjpPcGVuU2VzYW1"} | -| `Set Headers` | { "Accept-Encoding": "identity"} | -| `Set Headers` | ${auth_dict} | - -settings - - - - -field -*enum -**validations - -*Asserts the field as JSON string.* - -The field consists of parts separated by spaces, the parts being -object property names or array indices starting from 0, and the root -being the instance created by the last request (see `Output` for it). - -For asserting deeply nested properties or multiple objects at once, -[http://goessner.net/articles/JsonPath|JSONPath] can be used with -[https://github.com/h2non/jsonpath-ng#jsonpath-syntax|supported JSONPath expressions], the root being the response body. - -*Enum* - -The allowed values for the property as zero or more arguments. -If none given, the value of the property is not asserted. - -*Validations* - -The JSON Schema validation keywords -[https://json-schema.org/understanding-json-schema/reference/string.html|for string] -can be used. Validations are optional but update the schema of -the property (more accurate) if given. -`Output Schema` can be used for the current schema of the field. - -The keyword will fail if any of the given validations fail. -Given validations can be skipped altogether by adding ``skip=true``. -When skipped, the schema is updated but the validations are not ran. -Skip is intented mainly for debugging the updated schema before aborting. - -*Examples* - -| `GET` | /users/1 | | | # https://jsonplaceholder.typicode.com/users/1 | -| `String` | response body email | | | # value is optional | -| `String` | response body email | Sincere@april.biz | -| `String` | $.email | Sincere@april.biz | | # JSONPath alternative | -| `String` | $.email | | format=email | - -| `GET` | /users?_limit=10 | | | # https://jsonplaceholder.typicode.com/users | -| `String` | response body 0 email | Sincere@april.biz | -| `String` | $[0].email | Sincere@april.biz | | # same as above | -| `String` | $[*].email | | format=email | - -assertions - - - diff --git a/libspecs/Reserved.libspec b/libspecs/Reserved.libspec deleted file mode 100644 index 54f85645e..000000000 --- a/libspecs/Reserved.libspec +++ /dev/null @@ -1,87 +0,0 @@ - - - -global -yes -Documentation for library ``Reserved``. - - -*varargs - - - - - - - -*varargs - - - - - - - -*varargs - - - - - - - -*varargs - - - - - - - -*varargs - - - - - - - -*varargs - - - - - - - -*varargs - - - - - - - -*varargs - - - - - - - -*varargs - - - - - - - -*varargs - - - - - - diff --git a/libspecs/Screenshot.libspec b/libspecs/Screenshot.libspec deleted file mode 100644 index 5703b5b9e..000000000 --- a/libspecs/Screenshot.libspec +++ /dev/null @@ -1,132 +0,0 @@ - - -3.1 -test suite -yes -Test library for taking screenshots on the machine where tests are run. - -Notice that successfully taking screenshots requires tests to be run with -a physical or virtual display. - -= Using with Python = - -How screenshots are taken when using Python depends on the operating -system. On OSX screenshots are taken using the built-in ``screencapture`` -utility. On other operating systems you need to have one of the following -tools or Python modules installed. You can specify the tool/module to use -when `importing` the library. If no tool or module is specified, the first -one found will be used. - -- wxPython :: http://wxpython.org :: Required also by RIDE so many Robot - Framework users already have this module installed. -- PyGTK :: http://pygtk.org :: This module is available by default on most - Linux distributions. -- Pillow :: http://python-pillow.github.io :: - Only works on Windows. Also the original PIL package is supported. -- Scrot :: http://en.wikipedia.org/wiki/Scrot :: Not used on Windows. - Install with ``apt-get install scrot`` or similar. - -Using ``screencapture`` on OSX and specifying explicit screenshot module -are new in Robot Framework 2.9.2. The support for using ``scrot`` is new -in Robot Framework 3.0. - -= Using with Jython and IronPython = - -With Jython and IronPython this library uses APIs provided by JVM and .NET -platforms, respectively. These APIs are always available and thus no -external modules are needed. - -= Where screenshots are saved = - -By default screenshots are saved into the same directory where the Robot -Framework log file is written. If no log is created, screenshots are saved -into the directory where the XML output file is written. - -It is possible to specify a custom location for screenshots using -``screenshot_directory`` argument when `importing` the library and -using `Set Screenshot Directory` keyword during execution. It is also -possible to save screenshots using an absolute path. - - -screenshot_directory=None -screenshot_module=None - -Configure where screenshots are saved. - -If ``screenshot_directory`` is not given, screenshots are saved into -same directory as the log file. The directory can also be set using -`Set Screenshot Directory` keyword. - -``screenshot_module`` specifies the module or tool to use when using -this library on Python outside OSX. Possible values are ``wxPython``, -``PyGTK``, ``PIL`` and ``scrot``, case-insensitively. If no value is -given, the first module/tool found is used in that order. See `Using -with Python` for more information. - -Examples (use only one of these): -| =Setting= | =Value= | =Value= | -| Library | Screenshot | | -| Library | Screenshot | ${TEMPDIR} | -| Library | Screenshot | screenshot_module=PyGTK | - -Specifying explicit screenshot module is new in Robot Framework 2.9.2. - - - - - -path - -Sets the directory where screenshots are saved. - -It is possible to use ``/`` as a path separator in all operating -systems. Path to the old directory is returned. - -The directory can also be set in `importing`. - - - - - -name=screenshot -width=800px - -Takes a screenshot in JPEG format and embeds it into the log file. - -Name of the file where the screenshot is stored is derived from the -given ``name``. If the ``name`` ends with extension ``.jpg`` or -``.jpeg``, the screenshot will be stored with that exact name. -Otherwise a unique name is created by adding an underscore, a running -index and an extension to the ``name``. - -The name will be interpreted to be relative to the directory where -the log file is written. It is also possible to use absolute paths. -Using ``/`` as a path separator works in all operating systems. - -``width`` specifies the size of the screenshot in the log file. - -Examples: (LOGDIR is determined automatically by the library) -| Take Screenshot | | | # LOGDIR/screenshot_1.jpg (index automatically incremented) | -| Take Screenshot | mypic | | # LOGDIR/mypic_1.jpg (index automatically incremented) | -| Take Screenshot | ${TEMPDIR}/mypic | | # /tmp/mypic_1.jpg (index automatically incremented) | -| Take Screenshot | pic.jpg | | # LOGDIR/pic.jpg (always uses this file) | -| Take Screenshot | images/login.jpg | 80% | # Specify both name and width. | -| Take Screenshot | width=550px | | # Specify only width. | - -The path where the screenshot is saved is returned. - - - - - -name=screenshot - -Takes a screenshot and links it from the log file. - -This keyword is otherwise identical to `Take Screenshot` but the saved -screenshot is not embedded into the log file. The screenshot is linked -so it is nevertheless easily available. - - - - diff --git a/libspecs/String.libspec b/libspecs/String.libspec deleted file mode 100644 index f82c78ea9..000000000 --- a/libspecs/String.libspec +++ /dev/null @@ -1,722 +0,0 @@ - - -3.1 -global -yes -A test library for string manipulation and verification. - -``String`` is Robot Framework's standard library for manipulating -strings (e.g. `Replace String Using Regexp`, `Split To Lines`) and -verifying their contents (e.g. `Should Be String`). - -Following keywords from ``BuiltIn`` library can also be used with strings: - -- `Catenate` -- `Get Length` -- `Length Should Be` -- `Should (Not) Be Empty` -- `Should (Not) Be Equal (As Strings/Integers/Numbers)` -- `Should (Not) Match (Regexp)` -- `Should (Not) Contain` -- `Should (Not) Start With` -- `Should (Not) End With` -- `Convert To String` -- `Convert To Bytes` - - -string - -Converts string to lowercase. - -Examples: -| ${str1} = | Convert To Lowercase | ABC | -| ${str2} = | Convert To Lowercase | 1A2c3D | -| Should Be Equal | ${str1} | abc | -| Should Be Equal | ${str2} | 1a2c3d | - - - - - -string - -Converts string to uppercase. - -Examples: -| ${str1} = | Convert To Uppercase | abc | -| ${str2} = | Convert To Uppercase | 1a2C3d | -| Should Be Equal | ${str1} | ABC | -| Should Be Equal | ${str2} | 1A2C3D | - - - - - -bytes -encoding -errors=strict - -Decodes the given ``bytes`` to a Unicode string using the given ``encoding``. - -``errors`` argument controls what to do if decoding some bytes fails. -All values accepted by ``decode`` method in Python are valid, but in -practice the following values are most useful: - -- ``strict``: fail if characters cannot be decoded (default) -- ``ignore``: ignore characters that cannot be decoded -- ``replace``: replace characters that cannot be decoded with - a replacement character - -Examples: -| ${string} = | Decode Bytes To String | ${bytes} | UTF-8 | -| ${string} = | Decode Bytes To String | ${bytes} | ASCII | errors=ignore | - -Use `Encode String To Bytes` if you need to convert Unicode strings to -byte strings, and `Convert To String` in ``BuiltIn`` if you need to -convert arbitrary objects to Unicode strings. - - - - - -string -encoding -errors=strict - -Encodes the given Unicode ``string`` to bytes using the given ``encoding``. - -``errors`` argument controls what to do if encoding some characters fails. -All values accepted by ``encode`` method in Python are valid, but in -practice the following values are most useful: - -- ``strict``: fail if characters cannot be encoded (default) -- ``ignore``: ignore characters that cannot be encoded -- ``replace``: replace characters that cannot be encoded with - a replacement character - -Examples: -| ${bytes} = | Encode String To Bytes | ${string} | UTF-8 | -| ${bytes} = | Encode String To Bytes | ${string} | ASCII | errors=ignore | - -Use `Convert To Bytes` in ``BuiltIn`` if you want to create bytes based -on character or integer sequences. Use `Decode Bytes To String` if you -need to convert byte strings to Unicode strings and `Convert To String` -in ``BuiltIn`` if you need to convert arbitrary objects to Unicode. - - - - - -string -marker - -Returns contents of the ``string`` before the first occurrence of ``marker``. - -If the ``marker`` is not found, whole string is returned. - -See also `Fetch From Right`, `Split String` and `Split String -From Right`. - - - - - -string -marker - -Returns contents of the ``string`` after the last occurrence of ``marker``. - -If the ``marker`` is not found, whole string is returned. - -See also `Fetch From Left`, `Split String` and `Split String -From Right`. - - - - - -template -*positional -**named - -Formats a ``template`` using the given ``positional`` and ``named`` arguments. - -The template can be either be a string or an absolute path to -an existing file. In the latter case the file is read and its contents -are used as the template. If the template file contains non-ASCII -characters, it must be encoded using UTF-8. - -The template is formatted using Python's -[https://docs.python.org/library/string.html#format-string-syntax|format -string syntax]. Placeholders are marked using ``{}`` with possible -field name and format specification inside. Literal curly braces -can be inserted by doubling them like `{{` and `}}`. - -Examples: -| ${to} = | Format String | To: {} <{}> | ${user} | ${email} | -| ${to} = | Format String | To: {name} <{email}> | name=${name} | email=${email} | -| ${to} = | Format String | To: {user.name} <{user.email}> | user=${user} | -| ${xx} = | Format String | {:*^30} | centered | -| ${yy} = | Format String | {0:{width}{base}} | ${42} | base=X | width=10 | -| ${zz} = | Format String | ${CURDIR}/template.txt | positional | named=value | - -New in Robot Framework 3.1. - - - - - -length=8 -chars=[LETTERS][NUMBERS] - -Generates a string with a desired ``length`` from the given ``chars``. - -The population sequence ``chars`` contains the characters to use -when generating the random string. It can contain any -characters, and it is possible to use special markers -explained in the table below: - -| = Marker = | = Explanation = | -| ``[LOWER]`` | Lowercase ASCII characters from ``a`` to ``z``. | -| ``[UPPER]`` | Uppercase ASCII characters from ``A`` to ``Z``. | -| ``[LETTERS]`` | Lowercase and uppercase ASCII characters. | -| ``[NUMBERS]`` | Numbers from 0 to 9. | - -Examples: -| ${ret} = | Generate Random String | -| ${low} = | Generate Random String | 12 | [LOWER] | -| ${bin} = | Generate Random String | 8 | 01 | -| ${hex} = | Generate Random String | 4 | [NUMBERS]abcdef | - - - - - -string -line_number - -Returns the specified line from the given ``string``. - -Line numbering starts from 0 and it is possible to use -negative indices to refer to lines from the end. The line is -returned without the newline character. - -Examples: -| ${first} = | Get Line | ${string} | 0 | -| ${2nd last} = | Get Line | ${string} | -2 | - -Use `Split To Lines` if all lines are needed. - - - - - -string - -Returns and logs the number of lines in the given string. - - - - - -string -pattern -case_insensitive=False - -Returns lines of the given ``string`` that contain the ``pattern``. - -The ``pattern`` is always considered to be a normal string, not a glob -or regexp pattern. A line matches if the ``pattern`` is found anywhere -on it. - -The match is case-sensitive by default, but giving ``case_insensitive`` -a true value makes it case-insensitive. The value is considered true -if it is a non-empty string that is not equal to ``false``, ``none`` or -``no``. If the value is not a string, its truth value is got directly -in Python. Considering ``none`` false is new in RF 3.0.3. - -Lines are returned as one string catenated back together with -newlines. Possible trailing newline is never returned. The -number of matching lines is automatically logged. - -Examples: -| ${lines} = | Get Lines Containing String | ${result} | An example | -| ${ret} = | Get Lines Containing String | ${ret} | FAIL | case-insensitive | - -See `Get Lines Matching Pattern` and `Get Lines Matching Regexp` -if you need more complex pattern matching. - - - - - -string -pattern -case_insensitive=False - -Returns lines of the given ``string`` that match the ``pattern``. - -The ``pattern`` is a _glob pattern_ where: -| ``*`` | matches everything | -| ``?`` | matches any single character | -| ``[chars]`` | matches any character inside square brackets (e.g. ``[abc]`` matches either ``a``, ``b`` or ``c``) | -| ``[!chars]`` | matches any character not inside square brackets | - -A line matches only if it matches the ``pattern`` fully. - -The match is case-sensitive by default, but giving ``case_insensitive`` -a true value makes it case-insensitive. The value is considered true -if it is a non-empty string that is not equal to ``false``, ``none`` or -``no``. If the value is not a string, its truth value is got directly -in Python. Considering ``none`` false is new in RF 3.0.3. - -Lines are returned as one string catenated back together with -newlines. Possible trailing newline is never returned. The -number of matching lines is automatically logged. - -Examples: -| ${lines} = | Get Lines Matching Pattern | ${result} | Wild???? example | -| ${ret} = | Get Lines Matching Pattern | ${ret} | FAIL: * | case_insensitive=true | - -See `Get Lines Matching Regexp` if you need more complex -patterns and `Get Lines Containing String` if searching -literal strings is enough. - - - - - -string -pattern -partial_match=False - -Returns lines of the given ``string`` that match the regexp ``pattern``. - -See `BuiltIn.Should Match Regexp` for more information about -Python regular expression syntax in general and how to use it -in Robot Framework test data in particular. - -By default lines match only if they match the pattern fully, but -partial matching can be enabled by giving the ``partial_match`` -argument a true value. The value is considered true -if it is a non-empty string that is not equal to ``false``, ``none`` or -``no``. If the value is not a string, its truth value is got directly -in Python. Considering ``none`` false is new in RF 3.0.3. - -If the pattern is empty, it matches only empty lines by default. -When partial matching is enabled, empty pattern matches all lines. - -Notice that to make the match case-insensitive, you need to prefix -the pattern with case-insensitive flag ``(?i)``. - -Lines are returned as one string concatenated back together with -newlines. Possible trailing newline is never returned. The -number of matching lines is automatically logged. - -Examples: -| ${lines} = | Get Lines Matching Regexp | ${result} | Reg\\w{3} example | -| ${lines} = | Get Lines Matching Regexp | ${result} | Reg\\w{3} example | partial_match=true | -| ${ret} = | Get Lines Matching Regexp | ${ret} | (?i)FAIL: .* | - -See `Get Lines Matching Pattern` and `Get Lines Containing -String` if you do not need full regular expression powers (and -complexity). - -``partial_match`` argument is new in Robot Framework 2.9. In earlier - versions exact match was always required. - - - - - -string -pattern -*groups - -Returns a list of all non-overlapping matches in the given string. - -``string`` is the string to find matches from and ``pattern`` is the -regular expression. See `BuiltIn.Should Match Regexp` for more -information about Python regular expression syntax in general and how -to use it in Robot Framework test data in particular. - -If no groups are used, the returned list contains full matches. If one -group is used, the list contains only contents of that group. If -multiple groups are used, the list contains tuples that contain -individual group contents. All groups can be given as indexes (starting -from 1) and named groups also as names. - -Examples: -| ${no match} = | Get Regexp Matches | the string | xxx | -| ${matches} = | Get Regexp Matches | the string | t.. | -| ${one group} = | Get Regexp Matches | the string | t(..) | 1 | -| ${named group} = | Get Regexp Matches | the string | t(?P<name>..) | name | -| ${two groups} = | Get Regexp Matches | the string | t(.)(.) | 1 | 2 | -=> -| ${no match} = [] -| ${matches} = ['the', 'tri'] -| ${one group} = ['he', 'ri'] -| ${named group} = ['he', 'ri'] -| ${two groups} = [('h', 'e'), ('r', 'i')] - -New in Robot Framework 2.9. - - - - - -string -start -end=None - -Returns a substring from ``start`` index to ``end`` index. - -The ``start`` index is inclusive and ``end`` is exclusive. -Indexing starts from 0, and it is possible to use -negative indices to refer to characters from the end. - -Examples: -| ${ignore first} = | Get Substring | ${string} | 1 | | -| ${ignore last} = | Get Substring | ${string} | | -1 | -| ${5th to 10th} = | Get Substring | ${string} | 4 | 10 | -| ${first two} = | Get Substring | ${string} | | 1 | -| ${last two} = | Get Substring | ${string} | -2 | | - - - - - -string -*removables - -Removes all ``removables`` from the given ``string``. - -``removables`` are used as literal strings. Each removable will be -matched to a temporary string from which preceding removables have -been already removed. See second example below. - -Use `Remove String Using Regexp` if more powerful pattern matching is -needed. If only a certain number of matches should be removed, -`Replace String` or `Replace String Using Regexp` can be used. - -A modified version of the string is returned and the original -string is not altered. - -Examples: -| ${str} = | Remove String | Robot Framework | work | -| Should Be Equal | ${str} | Robot Frame | -| ${str} = | Remove String | Robot Framework | o | bt | -| Should Be Equal | ${str} | R Framewrk | - - - - - -string -*patterns - -Removes ``patterns`` from the given ``string``. - -This keyword is otherwise identical to `Remove String`, but -the ``patterns`` to search for are considered to be a regular -expression. See `Replace String Using Regexp` for more information -about the regular expression syntax. That keyword can also be -used if there is a need to remove only a certain number of -occurrences. - - - - - -string -search_for -replace_with -count=-1 - -Replaces ``search_for`` in the given ``string`` with ``replace_with``. - -``search_for`` is used as a literal string. See `Replace String -Using Regexp` if more powerful pattern matching is needed. -If you need to just remove a string see `Remove String`. - -If the optional argument ``count`` is given, only that many -occurrences from left are replaced. Negative ``count`` means -that all occurrences are replaced (default behaviour) and zero -means that nothing is done. - -A modified version of the string is returned and the original -string is not altered. - -Examples: -| ${str} = | Replace String | Hello, world! | world | tellus | -| Should Be Equal | ${str} | Hello, tellus! | | | -| ${str} = | Replace String | Hello, world! | l | ${EMPTY} | count=1 | -| Should Be Equal | ${str} | Helo, world! | | | - - - - - -string -pattern -replace_with -count=-1 - -Replaces ``pattern`` in the given ``string`` with ``replace_with``. - -This keyword is otherwise identical to `Replace String`, but -the ``pattern`` to search for is considered to be a regular -expression. See `BuiltIn.Should Match Regexp` for more -information about Python regular expression syntax in general -and how to use it in Robot Framework test data in particular. - -If you need to just remove a string see `Remove String Using Regexp`. - -Examples: -| ${str} = | Replace String Using Regexp | ${str} | 20\\d\\d-\\d\\d-\\d\\d | <DATE> | -| ${str} = | Replace String Using Regexp | ${str} | (Hello|Hi) | ${EMPTY} | count=1 | - - - - - -item -msg=None - -Fails if the given ``item`` is not a byte string. - -Use `Should Be Unicode String` if you want to verify the ``item`` is a -Unicode string, or `Should Be String` if both Unicode and byte strings -are fine. See `Should Be String` for more details about Unicode strings -and byte strings. - -The default error message can be overridden with the optional -``msg`` argument. - - - - - -string -msg=None - -Fails if the given ``string`` is not in lowercase. - -For example, ``'string'`` and ``'with specials!'`` would pass, and -``'String'``, ``''`` and ``' '`` would fail. - -The default error message can be overridden with the optional -``msg`` argument. - -See also `Should Be Uppercase` and `Should Be Titlecase`. - - - - - -item -msg=None - -Fails if the given ``item`` is not a string. - -With Python 2, except with IronPython, this keyword passes regardless -is the ``item`` a Unicode string or a byte string. Use `Should Be -Unicode String` or `Should Be Byte String` if you want to restrict -the string type. Notice that with Python 2, except with IronPython, -``'string'`` creates a byte string and ``u'unicode'`` must be used to -create a Unicode string. - -With Python 3 and IronPython, this keyword passes if the string is -a Unicode string but fails if it is bytes. Notice that with both -Python 3 and IronPython, ``'string'`` creates a Unicode string, and -``b'bytes'`` must be used to create a byte string. - -The default error message can be overridden with the optional -``msg`` argument. - - - - - -string -msg=None - -Fails if given ``string`` is not title. - -``string`` is a titlecased string if there is at least one -character in it, uppercase characters only follow uncased -characters and lowercase characters only cased ones. - -For example, ``'This Is Title'`` would pass, and ``'Word In UPPER'``, -``'Word In lower'``, ``''`` and ``' '`` would fail. - -The default error message can be overridden with the optional -``msg`` argument. - -See also `Should Be Uppercase` and `Should Be Lowercase`. - - - - - -item -msg=None - -Fails if the given ``item`` is not a Unicode string. - -Use `Should Be Byte String` if you want to verify the ``item`` is a -byte string, or `Should Be String` if both Unicode and byte strings -are fine. See `Should Be String` for more details about Unicode -strings and byte strings. - -The default error message can be overridden with the optional -``msg`` argument. - - - - - -string -msg=None - -Fails if the given ``string`` is not in uppercase. - -For example, ``'STRING'`` and ``'WITH SPECIALS!'`` would pass, and -``'String'``, ``''`` and ``' '`` would fail. - -The default error message can be overridden with the optional -``msg`` argument. - -See also `Should Be Titlecase` and `Should Be Lowercase`. - - - - - -item -msg=None - -Fails if the given ``item`` is a string. - -See `Should Be String` for more details about Unicode strings and byte -strings. - -The default error message can be overridden with the optional -``msg`` argument. - - - - - -string -separator=None -max_split=-1 - -Splits the ``string`` using ``separator`` as a delimiter string. - -If a ``separator`` is not given, any whitespace string is a -separator. In that case also possible consecutive whitespace -as well as leading and trailing whitespace is ignored. - -Split words are returned as a list. If the optional -``max_split`` is given, at most ``max_split`` splits are done, and -the returned list will have maximum ``max_split + 1`` elements. - -Examples: -| @{words} = | Split String | ${string} | -| @{words} = | Split String | ${string} | ,${SPACE} | -| ${pre} | ${post} = | Split String | ${string} | :: | 1 | - -See `Split String From Right` if you want to start splitting -from right, and `Fetch From Left` and `Fetch From Right` if -you only want to get first/last part of the string. - - - - - -string -separator=None -max_split=-1 - -Splits the ``string`` using ``separator`` starting from right. - -Same as `Split String`, but splitting is started from right. This has -an effect only when ``max_split`` is given. - -Examples: -| ${first} | ${rest} = | Split String | ${string} | - | 1 | -| ${rest} | ${last} = | Split String From Right | ${string} | - | 1 | - - - - - -string - -Splits the given ``string`` to characters. - -Example: -| @{characters} = | Split String To Characters | ${string} | - - - - - -string -start=0 -end=None - -Splits the given string to lines. - -It is possible to get only a selection of lines from ``start`` -to ``end`` so that ``start`` index is inclusive and ``end`` is -exclusive. Line numbering starts from 0, and it is possible to -use negative indices to refer to lines from the end. - -Lines are returned without the newlines. The number of -returned lines is automatically logged. - -Examples: -| @{lines} = | Split To Lines | ${manylines} | | | -| @{ignore first} = | Split To Lines | ${manylines} | 1 | | -| @{ignore last} = | Split To Lines | ${manylines} | | -1 | -| @{5th to 10th} = | Split To Lines | ${manylines} | 4 | 10 | -| @{first two} = | Split To Lines | ${manylines} | | 1 | -| @{last two} = | Split To Lines | ${manylines} | -2 | | - -Use `Get Line` if you only need to get a single line. - - - - - -string -mode=both -characters=None - -Remove leading and/or trailing whitespaces from the given string. - -``mode`` is either ``left`` to remove leading characters, ``right`` to -remove trailing characters, ``both`` (default) to remove the -characters from both sides of the string or ``none`` to return the -unmodified string. - -If the optional ``characters`` is given, it must be a string and the -characters in the string will be stripped in the string. Please note, -that this is not a substring to be removed but a list of characters, -see the example below. - -Examples: -| ${stripped}= | Strip String | ${SPACE}Hello${SPACE} | | -| Should Be Equal | ${stripped} | Hello | | -| ${stripped}= | Strip String | ${SPACE}Hello${SPACE} | mode=left | -| Should Be Equal | ${stripped} | Hello${SPACE} | | -| ${stripped}= | Strip String | aabaHelloeee | characters=abe | -| Should Be Equal | ${stripped} | Hello | | - -New in Robot Framework 3.0. - - - - diff --git a/libspecs/Telnet.libspec b/libspecs/Telnet.libspec deleted file mode 100644 index 0e1aa812a..000000000 --- a/libspecs/Telnet.libspec +++ /dev/null @@ -1,744 +0,0 @@ - - -3.1 -test suite -yes -A test library providing communication over Telnet connections. - -``Telnet`` is Robot Framework's standard library that makes it possible to -connect to Telnet servers and execute commands on the opened connections. - -== Table of contents == - -- `Connections` -- `Writing and reading` -- `Configuration` -- `Terminal emulation` -- `Logging` -- `Time string format` -- `Boolean arguments` -- `Importing` -- `Shortcuts` -- `Keywords` - -= Connections = - -The first step of using ``Telnet`` is opening a connection with `Open -Connection` keyword. Typically the next step is logging in with `Login` -keyword, and in the end the opened connection can be closed with `Close -Connection`. - -It is possible to open multiple connections and switch the active one -using `Switch Connection`. `Close All Connections` can be used to close -all the connections, which is especially useful in suite teardowns to -guarantee that all connections are always closed. - -= Writing and reading = - -After opening a connection and possibly logging in, commands can be -executed or text written to the connection for other reasons using `Write` -and `Write Bare` keywords. The main difference between these two is that -the former adds a [#Configuration|configurable newline] after the text -automatically. - -After writing something to the connection, the resulting output can be -read using `Read`, `Read Until`, `Read Until Regexp`, and `Read Until -Prompt` keywords. Which one to use depends on the context, but the latest -one is often the most convenient. - -As a convenience when running a command, it is possible to use `Execute -Command` that simply uses `Write` and `Read Until Prompt` internally. -`Write Until Expected Output` is useful if you need to wait until writing -something produces a desired output. - -Written and read text is automatically encoded/decoded using a -[#Configuration|configured encoding]. - -The ANSI escape codes, like cursor movement and color codes, are -normally returned as part of the read operation. If an escape code occurs -in middle of a search pattern it may also prevent finding the searched -string. `Terminal emulation` can be used to process these -escape codes as they would be if a real terminal would be in use. - -= Configuration = - -Many aspects related the connections can be easily configured either -globally or per connection basis. Global configuration is done when -[#Importing|library is imported], and these values can be overridden per -connection by `Open Connection` or with setting specific keywords -`Set Timeout`, `Set Newline`, `Set Prompt`, `Set Encoding`, -`Set Default Log Level` and `Set Telnetlib Log Level`. - -Values of ``environ_user``, ``window_size``, ``terminal_emulation``, and -``terminal_type`` can not be changed after opening the connection. - -== Timeout == - -Timeout defines how long is the maximum time to wait when reading -output. It is used internally by `Read Until`, `Read Until Regexp`, -`Read Until Prompt`, and `Login` keywords. The default value is 3 seconds. - -== Connection Timeout == - -Connection Timeout defines how long is the maximum time to wait when -opening the telnet connection. It is used internally by `Open Connection`. -The default value is the system global default timeout. - -New in Robot Framework 2.9.2. - -== Newline == - -Newline defines which line separator `Write` keyword should use. The -default value is ``CRLF`` that is typically used by Telnet connections. - -Newline can be given either in escaped format using ``\n`` and ``\r`` or -with special ``LF`` and ``CR`` syntax. - -Examples: -| `Set Newline` | \n | -| `Set Newline` | CRLF | - -== Prompt == - -Often the easiest way to read the output of a command is reading all -the output until the next prompt with `Read Until Prompt`. It also makes -it easier, and faster, to verify did `Login` succeed. - -Prompt can be specified either as a normal string or a regular expression. -The latter is especially useful if the prompt changes as a result of -the executed commands. Prompt can be set to be a regular expression -by giving ``prompt_is_regexp`` argument a true value (see `Boolean -arguments`). - -Examples: -| `Open Connection` | lolcathost | prompt=$ | -| `Set Prompt` | (> |# ) | prompt_is_regexp=true | - -== Encoding == - -To ease handling text containing non-ASCII characters, all written text is -encoded and read text decoded by default. The default encoding is UTF-8 -that works also with ASCII. Encoding can be disabled by using a special -encoding value ``NONE``. This is mainly useful if you need to get the bytes -received from the connection as-is. - -Notice that when writing to the connection, only Unicode strings are -encoded using the defined encoding. Byte strings are expected to be already -encoded correctly. Notice also that normal text in test data is passed to -the library as Unicode and you need to use variables to use bytes. - -It is also possible to configure the error handler to use if encoding or -decoding characters fails. Accepted values are the same that encode/decode -functions in Python strings accept. In practice the following values are -the most useful: - -- ``ignore``: ignore characters that cannot be encoded (default) -- ``strict``: fail if characters cannot be encoded -- ``replace``: replace characters that cannot be encoded with a replacement - character - -Examples: -| `Open Connection` | lolcathost | encoding=Latin1 | encoding_errors=strict | -| `Set Encoding` | ISO-8859-15 | -| `Set Encoding` | errors=ignore | - -== Default log level == - -Default log level specifies the log level keywords use for `logging` unless -they are given an explicit log level. The default value is ``INFO``, and -changing it, for example, to ``DEBUG`` can be a good idea if there is lot -of unnecessary output that makes log files big. - -== Terminal type == - -By default the Telnet library does not negotiate any specific terminal type -with the server. If a specific terminal type, for example ``vt100``, is -desired, the terminal type can be configured in `importing` and with -`Open Connection`. - -== Window size == - -Window size for negotiation with the server can be configured when -`importing` the library and with `Open Connection`. - -== USER environment variable == - -Telnet protocol allows the ``USER`` environment variable to be sent when -connecting to the server. On some servers it may happen that there is no -login prompt, and on those cases this configuration option will allow still -to define the desired username. The option ``environ_user`` can be used in -`importing` and with `Open Connection`. - -= Terminal emulation = - -Telnet library supports terminal -emulation with [http://pyte.readthedocs.io|Pyte]. Terminal emulation -will process the output in a virtual screen. This means that ANSI escape -codes, like cursor movements, and also control characters, like -carriage returns and backspaces, have the same effect on the result as they -would have on a normal terminal screen. For example the sequence -``acdc\x1b[3Dbba`` will result in output ``abba``. - -Terminal emulation is taken into use by giving ``terminal_emulation`` -argument a true value (see `Boolean arguments`) either in the library -initialization or with `Open Connection`. - -As Pyte approximates vt-style terminal, you may also want to set the -terminal type as ``vt100``. We also recommend that you increase the window -size, as the terminal emulation will break all lines that are longer than -the window row length. - -When terminal emulation is used, the `newline` and `encoding` can not be -changed anymore after opening the connection. - -Examples: -| `Open Connection` | lolcathost | terminal_emulation=True | terminal_type=vt100 | window_size=400x100 | - -As a prerequisite for using terminal emulation, you need to have Pyte -installed. Due to backwards incompatible changes in Pyte, different -Robot Framework versions support different Pyte versions: - -- Pyte 0.6 and newer are supported by Robot Framework 3.0.3. - Latest Pyte version can be installed (or upgraded) with - ``pip install --upgrade pyte``. -- Pyte 0.5.2 and older are supported by Robot Framework 3.0.2 and earlier. - Pyte 0.5.2 can be installed with ``pip install pyte==0.5.2``. - -= Logging = - -All keywords that read something log the output. These keywords take the -log level to use as an optional argument, and if no log level is specified -they use the [#Configuration|configured] default value. - -The valid log levels to use are ``TRACE``, ``DEBUG``, ``INFO`` (default), -and ``WARN``. Levels below ``INFO`` are not shown in log files by default -whereas warnings are shown more prominently. - -The [http://docs.python.org/library/telnetlib.html|telnetlib module] -used by this library has a custom logging system for logging content it -sends and receives. By default these messages are written using ``TRACE`` -level, but the level is configurable with the ``telnetlib_log_level`` -option either in the library initialization, to the `Open Connection` -or by using the `Set Telnetlib Log Level` keyword to the active -connection. Special level ``NONE`` con be used to disable the logging -altogether. - -= Time string format = - -Timeouts and other times used must be given as a time string using format -like ``15 seconds`` or ``1min 10s``. If the timeout is given as just -a number, for example, ``10`` or ``1.5``, it is considered to be seconds. -The time string format is described in more detail in an appendix of -[http://robotframework.org/robotframework/#user-guide|Robot Framework User Guide]. - -= Boolean arguments = - -Some keywords accept arguments that are handled as Boolean values true or -false. If such an argument is given as a string, it is considered false if -it is an empty string or equal to ``FALSE``, ``NONE``, ``NO``, ``OFF`` or -``0``, case-insensitively. Other strings are considered true regardless -their value, and other argument types are tested using the same -[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. - -True examples: -| `Open Connection` | lolcathost | terminal_emulation=True | # Strings are generally true. | -| `Open Connection` | lolcathost | terminal_emulation=yes | # Same as the above. | -| `Open Connection` | lolcathost | terminal_emulation=${TRUE} | # Python ``True`` is true. | -| `Open Connection` | lolcathost | terminal_emulation=${42} | # Numbers other than 0 are true. | - -False examples: -| `Open Connection` | lolcathost | terminal_emulation=False | # String ``false`` is false. | -| `Open Connection` | lolcathost | terminal_emulation=no | # Also string ``no`` is false. | -| `Open Connection` | lolcathost | terminal_emulation=${EMPTY} | # Empty string is false. | -| `Open Connection` | lolcathost | terminal_emulation=${FALSE} | # Python ``False`` is false. | - -Considering string ``NONE`` false is new in Robot Framework 3.0.3 and -considering also ``OFF`` and ``0`` false is new in Robot Framework 3.1. - - -timeout=3 seconds -newline=CRLF -prompt=None -prompt_is_regexp=False -encoding=UTF-8 -encoding_errors=ignore -default_log_level=INFO -window_size=None -environ_user=None -terminal_emulation=False -terminal_type=None -telnetlib_log_level=TRACE -connection_timeout=None - -Telnet library can be imported with optional configuration parameters. - -Configuration parameters are used as default values when new -connections are opened with `Open Connection` keyword. They can also be -overridden after opening the connection using the `Set ...` `keywords`. -See these keywords as well as `Configuration`, `Terminal emulation` and -`Logging` sections above for more information about these parameters -and their possible values. - -See `Time string format` and `Boolean arguments` sections for -information about using arguments accepting times and Boolean values, -respectively. - -Examples (use only one of these): -| = Setting = | = Value = | = Value = | = Value = | = Value = | = Comment = | -| Library | Telnet | | | | # default values | -| Library | Telnet | 5 seconds | | | # set only timeout | -| Library | Telnet | newline=LF | encoding=ISO-8859-1 | | # set newline and encoding using named arguments | -| Library | Telnet | prompt=$ | | | # set prompt | -| Library | Telnet | prompt=(> |# ) | prompt_is_regexp=yes | | # set prompt as a regular expression | -| Library | Telnet | terminal_emulation=True | terminal_type=vt100 | window_size=400x100 | # use terminal emulation with defined window size and terminal type | -| Library | Telnet | telnetlib_log_level=NONE | | | # disable logging messages from the underlying telnetlib | - - - - - - -Closes all open connections and empties the connection cache. - -If multiple connections are opened, this keyword should be used in -a test or suite teardown to make sure that all connections are closed. -It is not an error is some of the connections have already been closed -by `Close Connection`. - -After this keyword, new indexes returned by `Open Connection` -keyword are reset to 1. - - - - - -loglevel=None - -Closes the current Telnet connection. - -Remaining output in the connection is read, logged, and returned. -It is not an error to close an already closed connection. - -Use `Close All Connections` if you want to make sure all opened -connections are closed. - -See `Logging` section for more information about log levels. - - - - - -command -loglevel=None -strip_prompt=False - -Executes the given ``command`` and reads, logs, and returns everything until the prompt. - -This keyword requires the prompt to be [#Configuration|configured] -either in `importing` or with `Open Connection` or `Set Prompt` keyword. - -This is a convenience keyword that uses `Write` and `Read Until Prompt` -internally. Following two examples are thus functionally identical: - -| ${out} = | `Execute Command` | pwd | - -| `Write` | pwd | -| ${out} = | `Read Until Prompt` | - -See `Logging` section for more information about log levels and `Read -Until Prompt` for more information about the ``strip_prompt`` parameter. - - - - - -username -password -login_prompt=login: -password_prompt=Password: -login_timeout=1 second -login_incorrect=Login incorrect - -Logs in to the Telnet server with the given user information. - -This keyword reads from the connection until the ``login_prompt`` is -encountered and then types the given ``username``. Then it reads until -the ``password_prompt`` and types the given ``password``. In both cases -a newline is appended automatically and the connection specific -timeout used when waiting for outputs. - -How logging status is verified depends on whether a prompt is set for -this connection or not: - -1) If the prompt is set, this keyword reads the output until the prompt -is found using the normal timeout. If no prompt is found, login is -considered failed and also this keyword fails. Note that in this case -both ``login_timeout`` and ``login_incorrect`` arguments are ignored. - -2) If the prompt is not set, this keywords sleeps until ``login_timeout`` -and then reads all the output available on the connection. If the -output contains ``login_incorrect`` text, login is considered failed -and also this keyword fails. - -See `Configuration` section for more information about setting -newline, timeout, and prompt. - - - - - -host -alias=None -port=23 -timeout=None -newline=None -prompt=None -prompt_is_regexp=False -encoding=None -encoding_errors=None -default_log_level=None -window_size=None -environ_user=None -terminal_emulation=None -terminal_type=None -telnetlib_log_level=None -connection_timeout=None - -Opens a new Telnet connection to the given host and port. - -The ``timeout``, ``newline``, ``prompt``, ``prompt_is_regexp``, -``encoding``, ``default_log_level``, ``window_size``, ``environ_user``, -``terminal_emulation``, ``terminal_type`` and ``telnetlib_log_level`` -arguments get default values when the library is [#Importing|imported]. -Setting them here overrides those values for the opened connection. -See `Configuration`, `Terminal emulation` and `Logging` sections for -more information about these parameters and their possible values. - -Possible already opened connections are cached and it is possible to -switch back to them using `Switch Connection` keyword. It is possible to -switch either using explicitly given ``alias`` or using index returned -by this keyword. Indexing starts from 1 and is reset back to it by -`Close All Connections` keyword. - - - - - -loglevel=None - -Reads everything that is currently available in the output. - -Read output is both returned and logged. See `Logging` section for more -information about log levels. - - - - - -expected -loglevel=None - -Reads output until ``expected`` text is encountered. - -Text up to and including the match is returned and logged. If no match -is found, this keyword fails. How much to wait for the output depends -on the [#Configuration|configured timeout]. - -See `Logging` section for more information about log levels. Use -`Read Until Regexp` if more complex matching is needed. - - - - - -loglevel=None -strip_prompt=False - -Reads output until the prompt is encountered. - -This keyword requires the prompt to be [#Configuration|configured] -either in `importing` or with `Open Connection` or `Set Prompt` keyword. - -By default, text up to and including the prompt is returned and logged. -If no prompt is found, this keyword fails. How much to wait for the -output depends on the [#Configuration|configured timeout]. - -If you want to exclude the prompt from the returned output, set -``strip_prompt`` to a true value (see `Boolean arguments`). If your -prompt is a regular expression, make sure that the expression spans the -whole prompt, because only the part of the output that matches the -regular expression is stripped away. - -See `Logging` section for more information about log levels. - - - - - -*expected - -Reads output until any of the ``expected`` regular expressions match. - -This keyword accepts any number of regular expressions patterns or -compiled Python regular expression objects as arguments. Text up to -and including the first match to any of the regular expressions is -returned and logged. If no match is found, this keyword fails. How much -to wait for the output depends on the [#Configuration|configured timeout]. - -If the last given argument is a [#Logging|valid log level], it is used -as ``loglevel`` similarly as with `Read Until` keyword. - -See the documentation of -[http://docs.python.org/library/re.html|Python re module] -for more information about the supported regular expression syntax. -Notice that possible backslashes need to be escaped in Robot Framework -test data. - -Examples: -| `Read Until Regexp` | (#|$) | -| `Read Until Regexp` | first_regexp | second_regexp | -| `Read Until Regexp` | \\d{4}-\\d{2}-\\d{2} | DEBUG | - - - - - -level - -Sets the default log level used for `logging` in the current connection. - -The old default log level is returned and can be used to restore the -log level later. - -See `Configuration` section for more information about global and -connection specific configuration. - - - - - -encoding=None -errors=None - -Sets the encoding to use for `writing and reading` in the current connection. - -The given ``encoding`` specifies the encoding to use when written/read -text is encoded/decoded, and ``errors`` specifies the error handler to -use if encoding/decoding fails. Either of these can be omitted and in -that case the old value is not affected. Use string ``NONE`` to disable -encoding altogether. - -See `Configuration` section for more information about encoding and -error handlers, as well as global and connection specific configuration -in general. - -The old values are returned and can be used to restore the encoding -and the error handler later. See `Set Prompt` for a similar example. - -If terminal emulation is used, the encoding can not be changed on an open -connection. - - - - - -newline - -Sets the newline used by `Write` keyword in the current connection. - -The old newline is returned and can be used to restore the newline later. -See `Set Timeout` for a similar example. - -If terminal emulation is used, the newline can not be changed on an open -connection. - -See `Configuration` section for more information about global and -connection specific configuration. - - - - - -prompt -prompt_is_regexp=False - -Sets the prompt used by `Read Until Prompt` and `Login` in the current connection. - -If ``prompt_is_regexp`` is given a true value (see `Boolean arguments`), -the given ``prompt`` is considered to be a regular expression. - -The old prompt is returned and can be used to restore the prompt later. - -Example: -| ${prompt} | ${regexp} = | `Set Prompt` | $ | -| `Do Something` | -| `Set Prompt` | ${prompt} | ${regexp} | - -See the documentation of -[http://docs.python.org/library/re.html|Python re module] -for more information about the supported regular expression syntax. -Notice that possible backslashes need to be escaped in Robot Framework -test data. - -See `Configuration` section for more information about global and -connection specific configuration. - - - - - -level - -Sets the log level used for `logging` in the underlying ``telnetlib``. - -Note that ``telnetlib`` can be very noisy thus using the level ``NONE`` -can shutdown the messages generated by this library. - - - - - -timeout - -Sets the timeout used for waiting output in the current connection. - -Read operations that expect some output to appear (`Read Until`, `Read -Until Regexp`, `Read Until Prompt`, `Login`) use this timeout and fail -if the expected output does not appear before this timeout expires. - -The ``timeout`` must be given in `time string format`. The old timeout -is returned and can be used to restore the timeout later. - -Example: -| ${old} = | `Set Timeout` | 2 minute 30 seconds | -| `Do Something` | -| `Set Timeout` | ${old} | - -See `Configuration` section for more information about global and -connection specific configuration. - - - - - -index_or_alias - -Switches between active connections using an index or an alias. - -Aliases can be given to `Open Connection` keyword which also always -returns the connection index. - -This keyword returns the index of previous active connection. - -Example: -| `Open Connection` | myhost.net | | | -| `Login` | john | secret | | -| `Write` | some command | | | -| `Open Connection` | yourhost.com | 2nd conn | | -| `Login` | root | password | | -| `Write` | another cmd | | | -| ${old index}= | `Switch Connection` | 1 | # index | -| `Write` | something | | | -| `Switch Connection` | 2nd conn | | # alias | -| `Write` | whatever | | | -| `Switch Connection` | ${old index} | | # back to original | -| [Teardown] | `Close All Connections` | | | - -The example above expects that there were no other open -connections when opening the first one, because it used index -``1`` when switching to the connection later. If you are not -sure about that, you can store the index into a variable as -shown below. - -| ${index} = | `Open Connection` | myhost.net | -| `Do Something` | | | -| `Switch Connection` | ${index} | | - - - - - -text -loglevel=None - -Writes the given text plus a newline into the connection. - -The newline character sequence to use can be [#Configuration|configured] -both globally and per connection basis. The default value is ``CRLF``. - -This keyword consumes the written text, until the added newline, from -the output and logs and returns it. The given text itself must not -contain newlines. Use `Write Bare` instead if either of these features -causes a problem. - -*Note:* This keyword does not return the possible output of the executed -command. To get the output, one of the `Read ...` `keywords` must be -used. See `Writing and reading` section for more details. - -See `Logging` section for more information about log levels. - - - - - -text - -Writes the given text, and nothing else, into the connection. - -This keyword does not append a newline nor consume the written text. -Use `Write` if these features are needed. - - - - - -character - -Writes the given control character into the connection. - -The control character is prepended with an IAC (interpret as command) -character. - -The following control character names are supported: BRK, IP, AO, AYT, -EC, EL, NOP. Additionally, you can use arbitrary numbers to send any -control character. - -Example: -| Write Control Character | BRK | # Send Break command | -| Write Control Character | 241 | # Send No operation command | - - - - - -text -expected -timeout -retry_interval -loglevel=None - -Writes the given ``text`` repeatedly, until ``expected`` appears in the output. - -``text`` is written without appending a newline and it is consumed from -the output before trying to find ``expected``. If ``expected`` does not -appear in the output within ``timeout``, this keyword fails. - -``retry_interval`` defines the time to wait ``expected`` to appear before -writing the ``text`` again. Consuming the written ``text`` is subject to -the normal [#Configuration|configured timeout]. - -Both ``timeout`` and ``retry_interval`` must be given in `time string -format`. See `Logging` section for more information about log levels. - -Example: -| Write Until Expected Output | ps -ef| grep myprocess\r\n | myprocess | -| ... | 5 s | 0.5 s | - -The above example writes command ``ps -ef | grep myprocess\r\n`` until -``myprocess`` appears in the output. The command is written every 0.5 -seconds and the keyword fails if ``myprocess`` does not appear in -the output in 5 seconds. - - - - diff --git a/libspecs/XML.libspec b/libspecs/XML.libspec deleted file mode 100644 index a5b64dc04..000000000 --- a/libspecs/XML.libspec +++ /dev/null @@ -1,1365 +0,0 @@ - - -3.1 -global -yes -Robot Framework test library for verifying and modifying XML documents. - -As the name implies, _XML_ is a test library for verifying contents of XML -files. In practice it is a pretty thin wrapper on top of Python's -[http://docs.python.org/library/xml.etree.elementtree.html|ElementTree XML API]. - -The library has the following main usages: - -- Parsing an XML file, or a string containing XML, into an XML element - structure and finding certain elements from it for for further analysis - (e.g. `Parse XML` and `Get Element` keywords). -- Getting text or attributes of elements - (e.g. `Get Element Text` and `Get Element Attribute`). -- Directly verifying text, attributes, or whole elements - (e.g `Element Text Should Be` and `Elements Should Be Equal`). -- Modifying XML and saving it (e.g. `Set Element Text`, `Add Element` - and `Save XML`). - -== Table of contents == - -- `Parsing XML` -- `Using lxml` -- `Example` -- `Finding elements with xpath` -- `Element attributes` -- `Handling XML namespaces` -- `Boolean arguments` -- `Pattern matching` -- `Shortcuts` -- `Keywords` - -= Parsing XML = - -XML can be parsed into an element structure using `Parse XML` keyword. -It accepts both paths to XML files and strings that contain XML. The -keyword returns the root element of the structure, which then contains -other elements as its children and their children. Possible comments and -processing instructions in the source XML are removed. - -XML is not validated during parsing even if has a schema defined. How -possible doctype elements are handled otherwise depends on the used XML -module and on the platform. The standard ElementTree strips doctypes -altogether but when `using lxml` they are preserved when XML is saved. - -The element structure returned by `Parse XML`, as well as elements -returned by keywords such as `Get Element`, can be used as the ``source`` -argument with other keywords. In addition to an already parsed XML -structure, other keywords also accept paths to XML files and strings -containing XML similarly as `Parse XML`. Notice that keywords that modify -XML do not write those changes back to disk even if the source would be -given as a path to a file. Changes must always saved explicitly using -`Save XML` keyword. - -When the source is given as a path to a file, the forward slash character -(``/``) can be used as the path separator regardless the operating system. -On Windows also the backslash works, but it the test data it needs to be -escaped by doubling it (``\\``). Using the built-in variable ``${/}`` -naturally works too. - -= Using lxml = - -By default this library uses Python's standard -[http://docs.python.org/library/xml.etree.elementtree.html|ElementTree] -module for parsing XML, but it can be configured to use -[http://lxml.de|lxml] module instead when `importing` the library. -The resulting element structure has same API regardless which module -is used for parsing. - -The main benefits of using lxml is that it supports richer xpath syntax -than the standard ElementTree and enables using `Evaluate Xpath` keyword. -It also preserves the doctype and possible namespace prefixes saving XML. - -= Example = - -The following simple example demonstrates parsing XML and verifying its -contents both using keywords in this library and in _BuiltIn_ and -_Collections_ libraries. How to use xpath expressions to find elements -and what attributes the returned elements contain are discussed, with -more examples, in `Finding elements with xpath` and `Element attributes` -sections. - -In this example, as well as in many other examples in this documentation, -``${XML}`` refers to the following example XML document. In practice -``${XML}`` could either be a path to an XML file or it could contain the XML -itself. - -| <example> -| <first id="1">text</first> -| <second id="2"> -| <child/> -| </second> -| <third> -| <child>more text</child> -| <second id="child"/> -| <child><grandchild/></child> -| </third> -| <html> -| <p> -| Text with <b>bold</b> and <i>italics</i>. -| </p> -| </html> -| </example> - -| ${root} = | `Parse XML` | ${XML} | | | -| `Should Be Equal` | ${root.tag} | example | | | -| ${first} = | `Get Element` | ${root} | first | | -| `Should Be Equal` | ${first.text} | text | | | -| `Dictionary Should Contain Key` | ${first.attrib} | id | | -| `Element Text Should Be` | ${first} | text | | | -| `Element Attribute Should Be` | ${first} | id | 1 | | -| `Element Attribute Should Be` | ${root} | id | 1 | xpath=first | -| `Element Attribute Should Be` | ${XML} | id | 1 | xpath=first | - -Notice that in the example three last lines are equivalent. Which one to -use in practice depends on which other elements you need to get or verify. -If you only need to do one verification, using the last line alone would -suffice. If more verifications are needed, parsing the XML with `Parse XML` -only once would be more efficient. - -= Finding elements with xpath = - -ElementTree, and thus also this library, supports finding elements using -xpath expressions. ElementTree does not, however, support the full xpath -standard. The supported xpath syntax is explained below and -[https://docs.python.org/library/xml.etree.elementtree.html#xpath-support| -ElementTree documentation] provides more details. In the examples -``${XML}`` refers to the same XML structure as in the earlier example. - -If lxml support is enabled when `importing` the library, the whole -[http://www.w3.org/TR/xpath/|xpath 1.0 standard] is supported. -That includes everything listed below but also lot of other useful -constructs. - -== Tag names == - -When just a single tag name is used, xpath matches all direct child -elements that have that tag name. - -| ${elem} = | `Get Element` | ${XML} | third | -| `Should Be Equal` | ${elem.tag} | third | | -| @{children} = | `Get Elements` | ${elem} | child | -| `Length Should Be` | ${children} | 2 | | - -== Paths == - -Paths are created by combining tag names with a forward slash (``/``). For -example, ``parent/child`` matches all ``child`` elements under ``parent`` -element. Notice that if there are multiple ``parent`` elements that all -have ``child`` elements, ``parent/child`` xpath will match all these -``child`` elements. - -| ${elem} = | `Get Element` | ${XML} | second/child | -| `Should Be Equal` | ${elem.tag} | child | | -| ${elem} = | `Get Element` | ${XML} | third/child/grandchild | -| `Should Be Equal` | ${elem.tag} | grandchild | | - -== Wildcards == - -An asterisk (``*``) can be used in paths instead of a tag name to denote -any element. - -| @{children} = | `Get Elements` | ${XML} | */child | -| `Length Should Be` | ${children} | 3 | | - -== Current element == - -The current element is denoted with a dot (``.``). Normally the current -element is implicit and does not need to be included in the xpath. - -== Parent element == - -The parent element of another element is denoted with two dots (``..``). -Notice that it is not possible to refer to the parent of the current -element. - -| ${elem} = | `Get Element` | ${XML} | */second/.. | -| `Should Be Equal` | ${elem.tag} | third | | - -== Search all sub elements == - -Two forward slashes (``//``) mean that all sub elements, not only the -direct children, are searched. If the search is started from the current -element, an explicit dot is required. - -| @{elements} = | `Get Elements` | ${XML} | .//second | -| `Length Should Be` | ${elements} | 2 | | -| ${b} = | `Get Element` | ${XML} | html//b | -| `Should Be Equal` | ${b.text} | bold | | - -== Predicates == - -Predicates allow selecting elements using also other criteria than tag -names, for example, attributes or position. They are specified after the -normal tag name or path using syntax ``path[predicate]``. The path can have -wildcards and other special syntax explained earlier. What predicates -the standard ElementTree supports is explained in the table below. - -| = Predicate = | = Matches = | = Example = | -| @attrib | Elements with attribute ``attrib``. | second[@id] | -| @attrib="value" | Elements with attribute ``attrib`` having value ``value``. | *[@id="2"] | -| position | Elements at the specified position. Position can be an integer (starting from 1), expression ``last()``, or relative expression like ``last() - 1``. | third/child[1] | -| tag | Elements with a child element named ``tag``. | third/child[grandchild] | - -Predicates can also be stacked like ``path[predicate1][predicate2]``. -A limitation is that possible position predicate must always be first. - -= Element attributes = - -All keywords returning elements, such as `Parse XML`, and `Get Element`, -return ElementTree's -[http://docs.python.org/library/xml.etree.elementtree.html#element-objects|Element objects]. -These elements can be used as inputs for other keywords, but they also -contain several useful attributes that can be accessed directly using -the extended variable syntax. - -The attributes that are both useful and convenient to use in the test -data are explained below. Also other attributes, including methods, can -be accessed, but that is typically better to do in custom libraries than -directly in the test data. - -The examples use the same ``${XML}`` structure as the earlier examples. - -== tag == - -The tag of the element. - -| ${root} = | `Parse XML` | ${XML} | -| `Should Be Equal` | ${root.tag} | example | - -== text == - -The text that the element contains or Python ``None`` if the element has no -text. Notice that the text _does not_ contain texts of possible child -elements nor text after or between children. Notice also that in XML -whitespace is significant, so the text contains also possible indentation -and newlines. To get also text of the possible children, optionally -whitespace normalized, use `Get Element Text` keyword. - -| ${1st} = | `Get Element` | ${XML} | first | -| `Should Be Equal` | ${1st.text} | text | | -| ${2nd} = | `Get Element` | ${XML} | second/child | -| `Should Be Equal` | ${2nd.text} | ${NONE} | | -| ${p} = | `Get Element` | ${XML} | html/p | -| `Should Be Equal` | ${p.text} | \n${SPACE*6}Text with${SPACE} | - -== tail == - -The text after the element before the next opening or closing tag. Python -``None`` if the element has no tail. Similarly as with ``text``, also -``tail`` contains possible indentation and newlines. - -| ${b} = | `Get Element` | ${XML} | html/p/b | -| `Should Be Equal` | ${b.tail} | ${SPACE}and${SPACE} | - -== attrib == - -A Python dictionary containing attributes of the element. - -| ${2nd} = | `Get Element` | ${XML} | second | -| `Should Be Equal` | ${2nd.attrib['id']} | 2 | | -| ${3rd} = | `Get Element` | ${XML} | third | -| `Should Be Empty` | ${3rd.attrib} | | | - -= Handling XML namespaces = - -ElementTree and lxml handle possible namespaces in XML documents by adding -the namespace URI to tag names in so called Clark Notation. That is -inconvenient especially with xpaths, and by default this library strips -those namespaces away and moves them to ``xmlns`` attribute instead. That -can be avoided by passing ``keep_clark_notation`` argument to `Parse XML` -keyword. Alternatively `Parse XML` supports stripping namespace information -altogether by using ``strip_namespaces`` argument. The pros and cons of -different approaches are discussed in more detail below. - -== How ElementTree handles namespaces == - -If an XML document has namespaces, ElementTree adds namespace information -to tag names in [http://www.jclark.com/xml/xmlns.htm|Clark Notation] -(e.g. ``{http://ns.uri}tag``) and removes original ``xmlns`` attributes. -This is done both with default namespaces and with namespaces with a prefix. -How it works in practice is illustrated by the following example, where -``${NS}`` variable contains this XML document: - -| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" -| xmlns="http://www.w3.org/1999/xhtml"> -| <xsl:template match="/"> -| <html></html> -| </xsl:template> -| </xsl:stylesheet> - -| ${root} = | `Parse XML` | ${NS} | keep_clark_notation=yes | -| `Should Be Equal` | ${root.tag} | {http://www.w3.org/1999/XSL/Transform}stylesheet | -| `Element Should Exist` | ${root} | {http://www.w3.org/1999/XSL/Transform}template/{http://www.w3.org/1999/xhtml}html | -| `Should Be Empty` | ${root.attrib} | - -As you can see, including the namespace URI in tag names makes xpaths -really long and complex. - -If you save the XML, ElementTree moves namespace information back to -``xmlns`` attributes. Unfortunately it does not restore the original -prefixes: - -| <ns0:stylesheet xmlns:ns0="http://www.w3.org/1999/XSL/Transform"> -| <ns0:template match="/"> -| <ns1:html xmlns:ns1="http://www.w3.org/1999/xhtml"></ns1:html> -| </ns0:template> -| </ns0:stylesheet> - -The resulting output is semantically same as the original, but mangling -prefixes like this may still not be desirable. Notice also that the actual -output depends slightly on ElementTree version. - -== Default namespace handling == - -Because the way ElementTree handles namespaces makes xpaths so complicated, -this library, by default, strips namespaces from tag names and moves that -information back to ``xmlns`` attributes. How this works in practice is -shown by the example below, where ``${NS}`` variable contains the same XML -document as in the previous example. - -| ${root} = | `Parse XML` | ${NS} | -| `Should Be Equal` | ${root.tag} | stylesheet | -| `Element Should Exist` | ${root} | template/html | -| `Element Attribute Should Be` | ${root} | xmlns | http://www.w3.org/1999/XSL/Transform | -| `Element Attribute Should Be` | ${root} | xmlns | http://www.w3.org/1999/xhtml | xpath=template/html | - -Now that tags do not contain namespace information, xpaths are simple again. - -A minor limitation of this approach is that namespace prefixes are lost. -As a result the saved output is not exactly same as the original one in -this case either: - -| <stylesheet xmlns="http://www.w3.org/1999/XSL/Transform"> -| <template match="/"> -| <html xmlns="http://www.w3.org/1999/xhtml"></html> -| </template> -| </stylesheet> - -Also this output is semantically same as the original. If the original XML -had only default namespaces, the output would also look identical. - -== Namespaces when using lxml == - -This library handles namespaces same way both when `using lxml` and when -not using it. There are, however, differences how lxml internally handles -namespaces compared to the standard ElementTree. The main difference is -that lxml stores information about namespace prefixes and they are thus -preserved if XML is saved. Another visible difference is that lxml includes -namespace information in child elements got with `Get Element` if the -parent element has namespaces. - -== Stripping namespaces altogether == - -Because namespaces often add unnecessary complexity, `Parse XML` supports -stripping them altogether by using ``strip_namespaces=True``. When this -option is enabled, namespaces are not shown anywhere nor are they included -if XML is saved. - -== Attribute namespaces == - -Attributes in XML documents are, by default, in the same namespaces as -the element they belong to. It is possible to use different namespaces -by using prefixes, but this is pretty rare. - -If an attribute has a namespace prefix, ElementTree will replace it with -Clark Notation the same way it handles elements. Because stripping -namespaces from attributes could cause attribute conflicts, this library -does not handle attribute namespaces at all. Thus the following example -works the same way regardless how namespaces are handled. - -| ${root} = | `Parse XML` | <root id="1" ns:id="2" xmlns:ns="http://my.ns"/> | -| `Element Attribute Should Be` | ${root} | id | 1 | -| `Element Attribute Should Be` | ${root} | {http://my.ns}id | 2 | - -= Boolean arguments = - -Some keywords accept arguments that are handled as Boolean values true or -false. If such an argument is given as a string, it is considered false if -it is an empty string or equal to ``FALSE``, ``NONE``, ``NO``, ``OFF`` or -``0``, case-insensitively. Other strings are considered true regardless -their value, and other argument types are tested using the same -[http://docs.python.org/library/stdtypes.html#truth|rules as in Python]. - -True examples: -| `Parse XML` | ${XML} | keep_clark_notation=True | # Strings are generally true. | -| `Parse XML` | ${XML} | keep_clark_notation=yes | # Same as the above. | -| `Parse XML` | ${XML} | keep_clark_notation=${TRUE} | # Python ``True`` is true. | -| `Parse XML` | ${XML} | keep_clark_notation=${42} | # Numbers other than 0 are true. | - -False examples: -| `Parse XML` | ${XML} | keep_clark_notation=False | # String ``false`` is false. | -| `Parse XML` | ${XML} | keep_clark_notation=no | # Also string ``no`` is false. | -| `Parse XML` | ${XML} | keep_clark_notation=${EMPTY} | # Empty string is false. | -| `Parse XML` | ${XML} | keep_clark_notation=${FALSE} | # Python ``False`` is false. | - -Considering string ``NONE`` false is new in Robot Framework 3.0.3 and -considering also ``OFF`` and ``0`` false is new in Robot Framework 3.1. - -== Pattern matching == - -Some keywords, for example `Elements Should Match`, support so called -[http://en.wikipedia.org/wiki/Glob_(programming)|glob patterns] where: - -| ``*`` | matches any string, even an empty string | -| ``?`` | matches any single character | -| ``[chars]`` | matches one character in the bracket | -| ``[!chars]`` | matches one character not in the bracket | -| ``[a-z]`` | matches one character from the range in the bracket | -| ``[!a-z]`` | matches one character not from the range in the bracket | - -Unlike with glob patterns normally, path separator characters ``/`` and -``\`` and the newline character ``\n`` are matches by the above -wildcards. - -Support for brackets like ``[abc]`` and ``[!a-z]`` is new in -Robot Framework 3.1 - - -use_lxml=False - -Import library with optionally lxml mode enabled. - -By default this library uses Python's standard -[http://docs.python.org/library/xml.etree.elementtree.html|ElementTree] -module for parsing XML. If ``use_lxml`` argument is given a true value -(see `Boolean arguments`), the library will use [http://lxml.de|lxml] -module instead. See `Using lxml` section for benefits provided by lxml. - -Using lxml requires that the lxml module is installed on the system. -If lxml mode is enabled but the module is not installed, this library -will emit a warning and revert back to using the standard ElementTree. - - - - - -source -element -index=None -xpath=. - -Adds a child element to the specified element. - -The element to whom to add the new element is specified using ``source`` -and ``xpath``. They have exactly the same semantics as with `Get Element` -keyword. The resulting XML structure is returned, and if the ``source`` -is an already parsed XML structure, it is also modified in place. - -The ``element`` to add can be specified as a path to an XML file or -as a string containing XML, or it can be an already parsed XML element. -The element is copied before adding so modifying either the original -or the added element has no effect on the other -. -The element is added as the last child by default, but a custom index -can be used to alter the position. Indices start from zero (0 = first -position, 1 = second position, etc.), and negative numbers refer to -positions at the end (-1 = second last position, -2 = third last, etc.). - -Examples using ``${XML}`` structure from `Example`: -| Add Element | ${XML} | <new id="x"><c1/></new> | -| Add Element | ${XML} | <c2/> | xpath=new | -| Add Element | ${XML} | <c3/> | index=1 | xpath=new | -| ${new} = | Get Element | ${XML} | new | -| Elements Should Be Equal | ${new} | <new id="x"><c1/><c3/><c2/></new> | - -Use `Remove Element` or `Remove Elements` to remove elements. - - - - - -source -xpath=. -clear_tail=False - -Clears the contents of the specified element. - -The element to clear is specified using ``source`` and ``xpath``. They -have exactly the same semantics as with `Get Element` keyword. -The resulting XML structure is returned, and if the ``source`` is -an already parsed XML structure, it is also modified in place. - -Clearing the element means removing its text, attributes, and children. -Element's tail text is not removed by default, but that can be changed -by giving ``clear_tail`` a true value (see `Boolean arguments`). See -`Element attributes` section for more information about tail in -general. - -Examples using ``${XML}`` structure from `Example`: -| Clear Element | ${XML} | xpath=first | -| ${first} = | Get Element | ${XML} | xpath=first | -| Elements Should Be Equal | ${first} | <first/> | -| Clear Element | ${XML} | xpath=html/p/b | clear_tail=yes | -| Element Text Should Be | ${XML} | Text with italics. | xpath=html/p | normalize_whitespace=yes | -| Clear Element | ${XML} | -| Elements Should Be Equal | ${XML} | <example/> | - -Use `Remove Element` to remove the whole element. - - - - - -source -xpath=. - -Returns a copy of the specified element. - -The element to copy is specified using ``source`` and ``xpath``. They -have exactly the same semantics as with `Get Element` keyword. - -If the copy or the original element is modified afterwards, the changes -have no effect on the other. - -Examples using ``${XML}`` structure from `Example`: -| ${elem} = | Get Element | ${XML} | xpath=first | -| ${copy1} = | Copy Element | ${elem} | -| ${copy2} = | Copy Element | ${XML} | xpath=first | -| Set Element Text | ${XML} | new text | xpath=first | -| Set Element Attribute | ${copy1} | id | new | -| Elements Should Be Equal | ${elem} | <first id="1">new text</first> | -| Elements Should Be Equal | ${copy1} | <first id="new">text</first> | -| Elements Should Be Equal | ${copy2} | <first id="1">text</first> | - - - - - -source -name -expected -xpath=. -message=None - -Verifies that the specified attribute is ``expected``. - -The element whose attribute is verified is specified using ``source`` -and ``xpath``. They have exactly the same semantics as with -`Get Element` keyword. - -The keyword passes if the attribute ``name`` of the element is equal to -the ``expected`` value, and otherwise it fails. The default error -message can be overridden with the ``message`` argument. - -To test that the element does not have a certain attribute, Python -``None`` (i.e. variable ``${NONE}``) can be used as the expected value. -A cleaner alternative is using `Element Should Not Have Attribute`. - -Examples using ``${XML}`` structure from `Example`: -| Element Attribute Should Be | ${XML} | id | 1 | xpath=first | -| Element Attribute Should Be | ${XML} | id | ${NONE} | | - -See also `Element Attribute Should Match` and `Get Element Attribute`. - - - - - -source -name -pattern -xpath=. -message=None - -Verifies that the specified attribute matches ``expected``. - -This keyword works exactly like `Element Attribute Should Be` except -that the expected value can be given as a pattern that the attribute of -the element must match. - -Pattern matching is similar as matching files in a shell with -``*``, ``?`` and ``[chars]`` acting as wildcards. See the -`Pattern matching` section for more information. - -Examples using ``${XML}`` structure from `Example`: -| Element Attribute Should Match | ${XML} | id | ? | xpath=first | -| Element Attribute Should Match | ${XML} | id | c*d | xpath=third/second | - - - - - -source -xpath=. -message=None - -Verifies that one or more element match the given ``xpath``. - -Arguments ``source`` and ``xpath`` have exactly the same semantics as -with `Get Elements` keyword. Keyword passes if the ``xpath`` matches -one or more elements in the ``source``. The default error message can -be overridden with the ``message`` argument. - -See also `Element Should Not Exist` as well as `Get Element Count` -that this keyword uses internally. - - - - - -source -xpath=. -message=None - -Verifies that no element match the given ``xpath``. - -Arguments ``source`` and ``xpath`` have exactly the same semantics as -with `Get Elements` keyword. Keyword fails if the ``xpath`` matches any -element in the ``source``. The default error message can be overridden -with the ``message`` argument. - -See also `Element Should Exist` as well as `Get Element Count` -that this keyword uses internally. - - - - - -source -name -xpath=. -message=None - -Verifies that the specified element does not have attribute ``name``. - -The element whose attribute is verified is specified using ``source`` -and ``xpath``. They have exactly the same semantics as with -`Get Element` keyword. - -The keyword fails if the specified element has attribute ``name``. The -default error message can be overridden with the ``message`` argument. - -Examples using ``${XML}`` structure from `Example`: -| Element Should Not Have Attribute | ${XML} | id | -| Element Should Not Have Attribute | ${XML} | xxx | xpath=first | - -See also `Get Element Attribute`, `Get Element Attributes`, -`Element Text Should Be` and `Element Text Should Match`. - - - - - -source -expected -xpath=. -normalize_whitespace=False -message=None - -Verifies that the text of the specified element is ``expected``. - -The element whose text is verified is specified using ``source`` and -``xpath``. They have exactly the same semantics as with `Get Element` -keyword. - -The text to verify is got from the specified element using the same -logic as with `Get Element Text`. This includes optional whitespace -normalization using the ``normalize_whitespace`` option. - -The keyword passes if the text of the element is equal to the -``expected`` value, and otherwise it fails. The default error message -can be overridden with the ``message`` argument. Use `Element Text -Should Match` to verify the text against a pattern instead of an exact -value. - -Examples using ``${XML}`` structure from `Example`: -| Element Text Should Be | ${XML} | text | xpath=first | -| Element Text Should Be | ${XML} | ${EMPTY} | xpath=second/child | -| ${paragraph} = | Get Element | ${XML} | xpath=html/p | -| Element Text Should Be | ${paragraph} | Text with bold and italics. | normalize_whitespace=yes | - - - - - -source -pattern -xpath=. -normalize_whitespace=False -message=None - -Verifies that the text of the specified element matches ``expected``. - -This keyword works exactly like `Element Text Should Be` except that -the expected value can be given as a pattern that the text of the -element must match. - -Pattern matching is similar as matching files in a shell with -``*``, ``?`` and ``[chars]`` acting as wildcards. See the -`Pattern matching` section for more information. - -Examples using ``${XML}`` structure from `Example`: -| Element Text Should Match | ${XML} | t??? | xpath=first | -| ${paragraph} = | Get Element | ${XML} | xpath=html/p | -| Element Text Should Match | ${paragraph} | Text with * and *. | normalize_whitespace=yes | - - - - - -source -xpath=. -encoding=None - -Returns the string representation of the specified element. - -The element to convert to a string is specified using ``source`` and -``xpath``. They have exactly the same semantics as with `Get Element` -keyword. - -By default the string is returned as Unicode. If ``encoding`` argument -is given any value, the string is returned as bytes in the specified -encoding. The resulting string never contains the XML declaration. - -See also `Log Element` and `Save XML`. - - - - - -source -expected -exclude_children=False -normalize_whitespace=False - -Verifies that the given ``source`` element is equal to ``expected``. - -Both ``source`` and ``expected`` can be given as a path to an XML file, -as a string containing XML, or as an already parsed XML element -structure. See `introduction` for more information about parsing XML in -general. - -The keyword passes if the ``source`` element and ``expected`` element -are equal. This includes testing the tag names, texts, and attributes -of the elements. By default also child elements are verified the same -way, but this can be disabled by setting ``exclude_children`` to a -true value (see `Boolean arguments`). - -All texts inside the given elements are verified, but possible text -outside them is not. By default texts must match exactly, but setting -``normalize_whitespace`` to a true value makes text verification -independent on newlines, tabs, and the amount of spaces. For more -details about handling text see `Get Element Text` keyword and -discussion about elements' `text` and `tail` attributes in the -`introduction`. - -Examples using ``${XML}`` structure from `Example`: -| ${first} = | Get Element | ${XML} | first | -| Elements Should Be Equal | ${first} | <first id="1">text</first> | -| ${p} = | Get Element | ${XML} | html/p | -| Elements Should Be Equal | ${p} | <p>Text with <b>bold</b> and <i>italics</i>.</p> | normalize_whitespace=yes | -| Elements Should Be Equal | ${p} | <p>Text with</p> | exclude | normalize | - -The last example may look a bit strange because the ``<p>`` element -only has text ``Text with``. The reason is that rest of the text -inside ``<p>`` actually belongs to the child elements. This includes -the ``.`` at the end that is the `tail` text of the ``<i>`` element. - -See also `Elements Should Match`. - - - - - -source -expected -exclude_children=False -normalize_whitespace=False - -Verifies that the given ``source`` element matches ``expected``. - -This keyword works exactly like `Elements Should Be Equal` except that -texts and attribute values in the expected value can be given as -patterns. - -Pattern matching is similar as matching files in a shell with -``*``, ``?`` and ``[chars]`` acting as wildcards. See the -`Pattern matching` section for more information. - -Examples using ``${XML}`` structure from `Example`: -| ${first} = | Get Element | ${XML} | first | -| Elements Should Match | ${first} | <first id="?">*</first> | - -See `Elements Should Be Equal` for more examples. - - - - - -source -expression -context=. - -Evaluates the given xpath expression and returns results. - -The element in which context the expression is executed is specified -using ``source`` and ``context`` arguments. They have exactly the same -semantics as ``source`` and ``xpath`` arguments have with `Get Element` -keyword. - -The xpath expression to evaluate is given as ``expression`` argument. -The result of the evaluation is returned as-is. - -Examples using ``${XML}`` structure from `Example`: -| ${count} = | Evaluate Xpath | ${XML} | count(third/*) | -| Should Be Equal | ${count} | ${3} | -| ${text} = | Evaluate Xpath | ${XML} | string(descendant::second[last()]/@id) | -| Should Be Equal | ${text} | child | -| ${bold} = | Evaluate Xpath | ${XML} | boolean(preceding-sibling::*[1] = 'bold') | context=html/p/i | -| Should Be Equal | ${bold} | ${True} | - -This keyword works only if lxml mode is taken into use when `importing` -the library. - - - - - -source -xpath=. - -Returns the child elements of the specified element as a list. - -The element whose children to return is specified using ``source`` and -``xpath``. They have exactly the same semantics as with `Get Element` -keyword. - -All the direct child elements of the specified element are returned. -If the element has no children, an empty list is returned. - -Examples using ``${XML}`` structure from `Example`: -| ${children} = | Get Child Elements | ${XML} | | -| Length Should Be | ${children} | 4 | | -| ${children} = | Get Child Elements | ${XML} | xpath=first | -| Should Be Empty | ${children} | | | - - - - - -source -xpath=. - -Returns an element in the ``source`` matching the ``xpath``. - -The ``source`` can be a path to an XML file, a string containing XML, or -an already parsed XML element. The ``xpath`` specifies which element to -find. See the `introduction` for more details about both the possible -sources and the supported xpath syntax. - -The keyword fails if more, or less, than one element matches the -``xpath``. Use `Get Elements` if you want all matching elements to be -returned. - -Examples using ``${XML}`` structure from `Example`: -| ${element} = | Get Element | ${XML} | second | -| ${child} = | Get Element | ${element} | child | - -`Parse XML` is recommended for parsing XML when the whole structure -is needed. It must be used if there is a need to configure how XML -namespaces are handled. - -Many other keywords use this keyword internally, and keywords modifying -XML are typically documented to both to modify the given source and -to return it. Modifying the source does not apply if the source is -given as a string. The XML structure parsed based on the string and -then modified is nevertheless returned. - - - - - -source -name -xpath=. -default=None - -Returns the named attribute of the specified element. - -The element whose attribute to return is specified using ``source`` and -``xpath``. They have exactly the same semantics as with `Get Element` -keyword. - -The value of the attribute ``name`` of the specified element is returned. -If the element does not have such element, the ``default`` value is -returned instead. - -Examples using ``${XML}`` structure from `Example`: -| ${attribute} = | Get Element Attribute | ${XML} | id | xpath=first | -| Should Be Equal | ${attribute} | 1 | | | -| ${attribute} = | Get Element Attribute | ${XML} | xx | xpath=first | default=value | -| Should Be Equal | ${attribute} | value | | | - -See also `Get Element Attributes`, `Element Attribute Should Be`, -`Element Attribute Should Match` and `Element Should Not Have Attribute`. - - - - - -source -xpath=. - -Returns all attributes of the specified element. - -The element whose attributes to return is specified using ``source`` and -``xpath``. They have exactly the same semantics as with `Get Element` -keyword. - -Attributes are returned as a Python dictionary. It is a copy of the -original attributes so modifying it has no effect on the XML structure. - -Examples using ``${XML}`` structure from `Example`: -| ${attributes} = | Get Element Attributes | ${XML} | first | -| Dictionary Should Contain Key | ${attributes} | id | | -| ${attributes} = | Get Element Attributes | ${XML} | third | -| Should Be Empty | ${attributes} | | | - -Use `Get Element Attribute` to get the value of a single attribute. - - - - - -source -xpath=. - -Returns and logs how many elements the given ``xpath`` matches. - -Arguments ``source`` and ``xpath`` have exactly the same semantics as -with `Get Elements` keyword that this keyword uses internally. - -See also `Element Should Exist` and `Element Should Not Exist`. - - - - - -source -xpath=. -normalize_whitespace=False - -Returns all text of the element, possibly whitespace normalized. - -The element whose text to return is specified using ``source`` and -``xpath``. They have exactly the same semantics as with `Get Element` -keyword. - -This keyword returns all the text of the specified element, including -all the text its children and grandchildren contain. If the element -has no text, an empty string is returned. The returned text is thus not -always the same as the `text` attribute of the element. - -By default all whitespace, including newlines and indentation, inside -the element is returned as-is. If ``normalize_whitespace`` is given -a true value (see `Boolean arguments`), then leading and trailing -whitespace is stripped, newlines and tabs converted to spaces, and -multiple spaces collapsed into one. This is especially useful when -dealing with HTML data. - -Examples using ``${XML}`` structure from `Example`: -| ${text} = | Get Element Text | ${XML} | first | -| Should Be Equal | ${text} | text | | -| ${text} = | Get Element Text | ${XML} | second/child | -| Should Be Empty | ${text} | | | -| ${paragraph} = | Get Element | ${XML} | html/p | -| ${text} = | Get Element Text | ${paragraph} | normalize_whitespace=yes | -| Should Be Equal | ${text} | Text with bold and italics. | - -See also `Get Elements Texts`, `Element Text Should Be` and -`Element Text Should Match`. - - - - - -source -xpath - -Returns a list of elements in the ``source`` matching the ``xpath``. - -The ``source`` can be a path to an XML file, a string containing XML, or -an already parsed XML element. The ``xpath`` specifies which element to -find. See the `introduction` for more details. - -Elements matching the ``xpath`` are returned as a list. If no elements -match, an empty list is returned. Use `Get Element` if you want to get -exactly one match. - -Examples using ``${XML}`` structure from `Example`: -| ${children} = | Get Elements | ${XML} | third/child | -| Length Should Be | ${children} | 2 | | -| ${children} = | Get Elements | ${XML} | first/child | -| Should Be Empty | ${children} | | | - - - - - -source -xpath -normalize_whitespace=False - -Returns text of all elements matching ``xpath`` as a list. - -The elements whose text to return is specified using ``source`` and -``xpath``. They have exactly the same semantics as with `Get Elements` -keyword. - -The text of the matched elements is returned using the same logic -as with `Get Element Text`. This includes optional whitespace -normalization using the ``normalize_whitespace`` option. - -Examples using ``${XML}`` structure from `Example`: -| @{texts} = | Get Elements Texts | ${XML} | third/child | -| Length Should Be | ${texts} | 2 | | -| Should Be Equal | @{texts}[0] | more text | | -| Should Be Equal | @{texts}[1] | ${EMPTY} | | - - - - - -source -level=INFO -xpath=. - -Logs the string representation of the specified element. - -The element specified with ``source`` and ``xpath`` is first converted -into a string using `Element To String` keyword internally. The -resulting string is then logged using the given ``level``. - -The logged string is also returned. - - - - - -source -keep_clark_notation=False -strip_namespaces=False - -Parses the given XML file or string into an element structure. - -The ``source`` can either be a path to an XML file or a string -containing XML. In both cases the XML is parsed into ElementTree -[http://docs.python.org/library/xml.etree.elementtree.html#element-objects|element structure] -and the root element is returned. Possible comments and processing -instructions in the source XML are removed. - -As discussed in `Handling XML namespaces` section, this keyword, by -default, removes namespace information ElementTree has added to tag -names and moves it into ``xmlns`` attributes. This typically eases -handling XML documents with namespaces considerably. If you do not -want that to happen, or want to avoid the small overhead of going -through the element structure when your XML does not have namespaces, -you can disable this feature by giving ``keep_clark_notation`` argument -a true value (see `Boolean arguments`). - -If you want to strip namespace information altogether so that it is -not included even if XML is saved, you can give a true value to -``strip_namespaces`` argument. This functionality is new in Robot -Framework 3.0.2. - -Examples: -| ${root} = | Parse XML | <root><child/></root> | -| ${xml} = | Parse XML | ${CURDIR}/test.xml | keep_clark_notation=True | -| ${xml} = | Parse XML | ${CURDIR}/test.xml | strip_namespaces=True | - -Use `Get Element` keyword if you want to get a certain element and not -the whole structure. See `Parsing XML` section for more details and -examples. - - - - - -source -xpath= -remove_tail=False - -Removes the element matching ``xpath`` from the ``source`` structure. - -The element to remove from the ``source`` is specified with ``xpath`` -using the same semantics as with `Get Element` keyword. The resulting -XML structure is returned, and if the ``source`` is an already parsed -XML structure, it is also modified in place. - -The keyword fails if ``xpath`` does not match exactly one element. -Use `Remove Elements` to remove all matched elements. - -Element's tail text is not removed by default, but that can be changed -by giving ``remove_tail`` a true value (see `Boolean arguments`). See -`Element attributes` section for more information about `tail` in -general. - -Examples using ``${XML}`` structure from `Example`: -| Remove Element | ${XML} | xpath=second | -| Element Should Not Exist | ${XML} | xpath=second | -| Remove Element | ${XML} | xpath=html/p/b | remove_tail=yes | -| Element Text Should Be | ${XML} | Text with italics. | xpath=html/p | normalize_whitespace=yes | - - - - - -source -name -xpath=. - -Removes attribute ``name`` from the specified element. - -The element whose attribute to remove is specified using ``source`` and -``xpath``. They have exactly the same semantics as with `Get Element` -keyword. The resulting XML structure is returned, and if the ``source`` -is an already parsed XML structure, it is also modified in place. - -It is not a failure to remove a non-existing attribute. Use `Remove -Element Attributes` to remove all attributes and `Set Element Attribute` -to set them. - -Examples using ``${XML}`` structure from `Example`: -| Remove Element Attribute | ${XML} | id | xpath=first | -| Element Should Not Have Attribute | ${XML} | id | xpath=first | - -Can only remove an attribute from a single element. Use `Remove Elements -Attribute` to remove an attribute of multiple elements in one call. - - - - - -source -xpath=. - -Removes all attributes from the specified element. - -The element whose attributes to remove is specified using ``source`` and -``xpath``. They have exactly the same semantics as with `Get Element` -keyword. The resulting XML structure is returned, and if the ``source`` -is an already parsed XML structure, it is also modified in place. - -Use `Remove Element Attribute` to remove a single attribute and -`Set Element Attribute` to set them. - -Examples using ``${XML}`` structure from `Example`: -| Remove Element Attributes | ${XML} | xpath=first | -| Element Should Not Have Attribute | ${XML} | id | xpath=first | - -Can only remove attributes from a single element. Use `Remove Elements -Attributes` to remove all attributes of multiple elements in one call. - - - - - -source -xpath= -remove_tail=False - -Removes all elements matching ``xpath`` from the ``source`` structure. - -The elements to remove from the ``source`` are specified with ``xpath`` -using the same semantics as with `Get Elements` keyword. The resulting -XML structure is returned, and if the ``source`` is an already parsed -XML structure, it is also modified in place. - -It is not a failure if ``xpath`` matches no elements. Use `Remove -Element` to remove exactly one element. - -Element's tail text is not removed by default, but that can be changed -by using ``remove_tail`` argument similarly as with `Remove Element`. - -Examples using ``${XML}`` structure from `Example`: -| Remove Elements | ${XML} | xpath=*/child | -| Element Should Not Exist | ${XML} | xpath=second/child | -| Element Should Not Exist | ${XML} | xpath=third/child | - - - - - -source -name -xpath=. - -Removes attribute ``name`` from the specified elements. - -Like `Remove Element Attribute` but removes the attribute of all -elements matching the given ``xpath``. - - - - - -source -xpath=. - -Removes all attributes from the specified elements. - -Like `Remove Element Attributes` but removes all attributes of all -elements matching the given ``xpath``. - - - - - -source -path -encoding=UTF-8 - -Saves the given element to the specified file. - -The element to save is specified with ``source`` using the same -semantics as with `Get Element` keyword. - -The file where the element is saved is denoted with ``path`` and the -encoding to use with ``encoding``. The resulting file always contains -the XML declaration. - -The resulting XML file may not be exactly the same as the original: -- Comments and processing instructions are always stripped. -- Possible doctype and namespace prefixes are only preserved when - `using lxml`. -- Other small differences are possible depending on the ElementTree - or lxml version. - -Use `Element To String` if you just need a string representation of -the element. - - - - - -source -name -value -xpath=. - -Sets attribute ``name`` of the specified element to ``value``. - -The element whose attribute to set is specified using ``source`` and -``xpath``. They have exactly the same semantics as with `Get Element` -keyword. The resulting XML structure is returned, and if the ``source`` -is an already parsed XML structure, it is also modified in place. - -It is possible to both set new attributes and to overwrite existing. -Use `Remove Element Attribute` or `Remove Element Attributes` for -removing them. - -Examples using ``${XML}`` structure from `Example`: -| Set Element Attribute | ${XML} | attr | value | -| Element Attribute Should Be | ${XML} | attr | value | -| Set Element Attribute | ${XML} | id | new | xpath=first | -| Element Attribute Should Be | ${XML} | id | new | xpath=first | - -Can only set an attribute of a single element. Use `Set Elements -Attribute` to set an attribute of multiple elements in one call. - - - - - -source -tag -xpath=. - -Sets the tag of the specified element. - -The element whose tag to set is specified using ``source`` and -``xpath``. They have exactly the same semantics as with `Get Element` -keyword. The resulting XML structure is returned, and if the ``source`` -is an already parsed XML structure, it is also modified in place. - -Examples using ``${XML}`` structure from `Example`: -| Set Element Tag | ${XML} | newTag | -| Should Be Equal | ${XML.tag} | newTag | -| Set Element Tag | ${XML} | xxx | xpath=second/child | -| Element Should Exist | ${XML} | second/xxx | -| Element Should Not Exist | ${XML} | second/child | - -Can only set the tag of a single element. Use `Set Elements Tag` to set -the tag of multiple elements in one call. - - - - - -source -text=None -tail=None -xpath=. - -Sets text and/or tail text of the specified element. - -The element whose text to set is specified using ``source`` and -``xpath``. They have exactly the same semantics as with `Get Element` -keyword. The resulting XML structure is returned, and if the ``source`` -is an already parsed XML structure, it is also modified in place. - -Element's text and tail text are changed only if new ``text`` and/or -``tail`` values are given. See `Element attributes` section for more -information about `text` and `tail` in general. - -Examples using ``${XML}`` structure from `Example`: -| Set Element Text | ${XML} | new text | xpath=first | -| Element Text Should Be | ${XML} | new text | xpath=first | -| Set Element Text | ${XML} | tail=& | xpath=html/p/b | -| Element Text Should Be | ${XML} | Text with bold&italics. | xpath=html/p | normalize_whitespace=yes | -| Set Element Text | ${XML} | slanted | !! | xpath=html/p/i | -| Element Text Should Be | ${XML} | Text with bold&slanted!! | xpath=html/p | normalize_whitespace=yes | - -Can only set the text/tail of a single element. Use `Set Elements Text` -to set the text/tail of multiple elements in one call. - - - - - -source -name -value -xpath=. - -Sets attribute ``name`` of the specified elements to ``value``. - -Like `Set Element Attribute` but sets the attribute of all elements -matching the given ``xpath``. - - - - - -source -tag -xpath=. - -Sets the tag of the specified elements. - -Like `Set Element Tag` but sets the tag of all elements matching -the given ``xpath``. - - - - - -source -text=None -tail=None -xpath=. - -Sets text and/or tail text of the specified elements. - -Like `Set Element Text` but sets the text or tail of all elements -matching the given ``xpath``. - - - - -- GitLab From 2bd67366a6430dab7f4a806a19d9668ae5547c87 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 4 Nov 2020 16:04:16 +0100 Subject: [PATCH 514/580] added SOL009 index file --- indexes/sol_009_index.csv | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 indexes/sol_009_index.csv diff --git a/indexes/sol_009_index.csv b/indexes/sol_009_index.csv new file mode 100644 index 000000000..cf6391a10 --- /dev/null +++ b/indexes/sol_009_index.csv @@ -0,0 +1,41 @@ +8, NFV-MANO Management Reference Point, SOL009 +8.3.1,NFV MANO Configuration And Information Management Interface +8.3.1.1,NFV MANO Entity Endpoint, NFVMANOEntity.robot +8.3.1.2,Change NFV MANO Entity State Task Endpoint, ChangeNFVMANOEntityStateTask.robot +8.3.1.3,Change State Operation Occurrences Endpoint, ChangeStateOperationOccurrences.robot +8.3.1.4,Individual State Change Operation Occurrence Endpoint, IndividualStateChangeOperationOccurrence.robot +8.3.1.5,NFV MANO Service Interfaces Endpoint, NFVMANOServiceInterfaces.robot +8.3.1.6,Individual NFV MANO Service Interface Endpoint, IndividualNFVMANOServiceInterface.robot +8.3.1.7,Change Interface State Task Endpoint, ChangeInterfaceStateTask.robot +8.3.1.8,Peer Entities Endpoint, PeerEntities.robot +8.3.1.9,Individual Peer Entity Endpoint, IndividualPeerEntity.robot +8.3.1.10,Subscriptions Endpoint, Subscriptions.robot +8.3.1.11,Individual Subscription Resource Endpoint, IndividualSubscription.robot +8.3.1.12,Notification Endpoint, NotificationEndpoint.robot +8.3.1.13,API Version Endpoint, ApiVersion.robot +8.3.2,NFV MANO Performance Management interface +8.3.2.1,PM Jobs Endpoint, PMJobs.robot +8.3.2.2,Individual Pm Job Endpoint, IndividualPmJob.robot +8.3.2.3,Individual Report Endpoint, IndividualReport.robot +8.3.2.4,Thresholds Endpoint, Thresholds.robot +8.3.2.5,Individual Threshold Endpoint, IndividualThreshold.robot +8.3.2.6,Subscriptions Endpoint, Subscriptions.robot +8.3.2.7,Individual Subscription Endpoint, IndividualSubscription.robot +8.3.2.8,Notification Endpoint,PerformanceManagementNotification.robot +8.3.2.9,API Version Endpoint, ApiVersion.robot +8.3.3,NFV MANO Fault Management interface +8.3.3.1,Alarms Endpoint, Alarms.robot +8.3.3.2,Individual Alarm Endpoint, IndividualAlarm.robot +8.3.3.3,Subscriptions Endpoint, Subscriptions.robot +8.3.3.4,Individual Subscription Endpoint, IndividualSubscription.robot +8.3.3.5,Notification Endpoint, NotificationEndpoint.robot +8.3.3.6, API Version Endpoint, ApiVersion.robot +8.3.4,NFV MANO Log Management interface +8.3.4.1,Logging Jobs Endpoint, LoggingJobs.robot +8.3.4.2,Individual Logging Job Endpoint, IndividualLoggingJob.robot +8.3.4.3,Individual Report Endpoint, IndividualReport.robot +8.3.4.4,Compile Log Task Endpoint, CompileLogTask.robot +8.3.4.5,Subscriptions Resource Endpoint, Subscriptions.robot +8.3.4.6,Individual Subscription Endpoint, IndividualSubscription.robot +8.3.4.7,Notification Endpoint, NotificationEndpoint.robot +8.3.4.8,API Version Endpoint, ApiVersion.robot -- GitLab From 7ef8af9ad8e0cfb7be4c28e7b7c113654fdc943b Mon Sep 17 00:00:00 2001 From: zafar Date: Mon, 23 Nov 2020 18:39:40 +0500 Subject: [PATCH 515/580] Fix for 'Incorrect API version endpoints' bug --- .../ApiVersion.robot | 20 +++++++++---------- .../NFVMANOLogManagement-API/ApiVersion.robot | 20 +++++++++---------- .../ApiVersion.robot | 20 +++++++++---------- .../ApiVersion.robot | 20 +++++++++---------- 4 files changed, 40 insertions(+), 40 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot b/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot index 0dde1341d..fc51479fd 100644 --- a/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot +++ b/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot @@ -132,70 +132,70 @@ DELETE API Version with apiMajorVerion - Method not implemented POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version + Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version + Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version + Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version + Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version + Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL009/NFVMANOLogManagement-API/ApiVersion.robot b/SOL009/NFVMANOLogManagement-API/ApiVersion.robot index f97546b9e..ddd681ced 100644 --- a/SOL009/NFVMANOLogManagement-API/ApiVersion.robot +++ b/SOL009/NFVMANOLogManagement-API/ApiVersion.robot @@ -132,70 +132,70 @@ DELETE API Version with apiMajorVerion - Method not implemented POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version + Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version + Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version + Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version + Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version + Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL009/NFVMANOPerformanceManagement-API/ApiVersion.robot b/SOL009/NFVMANOPerformanceManagement-API/ApiVersion.robot index 104a87b26..466df91ae 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/ApiVersion.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/ApiVersion.robot @@ -132,70 +132,70 @@ DELETE API Version with apiMajorVerion - Method not implemented POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version + Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version + Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version + Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version + Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version + Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot index b9c86942f..35c195242 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot @@ -132,70 +132,70 @@ DELETE API Version with apiMajorVerion - Method not implemented POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version + Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version + Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version + Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version + Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version + Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_version + Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -- GitLab From 9a1a50165bd1a6076da2b4639f749e37b9b43ca3 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 24 Nov 2020 16:10:14 +0500 Subject: [PATCH 516/580] New Resource NotificationConsumer added in NFV-MANO CIM --- .../NotificationConsumer.robot | 69 +++++++++++++++++++ .../environment/variables.txt | 4 +- .../jsons/ChangeStateNotification.json | 18 +++++ .../jsons/InformationChangedNotification.json | 12 ++++ 4 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateNotification.json create mode 100644 SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/InformationChangedNotification.json diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..57923c351 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot @@ -0,0 +1,69 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +Information Changed Notification + [Documentation] Test ID: 8.3.1.14.1 + ... Test title: Information Changed Notification + ... Test objective: The objective is to test that Information Changed Notification is delivered with success to the notification consumer + ... Pre-conditions: A subscription for information availability notification is available in the NFV-MANO. + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + POST Information Changed Notification + Check HTTP Response Status Code Is 204 + +Change State Notification + [Documentation] Test ID: 8.3.1.14.2 + ... Test title: Change State Notification + ... Test objective: The objective is to test that Change State Notification is delivered with success to the notification consumer + ... Pre-conditions: A subscription for change state notification is available in the NFV-MANO. + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + POST Change State Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + Integer response status 200 + Validate Json response body CimSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Information Changed Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/InformationChangedNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Change State Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/ChangeStateNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} changeStateOpOccId=${changeStateOpOccId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt index e94ee646d..35efe08ef 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/environment/variables.txt @@ -64,4 +64,6 @@ ${state} operational ${stateAction} START ${retry} 2 min -${polling} 10 sec \ No newline at end of file +${polling} 10 sec + +${callbackResp} 127.0.0.1 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateNotification.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateNotification.json new file mode 100644 index 000000000..c034b3bef --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/ChangeStateNotification.json @@ -0,0 +1,18 @@ +{{ + "id": "", + "notificationType": "ChangeStateNotification", + "subscriptionId": "{subscriptionId}", + "timeStamp": "", + "changeStateOpOccId": "{changeStateOpOccId}", + "stateChangedTime": "", + "changeStateOperationState": "PROCESSING", + "managedObjectRef": {{ + "type": "", + "objectId": "" + }} + "_links": {{ + "subscription": "" + "objectInstance": "", + "changeStateOpOcc": "" + }} +}} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/InformationChangedNotification.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/InformationChangedNotification.json new file mode 100644 index 000000000..4a1bd88e9 --- /dev/null +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/jsons/InformationChangedNotification.json @@ -0,0 +1,12 @@ +{{ + "id": "", + "notificationType": "InformationChangedNotification", + "subscriptionId": "{subscriptionId}", + "timeStamp": "", + "informationChangedTime": "", + "manoEntityId": "", + "changedInfo": "", + "_links": {{ + "subscription": "" + }} +}} \ No newline at end of file -- GitLab From bf79175c04fd01f7a105af3f18449ccfbd83da30 Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 24 Nov 2020 18:09:25 +0500 Subject: [PATCH 517/580] New Resource NotificationConsumer added in NFV-MANO PM --- .../NotificationConsumer.robot | 78 +++++++++++++++++++ ...ceInformationAvailabilityNotification.json | 14 ++++ .../jsons/ThresholdCrossedNotification.json | 17 ++++ .../NotificationConsumer.robot | 2 +- 4 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 SOL009/NFVMANOPerformanceManagement-API/NotificationConsumer.robot create mode 100644 SOL009/NFVMANOPerformanceManagement-API/jsons/PerformanceInformationAvailabilityNotification.json create mode 100644 SOL009/NFVMANOPerformanceManagement-API/jsons/ThresholdCrossedNotification.json diff --git a/SOL009/NFVMANOPerformanceManagement-API/NotificationConsumer.robot b/SOL009/NFVMANOPerformanceManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..5ae44b57e --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/NotificationConsumer.robot @@ -0,0 +1,78 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource environment/individualThresholds.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Suite Setup Check resource existence and get CallbackUri + + +*** Test Cases *** +Performance Information Available Notification + [Documentation] Test ID: 8.3.2.10.1 + ... Test title: Performance Information Available Notification + ... Test objective: The objective is to test that Performance Available Notification is delivered with success to the notification consumer + ... Pre-conditions: A subscription for performance available notification is available in the NFV-MANO. + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + POST Performance Information Available Notification + Check HTTP Response Status Code Is 204 + +Threshold Crossed Notification + [Documentation] Test ID: 8.3.2.10.2 + ... Test title: Threshold Crossed Notification + ... Test objective: The objective is to test that Threshold Crossed Notification is delivered with success to the notification consumer + ... Pre-conditions: A subscription for threshold crosssed notification is available in the NFV-MANO. + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + POST Threshold Crossed Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body PmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +POST Performance Information Available Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/PerformanceInformationAvailabilityNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} objectInstanceId=${objectInstanceIds} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Threshold Crossed Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/ThresholdCrossedNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} thresholdId=${thresholdId} objectInstanceId=${objectInstanceIds} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + + + + + + diff --git a/SOL009/NFVMANOPerformanceManagement-API/jsons/PerformanceInformationAvailabilityNotification.json b/SOL009/NFVMANOPerformanceManagement-API/jsons/PerformanceInformationAvailabilityNotification.json new file mode 100644 index 000000000..5be4a1a38 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/jsons/PerformanceInformationAvailabilityNotification.json @@ -0,0 +1,14 @@ +{{ + "id": "", + "notificationType": "PerformanceInformationAvailableNotification", + "subscriptionId": "{subscriptionId}", + "timeStamp": "", + "objectType": "", + "objectInstanceId": "{objectInstanceId}", + "_links": {{ + "subscription": "" + "objectInstance": "", + "pmJob": "", + "performanceReport": "" + }} +}} \ No newline at end of file diff --git a/SOL009/NFVMANOPerformanceManagement-API/jsons/ThresholdCrossedNotification.json b/SOL009/NFVMANOPerformanceManagement-API/jsons/ThresholdCrossedNotification.json new file mode 100644 index 000000000..8984e0f66 --- /dev/null +++ b/SOL009/NFVMANOPerformanceManagement-API/jsons/ThresholdCrossedNotification.json @@ -0,0 +1,17 @@ +{{ + "id": "", + "notificationType": "ThresholdCrossedNotification", + "subscriptionId": "{subscriptionId}", + "timeStamp": "", + "thresholdId": "{thresholdId}", + "crossingDirection": "UP", + "objectType": "", + "objectInstanceId": "{objectInstanceId}", + "performanceMetric": "", + "performanceValue": "", + "_links": {{ + "subscription": "" + "objectInstance": "", + "threshold": "" + }} +}} \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot index 57923c351..f7a1578f7 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot @@ -36,7 +36,7 @@ Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Validate Json response body CimSubscription.schema.json Set Global Variable ${callbackResp} response body callbackUri -- GitLab From e2468562af7f68d089f64348d06a0d5cb903a4e7 Mon Sep 17 00:00:00 2001 From: zafar Date: Wed, 25 Nov 2020 16:33:48 +0500 Subject: [PATCH 518/580] New 'NotificationConsumer' resources added in NFV-MANO LM & FM interfaces --- .../NotificationConsumer.robot | 93 +++++++++++++++++++ .../environment/variables.txt | 4 +- .../jsons/AlarmClearedNotification.json | 12 +++ .../jsons/AlarmListRebuiltNotification.json | 10 ++ .../jsons/AlarmNotification.json | 21 +++++ .../NotificationConsumer.robot | 46 +++++++++ .../environment/variables.txt | 4 +- .../jsons/LogReportAvailableNotification.json | 12 +++ 8 files changed, 200 insertions(+), 2 deletions(-) create mode 100644 SOL009/NFVMANOFaultManagement-API/NotificationConsumer.robot create mode 100644 SOL009/NFVMANOFaultManagement-API/jsons/AlarmClearedNotification.json create mode 100644 SOL009/NFVMANOFaultManagement-API/jsons/AlarmListRebuiltNotification.json create mode 100644 SOL009/NFVMANOFaultManagement-API/jsons/AlarmNotification.json create mode 100644 SOL009/NFVMANOLogManagement-API/NotificationConsumer.robot create mode 100644 SOL009/NFVMANOLogManagement-API/jsons/LogReportAvailableNotification.json diff --git a/SOL009/NFVMANOFaultManagement-API/NotificationConsumer.robot b/SOL009/NFVMANOFaultManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..83972fbec --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/NotificationConsumer.robot @@ -0,0 +1,93 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +Alarm Notification + [Documentation] Test ID: 8.3.3.7.1 + ... Test title: Alarm Notification + ... Test objective: The objective is to test that Alarm Notification is delivered with success to the notification consumer. + ... Pre-conditions: A subscription for alarm notification is available in the NFV-MANO. + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Alarm Notification + Check HTTP Response Status Code Is 204 + +Alarm Cleared Notification + [Documentation] Test ID: 8.3.3.7.2 + ... Test title: Alarm Cleared Notification + ... Test objective: The objective is to test that Alarm Cleared Notification is delivered with success to the notification consumer. + ... Pre-conditions: A subscription for alarm cleared notification is available in the NFV-MANO. + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Alarm Cleared Notification + Check HTTP Response Status Code Is 204 + +Alarm List Rebuilt Notification + [Documentation] Test ID: 8.3.3.7.3 + ... Test title: Alarm List Rebuilt Notification + ... Test objective: The objective is to test that Alarm List Rebuilt Notification is delivered with success to the notification consumer. + ... Pre-conditions: A subscription for alarm list rebuilt notification is available in the NFV-MANO. + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Alarm List Rebuilt Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body FmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Alarm Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/AlarmNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} managedObjectId=${managedObjectId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm Cleared Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/AlarmClearedNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm List Rebuilt Notification + log Trying to perform a POST to get notifications + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/AlarmListRebuiltNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + diff --git a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt index fdb1ee9d3..e230f9438 100644 --- a/SOL009/NFVMANOFaultManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOFaultManagement-API/environment/variables.txt @@ -48,4 +48,6 @@ ${polling_interval} 10 sec ${notification_request} [] ${notification_response} [] -${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar \ No newline at end of file +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +${callbackResp} 127.0.0.1 \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/jsons/AlarmClearedNotification.json b/SOL009/NFVMANOFaultManagement-API/jsons/AlarmClearedNotification.json new file mode 100644 index 000000000..456d44801 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/jsons/AlarmClearedNotification.json @@ -0,0 +1,12 @@ +{{ + "id": "", + "notificationType": "AlarmClearedNotification", + "subscriptionId": "{subscriptionId}", + "timeStamp": "", + "alarmId": "{alarmId}", + "alarmClearedTime": "", + "_links": {{ + "subscription": "", + "alarm": "" + }} +}} \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/jsons/AlarmListRebuiltNotification.json b/SOL009/NFVMANOFaultManagement-API/jsons/AlarmListRebuiltNotification.json new file mode 100644 index 000000000..11ec0adb8 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/jsons/AlarmListRebuiltNotification.json @@ -0,0 +1,10 @@ +{{ + "id": "", + "notificationType": "AlarmListRebuiltNotification", + "subscriptionId": "{subscriptionId}", + "timeStamp": "", + "_links": {{ + "subscription": "", + "alarms": "" + }} +}} \ No newline at end of file diff --git a/SOL009/NFVMANOFaultManagement-API/jsons/AlarmNotification.json b/SOL009/NFVMANOFaultManagement-API/jsons/AlarmNotification.json new file mode 100644 index 000000000..65510f3f9 --- /dev/null +++ b/SOL009/NFVMANOFaultManagement-API/jsons/AlarmNotification.json @@ -0,0 +1,21 @@ +{{ + "id": "", + "notificationType": "AlarmNotification", + "subscriptionId": "{subscriptionId}", + "timeStamp": "", + "alarm": {{ + "id": "{alarmId}", + "managedObjectId": "{managedObjectId}", + "perceivedSeverity": "MAJOR", + "eventTime": "", + "eventType": "COMMUNICATIONS_ALARM", + "probableCause": "", + "isRootCause": "TRUE", + "_links": {{ + "self": "" + }} + }}, + "_links": {{ + "subscription": "" + }} +}} \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/NotificationConsumer.robot b/SOL009/NFVMANOLogManagement-API/NotificationConsumer.robot new file mode 100644 index 000000000..b89a0eee1 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/NotificationConsumer.robot @@ -0,0 +1,46 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +Log Report Available Notification + [Documentation] Test ID: 8.3.4.9.1 + ... Test title: Log Report Available Notification + ... Test objective: The objective is to test that Log Report Available Notification is delivered with success to the notification consumer. + ... Pre-conditions: A subscription for log report available notification is available in the NFV-MANO. + ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post Log Report Available Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body LogmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Post Log Report Available Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/LogReportAvailableNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} objectInstanceId=${objectInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL009/NFVMANOLogManagement-API/environment/variables.txt b/SOL009/NFVMANOLogManagement-API/environment/variables.txt index 82c8646ff..0b09b860f 100644 --- a/SOL009/NFVMANOLogManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOLogManagement-API/environment/variables.txt @@ -63,4 +63,6 @@ ${erroneousSubscriptionId} erroneousSubscriptionId ${newSubscriptionId} newSubsciptionId ${objectInstanceId} 4bd7-94b4-6bbb86-9c79aa -${notification_type} LogReportAvailableNotification \ No newline at end of file +${notification_type} LogReportAvailableNotification + +${callbackResp} 127.0.0.1 \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/jsons/LogReportAvailableNotification.json b/SOL009/NFVMANOLogManagement-API/jsons/LogReportAvailableNotification.json new file mode 100644 index 000000000..d585acf56 --- /dev/null +++ b/SOL009/NFVMANOLogManagement-API/jsons/LogReportAvailableNotification.json @@ -0,0 +1,12 @@ +{{ + "id": "", + "notificationType": "LogReportAvailableNotification", + "subscriptionId": "{subscriptionId}", + "timeStamp": "", + "objectInstanceId": "{objectInstanceId}", + "_links": {{ + "subscription": "", + "LoggingJob": "", + "logReports": [] + }} +}} \ No newline at end of file -- GitLab From 8664578dc3cf866acced5cef7606fa7c18ab19ac Mon Sep 17 00:00:00 2001 From: zafar Date: Thu, 26 Nov 2020 13:31:13 +0500 Subject: [PATCH 519/580] Minor errors resolved. All tests validated. --- .../NotificationConsumer.robot | 9 +++++---- .../NFVMANOLogManagement-API/NotificationConsumer.robot | 1 + .../NotificationConsumer.robot | 1 + .../environment/variables.txt | 4 +++- .../NotificationConsumer.robot | 1 + 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/NotificationConsumer.robot b/SOL009/NFVMANOFaultManagement-API/NotificationConsumer.robot index 83972fbec..3784c1612 100644 --- a/SOL009/NFVMANOFaultManagement-API/NotificationConsumer.robot +++ b/SOL009/NFVMANOFaultManagement-API/NotificationConsumer.robot @@ -4,6 +4,7 @@ Resource environment/variables.txt Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary +Library String Suite Setup Check resource existence and get CallbackUri *** Test Cases *** @@ -46,7 +47,7 @@ Alarm List Rebuilt Notification *** Keywords *** Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 @@ -61,7 +62,7 @@ Check HTTP Response Status Code Is Post Alarm Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template} = Get File jsons/AlarmNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} managedObjectId=${managedObjectId} @@ -72,7 +73,7 @@ Post Alarm Notification Post Alarm Cleared Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template} = Get File jsons/AlarmClearedNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} @@ -83,7 +84,7 @@ Post Alarm Cleared Notification Post Alarm List Rebuilt Notification log Trying to perform a POST to get notifications Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template} = Get File jsons/AlarmListRebuiltNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} diff --git a/SOL009/NFVMANOLogManagement-API/NotificationConsumer.robot b/SOL009/NFVMANOLogManagement-API/NotificationConsumer.robot index b89a0eee1..f124cf4b9 100644 --- a/SOL009/NFVMANOLogManagement-API/NotificationConsumer.robot +++ b/SOL009/NFVMANOLogManagement-API/NotificationConsumer.robot @@ -4,6 +4,7 @@ Resource environment/variables.txt Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary +Library String Suite Setup Check resource existence and get CallbackUri *** Test Cases *** diff --git a/SOL009/NFVMANOPerformanceManagement-API/NotificationConsumer.robot b/SOL009/NFVMANOPerformanceManagement-API/NotificationConsumer.robot index 5ae44b57e..9fcc1ca51 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/NotificationConsumer.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/NotificationConsumer.robot @@ -5,6 +5,7 @@ Resource environment/individualThresholds.txt Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary +Library String Suite Setup Check resource existence and get CallbackUri diff --git a/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt b/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt index 0d578a276..877c07bfe 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOPerformanceManagement-API/environment/variables.txt @@ -35,4 +35,6 @@ ${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa ${response} -${objectInstanceIds} daca910b0-00d4f1a2b675d-604257e42 \ No newline at end of file +${objectInstanceIds} daca910b0-00d4f1a2b675d-604257e42 + +${callbackResp} 127.0.0.1 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot index f7a1578f7..27fa56033 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot @@ -4,6 +4,7 @@ Resource environment/variables.txt Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary +Library String Suite Setup Check resource existence and get CallbackUri *** Test Cases *** -- GitLab From 17dbfcb12487b49267ef3494ffc0ceb2106b3572 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 1 Apr 2021 15:54:24 +0200 Subject: [PATCH 520/580] fixes due to rebase --- .../ChangeStateOperationOccurrences.robot | 8 ++--- .../NFVMANOCimKeywords.robot | 16 +++++----- .../PeerEntities.robot | 30 +++++++++---------- indexes/sol_005_index.csv | 2 +- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot index d0b06d71d..a88f6f870 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot @@ -146,7 +146,7 @@ GET Change State Operation Occurrences with Paged Response ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Change State Operation Occurrence + Get Change State Operation Occurrences Check HTTP Response Status Code Is 200 Check HTTP Response Header Contains Link @@ -172,7 +172,7 @@ PUT Change State Operation Occurrences - Method not implemented ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Put request for Change State Operation Occurrence + Send Put request for Change State Operation Occurrences Check HTTP Response Status Code Is 405 PATCH Change State Operation Occurrences - Method not implemented @@ -184,7 +184,7 @@ PATCH Change State Operation Occurrences - Method not implemented ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Patch request for Change State Operation Occurrence + Send Patch request for Change State Operation Occurrences Check HTTP Response Status Code Is 405 DELETE Change State Operation Occurrences - Method not implemented @@ -196,5 +196,5 @@ DELETE Change State Operation Occurrences - Method not implemented ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Delete request for Change State Operation Occurrence + Send Delete request for Change State Operation Occurrences Check HTTP Response Status Code Is 405 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 57e609f64..0689396c5 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -242,7 +242,7 @@ Send DELETE request for Change State Operation Occurrences ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send Post request for Individual Change State Operation Occurance +Send Post request for Individual Change State Operation Occurrence 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}"} @@ -250,7 +250,7 @@ Send Post request for Individual Change State Operation Occurance ${output}= Output response Set Suite Variable ${response} ${output} -Get Individual Change State OpOcc +Get Individual Change State Operation Occurrence Log Query to GET information about individual change state operation occurrences. Set Headers {"Accept":"${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -259,7 +259,7 @@ Get Individual Change State OpOcc ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send Put request for Individual Change State Operation Occurance +Send Put request for Individual Change State Operation Occurrence 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}"} @@ -267,7 +267,7 @@ Send Put request for Individual Change State Operation Occurance ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send Patch request for Individual Change State Operation Occurance +Send Patch request for Individual Change State Operation Occurrence 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}"} @@ -275,7 +275,7 @@ Send Patch request for Individual Change State Operation Occurance ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} -Send Delete request for Individual Change State Operation Occurance +Send Delete request for Individual Change State Operation Occurrence 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}"} @@ -816,7 +816,7 @@ Check HTTP Response Header Contains Location ${loc}= Get Value From Json ${response['headers']} $..Location Should Not Be Empty ${loc} -GET Peer Entity with malformed authorization token +GET Peer Entities with malformed authorization token Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting authentication Log The GET method queries using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -826,7 +826,7 @@ GET Peer Entity with malformed authorization token ${output}= Output response Set Suite Variable ${response} ${output} -GET Peer Entity without authorization token +GET Peer Entities without authorization token Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication Log The GET method queries omitting token Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -835,7 +835,7 @@ GET Peer Entity without authorization token ${output}= Output response Set Suite Variable ${response} ${output} -GET Peer Entity with expired or revoked authorization token +GET Peer Entities with expired or revoked authorization token Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication Log The GET method queries using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot index 55ce8d910..e2c01b989 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot @@ -32,7 +32,7 @@ GET Peer Entities ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Peer Entity + Get Peer Entities Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities @@ -45,7 +45,7 @@ GET Peer Entities - invalid attribute-based filter ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Peer Entity with invalid filter + Get Peer Entities with invalid filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -58,7 +58,7 @@ GET Peer Entities - invalid attribute selector ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Peer Entity with invalid selector + Get Peer Entities with invalid selector Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -71,7 +71,7 @@ GET Peer Entities - Bad Request Response too Big ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Peer Entity + Get Peer Entities Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails @@ -84,7 +84,7 @@ GET Peer Entities with attribute-based filter ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Peer Entity with filter + Get Peer Entities with filter Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities @@ -97,7 +97,7 @@ GET Peer Entities with "all_fields" attribute selector ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Peer Entity with all_fields attribute selector + Get Peer Entities with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities @@ -110,7 +110,7 @@ GET Peer Entities with "exclude_default" attribute selector ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Peer Entity with all_fields attribute selector + Get Peer Entities with all_fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities @@ -123,7 +123,7 @@ GET Peer Entities with "fields" attribute selector ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Peer Entity with fields attribute selector + Get Peer Entities with fields attribute selector Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PeerEntities @@ -162,7 +162,7 @@ GET Peer Entity with Paged Response ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Get Peer Entity + Get Peer Entities Check HTTP Response Status Code Is 200 Check HTTP Response Header Contains Link @@ -175,7 +175,7 @@ Get Peer Entity with malformed authorization token ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none - GET Peer Entity with malformed authorization token + GET Peer Entities with malformed authorization token Check HTTP Response Status Code Is 401 Get Peer Entity without authorization token @@ -187,7 +187,7 @@ Get Peer Entity without authorization token ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none - GET Peer Entity without authorization token + GET Peer Entities without authorization token Check HTTP Response Status Code Is 401 GET information about multiple alarms with expired or revoked authorization token @@ -199,7 +199,7 @@ GET information about multiple alarms with expired or revoked authorization toke ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none - GET Peer Entity with expired or revoked authorization token + GET Peer Entities with expired or revoked authorization token Check HTTP Response Status Code Is 401 PUT Peer Entities - Method not implemented @@ -211,7 +211,7 @@ PUT Peer Entities - Method not implemented ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Put request for Peer Entity + Send Put request for Peer Entities Check HTTP Response Status Code Is 405 PATCH Peer Entities - Method not implemented @@ -223,7 +223,7 @@ PATCH Peer Entities - Method not implemented ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Patch request for Peer Entity + Send Patch request for Peer Entities Check HTTP Response Status Code Is 405 DELETE Peer Entities - Method not implemented @@ -235,5 +235,5 @@ DELETE Peer Entities - Method not implemented ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none - Send Delete request for Peer Entity + Send Delete request for Peer Entities Check HTTP Response Status Code Is 405 diff --git a/indexes/sol_005_index.csv b/indexes/sol_005_index.csv index 31fcb08ef..02b0ff9bf 100644 --- a/indexes/sol_005_index.csv +++ b/indexes/sol_005_index.csv @@ -36,7 +36,7 @@ 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.21, Instantiate Flow of NS lifecycle management operations, InstantiateNSTaskWorkflow.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 -- GitLab From 3d34eb3920fa9ed84704e6dced4947ce6e71662f Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 1 Apr 2021 16:33:33 +0200 Subject: [PATCH 521/580] updated Readme --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0bd6f6097..4d80b0f22 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,16 @@ This repository hosts the NFV API Conformance test specification for the APIs defined in ETSI NFV GS [SOL002](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf), [SOL003](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf), -[SOL005](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_NFV-SOL005v030301p.pdf), in their versions -v3.3.1. +[SOL005](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_NFV-SOL005v030301p.pdf), +[SOL009](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_NFV-SOL009v030301p.pdf), +[SOL011](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_NFV-SOL011v030301p.pdf), in their versions +v3.3.1 and [SOL012](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.04.01_60/gs_NFV-SOL012v030401p.pdf) in itis version v3.4.1 More information and download is available at [DGS/NFV-TST010ed331](https://portal.etsi.org/webapp/WorkProgram/Report_WorkItem.asp?WKI_ID=58931). **{- Disclaimer: The content of this repository is related to a DRAFT, i.e. a working document, of ETSI ISG NFV.-}** -**{-It is provided for information only and is still under development. The content may be updated, replaced, or removed at any time. Do not use as reference material.-} +**{-It is provided for information only and is still under development. The content may be updated, replaced, or removed at any time. Do not use as reference material.-}** The latest draft may be downloaded at the [ISG NFV open area](https://docbox.etsi.org/isg/nfv/open/Drafts/). -- GitLab From 88b992d3810b6df73e3dfba823b0d844eb1c59af Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 1 Apr 2021 16:45:34 +0200 Subject: [PATCH 522/580] fixed notification consumer tests --- SOL005/NSDManagement-API/NotificationConsumer.robot | 5 ----- SOL005/NSLifecycleManagement-API/NotificationConsumer.robot | 5 ----- SOL005/VNFPackageManagement-API/NotificationConsumer.robot | 5 ----- 3 files changed, 15 deletions(-) diff --git a/SOL005/NSDManagement-API/NotificationConsumer.robot b/SOL005/NSDManagement-API/NotificationConsumer.robot index e46855c0d..1b6d857a8 100644 --- a/SOL005/NSDManagement-API/NotificationConsumer.robot +++ b/SOL005/NSDManagement-API/NotificationConsumer.robot @@ -103,11 +103,6 @@ Check resource existence and get CallbackUri Validate Json response body PkgmSubscription.schema.json Set Global Variable ${callbackResp} response body callbackUri -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - Post NSD Onboarding Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT_JSON}"} diff --git a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot index a3f8b66e4..49b2db4f8 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot @@ -55,11 +55,6 @@ Check resource existence and get CallbackUri Integer response status 200 Validate Json response body subscription.schema.json Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated Post Ns Lcm Operation Occurrence Notification log Trying to perform a POST to get notification diff --git a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot index edb94953e..9f3f62c6b 100644 --- a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot +++ b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot @@ -43,11 +43,6 @@ Check resource existence and get CallbackUri Validate Json response body PkgmSubscription.schema.json Set Global Variable ${callbackResp} response body callbackUri -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - Post VNF Package Onboarding Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT_JSON}"} -- GitLab From dc83a99d1e50b588b1aec5e7e95ea7c858579865 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 1 Apr 2021 16:50:50 +0200 Subject: [PATCH 523/580] renamed notification tests robot files --- .../{NotificationEndpoint.robot => Notifications.robot} | 0 .../{VnfIndicatorNotification.robot => Notifications.robot} | 0 .../{NotificationEndpoint.robot => Notifications.robot} | 0 ...erformanceManagementNotification.robot => Notifications.robot} | 0 .../{NotificationEndpoint.robot => Notifications.robot} | 0 .../{VnfIndicatorNotification.robot => Notifications.robot} | 0 .../{NotificationEndpoint.robot => Notifications.robot} | 0 .../{PackageManagementNotification.robot => Notifications.robot} | 0 ...erformanceManagementNotification.robot => Notifications.robot} | 0 .../{NotificationEndpoint.robot => Notifications.robot} | 0 .../{NSDManagementNotification.robot => Notifications.robot} | 0 .../{NotificationEndpoint.robot => Notifications.robot} | 0 .../{NotificationEndpoint.robot => Notifications.robot} | 0 .../{NotificationEndpoint.robot => Notifications.robot} | 0 .../{NotificationEndpoint.robot => Notifications.robot} | 0 ...erformanceManagementNotification.robot => Notifications.robot} | 0 .../{NotificationEndpoint.robot => Notifications.robot} | 0 .../{NotificationEndpoint.robot => Notifications.robot} | 0 .../{NotificationEndpoint.robot => Notifications.robot} | 0 19 files changed, 0 insertions(+), 0 deletions(-) rename SOL002/VNFFaultManagement-API/{NotificationEndpoint.robot => Notifications.robot} (100%) rename SOL002/VNFIndicatorNotification-API/{VnfIndicatorNotification.robot => Notifications.robot} (100%) rename SOL002/VNFLifecycleManagement-API/{NotificationEndpoint.robot => Notifications.robot} (100%) rename SOL002/VNFPerformanceManagementNotification-API/{PerformanceManagementNotification.robot => Notifications.robot} (100%) rename SOL003/VNFFaultManagementNotification-API/{NotificationEndpoint.robot => Notifications.robot} (100%) rename SOL003/VNFIndicator-API/{VnfIndicatorNotification.robot => Notifications.robot} (100%) rename SOL003/VNFLifecycleManagement-API/{NotificationEndpoint.robot => Notifications.robot} (100%) rename SOL003/VNFPackageManagement-API/{PackageManagementNotification.robot => Notifications.robot} (100%) rename SOL003/VNFPerformanceManagement-API/{PerformanceManagementNotification.robot => Notifications.robot} (100%) rename SOL003/VirtualisedResourcesQuotaAvailableNotification-API/{NotificationEndpoint.robot => Notifications.robot} (100%) rename SOL005/NSDManagement-API/{NSDManagementNotification.robot => Notifications.robot} (100%) rename SOL005/NSFaultManagement-API/{NotificationEndpoint.robot => Notifications.robot} (100%) rename SOL005/NSLifecycleManagement-API/{NotificationEndpoint.robot => Notifications.robot} (100%) rename SOL009/NFVMANOFaultManagement-API/{NotificationEndpoint.robot => Notifications.robot} (100%) rename SOL009/NFVMANOLogManagement-API/{NotificationEndpoint.robot => Notifications.robot} (100%) rename SOL009/NFVMANOPerformanceManagement-API/{PerformanceManagementNotification.robot => Notifications.robot} (100%) rename SOL009/NFVManoConfigurationAndInformationManagement-API/{NotificationEndpoint.robot => Notifications.robot} (100%) rename SOL011/NSInstanceUsageNotification-API/{NotificationEndpoint.robot => Notifications.robot} (100%) rename SOL012/PolicyManagement-API/{NotificationEndpoint.robot => Notifications.robot} (100%) diff --git a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot b/SOL002/VNFFaultManagement-API/Notifications.robot similarity index 100% rename from SOL002/VNFFaultManagement-API/NotificationEndpoint.robot rename to SOL002/VNFFaultManagement-API/Notifications.robot diff --git a/SOL002/VNFIndicatorNotification-API/VnfIndicatorNotification.robot b/SOL002/VNFIndicatorNotification-API/Notifications.robot similarity index 100% rename from SOL002/VNFIndicatorNotification-API/VnfIndicatorNotification.robot rename to SOL002/VNFIndicatorNotification-API/Notifications.robot diff --git a/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL002/VNFLifecycleManagement-API/Notifications.robot similarity index 100% rename from SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot rename to SOL002/VNFLifecycleManagement-API/Notifications.robot diff --git a/SOL002/VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot b/SOL002/VNFPerformanceManagementNotification-API/Notifications.robot similarity index 100% rename from SOL002/VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot rename to SOL002/VNFPerformanceManagementNotification-API/Notifications.robot diff --git a/SOL003/VNFFaultManagementNotification-API/NotificationEndpoint.robot b/SOL003/VNFFaultManagementNotification-API/Notifications.robot similarity index 100% rename from SOL003/VNFFaultManagementNotification-API/NotificationEndpoint.robot rename to SOL003/VNFFaultManagementNotification-API/Notifications.robot diff --git a/SOL003/VNFIndicator-API/VnfIndicatorNotification.robot b/SOL003/VNFIndicator-API/Notifications.robot similarity index 100% rename from SOL003/VNFIndicator-API/VnfIndicatorNotification.robot rename to SOL003/VNFIndicator-API/Notifications.robot diff --git a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL003/VNFLifecycleManagement-API/Notifications.robot similarity index 100% rename from SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot rename to SOL003/VNFLifecycleManagement-API/Notifications.robot diff --git a/SOL003/VNFPackageManagement-API/PackageManagementNotification.robot b/SOL003/VNFPackageManagement-API/Notifications.robot similarity index 100% rename from SOL003/VNFPackageManagement-API/PackageManagementNotification.robot rename to SOL003/VNFPackageManagement-API/Notifications.robot diff --git a/SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot b/SOL003/VNFPerformanceManagement-API/Notifications.robot similarity index 100% rename from SOL003/VNFPerformanceManagement-API/PerformanceManagementNotification.robot rename to SOL003/VNFPerformanceManagement-API/Notifications.robot diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Notifications.robot similarity index 100% rename from SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot rename to SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Notifications.robot diff --git a/SOL005/NSDManagement-API/NSDManagementNotification.robot b/SOL005/NSDManagement-API/Notifications.robot similarity index 100% rename from SOL005/NSDManagement-API/NSDManagementNotification.robot rename to SOL005/NSDManagement-API/Notifications.robot diff --git a/SOL005/NSFaultManagement-API/NotificationEndpoint.robot b/SOL005/NSFaultManagement-API/Notifications.robot similarity index 100% rename from SOL005/NSFaultManagement-API/NotificationEndpoint.robot rename to SOL005/NSFaultManagement-API/Notifications.robot diff --git a/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot b/SOL005/NSLifecycleManagement-API/Notifications.robot similarity index 100% rename from SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot rename to SOL005/NSLifecycleManagement-API/Notifications.robot diff --git a/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOFaultManagement-API/Notifications.robot similarity index 100% rename from SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot rename to SOL009/NFVMANOFaultManagement-API/Notifications.robot diff --git a/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOLogManagement-API/Notifications.robot similarity index 100% rename from SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot rename to SOL009/NFVMANOLogManagement-API/Notifications.robot diff --git a/SOL009/NFVMANOPerformanceManagement-API/PerformanceManagementNotification.robot b/SOL009/NFVMANOPerformanceManagement-API/Notifications.robot similarity index 100% rename from SOL009/NFVMANOPerformanceManagement-API/PerformanceManagementNotification.robot rename to SOL009/NFVMANOPerformanceManagement-API/Notifications.robot diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot similarity index 100% rename from SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot rename to SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot diff --git a/SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot b/SOL011/NSInstanceUsageNotification-API/Notifications.robot similarity index 100% rename from SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot rename to SOL011/NSInstanceUsageNotification-API/Notifications.robot diff --git a/SOL012/PolicyManagement-API/NotificationEndpoint.robot b/SOL012/PolicyManagement-API/Notifications.robot similarity index 100% rename from SOL012/PolicyManagement-API/NotificationEndpoint.robot rename to SOL012/PolicyManagement-API/Notifications.robot -- GitLab From f7f0e5c6881d1ccaf49bcf2b36592cef4bb543f5 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 1 Apr 2021 16:54:56 +0200 Subject: [PATCH 524/580] renamed notification endpoint tests robot files --- .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NoificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 .../{NotificationConsumer.robot => NotificationEndpoint.robot} | 0 22 files changed, 0 insertions(+), 0 deletions(-) rename SOL002/VNFFaultManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL002/VNFIndicator-API/{NoificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL002/VNFLifecycleManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL002/VNFPerformanceManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL003/VNFFaultManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL003/VNFIndicator-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL003/VNFLifecycleManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL003/VNFPackageManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL003/VNFPerformanceManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL003/VirtualisedResourcesQuotaAvailableNotification-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL005/NFVICapacityInformation-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL005/NSDManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL005/NSFaultManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL005/NSLifecycleManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL005/NSPerformanceManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL005/VNFPackageManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL009/NFVMANOFaultManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL009/NFVMANOLogManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL009/NFVMANOPerformanceManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL009/NFVManoConfigurationAndInformationManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL011/NSInstanceUsageNotification-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) rename SOL012/PolicyManagement-API/{NotificationConsumer.robot => NotificationEndpoint.robot} (100%) diff --git a/SOL002/VNFFaultManagement-API/NotificationConsumer.robot b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL002/VNFFaultManagement-API/NotificationConsumer.robot rename to SOL002/VNFFaultManagement-API/NotificationEndpoint.robot diff --git a/SOL002/VNFIndicator-API/NoificationConsumer.robot b/SOL002/VNFIndicator-API/NotificationEndpoint.robot similarity index 100% rename from SOL002/VNFIndicator-API/NoificationConsumer.robot rename to SOL002/VNFIndicator-API/NotificationEndpoint.robot diff --git a/SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot b/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL002/VNFLifecycleManagement-API/NotificationConsumer.robot rename to SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot diff --git a/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot b/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot rename to SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot diff --git a/SOL003/VNFFaultManagement-API/NotificationConsumer.robot b/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL003/VNFFaultManagement-API/NotificationConsumer.robot rename to SOL003/VNFFaultManagement-API/NotificationEndpoint.robot diff --git a/SOL003/VNFIndicator-API/NotificationConsumer.robot b/SOL003/VNFIndicator-API/NotificationEndpoint.robot similarity index 100% rename from SOL003/VNFIndicator-API/NotificationConsumer.robot rename to SOL003/VNFIndicator-API/NotificationEndpoint.robot diff --git a/SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL003/VNFLifecycleManagement-API/NotificationConsumer.robot rename to SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot diff --git a/SOL003/VNFPackageManagement-API/NotificationConsumer.robot b/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL003/VNFPackageManagement-API/NotificationConsumer.robot rename to SOL003/VNFPackageManagement-API/NotificationEndpoint.robot diff --git a/SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot b/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL003/VNFPerformanceManagement-API/NotificationConsumer.robot rename to SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot similarity index 100% rename from SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationConsumer.robot rename to SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot diff --git a/SOL005/NFVICapacityInformation-API/NotificationConsumer.robot b/SOL005/NFVICapacityInformation-API/NotificationEndpoint.robot similarity index 100% rename from SOL005/NFVICapacityInformation-API/NotificationConsumer.robot rename to SOL005/NFVICapacityInformation-API/NotificationEndpoint.robot diff --git a/SOL005/NSDManagement-API/NotificationConsumer.robot b/SOL005/NSDManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL005/NSDManagement-API/NotificationConsumer.robot rename to SOL005/NSDManagement-API/NotificationEndpoint.robot diff --git a/SOL005/NSFaultManagement-API/NotificationConsumer.robot b/SOL005/NSFaultManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL005/NSFaultManagement-API/NotificationConsumer.robot rename to SOL005/NSFaultManagement-API/NotificationEndpoint.robot diff --git a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot b/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL005/NSLifecycleManagement-API/NotificationConsumer.robot rename to SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot diff --git a/SOL005/NSPerformanceManagement-API/NotificationConsumer.robot b/SOL005/NSPerformanceManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL005/NSPerformanceManagement-API/NotificationConsumer.robot rename to SOL005/NSPerformanceManagement-API/NotificationEndpoint.robot diff --git a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot b/SOL005/VNFPackageManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL005/VNFPackageManagement-API/NotificationConsumer.robot rename to SOL005/VNFPackageManagement-API/NotificationEndpoint.robot diff --git a/SOL009/NFVMANOFaultManagement-API/NotificationConsumer.robot b/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL009/NFVMANOFaultManagement-API/NotificationConsumer.robot rename to SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot diff --git a/SOL009/NFVMANOLogManagement-API/NotificationConsumer.robot b/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL009/NFVMANOLogManagement-API/NotificationConsumer.robot rename to SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot diff --git a/SOL009/NFVMANOPerformanceManagement-API/NotificationConsumer.robot b/SOL009/NFVMANOPerformanceManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL009/NFVMANOPerformanceManagement-API/NotificationConsumer.robot rename to SOL009/NFVMANOPerformanceManagement-API/NotificationEndpoint.robot diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationConsumer.robot rename to SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot diff --git a/SOL011/NSInstanceUsageNotification-API/NotificationConsumer.robot b/SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot similarity index 100% rename from SOL011/NSInstanceUsageNotification-API/NotificationConsumer.robot rename to SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot diff --git a/SOL012/PolicyManagement-API/NotificationConsumer.robot b/SOL012/PolicyManagement-API/NotificationEndpoint.robot similarity index 100% rename from SOL012/PolicyManagement-API/NotificationConsumer.robot rename to SOL012/PolicyManagement-API/NotificationEndpoint.robot -- GitLab From 59b78173af3eefd8870dca64dc1d001c03b8776d Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 1 Apr 2021 16:58:48 +0200 Subject: [PATCH 525/580] fixed config id for notification endpoint tests - to align with TST010 2.7.1 --- SOL002/VNFIndicator-API/NotificationEndpoint.robot | 4 ++-- SOL003/VNFFaultManagement-API/NotificationEndpoint.robot | 6 +++--- SOL003/VNFIndicator-API/NotificationEndpoint.robot | 4 ++-- .../VNFLifecycleManagement-API/NotificationEndpoint.robot | 6 +++--- SOL003/VNFPackageManagement-API/NotificationEndpoint.robot | 4 ++-- .../VNFPerformanceManagement-API/NotificationEndpoint.robot | 4 ++-- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/SOL002/VNFIndicator-API/NotificationEndpoint.robot b/SOL002/VNFIndicator-API/NotificationEndpoint.robot index bf269d4ba..6e6fb7698 100644 --- a/SOL002/VNFIndicator-API/NotificationEndpoint.robot +++ b/SOL002/VNFIndicator-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF Indicator Value Change Notification ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification . ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNF. ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 - ... Config ID: Config_prod_VNF + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post Value Change Notification @@ -25,7 +25,7 @@ Supported Indicators Change Notification ... Test objective: The objective is to test that the POST request triggers Supported Indicators Change Notification . ... Pre-conditions: A VNF is instantiated, and a subscription for supported indicators change notifications is available in the VNF. ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 - ... Config ID: Config_prod_VNF + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post Supported Indicators Change Notification diff --git a/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot b/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot index 86d179d42..b2dbd1f00 100644 --- a/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot @@ -14,7 +14,7 @@ VNF Fault Alarm Notification ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Notification. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post Alarm Notification @@ -26,7 +26,7 @@ VNF Fault Alarm Cleared Notification ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Cleared Notification. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post Alarm Cleared Notification @@ -38,7 +38,7 @@ VNF Fault Alarm List Reulit Notification ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm List Rebuilt Notification. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v2.7.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post Alarm List Rebuilt Notification diff --git a/SOL003/VNFIndicator-API/NotificationEndpoint.robot b/SOL003/VNFIndicator-API/NotificationEndpoint.robot index 5ae66945b..e0432f2bc 100644 --- a/SOL003/VNFIndicator-API/NotificationEndpoint.robot +++ b/SOL003/VNFIndicator-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF Indicator Value Change Notification ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification. ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNFM. ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post VNF Indicator Value Change Notification @@ -25,7 +25,7 @@ Supported Indicators Change Notification ... Test objective: The objective is to test that the POST request triggers Supported Indicators Change Notification. ... Pre-conditions: A VNF is instantiated, and a individual subscription resource for supported indicators change notifications is available in the VNFM. ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post Supported Indicators Change Notification diff --git a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot index ca6dd1098..bceddd474 100644 --- a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -14,7 +14,7 @@ VNF LCM Operation Occurrence Notification ... Test objective: The objective is to test that the POST request triggers VNF LCM Operation Occurrence Notification. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post VNF LCM Operation Occurrence Notification @@ -26,7 +26,7 @@ VNF Identifier Creation Notification ... Test objective: The objective is to test that the POST request triggers VNF Identifier Creation Notification. ... Pre-conditions: A subscription for VNF identifier creation cotification is available in the VNFM. ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post VNF Identifier Creation Notification @@ -38,7 +38,7 @@ VNF Identifier Deletion Notification ... Test objective: The objective is to test that the POST request triggers VNF Identifier Deletion Notification. ... Pre-conditions: A subscription for VNF identifier deletion notifications is available in the VNFM. ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post VNF LCM Operation Occurrence Notification diff --git a/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot b/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot index 4b6c4f3e6..4fb996f7c 100644 --- a/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot @@ -14,7 +14,7 @@ VNF Package Onboarding Notification ... Test objective: The objective is to test that the POST request triggers VNF Package Onboarding notification. ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_NFVO + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post VNF Package Onboarding Notification @@ -26,7 +26,7 @@ VNF Package Change Notification ... Test objective: The objective is to test that the POST request triggers VNF Package Change notification. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_NFVO + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post VNF Package Change Notification diff --git a/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot b/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot index d89234a18..e4130e440 100644 --- a/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot @@ -14,7 +14,7 @@ Performance Information Available Notification ... Test objective: The objective is to test that the POST request triggers Performance Information Available Notification. ... Pre-conditions: A VNF performance job is created, and a subscription for performance information available notification is available in the VNFM. ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post Performance Information Available Notification @@ -26,7 +26,7 @@ Threshold Crossed Notification ... Test objective: The objective is to test that the POST request triggers Threshold Crossed Notification ... Pre-conditions: A VNF performance job is created, and a subscription for threshold crossed notification is available in the VNFM. ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post Threshold Crossed Notification -- GitLab From 8c767b8452fd20be1274a6397305e2f0b4110e5b Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 1 Apr 2021 17:04:38 +0200 Subject: [PATCH 526/580] updated test ids to align with TST010 v2.7.1 --- .../Subscriptions.robot | 30 +------------------ .../NSFaultManagement-API/Subscriptions.robot | 29 +----------------- 2 files changed, 2 insertions(+), 57 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index 460a7bf55..b28819dc3 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -26,36 +26,8 @@ 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] v3.3.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. - # ... Pre-conditions: subscription with the same filter and callbackUri exists - # ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.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 + [Documentation] Test ID: 6.3.4.4.2 ... 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 diff --git a/SOL005/NSFaultManagement-API/Subscriptions.robot b/SOL005/NSFaultManagement-API/Subscriptions.robot index 5c5480266..50a598018 100644 --- a/SOL005/NSFaultManagement-API/Subscriptions.robot +++ b/SOL005/NSFaultManagement-API/Subscriptions.robot @@ -24,36 +24,9 @@ Create a new alarm subscription Check HTTP Response Status Code Is 201 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 - # ... 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] v3.3.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] v3.3.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 + [Documentation] Test ID: 5.3.3.3.2 ... 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 -- GitLab From c646c5dcde0555792a1f10d127b1d3ba04f935f3 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 1 Apr 2021 17:10:20 +0200 Subject: [PATCH 527/580] updated test ids to align with TST010 v2.7.1 --- SOL002/VNFIndicator-API/NotificationEndpoint.robot | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/SOL002/VNFIndicator-API/NotificationEndpoint.robot b/SOL002/VNFIndicator-API/NotificationEndpoint.robot index 6e6fb7698..334efd895 100644 --- a/SOL002/VNFIndicator-API/NotificationEndpoint.robot +++ b/SOL002/VNFIndicator-API/NotificationEndpoint.robot @@ -8,7 +8,7 @@ Suite Setup Check resource existence and get CallbackUri *** Test Cases *** VNF Indicator Value Change Notification - [Documentation] Test ID: 6.3.2.7.1 + [Documentation] Test ID: 6.3.2.8.1 ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification . ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNF. @@ -20,7 +20,7 @@ VNF Indicator Value Change Notification Check HTTP Response Status Code Is 204 Supported Indicators Change Notification - [Documentation] Test ID: 6.3.2.7.2 + [Documentation] Test ID: 6.3.2.8.2 ... Test title: Supported Indicators Change Notification ... Test objective: The objective is to test that the POST request triggers Supported Indicators Change Notification . ... Pre-conditions: A VNF is instantiated, and a subscription for supported indicators change notifications is available in the VNF. @@ -32,7 +32,7 @@ Supported Indicators Change Notification Check HTTP Response Status Code Is 204 Test the Notification Endpoint - Successful - [Documentation] Test ID: 6.3.2.7.3 + [Documentation] Test ID: 6.3.2.8.3 ... Test title: Test the Notification Endpoint - Successful ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. @@ -44,7 +44,7 @@ Test the Notification Endpoint - Successful Check HTTP Response Status Code Is 204 Test the Notification Endpoint - NOT FOUND - [Documentation] Test ID: 6.3.2.7.4 + [Documentation] Test ID: 6.3.2.8.4 ... Test title: Test the Notification Endpoint - UNREACHABLE ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. @@ -57,7 +57,7 @@ Test the Notification Endpoint - NOT FOUND Check HTTP Response Body Json Schema Is ProblemDetails PUT Notification endpoint - Method Not Implemented - [Documentation] Test ID: 6.3.2.7.5 + [Documentation] Test ID: 6.3.2.8.5 ... Test title: PUT Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. @@ -69,7 +69,7 @@ PUT Notification endpoint - Method Not Implemented Check HTTP Response Status Code Is 405 PATCH Notification endpoint - Method Not Implemented - [Documentation] Test ID: 6.3.2.7.6 + [Documentation] Test ID: 6.3.2.8.6 ... Test title: PATCH Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. @@ -81,7 +81,7 @@ PATCH Notification endpoint - Method Not Implemented Check HTTP Response Status Code Is 405 DELETE Notification endpoint - Method Not Implemented - [Documentation] Test ID: 6.3.2.7.7 + [Documentation] Test ID: 6.3.2.8.7 ... Test title: DELETE Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. -- GitLab From 06f1352627833b94cb2f0f36405cc360ce10e1eb Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 1 Apr 2021 17:47:30 +0200 Subject: [PATCH 528/580] updated indexes --- .../CapacityThresholds.robot | 20 +++++----- .../NotificationEndpoint.robot | 12 +++--- indexes/sol_002_index.csv | 15 +++---- indexes/sol_003_index.csv | 29 ++++++++------ indexes/sol_005_index.csv | 39 ++++++++++++++----- indexes/sol_009_index.csv | 12 ++++-- indexes/sol_011_index.csv | 8 ++-- indexes/sol_012_index.csv | 11 ++++++ 8 files changed, 94 insertions(+), 52 deletions(-) create mode 100644 indexes/sol_012_index.csv diff --git a/SOL005/NFVICapacityInformation-API/CapacityThresholds.robot b/SOL005/NFVICapacityInformation-API/CapacityThresholds.robot index 41887777e..f914ac8b6 100644 --- a/SOL005/NFVICapacityInformation-API/CapacityThresholds.robot +++ b/SOL005/NFVICapacityInformation-API/CapacityThresholds.robot @@ -3,7 +3,7 @@ Resource NFVICapacityInformationKeywords.robot *** Test Cases *** POST Create Capacity Threshold - [Documentation] Test ID: 5.3.6.3.1 + [Documentation] Test ID: 5.3.6.5.1 ... Test title: POST Create Capacity Threshold ... Test objective: The objective is to test that POST method creates a Capacity Threshold ... Pre-conditions: none @@ -17,7 +17,7 @@ POST Create Capacity Threshold Check HTTP Response Contains Resource URI POST Create Capacity Threshold - Unprocessible Entity - [Documentation] Test ID: 5.3.6.3.2 + [Documentation] Test ID: 5.3.6.5.2 ... Test title: POST Create Capacity Threshold - Unprocessible Entity ... Test objective: The objective is to test that POST method creates a Capacity Threshold ... Pre-conditions: none @@ -30,7 +30,7 @@ POST Create Capacity Threshold - Unprocessible Entity Check HTTP Response Body Json Schema Is ProblemDetails GET Capacity Thresholds - [Documentation] Test ID: 5.3.6.3.3 + [Documentation] Test ID: 5.3.6.5.3 ... Test title: GET Capacity Thresholds ... Test objective: The objective is to GET Capacity Thresholds objects ... Pre-conditions: none @@ -43,7 +43,7 @@ GET Capacity Thresholds Check HTTP Response Body Json Schema Is CapacityThresholds GET Capacity Thresholds - Filter - [Documentation] Test ID: 5.3.6.3.4 + [Documentation] Test ID: 5.3.6.5.4 ... Test title: GET Capacity Thresholds - Filter ... Test objective: The objective is to GET Capacity Thresholds objects using filter ... Pre-conditions: none @@ -56,7 +56,7 @@ GET Capacity Thresholds - Filter Check HTTP Response Body Json Schema Is CapacityThresholds GET Capacity Thresholds Bad Request Invalid attribute-based filtering parameters - [Documentation] Test ID: 5.3.6.3.5 + [Documentation] Test ID: 5.3.6.5.5 ... Test title: GET Capacity Thresholds Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about Capacity Thresholds with Invalid attribute-based filtering parameters ... Pre-conditions: none @@ -69,7 +69,7 @@ GET Capacity Thresholds Bad Request Invalid attribute-based filtering parameters Check HTTP Response Body Json Schema Is ProblemDetails GET Capacity Thresholds - Bad Request Response too Big - [Documentation] Test ID: 5.3.6.3.6 + [Documentation] Test ID: 5.3.6.5.6 ... Test title: GET Capacity Thresholds - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing Capacity Thresholds list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none @@ -82,7 +82,7 @@ GET Capacity Thresholds - Bad Request Response too Big Check HTTP Response Body Json Schema Is ProblemDetails GET Capacity Thresholds as Paged Response - [Documentation] Test ID: 5.3.6.3.7 + [Documentation] Test ID: 5.3.6.5.7 ... Test title: GET Capacity Thresholds as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing Capacity Thresholds as paged response. ... Pre-conditions: none @@ -95,7 +95,7 @@ GET Capacity Thresholds as Paged Response Check HTTP Response Header Contains Link PUT Capacity Thresholds - Method not implemented - [Documentation] Test ID: 5.3.6.3.8 + [Documentation] Test ID: 5.3.6.5.8 ... Test title: PUT Capacity Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -107,7 +107,7 @@ PUT Capacity Thresholds - Method not implemented Check HTTP Response Status Code Is 405 PATCH Capacity Thresholds - Method not implemented - [Documentation] Test ID: 5.3.6.3.9 + [Documentation] Test ID: 5.3.6.5.9 ... Test title: PATCH Capacity Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -119,7 +119,7 @@ PATCH Capacity Thresholds - Method not implemented Check HTTP Response Status Code Is 405 DELETE Capacity Thresholds - Method not implemented - [Documentation] Test ID: 5.3.6.3.10 + [Documentation] Test ID: 5.3.6.5.10 ... Test title: DELETE Capacity Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL005/NFVICapacityInformation-API/NotificationEndpoint.robot b/SOL005/NFVICapacityInformation-API/NotificationEndpoint.robot index 456a7e3ab..81f641fef 100644 --- a/SOL005/NFVICapacityInformation-API/NotificationEndpoint.robot +++ b/SOL005/NFVICapacityInformation-API/NotificationEndpoint.robot @@ -4,7 +4,7 @@ Suite Setup Check resource existence and get CallbackUri *** Test Cases *** Capacity Shortage Notification - [Documentation] Test ID: 5.3.6.5.1 + [Documentation] Test ID: 5.3.6.6.1 ... Test title: Capacity Shortage Notification ... Test objective: The objective is to test that Capacity Shortage Notification is delivered with success to the notification consumer. ... Pre-conditions: The consumer has already created an Individual Capacity Threshold resource @@ -16,7 +16,7 @@ Capacity Shortage Notification Check HTTP Response Status Code Is 204 Test the Notification Endpoint - Successful - [Documentation] Test ID: 5.3.6.5.2 + [Documentation] Test ID: 5.3.6.6.2 ... Test title: Test the Notification Endpoint - Successful ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. ... Pre-conditions: The consumer has already created an Individual Capacity Threshold resource @@ -28,7 +28,7 @@ Test the Notification Endpoint - Successful Check HTTP Response Status Code Is 204 Test the Notification Endpoint - UNREACHABLE - [Documentation] Test ID: 5.3.6.5.3 + [Documentation] Test ID: 5.3.6.6.3 ... Test title: Test the Notification Endpoint - UNREACHABLE ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. ... Pre-conditions: The consumer has already created an Individual Capacity Threshold resource @@ -41,7 +41,7 @@ Test the Notification Endpoint - UNREACHABLE Check HTTP Response Body Json Schema Is ProblemDetails PUT Notification endpoint - Method Not Implemented - [Documentation] Test ID: 5.3.6.5.4 + [Documentation] Test ID: 5.3.6.6.4 ... Test title: PUT Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. @@ -53,7 +53,7 @@ PUT Notification endpoint - Method Not Implemented Check HTTP Response Status Code Is 405 PATCH Notification endpoint - Method Not Implemented - [Documentation] Test ID: 5.3.6.5.5 + [Documentation] Test ID: 5.3.6.6.5 ... Test title: PATCH Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. @@ -65,7 +65,7 @@ PATCH Notification endpoint - Method Not Implemented Check HTTP Response Status Code Is 405 DELETE Notification endpoint - Method Not Implemented - [Documentation] Test ID: 5.3.6.5.6 + [Documentation] Test ID: 5.3.6.6.6 ... Test title: DELETE Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. diff --git a/indexes/sol_002_index.csv b/indexes/sol_002_index.csv index f3f3a78f3..90992d5b2 100644 --- a/indexes/sol_002_index.csv +++ b/indexes/sol_002_index.csv @@ -8,26 +8,27 @@ 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.6,Notifications,../VNFIndicatorNotification-API/Notifications.robot 6.3.2.7,API Version Resource Endpoint,ApiVersion.robot +6.3.3.8, Notification Endpoint,NotificationEndpoint.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.8,Notification,../VNFPerformanceManagementNotification-API/Notifications.robot 6.3.3.9,API Version Resource Endpoint,ApiVersion.robot -6.3.3.10, Notification Consumer Endpoint,../VNFPerformanceManagement-API/NotificationConsumer.robot +6.3.3.10, Notification Endpoint,NotificationEndpoint.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.6,Notifications,Notifications.robot 6.3.4.7,API Version Resource Endpoint,ApiVersion.robot -6.3.4.8,Notification Consumer Endpoint,NotificationConsumer.robot +6.3.4.8,Notification Endpoint,NotificationEndpoint.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 @@ -47,6 +48,6 @@ 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.19,Notifications,Notifications.robot 6.3.5.20,API Version Resource Endpoint,ApiVersion.robot -6.3.5.21,Notification Consumer Endpoint,NotificationConsumer.robot +6.3.5.21,Notification Endpoint,NotificationEndpoint.robot diff --git a/indexes/sol_003_index.csv b/indexes/sol_003_index.csv index 5b4e3ab92..18f9da5b1 100644 --- a/indexes/sol_003_index.csv +++ b/indexes/sol_003_index.csv @@ -33,9 +33,9 @@ 7.3.1.31,VNF Instance Scale To Level, ScaleVNFToLevelWorkflow.robot 7.3.1.32,VNF Instance Scale Out, ScaleVNFWorkflow.robot 7.3.1.33,Terminate a VNF Instance, TerminateVNFWorkflow.robot -7.3.1.34,Notification Endpoint, NotificationEndpoint.robot +7.3.1.34,Notifications, Notifications.robot 7.3.1.35,API Version Resource Endpoint, ApiVersion.robot -7.3.1.36,Notification Consumer Endpoint, NotificationConsumer.robot +7.3.1.36,Notification Endpoint,NotificationEndpoint.robot 7.3.2,VNF Lifecycle Operation Granting Interface, VNFLifecycleOperationGranting-API 7.3.2.1,Grants, Grants.robot 7.3.2.2,Individual Grant, IndividualGrant.robot @@ -48,37 +48,44 @@ 7.3.3.5,Individual VNF Package Artifact Resource Endpoint, VNFPackageArtifacts.robot 7.3.3.6,Subscriptions Resource Endpoint, Subscriptions.robot 7.3.3.7,Individual Subscription Resource Endpoint, IndividualSubscription.robot -7.3.3.8,Notification Endpoint, PackageManagementNotification.robot +7.3.3.8,Notifications, Notifications.robot 7.3.3.9,API Version Resource Endpoint, ApiVersion.robot -7.3.3.10,Notification Consumer Endpoint, NotificationConsumer.robot +7.3.3.10,Notification Endpoint,NotificationEndpoint.robot 7.3.4,VNF Performance Management Interface, VNFPerformanceManagement-API 7.3.4.1,PM Jobs Resource Endpoint, PMJobs.robot 7.3.4.2,Individual Pm Job Resource Endpoint, IndividualPmJob.robot 7.3.4.3,Individual Performance Report Resource Endpoint, IndividualReport.robot 7.3.4.4,Thresholds Resource Endpoint, Thresholds.robot 7.3.4.5,Individual Threshold Resource Endpoint, IndividualThreshold.robot -7.3.4.8,Notification Endpoint, PerformanceManagementNotification.robot +7.3.4.8,Notifications,Notifications.robot 7.3.4.9,API Version Resource Endpoint, ApiVersion.robot -7.3.4.10,Notification Consumer Endpoint, NotificationConsumer.robot +7.3.4.10,Notification Endpoint,NotificationEndpoint.robot 7.3.5,VNF Fault Management interface, VNFFaultManagement-API 7.3.5.1,Alarms, Alarms.robot 7.3.5.2,Individual Alarm, IndividualAlarm.robot 7.3.5.3,Subscriptions, Subscriptions.robot 7.3.5.4,Individual Subscription, IndividualSubscription.robot -7.3.5.5,Notification Endpoint, ../VNFFaultManagementNotification-API/NotificationEndpoint.robot +7.3.5.5,Notifications, ../VNFFaultManagementNotification-API/Notifications.robot 7.3.5.6,API Version Resource Endpoint, ApiVersion.robot -7.3.5.7,Notification Consumer Endpoint, NotificationConsumer.robot +7.3.5.7,Notification Endpoint,NotificationEndpoint.robot 7.3.6,VNF Indicator Interface, VNFIndicator-API 7.3.6.1,VNF Indicators Resource Endpoint, VNFIndicators.robot 7.3.6.2,VNF Indicators Related to a VNF Instance Resource Endpoint, VnfIndicatorsInVnfInstanceId.robot 7.3.6.3,Individual VNF Indicator Resource Endpoint, IndividualVNFindicator.robot 7.3.6.4,Subscriptions Resource Endpoint, Subscriptions.robot 7.3.6.5,Individual Subscription Resource Endpoint, IndividualSubscription.robot -7.3.6.6,Notification Endpoint, VnfIndicatorNotification.robot +7.3.6.6,Notifications, Notifications.robot 7.3.6.7,API Version Resource Endpoint, ApiVersion.robot -7.3.6.8,Notification Endpoint, NotificationConsumer.robot +7.3.6.8,Notification Endpoint,NotificationEndpoint.robot 7.3.7,Virtualised Resources Quota Available Notification interface, VirtualisedResourcesQuotaAvailableNotification-API 7.3.7.1,Subscriptions, Subscriptions.robot 7.3.7.2,Individual Subscription, IndividualSubscription.robot 7.3.7.3,API Version Resource Endpoint, ApiVersion.robot -7.3.7.4,Notification Consumer Endpoint, NotificationConsumer.robot +7.3.7.4,Notification Endpoint,NotificationEndpoint.robot +7.3.7.5,Notifications,Notifications.robot +7.3.8,VNF Snapshot Package Management Interface, VNFSnapshotPackageManagement-API +7.3.8.1,API Version Resource Endpoint, ApiVersion.robot +7.3.8.2,VNF Snapshot Packages Endpoint,VnfSnapshotPackages.robot +7.3.8.3,Individual VNF Snapshot Package Endpoint,IndividualVNFSnapshotPackage.robot +7.3.8.4,VNF Snapshot Package Content Endpoint,VNFSnapshotPackageContent.robot +7.3.8.5,Individual VNF Snapshot Package Artifact Endpoint,IndividualVNFSnapshotPackageArtifact.robot diff --git a/indexes/sol_005_index.csv b/indexes/sol_005_index.csv index 02b0ff9bf..228395be7 100644 --- a/indexes/sol_005_index.csv +++ b/indexes/sol_005_index.csv @@ -8,13 +8,13 @@ 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.9,Notificationss, Notifications.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.1.15,Notification Endpoint,NotificationEndpoint.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 @@ -32,7 +32,7 @@ 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.17,Notifications, Notifications.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 @@ -41,24 +41,24 @@ 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.2.26,Notification Endpoint,NotificationEndpoint.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.5,Notifications, Notifications.robot 5.3.3.6,API Version Resource Endpoint, ApiVersion.robot -5.3.3.7,Notification Consumer Endpoint, NotificationConsumer.robot +5.3.3.7,Notification Endpoint,NotificationEndpoint.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.8,Notifications, Notifications.robot 5.3.4.9,API Version Resource Endpoint, ApiVersion.robot -5.3.4.10,Notifications Consumer Endpoint, NotificationConsumer.robot +5.3.4.10,Notification Endpoint,NotificationEndpoint.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 @@ -68,6 +68,25 @@ 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.9,Notifications, Notifications.robot 5.3.5.10,API Version Resource Endpoint, ApiVersion.robot -5.3.5.11,Notifications Consumer Endpoint, NotificationConsumer.robot +5.3.5.11,Notification Endpoint,NotificationEndpoint.robot +5.3.6,NFVI Capacity Information Interface, NFVICapacityInformation-API +5.3.6.1,API Version Resource Endpoint, ApiVersion.robot +5.3.6.2,NFVI Capacity Information Endpoint, NFVICapacityInformation.robot +5.3.6.3,Individual VIMs NFVI Capacity Information Endpoint, IndividualVIMsNFVICapacityInformation.robot +5.3.6.4,Individual Capacity Threshold Endpoint, IndividualCapacityThreshold.robot +5.3.6.5,Capacity Thresholds Endpoint, IndividualCapacityThreshold.robot +5.3.6.6,Notification Endpoint, NotificationEndpoint.robot +5.3.7,VNF Snapshot Package Management Interface, VNFSnapshotPackageManagement-API +5.3.7.1,API Version Resource Endpoint, ApiVersion.robot +5.3.7.2,VNF Snapshot Packages Endpoint,VnfSnapshotPackages.robot +5.3.7.3,Individual VNF Snapshot Package Endpoint,IndividualVNFSnapshotPackage.robot +5.3.7.4,VNF Snapshot Package Content Endpoint,VNFSnapshotPackageContent.robot +5.3.7.5,Upload VNF Snapshot Package from URI Task Endpoint, UploadVNFSnapshotPackageFromUriTask.rovot +5.3.7.6,Build VNF Snapshot Package Content Task Endpoint, BuildVNFSnapshotPackageContentTask.robot +5.3.7.7,Extract VNF Snapshot Package Content Task Endpoint, ExtractVNFSnapshotPackageContentTask.robot +5.3.7.8,Cancel VNF Snapshot Package Content Operation Task Endpoint, CancelVNFSnapshotPackageContentOperationTask.robot +5.3.7.9,Access Configuration for External Artifacts Endpoint, AccessConfigurationForExternalArtifacts.robot +5.3.7.10,Individual VNF Snapshot Package Artifact Endpoint,IndividualVNFSnapshotPackageArtifact.robot + diff --git a/indexes/sol_009_index.csv b/indexes/sol_009_index.csv index cf6391a10..4adfe239f 100644 --- a/indexes/sol_009_index.csv +++ b/indexes/sol_009_index.csv @@ -11,8 +11,9 @@ 8.3.1.9,Individual Peer Entity Endpoint, IndividualPeerEntity.robot 8.3.1.10,Subscriptions Endpoint, Subscriptions.robot 8.3.1.11,Individual Subscription Resource Endpoint, IndividualSubscription.robot -8.3.1.12,Notification Endpoint, NotificationEndpoint.robot +8.3.1.12,Notifications, Notifications.robot 8.3.1.13,API Version Endpoint, ApiVersion.robot +8.3.1.14,Notification Endpoint, NotificationEndpoint.robot 8.3.2,NFV MANO Performance Management interface 8.3.2.1,PM Jobs Endpoint, PMJobs.robot 8.3.2.2,Individual Pm Job Endpoint, IndividualPmJob.robot @@ -21,15 +22,17 @@ 8.3.2.5,Individual Threshold Endpoint, IndividualThreshold.robot 8.3.2.6,Subscriptions Endpoint, Subscriptions.robot 8.3.2.7,Individual Subscription Endpoint, IndividualSubscription.robot -8.3.2.8,Notification Endpoint,PerformanceManagementNotification.robot +8.3.2.8,Notifications,Notifications.robot 8.3.2.9,API Version Endpoint, ApiVersion.robot +8.3.2.10,Notification Endpoint, NotificationEndpoint.robot 8.3.3,NFV MANO Fault Management interface 8.3.3.1,Alarms Endpoint, Alarms.robot 8.3.3.2,Individual Alarm Endpoint, IndividualAlarm.robot 8.3.3.3,Subscriptions Endpoint, Subscriptions.robot 8.3.3.4,Individual Subscription Endpoint, IndividualSubscription.robot -8.3.3.5,Notification Endpoint, NotificationEndpoint.robot +8.3.3.5,Notifications, Notifications.robot 8.3.3.6, API Version Endpoint, ApiVersion.robot +8.3.3.7,Notification Endpoint, NotificationEndpoint.robot 8.3.4,NFV MANO Log Management interface 8.3.4.1,Logging Jobs Endpoint, LoggingJobs.robot 8.3.4.2,Individual Logging Job Endpoint, IndividualLoggingJob.robot @@ -37,5 +40,6 @@ 8.3.4.4,Compile Log Task Endpoint, CompileLogTask.robot 8.3.4.5,Subscriptions Resource Endpoint, Subscriptions.robot 8.3.4.6,Individual Subscription Endpoint, IndividualSubscription.robot -8.3.4.7,Notification Endpoint, NotificationEndpoint.robot +8.3.4.7,Notifications, Notifications.robot 8.3.4.8,API Version Endpoint, ApiVersion.robot +8.3.4.9,Notification Endpoint, NotificationEndpoint.robot diff --git a/indexes/sol_011_index.csv b/indexes/sol_011_index.csv index c9cc67aea..d20fb4720 100644 --- a/indexes/sol_011_index.csv +++ b/indexes/sol_011_index.csv @@ -1,11 +1,11 @@ 9, Or-Or Reference Point, SOL011 -9.3.3,NS Lifecycle Operation Granting interface +9.3.3,NS Lifecycle Operation Granting interface,NSLifecycleOperationGranting-API 9.3.3.1,Grants Endpoint, Grants.robot 9.3.3.2,Individual Grant Endpoint, IndividualGrant.robot 9.3.3.3,API Version Endpoint, ApiVersion.robot -9.3.4,NS Instance Usage Notification interface +9.3.4,NS Instance Usage Notification interface, NSInstanceUsageNotification-API 9.3.4.1,Subscriptions Endpoint, Subscriptions.robot 9.3.4.2,Individual Subscription Endpoint, IndividualSubscription.robot -9.3.4.3,Notifications Endpoint, NotificationEndpoint.robot -9.3.4.4,Notification Consumer Endpoint, NotificationConsumer.robot +9.3.4.3,Notifications, Notifications.robot +9.3.4.4,NotificationEndpoint, NotificationEndpoint.robot 9.3.4.5,API Version Endpoint, ApiVersion.robot diff --git a/indexes/sol_012_index.csv b/indexes/sol_012_index.csv new file mode 100644 index 000000000..d2edfe57b --- /dev/null +++ b/indexes/sol_012_index.csv @@ -0,0 +1,11 @@ +10, NFV-MANO Policy Management Reference Point, SOL012 +10.3.1,Policy Management Interface, PolicyManagement-API +10.3.1.1,API Version Endpoint, ApiVersion.robot +10.3.1.2,Policies Endpoint, Policies.robot +10.3.1.3,Individual Policy Endpoint, IndividualPolicy.robot +10.3.1.4,Selected Version of an Individual Policy Endpoint, SelectedVersionOfAnIndividualPolicy.robot +10.3.1.5,Particular Version of an Individual Policy Endpoint, Particular VersionOfAnIndividualPolicy.robot +10.3.1.6,Subscriptions Endpoint, Subscriptions.robot +10.3.1.7,Individual Subscription Endpoint, IndividualSubscription.robot +10.3.1.8,Notifications, Notifications.robot +10.3.1.9,NotificationEndpoint, NotificationEndpoint.robot -- GitLab From 0cc812f3835e91f0e28836441987bd9f354ac46a Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 1 Apr 2021 18:11:13 +0200 Subject: [PATCH 529/580] fixed indexes --- indexes/sol_003_index.csv | 2 +- indexes/sol_005_index.csv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/indexes/sol_003_index.csv b/indexes/sol_003_index.csv index 18f9da5b1..b611dc2d3 100644 --- a/indexes/sol_003_index.csv +++ b/indexes/sol_003_index.csv @@ -85,7 +85,7 @@ 7.3.7.5,Notifications,Notifications.robot 7.3.8,VNF Snapshot Package Management Interface, VNFSnapshotPackageManagement-API 7.3.8.1,API Version Resource Endpoint, ApiVersion.robot -7.3.8.2,VNF Snapshot Packages Endpoint,VnfSnapshotPackages.robot +7.3.8.2,VNF Snapshot Packages Endpoint,VNFSnapshotPackages.robot 7.3.8.3,Individual VNF Snapshot Package Endpoint,IndividualVNFSnapshotPackage.robot 7.3.8.4,VNF Snapshot Package Content Endpoint,VNFSnapshotPackageContent.robot 7.3.8.5,Individual VNF Snapshot Package Artifact Endpoint,IndividualVNFSnapshotPackageArtifact.robot diff --git a/indexes/sol_005_index.csv b/indexes/sol_005_index.csv index 228395be7..837db9f10 100644 --- a/indexes/sol_005_index.csv +++ b/indexes/sol_005_index.csv @@ -80,7 +80,7 @@ 5.3.6.6,Notification Endpoint, NotificationEndpoint.robot 5.3.7,VNF Snapshot Package Management Interface, VNFSnapshotPackageManagement-API 5.3.7.1,API Version Resource Endpoint, ApiVersion.robot -5.3.7.2,VNF Snapshot Packages Endpoint,VnfSnapshotPackages.robot +5.3.7.2,VNF Snapshot Packages Endpoint,VNFSnapshotPackages.robot 5.3.7.3,Individual VNF Snapshot Package Endpoint,IndividualVNFSnapshotPackage.robot 5.3.7.4,VNF Snapshot Package Content Endpoint,VNFSnapshotPackageContent.robot 5.3.7.5,Upload VNF Snapshot Package from URI Task Endpoint, UploadVNFSnapshotPackageFromUriTask.rovot -- GitLab From c2b872a3a1e8e30be336a886b912e364aa480aac Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 1 Apr 2021 18:17:43 +0200 Subject: [PATCH 530/580] fixed indexes --- indexes/sol_005_index.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indexes/sol_005_index.csv b/indexes/sol_005_index.csv index 837db9f10..4c0069444 100644 --- a/indexes/sol_005_index.csv +++ b/indexes/sol_005_index.csv @@ -83,7 +83,7 @@ 5.3.7.2,VNF Snapshot Packages Endpoint,VNFSnapshotPackages.robot 5.3.7.3,Individual VNF Snapshot Package Endpoint,IndividualVNFSnapshotPackage.robot 5.3.7.4,VNF Snapshot Package Content Endpoint,VNFSnapshotPackageContent.robot -5.3.7.5,Upload VNF Snapshot Package from URI Task Endpoint, UploadVNFSnapshotPackageFromUriTask.rovot +5.3.7.5,Upload VNF Snapshot Package from URI Task Endpoint, UploadVNFSnapshotPackageFromUriTask.robot 5.3.7.6,Build VNF Snapshot Package Content Task Endpoint, BuildVNFSnapshotPackageContentTask.robot 5.3.7.7,Extract VNF Snapshot Package Content Task Endpoint, ExtractVNFSnapshotPackageContentTask.robot 5.3.7.8,Cancel VNF Snapshot Package Content Operation Task Endpoint, CancelVNFSnapshotPackageContentOperationTask.robot -- GitLab From 66b100c1cf2082e61c35a2c5db6a92a72eadfcd3 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 1 Apr 2021 18:29:30 +0200 Subject: [PATCH 531/580] fixed indexes --- indexes/sol_005_index.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indexes/sol_005_index.csv b/indexes/sol_005_index.csv index 4c0069444..99286de33 100644 --- a/indexes/sol_005_index.csv +++ b/indexes/sol_005_index.csv @@ -86,7 +86,7 @@ 5.3.7.5,Upload VNF Snapshot Package from URI Task Endpoint, UploadVNFSnapshotPackageFromUriTask.robot 5.3.7.6,Build VNF Snapshot Package Content Task Endpoint, BuildVNFSnapshotPackageContentTask.robot 5.3.7.7,Extract VNF Snapshot Package Content Task Endpoint, ExtractVNFSnapshotPackageContentTask.robot -5.3.7.8,Cancel VNF Snapshot Package Content Operation Task Endpoint, CancelVNFSnapshotPackageContentOperationTask.robot +5.3.7.8,Cancel VNF Snapshot Package Content Operation Task Endpoint, CancelVNFSnapshotPackageOperationTask.robot 5.3.7.9,Access Configuration for External Artifacts Endpoint, AccessConfigurationForExternalArtifacts.robot 5.3.7.10,Individual VNF Snapshot Package Artifact Endpoint,IndividualVNFSnapshotPackageArtifact.robot -- GitLab From 4af90173e34b26bd8fe69cadbe1fe84424f26703 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 31 May 2021 17:55:04 +0200 Subject: [PATCH 532/580] fixed test ids and added voids as per 2.7.1 and 2.8.1 --- .../Subscriptions.robot | 15 +++- .../VNFDInIndividualVNFPackage.robot | 28 ++++++- .../IndividualSubscription.robot | 2 +- .../IndividualNSDescriptor.robot | 16 ++++ .../NSDManagement-API/NSDArchiveContent.robot | 76 ++++++++++++++++++- SOL005/NSFaultManagement-API/Alarms.robot | 26 +++---- .../NSFaultManagement-API/Subscriptions.robot | 16 +++- .../ApiVersion.robot | 2 +- .../VNFDInIndividualVNFPackage.robot | 50 +++++++++++- indexes/sol_003_index.csv | 4 +- indexes/sol_005_index.csv | 4 +- 11 files changed, 215 insertions(+), 24 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index b28819dc3..9277b7d58 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -38,6 +38,16 @@ Create a duplicated Subscription Post Create subscription Check Response for duplicated subscription +Void + [Documentation] Test ID: 6.3.4.4.3 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void GET Subscriptions [Documentation] Test ID: 6.3.4.4.4 @@ -277,7 +287,7 @@ Get subscriptions with filter "filter.probableCauses" Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_probableCauses" POST Create a new Subscription - Unprocessable Entity - [Documentation] Test ID: 6.3.4.4.21 + [Documentation] Test ID: 6.3.4.4.22 ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none @@ -290,6 +300,9 @@ POST Create a new Subscription - Unprocessable Entity Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** +Void + log do nothing + Create Sessions Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance Wait For Process handle=mockInstance timeout=5s on_timeout=continue diff --git a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index 633f43b49..3f059a88e 100644 --- a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -58,6 +58,17 @@ Get multi file VNFD in Individual VNF Package in Plain or Zip Format Check HTTP Response Status Code Is 200 Check HTTP Response Header Content-Type Is application/zip +Void + [Documentation] Test ID: 7.3.3.4.5 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + Get VNFD in Individual VNF Package with invalid resource identifier [Documentation] Test ID: 7.3.3.4.6 ... Test title: Get VNFD in Individual VNF Package with invalid resource identifier @@ -183,6 +194,17 @@ Get multi file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format Check HTTP Response Status Code Is 200 Check HTTP Response Header Content-Type Is application/zip +Void + [Documentation] Test ID: 7.3.3.4.16 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + Get VNFD in Individual OnBoarded VNF Package with invalid resource identifier [Documentation] Test ID: 7.3.3.4.17 ... Test title: Get VNFD in Individual OnBoarded VNF Package with invalid resource identifier @@ -280,4 +302,8 @@ Get multi file VNFD in Individual OnBoarded VNF Package with security informatio ... Post-Conditions: none Get multi file VNFD in Individual OnBoarded VNF Package with security information Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip \ No newline at end of file + Check HTTP Response Header Content-Type Is application/zip + +*** Keywords *** +Void + log do nothing diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot index 975d3929b..36d6bcb33 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot @@ -73,7 +73,7 @@ DELETE an individual subscription Check Postcondition VNF Virtualised Resources Quota Available Notification individual Subscriptions is Deleted Get Information about an individual subscription - Not Found - [Documentation] Test ID: 7.3.7.2.2 + [Documentation] Test ID: 7.3.7.2.6 ... Test title: Get Information about an individual subscription - Not Found ... Test objective: The objective is to test that the retrieval of an individual Virtualised Resources Quota Available Notification subscription subscribed by the client fils when resource is not present ... Pre-conditions: The subscription with the given id does not exists diff --git a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot index 66aef1f3d..aea05a837 100644 --- a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot @@ -107,6 +107,17 @@ Enable Individual Network Service Descriptor with HTTP Etag precondition failure Send PATCH to enable Individual Network Service Descriptor with HTTP Etag precondition failure Check HTTP Response Status Code Is 412 +Void + [Documentation] Test ID: 5.3.1.2.8 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + DELETE Individual Network Service Descriptor [Documentation] Test ID: 5.3.1.2.9 ... Test title: DELETE Individual Network Service Descriptor @@ -157,3 +168,8 @@ PUT Individual Network Service Descriptor - Method not implemented ... Post-Conditions: none Send PUT Request for Individual Network Service Descriptor Check HTTP Response Status Code Is 405 + +*** Keywords *** +Void + log do nothing + \ No newline at end of file diff --git a/SOL005/NSDManagement-API/NSDArchiveContent.robot b/SOL005/NSDManagement-API/NSDArchiveContent.robot index 62114d846..01da43ec2 100644 --- a/SOL005/NSDManagement-API/NSDArchiveContent.robot +++ b/SOL005/NSDManagement-API/NSDArchiveContent.robot @@ -8,6 +8,17 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_veri Library OperatingSystem *** Test Cases *** +Void + [Documentation] Test ID: 5.3.1.3.1 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + Get NSD Content in Zip Format [Documentation] Test ID: 5.3.1.3.2 ... Test title: Get NSD Content in Zip Format @@ -20,6 +31,39 @@ Get NSD Content in Zip Format Get NSD Content in Zip Format Check HTTP Response Status Code Is 200 Check HTTP Response Header Content-Type Is application/zip + +Void + [Documentation] Test ID: 5.3.1.3.3 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + +Void + [Documentation] Test ID: 5.3.1.3.4 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + +Void + [Documentation] Test ID: 5.3.1.3.5 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void Get NSD Content with invalid resource identifier [Documentation] Test ID: 5.3.1.3.6 @@ -100,7 +144,18 @@ Upload NSD Content as Zip file in asynchronous mode Send PUT Request to upload NSD Content as zip file in asynchronous mode Check HTTP Response Status Code Is 202 Check Post Condition NSD Content has been Uploaded - + +Void + [Documentation] Test ID: 5.3.1.3.12 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + Upload NSD Content as Zip file in synchronous mode [Documentation] Test ID: 5.3.1.3.13 ... Test title: Upload NSD Content as Zip file in synchronous mode @@ -113,7 +168,18 @@ Upload NSD Content as Zip file in synchronous mode Send PUT Request to upload NSD Content as zip file in synchronous mode Check HTTP Response Status Code Is 204 Check Postcondition NSD Content is uploaded and available in the NFVO - + +Void + [Documentation] Test ID: 5.3.1.3.14 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + Upload NSD Content with conflict due to onboarding state [Documentation] Test ID: 5.3.1.3.15 ... Test title: Upload NSD Content with conflict due to onboarding state @@ -161,4 +227,8 @@ DELETE NSD Content - Method not implemented ... Applicability: none ... Post-Conditions: none Send DELETE Request for NSD Content - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +*** Keywords *** +Void + log do nothing diff --git a/SOL005/NSFaultManagement-API/Alarms.robot b/SOL005/NSFaultManagement-API/Alarms.robot index 2ebcec5f3..5909cfa68 100644 --- a/SOL005/NSFaultManagement-API/Alarms.robot +++ b/SOL005/NSFaultManagement-API/Alarms.robot @@ -112,7 +112,7 @@ GET information about multiple alarms with "exclude_fields" attribute selector Check HTTP Response Body Json Schema Is alarms PUT Alarms - Method not implemented - [Documentation] Test ID: 5.3.3.1.5 + [Documentation] Test ID: 5.3.3.1.9 ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Fault management alarms on NFV ... Pre-conditions: none @@ -124,7 +124,7 @@ PUT Alarms - Method not implemented Check HTTP Response Status Code Is 405 PATCH Alarms - Method not implemented - [Documentation] Test ID: 5.3.3.1.6 + [Documentation] Test ID: 5.3.3.1.10 ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Fault management alarms on NFV ... Pre-conditions: none @@ -136,7 +136,7 @@ PATCH Alarms - Method not implemented Check HTTP Response Status Code Is 405 DELETE Alarms - Method not implemented - [Documentation] Test ID: 5.3.3.1.7 + [Documentation] Test ID: 5.3.3.1.11 ... Test title: DELETE Alarms - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Fault management alarms on NFV ... Pre-conditions: none @@ -148,7 +148,7 @@ DELETE Alarms - Method not implemented Check HTTP Response Status Code Is 405 GET information about multiple alarms as Paged Response - [Documentation] Test ID: 5.3.3.1.8 + [Documentation] Test ID: 5.3.3.1.12 ... Test title: GET information about multiple alarms as Paged Response ... Test objective: The objective is to retrieve information about the alarm list as paged response. ... Pre-conditions: none @@ -161,7 +161,7 @@ GET information about multiple alarms as Paged Response Check HTTP Response Header Contains Location GET information about multiple alarms - Bad Request Response too Big - [Documentation] Test ID: 5.3.3.1.9 + [Documentation] Test ID: 5.3.3.1.13 ... Test title: GET information about multiple alarms - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of information about the alarm list fails because response is too big, and perform a JSON schema and content validation of the returned problem details data structure ... Pre-conditions: none @@ -174,7 +174,7 @@ GET information about multiple alarms - Bad Request Response too Big Check HTTP Response Body Json Schema Is ProblemDetails GET information about multiple alarms with filter "id" - [Documentation] Test ID: 5.3.3.1.10 + [Documentation] Test ID: 5.3.3.1.14 ... Test title: GET information about multiple alarms with filter "id" ... Test objective: The objective is to retrieve information about the alarm list with filter "id" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none @@ -188,7 +188,7 @@ GET information about multiple alarms with filter "id" Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "id" GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyNestedNsInstanceId" - [Documentation] Test ID: 5.3.3.1.11 + [Documentation] Test ID: 5.3.3.1.15 ... Test title: GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyNestedNsInstanceId" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyComponent.faultyNestedNsInstanceId" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none @@ -202,7 +202,7 @@ GET information about multiple alarms with filter "rootCauseFaultyComponent.faul Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "rootCauseFaultyComponent_faultyNestedNsInstanceId" GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId" - [Documentation] Test ID: 5.3.3.1.12 + [Documentation] Test ID: 5.3.3.1.16 ... Test title: GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none @@ -216,7 +216,7 @@ GET information about multiple alarms with filter "rootCauseFaultyComponent.faul Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "faultyNsVirtualLinkInstanceId" GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyVnfInstanceId" - [Documentation] Test ID: 5.3.3.1.13 + [Documentation] Test ID: 5.3.3.1.17 ... Test title: GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyVnfInstanceId" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyComponent.faultyVnfInstanceId" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none @@ -230,7 +230,7 @@ GET information about multiple alarms with filter "rootCauseFaultyComponent.faul Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "faultyVnfInstanceId" GET information about multiple alarms with filter "rootCauseFaultyResource.faultyResourceType" - [Documentation] Test ID: 5.3.3.1.14 + [Documentation] Test ID: 5.3.3.1.18 ... Test title: GET information about multiple alarms with filter "rootCauseFaultyResource.faultyResourceType" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyResource.faultyResourceType" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none @@ -244,7 +244,7 @@ GET information about multiple alarms with filter "rootCauseFaultyResource.fault Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "faultyResourceType" GET information about multiple alarms with filter "eventType" - [Documentation] Test ID: 5.3.3.1.15 + [Documentation] Test ID: 5.3.3.1.19 ... Test title: GET information about multiple alarms with filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with filter "eventType" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none @@ -258,7 +258,7 @@ GET information about multiple alarms with filter "eventType" Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "eventType" GET information about multiple alarms with filter "perceivedSeverity" - [Documentation] Test ID: 5.3.3.1.16 + [Documentation] Test ID: 5.3.3.1.20 ... Test title: GET information about multiple alarms with filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with filter "perceivedSeverity" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none @@ -272,7 +272,7 @@ GET information about multiple alarms with filter "perceivedSeverity" Check PostCondition HTTP Response Body alarms Matches the requested attribute-based filter "perceivedSeverity" GET information about multiple alarms with filter "probableCause" - [Documentation] Test ID: 5.3.3.1.17 + [Documentation] Test ID: 5.3.3.1.21 ... Test title: GET information about multiple alarms with filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with filter "probableCause" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none diff --git a/SOL005/NSFaultManagement-API/Subscriptions.robot b/SOL005/NSFaultManagement-API/Subscriptions.robot index 50a598018..661956e35 100644 --- a/SOL005/NSFaultManagement-API/Subscriptions.robot +++ b/SOL005/NSFaultManagement-API/Subscriptions.robot @@ -38,6 +38,16 @@ Create a duplicated Subscription Check Response for duplicated subscription Check Operation Occurrence Id +Void + [Documentation] Test ID: 5.3.3.3.3 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void Retrieve a list of alarm subscriptions [Documentation] Test ID: 5.3.3.3.4 @@ -287,4 +297,8 @@ Create a new alarm subscription - Unprocessable Entity ... Post-Conditions: none POST Subscription Check HTTP Response Status Code Is 422 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +*** Keywords *** +Void + log do nothing diff --git a/SOL005/NSPerformanceManagement-API/ApiVersion.robot b/SOL005/NSPerformanceManagement-API/ApiVersion.robot index a0ca7d926..e9fba6908 100644 --- a/SOL005/NSPerformanceManagement-API/ApiVersion.robot +++ b/SOL005/NSPerformanceManagement-API/ApiVersion.robot @@ -9,7 +9,7 @@ Library JSONSchemaLibrary schemas/ *** Test Cases *** POST API Version - Method not implemented - [Documentation] Test ID: 5.3.4.10.1 + [Documentation] Test ID: 5.3.4.9.1 ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index 66699af75..4c987c2ba 100644 --- a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -6,6 +6,17 @@ Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false *** Test Cases *** +Void + [Documentation] Test ID: 5.3.5.3.1 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + Get VNFD in Individual VNF Package in Zip Format [Documentation] Test ID: 5.3.5.3.2 ... Test title: Get VNFD in Individual VNF Package in Zip Format @@ -19,6 +30,39 @@ Get VNFD in Individual VNF Package in Zip Format Check HTTP Response Status Code Is 200 Check HTTP Response Header Content-Type Is application/zip +Void + [Documentation] Test ID: 5.3.5.3.3 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + +Void + [Documentation] Test ID: 5.3.5.3.4 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + +Void + [Documentation] Test ID: 5.3.5.3.5 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + Get VNFD in Individual VNF Package with invalid resource identifier [Documentation] Test ID: 5.3.5.3.6 ... Test title: Get VNFD in Individual VNF Package with invalid resource identifier @@ -104,4 +148,8 @@ Get VNFD in Individual VNF Package with security information ... Post-Conditions: none Get VNFD in Individual VNF Package with security information Check HTTP Response Status Code Is 200 - Check HTTP Response Header Content-Type Is application/zip \ No newline at end of file + Check HTTP Response Header Content-Type Is application/zip + +*** Keywords *** +Void + log do nothing diff --git a/indexes/sol_003_index.csv b/indexes/sol_003_index.csv index b611dc2d3..460566690 100644 --- a/indexes/sol_003_index.csv +++ b/indexes/sol_003_index.csv @@ -50,7 +50,9 @@ 7.3.3.7,Individual Subscription Resource Endpoint, IndividualSubscription.robot 7.3.3.8,Notifications, Notifications.robot 7.3.3.9,API Version Resource Endpoint, ApiVersion.robot -7.3.3.10,Notification Endpoint,NotificationEndpoint.robot +7.3.3.10,Manifest In Individual VNF Package Endpoint,ManifestInIndividualVNFPackage.robot +7.3.3.11,VNF Package Artifacts Endpoint,VNFPackageArtifacts.robot +7.3.3.12,Notification Endpoint,NotificationEndpoint.robot 7.3.4,VNF Performance Management Interface, VNFPerformanceManagement-API 7.3.4.1,PM Jobs Resource Endpoint, PMJobs.robot 7.3.4.2,Individual Pm Job Resource Endpoint, IndividualPmJob.robot diff --git a/indexes/sol_005_index.csv b/indexes/sol_005_index.csv index 99286de33..e45e8cd31 100644 --- a/indexes/sol_005_index.csv +++ b/indexes/sol_005_index.csv @@ -70,7 +70,9 @@ 5.3.5.8,Individual Subscription Resource Endpoint, IndividualSubscription.robot 5.3.5.9,Notifications, Notifications.robot 5.3.5.10,API Version Resource Endpoint, ApiVersion.robot -5.3.5.11,Notification Endpoint,NotificationEndpoint.robot +5.3.5.11,Manifest In Individual VNF Package Endpoint,ManifestInIndividualVNFPackage.robot +5.3.5.11,VNF Package Artifacts Endpoint,VNFPackageArtifacts.robot +5.3.5.13,Notification Endpoint,NotificationEndpoint.robot 5.3.6,NFVI Capacity Information Interface, NFVICapacityInformation-API 5.3.6.1,API Version Resource Endpoint, ApiVersion.robot 5.3.6.2,NFVI Capacity Information Endpoint, NFVICapacityInformation.robot -- GitLab From 76e2aa0ff7fb879643f57be0329489d027d6bd6b Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 7 Jun 2021 13:21:15 +0200 Subject: [PATCH 533/580] updated tests on 412 for SOL005 --- .../IndividualAlarm.robot | 2 +- .../NSFMOperationKeywords.robot | 4 +-- .../environment/variables.txt | 2 ++ .../IndividualPmJob.robot | 2 +- .../IndividualThreshold.robot | 2 +- .../NSPerformanceManagementKeywords.robot | 27 ++++++++++++++++++- .../environment/variables.txt | 2 ++ 7 files changed, 35 insertions(+), 6 deletions(-) diff --git a/SOL005/NSFaultManagement-API/IndividualAlarm.robot b/SOL005/NSFaultManagement-API/IndividualAlarm.robot index 957752f38..30b7c02b4 100644 --- a/SOL005/NSFaultManagement-API/IndividualAlarm.robot +++ b/SOL005/NSFaultManagement-API/IndividualAlarm.robot @@ -94,7 +94,7 @@ PATCH Alarm - Precondition failed ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: - PATCH Individual Alarm Conflict + PATCH Individual Alarm - ETag mismatch Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot index 406c95fc1..8584aaec2 100644 --- a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot +++ b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot @@ -197,11 +197,11 @@ PATCH Individual Alarm ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -PATCH Individual Alarm Conflict +PATCH Individual Alarm - ETag mismatch log Trying to perform a PATCH. This method modifies an individual alarm resource Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} - Set Headers {"If-Match": "${Etag}"} + Set Headers {"If-Match": "${invalid_etag}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/alarmModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} diff --git a/SOL005/NSFaultManagement-API/environment/variables.txt b/SOL005/NSFaultManagement-API/environment/variables.txt index 2214bef51..d21d1421a 100644 --- a/SOL005/NSFaultManagement-API/environment/variables.txt +++ b/SOL005/NSFaultManagement-API/environment/variables.txt @@ -45,6 +45,8 @@ ${AlarmNotification} {} ${AlarmClearedNotification} {} ${AlarmListRebuiltNotification} {} +${invalid_etag}= invalid etag + ${response} {} ${req_mock} {} diff --git a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot index e9214c7d8..a087adf08 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot @@ -104,7 +104,7 @@ PATCH Individual NS Performance Job - Precondition failed ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The resource is not modified - Send Patch request for individual NS Performance Job + Send Patch request for individual NS Performance Job - Etag mismatch Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot b/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot index 2b92f548d..67f24ec81 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot @@ -107,7 +107,7 @@ PATCH Individual Threshold - Precondition failed ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is not modified by the operation - Send Patch request for individual NS performance Threshold + Send Patch request for individual NS performance Threshold - Etag mismatch Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails Check Postcondition NS performance Threshold is Unmodified (Implicit) diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index 919ec2fbf..8c566c0d4 100644 --- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot +++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot @@ -255,6 +255,19 @@ Send Patch request for individual NS Performance Job ${output}= Output response Set Suite Variable ${response} ${output} +Send Patch request for individual NS Performance Job - Etag mismatch + Log Trying to perform a PATCH + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"If-Match": "${invalid_etag}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/PmJobModifications.json + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + Send Patch request for individual NS Performance Job with unprocessable entity Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} @@ -495,7 +508,19 @@ Send Patch request for individual NS performance Threshold PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} - + +Send Patch request for individual NS performance Threshold - Etag mismatch + Log Trying to PUT threshold + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"If-Match": "${invalid_etag}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/ThresholdModifications.json + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + Send Patch request for Individual Threshold with unprocessable entity Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} diff --git a/SOL005/NSPerformanceManagement-API/environment/variables.txt b/SOL005/NSPerformanceManagement-API/environment/variables.txt index 273e805f7..647fed250 100644 --- a/SOL005/NSPerformanceManagement-API/environment/variables.txt +++ b/SOL005/NSPerformanceManagement-API/environment/variables.txt @@ -24,6 +24,8 @@ ${callback_endpoint} /nspm/subscriptions ${callback_endpoint_error} /subs_404 ${sleep_interval} 20s +${invalid_etag} invalid etag + ${total_polling_time} 2 min ${polling_interval} 10 sec -- GitLab From 214eee4baed4989ccb8446aca7dc8943e7fdaba8 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 7 Jun 2021 14:58:54 +0200 Subject: [PATCH 534/580] updated tests on 412 for SOL003 --- .../FaultManagement-APIKeyword.robot | 9 ++------ .../IndividualAlarm.robot | 15 ++++++------- .../IndividualVNFInstance.robot | 8 +++---- .../VnfLcmMntOperationKeywords.robot | 14 +++++++++++++ .../environment/variables.txt | 2 ++ .../IndividualPmJob.robot | 18 +++++++++++++--- .../IndividualThreshold.robot | 21 +++++++++++++++---- .../environment/variables.txt | 4 +++- 8 files changed, 63 insertions(+), 28 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot index 6b9dcd2d7..1ed2514e6 100644 --- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot @@ -10,9 +10,6 @@ Library MockServerLibrary Library Process -*** Variables *** -${original_etag} 1234 - *** Keywords *** Create Sessions Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance @@ -209,8 +206,6 @@ GET Fault Management Individual Alarm Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} - ${etag} Output response headers ETag - Set Suite Variable &{original_etag} ${etag} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -234,11 +229,11 @@ PATCH Fault Management Individual Alarm ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -PATCH Fault Management Individual Alarm - precondition failed +PATCH Fault Management Individual Alarm - Etag mismatch log Trying to perform a PATCH. This method modifies an individual alarm resource Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} - Set Headers {"If-Match": "${original_etag[0]}"} + Set Headers {"If-Match": "${invalid_etag}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/alarmModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} diff --git a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot index c3aa8587c..198aeb524 100644 --- a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot @@ -55,7 +55,6 @@ PATCH Fault Management Individual Alarm ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Check Precondition VNF fault management individual alarm Exists PATCH Fault Management Individual Alarm Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is alarmModification @@ -63,32 +62,30 @@ PATCH Fault Management Individual Alarm Modify an individual alarm resource - Precondition failed [Documentation] Test ID: 7.3.5.2.5 ... Test title: Modify an individual alarm resource - Precondition failed - ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set + ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the resource was modified by another entity ... Pre-conditions: The related alarm exists ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Check Precondition VNF fault management individual alarm Exists - PATCH Fault Management Individual Alarm - precondition failed - Check HTTP Response Status Code Is 409 + PATCH Fault Management Individual Alarm - Etag mismatch + Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails Modify an individual alarm resource - Conflict [Documentation] Test ID: 7.3.5.2.6 ... Test title: Modify an individual alarm resource - Conflict - ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the resource was modified by another entity + ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set ... Pre-conditions: The related alarm exists ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - Depends On Test PATCH Fault Management Individual Alarm - Check Precondition VNF fault management individual alarm Exists PATCH Fault Management Individual Alarm Conflict - Check HTTP Response Status Code Is 412 + Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails + DELETE Alarm - Method not implemented [Documentation] Test ID: 7.3.5.2.7 ... Test title: DELETE Alarm - Method not implemented diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 693322efe..496319b49 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -65,13 +65,13 @@ PATCH Individual VNFInstance PATCH Individual VNFInstance Precondition failed [Documentation] Test ID: 7.3.1.2.5 ... Test title: PATCH Individual VNFInstance Precondition failed - ... Test objective: The objective is to create a new VNF instance resource - ... Pre-conditions: ETag mismatch + ... Test objective: The objective is to test that modification of a VNF instance resource fails when a precondition given in an HTTP request header is not fulfilled due to an ETag mismatch + ... Pre-conditions: an existing VNF instance resource ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: VNFInstance not modified - PATCH individual vnfInstance + ... Post-Conditions: none + PATCH individual vnfInstance - Etag mismatch Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 3772a2166..5e8b2d8bf 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -570,6 +570,20 @@ PATCH individual vnfInstance Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +PATCH individual vnfInstance - Etag mismatch + log Trying to modify an individual VNF instance + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"If-Match": "${invalid_etag}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + 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 diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index a179dde98..5c2e3e0f6 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -17,6 +17,8 @@ ${apiMajorVersion} v2 ${CancelMode} GRACEFUL ${VNFM_DUPLICATION} 0 +${invalid_etag} invalid etag + ${NFVO_HOST} localhost # Hostname of the NFVO ${NFVO_PORT} 8081 # Listening port of the NFVO ${NFVO_SCHEMA} https diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index 68844d259..8e672dda5 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -106,7 +106,7 @@ PATCH Individual VNF Performance Job - Precondition failed ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation - Send Patch request for individual VNF Performance Job + Send Patch request for individual VNF Performance Job - Etag mismatch Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails Check Postcondition VNF Performance Job is Unmodified (Implicit) @@ -181,12 +181,24 @@ Send Patch request for individual VNF Performance Job Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${body}= Get File jsons/PMJobModifications.json + ${template}= Get File jsons/PMJobModifications.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} +Send Patch request for individual VNF Performance Job - Etag mismatch + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"If-Match": "${invalid_etag}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/PMJobModifications.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} - + + Send Patch request for individual VNF Performance Job with unprocessable entity Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} diff --git a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot index 9e2ab15ec..ccfbc2cc8 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -105,11 +105,10 @@ PATCH Individual Threshold - Precondition failed ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Job is not modified by the operation - Send Patch request for individual VNF Performance Threshold + ... Post-Conditions: none + Send Patch request for individual VNF Performance Threshold - Etag mismatch Check HTTP Response Status Code Is 412 Check HTTP Response Body Json Schema Is ProblemDetails - Check Postcondition VNF Performance Threshold is Unmodified (Implicit) PATCH Individual Threshold - Unprocessible Entity [Documentation] Test ID: 7.3.4.5.9 @@ -179,10 +178,24 @@ Send Patch request for individual VNF Performance Threshold Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${body}= Get File jsons/ThresholdModifications.json + ${template}= Get File jsons/ThresholdModifications.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} + +Send Patch request for individual VNF Performance Threshold - Etag mismatch + Log Trying to PUT threshold + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"If-Match": "${invalid_etag}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/ThresholdModifications.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} + ${output}= Output response + Set Suite Variable ${response} ${output} + Send Patch request for individual VNF Performance Threshold with unprocessable entity Log Trying to PATCH threshold diff --git a/SOL003/VNFPerformanceManagement-API/environment/variables.txt b/SOL003/VNFPerformanceManagement-API/environment/variables.txt index 6c393bb33..c3a9a4fe5 100644 --- a/SOL003/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL003/VNFPerformanceManagement-API/environment/variables.txt @@ -68,4 +68,6 @@ ${newReportId} newReportId ${FILTER_OK} objectInstanceId=${objectInstanceIds} ${FILTER_KO} criterias=erroneousFilter -${callbackResp} localhost \ No newline at end of file +${callbackResp} localhost + +${invalid_etag} invalid etag -- GitLab From ff6e5ba7d810d96256b932e82b7add78f5b47757 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 7 Jun 2021 17:21:07 +0200 Subject: [PATCH 535/580] added tests for nextpage_opaque_marker --- SOL003/VNFFaultManagement-API/Alarms.robot | 106 ++++++++------- .../FaultManagement-APIKeyword.robot | 19 ++- .../environment/variables.txt | 1 + .../Subscriptions.robot | 128 ++++++++++-------- .../VNFInstances.robot | 16 ++- .../VnfLcmMntOperationKeywords.robot | 37 +++++ .../VnfLcmOperationOccurences.robot | 14 +- .../environment/variables.txt | 2 + .../Subscriptions.robot | 14 +- .../VNFPackageManagementKeywords.robot | 36 ++++- .../VNFPackages.robot | 30 +++- .../environment/variables.txt | 2 + .../VNFPerformanceManagement-API/PMJobs.robot | 38 +++++- .../environment/variables.txt | 1 + .../Subscriptions.robot | 16 ++- .../VRQANOperationKeywords.robot | 19 ++- .../environment/variables.txt | 2 + 17 files changed, 359 insertions(+), 122 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/Alarms.robot b/SOL003/VNFFaultManagement-API/Alarms.robot index ffe3ba4ef..254930cc7 100644 --- a/SOL003/VNFFaultManagement-API/Alarms.robot +++ b/SOL003/VNFFaultManagement-API/Alarms.robot @@ -59,57 +59,50 @@ Get information about multiple alarms Bad Request Invalid attribute-based filter Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -GET information about multiple alarms with "all_fields" attribute selector +Void [Documentation] Test ID: 7.3.5.1.5 - ... Test title: GET information about multiple alarms with "all_fields" attribute selector - ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET Alarms Task with all_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is Alarms + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void -GET information about multiple alarms with exclude_default attribute selector +Void [Documentation] Test ID: 7.3.5.1.6 - ... Test title: GET information about multiple alarms with "exclude_default" attribute selector - ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET Alarms Task with exclude_default attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is Alarms + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void -GET information about multiple alarms with fields attribute selector +Void [Documentation] Test ID: 7.3.5.1.7 - ... Test title: GET information about multiple alarms with fields attribute selector - ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET Alarms Task with fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is Alarms - -GET information about multiple alarms with "exclude_fields" attribute selector + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + +Void [Documentation] Test ID: 7.3.5.1.8 - ... Test title: GET information about multiple alarms with "exclude_fields" attribute selector - ... Test objective: The objective is to retrieve information about the alarm list - ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET Alarms Task with exclude_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is Alarms + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + PUT Alarms - Method not implemented [Documentation] Test ID: 7.3.5.1.9 @@ -154,12 +147,25 @@ Get information about multiple alarms as a Paged Response ... Pre-conditions: none ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM - ... Applicability: none + ... Applicability: The VNFM supports response paging for the VNF alarm resources ... Post-Conditions: none GET Fault Management Alarms Check HTTP Response Status Code Is 200 Check HTTP Response Header Contain Link - + +GET information about multiple alarms as a Paged Response with nextpage_opauque_marker parameter + [Documentation] Test ID: 7.3.5.1.12a + ... Test title: GET information about multiple alarms as a Paged Response with nextpage_opauque_marker parameter + ... Test objective: The objective is to query information about multiple alarms as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter + ... Pre-conditions: A request for retrieving multiple alarms as a paged response has been successfully issued (Test ID: 7.3.5.1.12) + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM supports response paging for the VNF alarm resources + ... Post-Conditions: none + GET Fault Management Alarms with nextpage_opaque_marker parameter + Check HTTP Response Status Code Is 200 + + Get information about multiple alarms - Bad Request Response too Big [Documentation] Test ID: 7.3.5.1.13 ... Test title: Get information about multiple alarms - Bad Request Response too Big @@ -171,4 +177,8 @@ Get information about multiple alarms - Bad Request Response too Big ... Post-Conditions: none GET Fault Management Alarms Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +*** Keywords *** +Void + Log do nothing diff --git a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot index 1ed2514e6..72dce684a 100644 --- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot @@ -125,7 +125,17 @@ GET Fault Management Alarms Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + +GET Fault Management Alarms with nextpage_opaque_marker parameter + Log Get next page of subscriptions + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query using the URI provided in the previous GET request and validate response + Get ${nextPageUri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + GET Fault Management Alarms With Filters Log Query NFVO The GET method queries information about multiple alarms with filters. Set Headers {"Accept":"${ACCEPT}"} @@ -422,6 +432,13 @@ DELETE Individual Subscription Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} + Log Check that Link header contains rel set to next + Should Contain ${linkURL} rel="next" + Log Check that Link header contains URI to next page between <> + ${linkHeaderUri}= Get Regexp Matches ${linkURL} (?<=\<)(.*?)(?=\>) + ${length}= Get Length ${linkHeaderUri} + Should Be Equal As Integers ${length} 0 + Set Global Variable ${nextPageUri} ${linkHeaderUri[0]} Get subscriptions with filter "id" Log Get the list of active subscriptions using a filter "id" diff --git a/SOL003/VNFFaultManagement-API/environment/variables.txt b/SOL003/VNFFaultManagement-API/environment/variables.txt index f8bfd19c3..02261acf8 100644 --- a/SOL003/VNFFaultManagement-API/environment/variables.txt +++ b/SOL003/VNFFaultManagement-API/environment/variables.txt @@ -29,6 +29,7 @@ ${apiRoot} / ${apiName} vnffm ${apiMajorVersion} v1 +${nextPageUri} /some_uri ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${notification_type} AlarmNotification diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index ee092ffdc..ae88137bd 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -89,60 +89,52 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails -#GET subscriptions with all_fields attribute selector -# [Documentation] Test ID: 7.3.1.17.7 -# ... Test title: GET subscriptions with all_fields attribute selector -# ... Test objective: The objective is Get the list of active subscriptions -# ... Pre-conditions: none -# ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 -# ... Config ID: Config_prod_VNFM -# ... Applicability: none -# ... Post-Conditions: none -# Get subscriptions with all_fields attribute selector -# Check HTTP Response Status Code Is 200 -# Check HTTP Response Body Json Schema Is Subscriptions - -#GET subscriptions with exclude_default attribute selector -# [Documentation] Test ID: 7.3.1.17.8 -# ... Test title: GET subscriptions with exclude_default attribute selector -# ... Test objective: The objective is Get the list of active subscriptions -# ... Pre-conditions: none -# ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 -# ... Config ID: Config_prod_VNFM -# ... Applicability: none -# ... Post-Conditions: none -# Get subscriptions with exclude_default attribute selector -# Check HTTP Response Status Code Is 200 -# Check HTTP Response Body Json Schema Is Subscriptions - -#GET subscriptions with fields attribute selector -# [Documentation] Test ID: 7.3.1.17.9 -# ... Test title: GET subscriptions with fields attribute selector -# ... Test objective: The objective is Get the list of active subscriptions -# ... Pre-conditions: none -# ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 -# ... Config ID: Config_prod_VNFM -# ... Applicability: none -# ... Post-Conditions: none -# Get subscriptions with fields attribute selector -# Check HTTP Response Status Code Is 200 -# Check HTTP Response Body Json Schema Is Subscriptions - -#GET subscriptions with exclude_fields attribute selector -# [Documentation] Test ID: 7.3.1.17.10 -# ... Test title: GET subscriptions with exclude_fields attribute selector -# ... Test objective: The objective is Get the list of active subscriptions -# ... Pre-conditions: none -# ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 -# ... Config ID: Config_prod_VNFM -# ... Applicability: none -# ... Post-Conditions: none -# Get subscriptions with exclude_fields attribute selector -# Check HTTP Response Status Code Is 200 -# Check HTTP Response Body Json Schema Is Subscriptions +Void + [Documentation] Test ID: 7.3.1.17.7 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + +Void + [Documentation] Test ID: 7.3.1.17.8 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + +Void + [Documentation] Test ID: 7.3.1.17.9 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void + +Void + [Documentation] Test ID: 7.3.1.17.10 + ... Test title: Void + ... Test objective: Void + ... Pre-conditions: Void + ... Reference: Void + ... Config ID: Void + ... Applicability: Void + ... Post-Conditions: Void + Void PUT subscriptions - Method not implemented - [Documentation] Test ID: 7.3.1.17.7 + [Documentation] Test ID: 7.3.1.17.11 ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -154,7 +146,7 @@ PUT subscriptions - Method not implemented Check HTTP Response Status Code Is 405 PATCH subscriptions - Method not implemented - [Documentation] Test ID: 7.3.1.17.8 + [Documentation] Test ID: 7.3.1.17.12 ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -166,7 +158,7 @@ PATCH subscriptions - Method not implemented Check HTTP Response Status Code Is 405 DELETE subscriptions - Method not implemented - [Documentation] Test ID: 7.3.1.17.9 + [Documentation] Test ID: 7.3.1.17.13 ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none @@ -178,20 +170,20 @@ DELETE subscriptions - Method not implemented Check HTTP Response Status Code Is 405 GET Subscriptions as a Paged Response - [Documentation] Test ID: 7.3.1.17.10 + [Documentation] Test ID: 7.3.1.17.14 ... Test title: GET Subscriptions as a Paged Response ... Test objective: The objective is Get the list of active subscriptions as a Paged Response. ... Pre-conditions: none ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM - ... Applicability: none + ... Applicability: The VNFM supports response paging for the subscriptions resources ... Post-Conditions: none Get subscriptions Check HTTP Response Status Code Is 200 Check HTTP Response Header Contain Link GET subscriptions - Bad Request Response too Big - [Documentation] Test ID: 7.3.1.17.11 + [Documentation] Test ID: 7.3.1.17.15 ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of the list of active subscriptions fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: none @@ -204,14 +196,30 @@ GET subscriptions - Bad Request Response too Big Check HTTP Response Body Json Schema Is ProblemDetails POST Create a new Subscription - Unprocessable Entity - [Documentation] Test ID: 7.3.1.17.12 + [Documentation] Test ID: 7.3.1.17.16 ... Test title: POST Create a new Subscription - Unprocessable Entity ... Test objective: The objective is to test that content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [2] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none Post Create subscription Check HTTP Response Status Code Is 422 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Subscriptions as a Paged Response with nextpage_opauque_marker parameter + [Documentation] Test ID: 7.3.1.17.17 + ... Test title: GET Subscriptions as a Paged Response with nextpage_opauque_marker parameter + ... Test objective: The objective is to Get the list of active subscriptions as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter + ... Pre-conditions: A request for retrieving subscriptions as a paged response has been successfully issued (Test ID: 7.3.1.17.14) + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM supports response paging for the subscriptions resources + ... Post-Conditions: none + Get subscriptions with nextpage_opaque_marker parameter + Check HTTP Response Status Code Is 200 + +*** Keywords *** +Void + Log do nothing diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index a4f553332..e8c8ea246 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -156,12 +156,24 @@ GET information about multiple VNF instances to get Paged Response ... Pre-conditions: none ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM - ... Applicability: none + ... Applicability: The VNFM supports response paging for the subscriptions resources ... Post-Conditions: none GET multiple vnfInstances Check HTTP Response Status Code Is 200 Check HTTP Response Header Contain Link - + +GET information about multiple VNF instances as a Paged Response with nextpage_opauque_marker parameter + [Documentation] Test ID: 7.3.1.17.12a + ... Test title: GET information about multiple VNF instances as a Paged Response with nextpage_opauque_marker parameter + ... Test objective: The objective is to query information about multiple VNF instances as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter + ... Pre-conditions: A request for retrieving multiple VNF instances as a paged response has been successfully issued (Test ID: 7.3.1.1.12) + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM supports response paging for the VNF instance resources + ... Post-Conditions: none + Get multiple vnfInstances with nextpage_opaque_marker parameter + Check HTTP Response Status Code Is 200 + GET information about multiple VNF instances - Bad Request Response too Big [Documentation] Test ID: 7.3.1.1.13 ... Test title: GET information about multiple VNF instances - Bad Request Response too Big diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 5e8b2d8bf..7949f59da 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -439,6 +439,16 @@ GET multiple vnfInstances ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +Get multiple vnfInstances with nextpage_opaque_marker parameter + Log Get next page of subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query using the URI provided in the previous GET request and validate response + Get ${nextPageUri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET multiple vnfInstances with bad attribute Log Query VNF The GET method queries information about multiple VNF instances. Set Headers {"Accept":"${ACCEPT}"} @@ -955,6 +965,15 @@ GET VNF LCM Operation occurrences Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +Get VNF LCM Operation occurrences with nextpage_opaque_marker parameter + Log Get next page of subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query using the URI provided in the previous GET request and validate response + Get ${nextPageUri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET VNF LCM Operation occurrences invalid attribute Log Query status information about multiple VNF lifecycle management operation occurrences. Set Headers {"Accept":"${ACCEPT}"} @@ -1289,6 +1308,17 @@ Get subscriptions Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +Get subscriptions with nextpage_opaque_marker parameter + Log Get next page of subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query using the URI provided in the previous GET request and validate response + Get ${nextPageUri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Get subscriptions - filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} @@ -1460,6 +1490,13 @@ GET test endpoint Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} + Log Check that Link header contains rel set to next + Should Contain ${linkURL} rel="next" + Log Check that Link header contains URI to next page between <> + ${linkHeaderUri}= Get Regexp Matches ${linkURL} (?<=\<)(.*?)(?=\>) + ${length}= Get Length ${linkHeaderUri} + Should Be Equal As Integers ${length} 0 + Set Global Variable ${nextPageUri} ${linkHeaderUri[0]} Check HTTP Response Body vnfInstance content against VNF Descriptor Run Keyword If ${check_descriptors} == 1 Check Individual VNF Instance Content diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index 29d32fb25..3eb1f6077 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -152,12 +152,24 @@ GET status information about multiple VNF LCM Operation OCC to get Paged Respons ... Pre-conditions: none ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM - ... Applicability: none + ... Applicability: The VNFM supports response paging for the VNF lifecycle management operation occurrences resources ... Post-Conditions: none GET VNF LCM Operation occurrences Check HTTP Response Status Code Is 202 Check HTTP Response Header Contain Link +GET information about multiple VNF LCM Operation OCC as a Paged Response with nextpage_opauque_marker parameter + [Documentation] Test ID: 7.3.1.11.12a + ... Test title: GET information about multiple VNF LCM Operation OCC as a Paged Response with nextpage_opauque_marker parameter + ... Test objective: The objective is to query information about multiple VNF lifecycle management operation occurrences as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter + ... Pre-conditions: A request for retrieving multiple VNF lifecycle management operation occurrences as a paged response has been successfully issued (Test ID: 7.3.1.11.12) + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM supports response paging for the VNF lifecycle management operation occurrences resources + ... Post-Conditions: none + GET VNF LCM Operation occurrences with nextpage_opaque_marker parameter + Check HTTP Response Status Code Is 200 + GET status information about multiple VNF LCM Operation OCC - Bad Request Response too Big [Documentation] Test ID: 7.3.1.11.13 ... Test title: GET status information about multiple VNF LCM Operation OCC - Bad Request Response too Big diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 5c2e3e0f6..53851db2a 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -31,6 +31,8 @@ ${ARTIFACT_ID} artifactId ${WRONG_ACCEPT} application/json ${SYNC_MODE} 0 +${nextPageUri} /someuri + ${original_etag} 1234 ${invalid_etag} 4321 diff --git a/SOL003/VNFPackageManagement-API/Subscriptions.robot b/SOL003/VNFPackageManagement-API/Subscriptions.robot index 8422e40ec..bf1c7ca3b 100644 --- a/SOL003/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL003/VNFPackageManagement-API/Subscriptions.robot @@ -156,12 +156,24 @@ Get All VNF Package Subscriptions as Paged Response ... Pre-conditions: At least one VNF package subscription is available in the NFVO. ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.7.1 ... Config ID: Config_prod_NFVO - ... Applicability: none + ... Applicability: The VNFM supports response paging for the subscription resources ... Post-Conditions: none Get all VNF Package Subscriptions Check HTTP Response Status Code Is 200 Check HTTP Response Header Contain Link +GET All VNF Package Subscriptions as a Paged Response with nextpage_opauque_marker parameter + [Documentation] Test ID: 7.3.3.6.11a + ... Test title: GET All VNF Package Subscriptions as a Paged Response with nextpage_opauque_marker parameter + ... Test objective: The objective is to query information about all VNF package subscriptions as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter + ... Pre-conditions: A request for retrieving all VNF package subscriptions as a paged response has been successfully issued (Test ID: 7.3.3.6.11) + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The VNFM supports response paging for the subscription resources + ... Post-Conditions: none + GET All VNF Package Subscriptions with nextpage_opaque_marker parameter + Check HTTP Response Status Code Is 200 + Get VNF Package Subscriptions - Bad Request Response too Big [Documentation] Test ID: 7.3.3.6.12 ... Test title: Get VNF Package Subscriptions - Bad Request Response too Big diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 6f275af21..244baea75 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -21,6 +21,15 @@ Get all VNF Packages ${output}= Output response Set Suite Variable ${response} ${output} +Get all VNF Packages with nextpage_opaque_marker parameter + Log Get next page of packages + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query using the URI provided in the previous GET request and validate response + Get ${nextPageUri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Check HTTP Response Body Does Not Contain softwareImages Log Checking that field element is missing ${softwareImages}= Get Value From Json ${response['body']} $..softwareImages @@ -361,6 +370,15 @@ Get all VNF Package Subscriptions ${output}= Output response Set Suite Variable ${response} ${output} +GET All VNF Package Subscriptions with nextpage_opaque_marker parameter + Log Get next page of subscriptions + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query using the URI provided in the previous GET request and validate response + Get ${nextPageUri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Get VNF Package Subscriptions with attribute-based filters Log Trying to get the list of subscriptions using filters Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -765,6 +783,13 @@ Check Notification Endpoint Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} + Log Check that Link header contains rel set to next + Should Contain ${linkURL} rel="next" + Log Check that Link header contains URI to next page between <> + ${linkHeaderUri}= Get Regexp Matches ${linkURL} (?<=\<)(.*?)(?=\>) + ${length}= Get Length ${linkHeaderUri} + Should Be Equal As Integers ${length} 0 + Set Global Variable ${nextPageUri} ${linkHeaderUri[0]} Get all OnBoarded VNF Packages Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue @@ -773,7 +798,16 @@ Get all OnBoarded VNF Packages GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} - + +Get all OnBoarded VNF Packages with nextpage_opaque_marker parameter + Log Get next page of packages + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query using the URI provided in the previous GET request and validate response + Get ${nextPageUri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET OnBoarded VNF Packages with attribute-based filter Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} diff --git a/SOL003/VNFPackageManagement-API/VNFPackages.robot b/SOL003/VNFPackageManagement-API/VNFPackages.robot index 0b2a88e75..61d743408 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackages.robot @@ -172,11 +172,24 @@ GET all VNF Packages as a Paged Response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO - ... Applicability: none + ... Applicability: The VNFM supports response paging for the VNF package resources ... Post-Conditions: none GET all VNF Packages Check HTTP Response Status Code Is 200 Check HTTP Response Header Contain Link + +GET all VNF Packages as a Paged Response with nextpage_opauque_marker parameter + [Documentation] Test ID: 7.3.3.1.13a + ... Test title: GET all VNF Packages as a Paged Response with nextpage_opauque_marker parameter + ... Test objective: The objective is to query information about all VNF packages as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter + ... Pre-conditions: A request for retrieving all VNF packages as a paged response has been successfully issued (Test ID: 7.3.3.1.13) + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The VNFM supports response paging for the VNF package resources + ... Post-Conditions: none + GET all VNF Packages with nextpage_opaque_marker parameter + Check HTTP Response Status Code Is 200 + GET VNF Packages - Bad Request Response too Big [Documentation] Test ID: 7.3.3.1.14 @@ -357,11 +370,24 @@ GET all OnBoarded VNF Packages as a Paged Response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v.3.3.1 ... Config ID: Config_prod_NFVO - ... Applicability: none + ... Applicability: The VNFM supports response paging for the VNF package resources ... Post-Conditions: none Get all OnBoarded VNF Packages Check HTTP Response Status Code Is 200 Check HTTP Response Header Contain Link + +GET all OnBoarded VNF Packages as a Paged Response with nextpage_opauque_marker parameter + [Documentation] Test ID: 7.3.3.1.27a + ... Test title: GET all OnBoarded VNF Packages as a Paged Response with nextpage_opauque_marker parameter + ... Test objective: The objective is to query information about all onBoarded VNF packages as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter + ... Pre-conditions: A request for retrieving all onBoarded VNF packages as a paged response has been successfully issued (Test ID: 7.3.3.1.27) + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 + ... Config ID: Config_prod_NFVO + ... Applicability: The VNFM supports response paging for the VNF package resources + ... Post-Conditions: none + GET all Onboarded VNF Packages with nextpage_opaque_marker parameter + Check HTTP Response Status Code Is 200 + GET OnBoarded VNF Packages - Bad Request Response too Big [Documentation] Test ID: 7.3.3.1.28 diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 85599df9d..0f3ab14e5 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -25,6 +25,8 @@ ${NFVO_ALLOWS_DUPLICATE_SUBS} 1 ${response} httpresponse +${nextPageUri} /some_uri + ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar ${callback_uri} http://localhost diff --git a/SOL003/VNFPerformanceManagement-API/PMJobs.robot b/SOL003/VNFPerformanceManagement-API/PMJobs.robot index dcd471014..4db6e029e 100644 --- a/SOL003/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL003/VNFPerformanceManagement-API/PMJobs.robot @@ -175,12 +175,24 @@ GET all VNF Performance Monitoring Jobs as Paged Response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM - ... Applicability: none + ... Applicability: The VNFM supports response paging for the VNF performance jobs resources ... Post-Conditions: none GET all VNF Performance Monitoring Jobs Check HTTP Response Status Code Is 200 - Check LINK in Header - + Check HTTP Response Header Contain Link + +GET all VNF Performance Monitoring Jobs as Paged Response with nextpage_opauque_marker parameter + [Documentation] Test ID: 7.3.4.1.13a + ... Test title: GET all VNF Performance Monitoring Jobs as Paged Response with nextpage_opauque_marker parameter + ... Test objective: The objective is to query information about all the available VNF performance monitoring jobs as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter + ... Pre-conditions: A request for retrieving the available VNF performance monitoring jobs as a paged response has been successfully issued (Test ID: 7.3.4.1.13) + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM supports response paging for the VNF performance jobs resources + ... Post-Conditions: none + GET all VNF Performance Monitoring Jobs with nextpage_opaque_marker parameter + Check HTTP Response Status Code Is 200 + GET VNF Performance Monitoring Jobs - Bad Request Response too Big [Documentation] Test ID: 7.3.4.1.14 ... Test title: GET VNF Performance Monitoring Jobs - Bad Request Response too Big @@ -230,6 +242,26 @@ GET all VNF Performance Monitoring Jobs ${output}= Output response Set Suite Variable ${response} ${output} +Check HTTP Response Header Contain Link + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + Log Check that Link header contains rel set to next + Should Contain ${linkURL} rel="next" + Log Check that Link header contains URI to next page between <> + ${linkHeaderUri}= Get Regexp Matches ${linkURL} (?<=\<)(.*?)(?=\>) + ${length}= Get Length ${linkHeaderUri} + Should Be Equal As Integers ${length} 0 + Set Global Variable ${nextPageUri} ${linkHeaderUri[0]} + +Get all VNF Performance Monitoring Jobs with nextpage_opaque_marker parameter + Log Get next page of subscriptions + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query using the URI provided in the previous GET request and validate response + Get ${nextPageUri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET VNF Performance Monitoring Jobs with attribute-based filter Log Trying to get all PM Jobs present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} diff --git a/SOL003/VNFPerformanceManagement-API/environment/variables.txt b/SOL003/VNFPerformanceManagement-API/environment/variables.txt index c3a9a4fe5..e7d2e7f50 100644 --- a/SOL003/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL003/VNFPerformanceManagement-API/environment/variables.txt @@ -35,6 +35,7 @@ ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies. ${objectInstanceIds} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${nextPageUri} /some_uri ${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e ${erroneousPmJobId} erroneousPmJobId diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot index a3dfb81a6..6aaa28a76 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot @@ -133,11 +133,23 @@ GET Virtualised Resources Quota Available Notification Subscriptions as Paged Re ... Pre-conditions: none ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v3.3.1 ... Config ID: Config_prod_VNFM - ... Applicability: none + ... Applicability: The VNFM supports response paging for the subscription resources ... Post-Conditions: none GET Virtualised Resources Quota Available Notification Subscriptions Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link + +GET Virtualised Resources Quota Available Notification Subscriptions as Paged Response with nextpage_opauque_marker parameter + [Documentation] Test ID: 7.3.7.1.10a + ... Test title: GET Virtualised Resources Quota Available Notification Subscriptions as Paged Response with nextpage_opauque_marker parameter + ... Test objective: The objective is to query the list of active Virtualised Resources Quota Available Notification subscriptions as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter + ... Pre-conditions: A request for retrieving the list of active Virtualised Resources Quota Available Notification subscriptions as a paged response has been successfully issued (Test ID: 7.3.7.1.10) + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM supports response paging for the subscription resources + ... Post-Conditions: none + GET Virtualised Resources Quota Available Notification Subscriptions with nextpage_opaque_marker parameter + Check HTTP Response Status Code Is 200 GET Virtualised Resources Quota Available Notification subscriptions - Bad Request Response too Big [Documentation] Test ID: 7.3.7.1.11 diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot index 8ba214350..82d28996e 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot @@ -150,6 +150,15 @@ GET Virtualised Resources Quota Available Notification Subscriptions Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +GET Virtualised Resources Quota Available Notification Subscriptions with nextpage_opaque_marker parameter + Log Get next page of subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query using the URI provided in the previous GET request and validate response + Get ${nextPageUri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Virtualised Resources Quota Available Notification Subscriptions with Filter Log Get the list of active subscriptions @@ -195,7 +204,15 @@ Send Delete request for Virtualised Resources Quota Available Notification subsc ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} + Log Check that Link header contains rel set to next + Should Contain ${linkURL} rel="next" + Log Check that Link header contains URI to next page between <> + ${linkHeaderUri}= Get Regexp Matches ${linkURL} (?<=\<)(.*?)(?=\>) + ${length}= Get Length ${linkHeaderUri} + Should Be Equal As Integers ${length} 0 + Set Global Variable ${nextPageUri} ${linkHeaderUri[0]} + \ No newline at end of file diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt index 3a90362a0..833aad663 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt @@ -21,6 +21,8 @@ ${callback_port} 9091 ${callback_uri} http://localhost ${sleep_interval} 20s +${nextPageUri} /some_uri + ${notification_request} [] ${notification_response} [] -- GitLab From e0293cb67bb10203c7365aea409d8e383e60cf7b Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Tue, 8 Jun 2021 18:12:26 +0200 Subject: [PATCH 536/580] Added instrumentation platform hook for NSFaultManagement-AlarmNotification --- .../NSFaultManagement-API/Notifications.robot | 65 ++++++++++++++++++- .../environment/variables.txt | 12 ++++ .../jsons/AlarmNotificationUpperTester.json | 7 ++ .../jsons/fmSubscriptionRequest.json | 2 - ...tionRequestForInstrumentationPlatform.json | 12 ++++ 5 files changed, 93 insertions(+), 5 deletions(-) create mode 100644 SOL005/NSFaultManagement-API/jsons/AlarmNotificationUpperTester.json create mode 100644 SOL005/NSFaultManagement-API/jsons/fmSubscriptionRequestForInstrumentationPlatform.json diff --git a/SOL005/NSFaultManagement-API/Notifications.robot b/SOL005/NSFaultManagement-API/Notifications.robot index 3e811a2a3..02536f8fa 100644 --- a/SOL005/NSFaultManagement-API/Notifications.robot +++ b/SOL005/NSFaultManagement-API/Notifications.robot @@ -6,6 +6,7 @@ Library MockServerLibrary Library Process Library OperatingSystem Library Collections +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Suite Setup Create Sessions Suite Teardown Terminate All Processes kill=true @@ -51,7 +52,25 @@ NS Fault Alarm List Rebuilt Notification Check Alarm list rebuilt Notification Http POST Request Body notificationType attribute Is alarmListRebuiltNotification +NS Fault Alarm Notification with instrumental platform hook + [Documentation] Test ID: 5.3.3.5.4 + ... Test title: NS Fault Alarm Notification with instrumental platform hook + ... Test objective: The objective is to test the dispatch of NS Fault Alarm Notification when a virtualised resource within an NS instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm notifications is available in the NFVO. + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + Trigger the fault of a virtualised resource in the NS instance + Check Alarm Notification Http POST Request Body Json Schema Is alarmNotification + Check Alarm Notification Http POST Request Body notificationType attribute Is alarmNotification + *** Keywords *** +Trigger the fault of a virtualised resource in the NS instance + Create Alarm Subscription AlarmNotification + &{keyvalues} Create Dictionary eventType=COMMUNICATIONS_ALARM delay=10s + Trigger instrumentation platform ${upperTesterUrlForAlarmNotifications} ${nsInstanceIdForNotifications} nsInstance AlarmNotification null &{keyvalues} + Trigger the fault of a virtualised resource in the NS instance (external action) #do nothing Log do nothing @@ -114,7 +133,8 @@ Configure Notification Alarm List Rebuilt Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${req} ${notification_request} &{headers} = Create Dictionary Content-Type=application/json &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} @@ -125,7 +145,8 @@ Configure Notification Alarm Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${req} ${notification_request} &{headers} = Create Dictionary Content-Type=application/json &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} @@ -136,7 +157,8 @@ Configure Notification Alarm Cleareance Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${req} ${notification_request} &{headers} = Create Dictionary Content-Type=application/json &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} @@ -147,3 +169,40 @@ Configure Notification Forward &{notification_tmp}= Create Mock Request Matcher POST ${endpoint} body_type="JSON_SCHEMA" body=${schema} &{notification_fwd}= Create Mock Http Forward ${endpoint_fwd} Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} + + + +Create Alarm Subscription + [Arguments] ${notificationType} + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/fmSubscriptionRequestForInstrumentationPlatform.json + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} nsInstanceId=${nsInstanceIdForNotifications} notificationType=${notificationType} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + Clear Requests ${callback_endpoint} + + +Trigger instrumentation platform + [Arguments] ${upperTesterUrl} ${resourceId} ${resourceType} ${event} ${value} &{keyvalues} + Run Keyword If ${event} == "AlarmNotification" or ${event} == "AlarmClearedNotification" or ${event} == "AlarmListRebuildNotification" + ... Trigger Alarm Management UpperTester ${upperTesterUrl} ${resourceId} ${resourceType} ${event} ${value} &{keyvalues} + + +Trigger Alarm Management UpperTester + [Arguments] ${upperTesterUrl} ${resourceId} ${resourceType} ${event} ${value} &{keyvalues} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE_UPPERTESTER} == 1 Set Headers {"${AUTHORIZATION_HEADER_UPPERTESTER}":"${AUTHORIZATION_TOKEN_UPPERTESTER}"} + ${template}= Get File jsons/AlarmNotificationUpperTester.json + ${body}= Format String ${template} resourceId=${resourceId} resourceType=${resourceType} event=${event} value=${value} keyvalues=${keyvalues} + POST ${upperTesterUrl} ${body} + ${output}= Output response + Should Be Equal As Strings ${output['status']} 202 \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/environment/variables.txt b/SOL005/NSFaultManagement-API/environment/variables.txt index d21d1421a..07ce775bd 100644 --- a/SOL005/NSFaultManagement-API/environment/variables.txt +++ b/SOL005/NSFaultManagement-API/environment/variables.txt @@ -65,3 +65,15 @@ ${notification_request} [] ${notification_response} [] ${callbackResp} 127.0.0.1 + + + +### Instrumentation platform variables +${nsInstanceIdForNotifications} SOME-ID +${AUTHORIZATION_HEADER_UPPERTESTER} Authorization +${AUTHORIZATION_TOKEN_UPPERTESTER} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${AUTH_USAGE_UPPERTESTER} 0 + + +${upperTesterUrlForAlarmNotifications} http://localhost:9999/uppertester + diff --git a/SOL005/NSFaultManagement-API/jsons/AlarmNotificationUpperTester.json b/SOL005/NSFaultManagement-API/jsons/AlarmNotificationUpperTester.json new file mode 100644 index 000000000..9891fae6b --- /dev/null +++ b/SOL005/NSFaultManagement-API/jsons/AlarmNotificationUpperTester.json @@ -0,0 +1,7 @@ +{{ + "resourceId":"{resourceId}", + "resourceType":"{resourceType}", + "event":"{event}", + "value":"{value}", + "keyvalue": "{keyvalue}" +}} diff --git a/SOL005/NSFaultManagement-API/jsons/fmSubscriptionRequest.json b/SOL005/NSFaultManagement-API/jsons/fmSubscriptionRequest.json index e9a8b3b01..fcbf70dae 100644 --- a/SOL005/NSFaultManagement-API/jsons/fmSubscriptionRequest.json +++ b/SOL005/NSFaultManagement-API/jsons/fmSubscriptionRequest.json @@ -1,10 +1,8 @@ {{ "filter": {{ - "nsInstanceSubscriptionFilter": {{ "notificationTypes": [ "AlarmNotification" ] - }} }}, "callbackUri": "{callback_uri}{callback_endpoint}" }} \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/jsons/fmSubscriptionRequestForInstrumentationPlatform.json b/SOL005/NSFaultManagement-API/jsons/fmSubscriptionRequestForInstrumentationPlatform.json new file mode 100644 index 000000000..41799f6e2 --- /dev/null +++ b/SOL005/NSFaultManagement-API/jsons/fmSubscriptionRequestForInstrumentationPlatform.json @@ -0,0 +1,12 @@ +{{ + "filter": {{ + "nsInstanceSubscriptionFilter": {{ + "nsInstanceIds": ["{nsInstanceId}"] + }}, + "notificationTypes": [ + "{notificationType}" + ] + }}, + "callbackUri": "{callback_uri}{callback_endpoint}" +}} + -- GitLab From 37a10eba34a32b07f864cca8e86de42885f9e4b3 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Tue, 8 Jun 2021 18:57:30 +0200 Subject: [PATCH 537/580] Fix on instrumentation platform hooks --- .../NSFaultManagement-API/Notifications.robot | 27 ++++++++++--------- .../environment/variables.txt | 2 +- .../jsons/AlarmNotificationUpperTester.json | 2 +- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/SOL005/NSFaultManagement-API/Notifications.robot b/SOL005/NSFaultManagement-API/Notifications.robot index 02536f8fa..603592672 100644 --- a/SOL005/NSFaultManagement-API/Notifications.robot +++ b/SOL005/NSFaultManagement-API/Notifications.robot @@ -134,9 +134,9 @@ Configure Notification Alarm List Rebuilt Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - Set Global Variable ${req} ${notification_request} + Set Global Variable ${notification_request} ${req} &{headers} = Create Dictionary Content-Type=application/json - &{notification_response}= Create Mock Response headers=${headers} status_code=204 + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Alarm Handler @@ -146,9 +146,9 @@ Configure Notification Alarm Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - Set Global Variable ${req} ${notification_request} + Set Global Variable ${notification_request} ${req} &{headers} = Create Dictionary Content-Type=application/json - &{notification_response}= Create Mock Response headers=${headers} status_code=204 + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Alarm Cleareance Handler @@ -158,9 +158,9 @@ Configure Notification Alarm Cleareance Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - Set Global Variable ${req} ${notification_request} + Set Global Variable ${notification_request} ${req} &{headers} = Create Dictionary Content-Type=application/json - &{notification_response}= Create Mock Response headers=${headers} status_code=204 + &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward @@ -184,16 +184,19 @@ Create Alarm Subscription &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request - Create Mock Expectation ${notification_request} ${notification_response} + #Create Mock Expectation ${notification_request} ${notification_response} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} - ${output}= Output response - Set Global Variable ${response} ${output} - Clear Requests ${callback_endpoint} + ${output}= Output response + Set Global Variable ${response} ${output} + Clear Requests ${callback_endpoint} Trigger instrumentation platform [Arguments] ${upperTesterUrl} ${resourceId} ${resourceType} ${event} ${value} &{keyvalues} - Run Keyword If ${event} == "AlarmNotification" or ${event} == "AlarmClearedNotification" or ${event} == "AlarmListRebuildNotification" + ${alarmNotificationBoolean} Run Keyword And Return Status Should Be Equal As Strings ${event} AlarmNotification + ${alarmClearedNotificationBoolean} Run Keyword And Return Status Should Be Equal As Strings ${event} AlarmClearedNotification + ${alarmListRebuiltNotificationBoolean} Run Keyword And Return Status Should Be Equal As Strings ${event} AlarmListRebuiltNotification + Run Keyword If ${alarmNotificationBoolean} == True or ${alarmClearedNotificationBoolean} == True or ${alarmListRebuiltNotificationBoolean} == True ... Trigger Alarm Management UpperTester ${upperTesterUrl} ${resourceId} ${resourceType} ${event} ${value} &{keyvalues} @@ -205,4 +208,4 @@ Trigger Alarm Management UpperTester ${body}= Format String ${template} resourceId=${resourceId} resourceType=${resourceType} event=${event} value=${value} keyvalues=${keyvalues} POST ${upperTesterUrl} ${body} ${output}= Output response - Should Be Equal As Strings ${output['status']} 202 \ No newline at end of file + Should Be Equal As Strings ${output['status']} 202 diff --git a/SOL005/NSFaultManagement-API/environment/variables.txt b/SOL005/NSFaultManagement-API/environment/variables.txt index 07ce775bd..5ea86ea8c 100644 --- a/SOL005/NSFaultManagement-API/environment/variables.txt +++ b/SOL005/NSFaultManagement-API/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** ${NFVO_HOST} localhost # Hostname of the VNFM ${NFVO_PORT} 8080 # Listening port of the VNFM -${NFVO_SCHEMA} https +${NFVO_SCHEMA} http ${AUTHORIZATION_HEADER} Authorization ${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${ACCEPT} application/json diff --git a/SOL005/NSFaultManagement-API/jsons/AlarmNotificationUpperTester.json b/SOL005/NSFaultManagement-API/jsons/AlarmNotificationUpperTester.json index 9891fae6b..68ab8fe2e 100644 --- a/SOL005/NSFaultManagement-API/jsons/AlarmNotificationUpperTester.json +++ b/SOL005/NSFaultManagement-API/jsons/AlarmNotificationUpperTester.json @@ -3,5 +3,5 @@ "resourceType":"{resourceType}", "event":"{event}", "value":"{value}", - "keyvalue": "{keyvalue}" + "keyvalue": "{keyvalues}" }} -- GitLab From fe6bdd4e4dcf11687aa8dc21d55dcdcdc6bf170e Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Tue, 8 Jun 2021 19:37:11 +0200 Subject: [PATCH 538/580] Enhancement on Instrumentation platform hooks --- .../NSFaultManagement-API/Notifications.robot | 39 ++++++++----------- .../environment/variables.txt | 7 +--- ...InstrumentationPlatformHooksKeywords.robot | 27 +++++++++++++ .../environment/variables.txt | 6 +++ .../jsons/AlarmNotificationUpperTester.json | 0 5 files changed, 50 insertions(+), 29 deletions(-) create mode 100644 instrumentationPlatformHooks/InstrumentationPlatformHooksKeywords.robot create mode 100644 instrumentationPlatformHooks/environment/variables.txt rename {SOL005/NSFaultManagement-API => instrumentationPlatformHooks}/jsons/AlarmNotificationUpperTester.json (100%) diff --git a/SOL005/NSFaultManagement-API/Notifications.robot b/SOL005/NSFaultManagement-API/Notifications.robot index 603592672..e0c28d721 100644 --- a/SOL005/NSFaultManagement-API/Notifications.robot +++ b/SOL005/NSFaultManagement-API/Notifications.robot @@ -1,6 +1,7 @@ *** Settings *** Resource environment/variables.txt -Resource NSFMOperationKeywords.robot +Resource NSFMOperationKeywords.robot +Resource ../../instrumentationPlatformHooks/InstrumentationPlatformHooksKeywords.robot Library MockServerLibrary Library Process @@ -62,8 +63,8 @@ NS Fault Alarm Notification with instrumental platform hook ... Applicability: none ... Post-Conditions: none Trigger the fault of a virtualised resource in the NS instance - Check Alarm Notification Http POST Request Body Json Schema Is alarmNotification - Check Alarm Notification Http POST Request Body notificationType attribute Is alarmNotification + Check Instrumentation Platform Alarm Notification Http POST Request Body Json Schema Is alarmNotification + Check Instrumentation Platform Alarm Notification Http POST Request Body notificationType attribute Is alarmNotification *** Keywords *** Trigger the fault of a virtualised resource in the NS instance @@ -100,6 +101,12 @@ Check Alarm Notification Http POST Request Body Json Schema Is ${schema}= Get File schemas/${element}.schema.json Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} +Check Instrumentation Platform Alarm Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + Pass Execution If ${instrumentationPlatformSkip} Skip Test step -- Instrumentation platform not supported + Check Alarm Notification Http POST Request Body Json Schema Is ${element} + + Check Alarm Notification Http POST Request Body notificationType attribute Is [Arguments] ${type} Configure Notification Alarm Handler ${callback_endpoint_fwd} ${type} @@ -107,6 +114,11 @@ Check Alarm Notification Http POST Request Body notificationType attribute Is Clear Requests ${callback_endpoint} Clear Requests ${callback_endpoint_fwd} +Check Instrumentation Platform Alarm Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Pass Execution If ${instrumentationPlatformSkip} Skip Test step -- Instrumentation platform not supported + Check Alarm Notification Http POST Request Body notificationType attribute Is ${type} + Check Alarm cleared Notification Http POST Request Body Json Schema Is [Arguments] ${element} ${schema}= Get File schemas/${element}.schema.json @@ -189,23 +201,4 @@ Create Alarm Subscription ${output}= Output response Set Global Variable ${response} ${output} Clear Requests ${callback_endpoint} - - -Trigger instrumentation platform - [Arguments] ${upperTesterUrl} ${resourceId} ${resourceType} ${event} ${value} &{keyvalues} - ${alarmNotificationBoolean} Run Keyword And Return Status Should Be Equal As Strings ${event} AlarmNotification - ${alarmClearedNotificationBoolean} Run Keyword And Return Status Should Be Equal As Strings ${event} AlarmClearedNotification - ${alarmListRebuiltNotificationBoolean} Run Keyword And Return Status Should Be Equal As Strings ${event} AlarmListRebuiltNotification - Run Keyword If ${alarmNotificationBoolean} == True or ${alarmClearedNotificationBoolean} == True or ${alarmListRebuiltNotificationBoolean} == True - ... Trigger Alarm Management UpperTester ${upperTesterUrl} ${resourceId} ${resourceType} ${event} ${value} &{keyvalues} - - -Trigger Alarm Management UpperTester - [Arguments] ${upperTesterUrl} ${resourceId} ${resourceType} ${event} ${value} &{keyvalues} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE_UPPERTESTER} == 1 Set Headers {"${AUTHORIZATION_HEADER_UPPERTESTER}":"${AUTHORIZATION_TOKEN_UPPERTESTER}"} - ${template}= Get File jsons/AlarmNotificationUpperTester.json - ${body}= Format String ${template} resourceId=${resourceId} resourceType=${resourceType} event=${event} value=${value} keyvalues=${keyvalues} - POST ${upperTesterUrl} ${body} - ${output}= Output response - Should Be Equal As Strings ${output['status']} 202 + \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/environment/variables.txt b/SOL005/NSFaultManagement-API/environment/variables.txt index 5ea86ea8c..2341a7553 100644 --- a/SOL005/NSFaultManagement-API/environment/variables.txt +++ b/SOL005/NSFaultManagement-API/environment/variables.txt @@ -70,10 +70,5 @@ ${callbackResp} 127.0.0.1 ### Instrumentation platform variables ${nsInstanceIdForNotifications} SOME-ID -${AUTHORIZATION_HEADER_UPPERTESTER} Authorization -${AUTHORIZATION_TOKEN_UPPERTESTER} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 -${AUTH_USAGE_UPPERTESTER} 0 - - ${upperTesterUrlForAlarmNotifications} http://localhost:9999/uppertester - +${instrumentationPlatformSkip} True \ No newline at end of file diff --git a/instrumentationPlatformHooks/InstrumentationPlatformHooksKeywords.robot b/instrumentationPlatformHooks/InstrumentationPlatformHooksKeywords.robot new file mode 100644 index 000000000..2020335ad --- /dev/null +++ b/instrumentationPlatformHooks/InstrumentationPlatformHooksKeywords.robot @@ -0,0 +1,27 @@ +*** Settings *** +Resource environment/variables.txt + +Library OperatingSystem +Library Collections +Library REST http://localhost:8080 ssl_verify=false + + +*** Keywords *** +Trigger instrumentation platform + [Arguments] ${upperTesterUrl} ${resourceId} ${resourceType} ${event} ${value} &{keyvalues} + ${alarmNotificationBoolean} Run Keyword And Return Status Should Be Equal As Strings ${event} AlarmNotification + ${alarmClearedNotificationBoolean} Run Keyword And Return Status Should Be Equal As Strings ${event} AlarmClearedNotification + ${alarmListRebuiltNotificationBoolean} Run Keyword And Return Status Should Be Equal As Strings ${event} AlarmListRebuiltNotification + Run Keyword If ${alarmNotificationBoolean} == True or ${alarmClearedNotificationBoolean} == True or ${alarmListRebuiltNotificationBoolean} == True + ... Trigger Alarm Management UpperTester ${upperTesterUrl} ${resourceId} ${resourceType} ${event} ${value} &{keyvalues} + + +Trigger Alarm Management UpperTester + [Arguments] ${upperTesterUrl} ${resourceId} ${resourceType} ${event} ${value} &{keyvalues} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE_UPPERTESTER} == 1 Set Headers {"${AUTHORIZATION_HEADER_UPPERTESTER}":"${AUTHORIZATION_TOKEN_UPPERTESTER}"} + ${template}= Get File ../../instrumentationPlatformHooks/jsons/AlarmNotificationUpperTester.json + ${body}= Format String ${template} resourceId=${resourceId} resourceType=${resourceType} event=${event} value=${value} keyvalues=${keyvalues} + POST ${upperTesterUrl} ${body} + ${output}= Output response + Should Be Equal As Strings ${output['status']} 202 \ No newline at end of file diff --git a/instrumentationPlatformHooks/environment/variables.txt b/instrumentationPlatformHooks/environment/variables.txt new file mode 100644 index 000000000..de161fa56 --- /dev/null +++ b/instrumentationPlatformHooks/environment/variables.txt @@ -0,0 +1,6 @@ +*** Variables *** + +### Instrumentation platform variables +${AUTHORIZATION_HEADER_UPPERTESTER} Authorization +${AUTHORIZATION_TOKEN_UPPERTESTER} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${AUTH_USAGE_UPPERTESTER} 0 diff --git a/SOL005/NSFaultManagement-API/jsons/AlarmNotificationUpperTester.json b/instrumentationPlatformHooks/jsons/AlarmNotificationUpperTester.json similarity index 100% rename from SOL005/NSFaultManagement-API/jsons/AlarmNotificationUpperTester.json rename to instrumentationPlatformHooks/jsons/AlarmNotificationUpperTester.json -- GitLab From 84f4854b3e78d3c51a7c197b8bcaa586c90bee03 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 10 Jun 2021 15:18:43 +0200 Subject: [PATCH 539/580] aligned notifications to v2.7.1 and v2.8.1 --- .../Notifications.robot | 15 ++++---- .../Notifications.robot | 5 +-- .../Notifications.robot | 20 ++++++----- .../Notifications.robot | 10 +++--- .../Notifications.robot | 15 ++++---- SOL003/VNFIndicator-API/Notifications.robot | 5 +-- .../Notifications.robot | 20 ++++++----- .../Notifications.robot | 15 ++++---- .../Notifications.robot | 10 +++--- .../Notifications.robot | 2 +- SOL005/NSDManagement-API/Notifications.robot | 35 +++++++++++-------- .../NSFaultManagement-API/Notifications.robot | 10 +++--- .../CreateNSInstanceWorkflow.robot | 11 ++++-- .../DeleteNSInstanceWorkflow.robot | 7 +++- .../NSLCMOperationKeywords.robot | 31 ++++++++++++++-- .../Notifications.robot | 12 ++++--- .../TerminateNSTaskWorkflow.robot | 2 -- .../Notifications.robot | 6 ++-- .../Notifications.robot | 17 ++++----- 19 files changed, 160 insertions(+), 88 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/Notifications.robot b/SOL002/VNFFaultManagement-API/Notifications.robot index 3c7b41fe2..c0c2de23c 100644 --- a/SOL002/VNFFaultManagement-API/Notifications.robot +++ b/SOL002/VNFFaultManagement-API/Notifications.robot @@ -113,8 +113,9 @@ Configure Notification Alarm List Rebuilt Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Alarm Handler @@ -123,8 +124,9 @@ Configure Notification Alarm Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Alarm Cleareance Handler @@ -133,8 +135,9 @@ Configure Notification Alarm Cleareance Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward diff --git a/SOL002/VNFIndicatorNotification-API/Notifications.robot b/SOL002/VNFIndicatorNotification-API/Notifications.robot index 127a28638..8f0c9bc8e 100644 --- a/SOL002/VNFIndicatorNotification-API/Notifications.robot +++ b/SOL002/VNFIndicatorNotification-API/Notifications.robot @@ -61,8 +61,9 @@ Configure Notification Indicator Value Change Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward diff --git a/SOL002/VNFLifecycleManagement-API/Notifications.robot b/SOL002/VNFLifecycleManagement-API/Notifications.robot index 54704f213..45251879f 100644 --- a/SOL002/VNFLifecycleManagement-API/Notifications.robot +++ b/SOL002/VNFLifecycleManagement-API/Notifications.robot @@ -97,8 +97,9 @@ Configure Notification VNF LCM Operation Occurrence Start Handler set to dictionary ${json} notificationType ${type} changeType ${status} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check VNF LCM Operation Occurrence Result Notification Http POST Request Body Json Schema Is @@ -119,8 +120,9 @@ Configure Notification VNF LCM Operation Occurrence Result Handler set to dictionary ${json} notificationType ${type} changeType ${status} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check VNF Identifier Creation Notification Http POST Request Body Json Schema Is @@ -141,8 +143,9 @@ Configure Notification VNF Identifier Creation Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check VNF Identifier Deletion Notification Http POST Request Body Json Schema Is @@ -163,8 +166,9 @@ Configure Notification VNF Identifier Deletion Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check VNF LCM Operation Occurrence Start Notification Http POST Request Body notificationStatus attribute Is diff --git a/SOL002/VNFPerformanceManagementNotification-API/Notifications.robot b/SOL002/VNFPerformanceManagementNotification-API/Notifications.robot index 58a7d9039..195525e9a 100644 --- a/SOL002/VNFPerformanceManagementNotification-API/Notifications.robot +++ b/SOL002/VNFPerformanceManagementNotification-API/Notifications.robot @@ -86,8 +86,9 @@ Configure Notification Performance Information Available Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Threshold Crossed Handler @@ -96,8 +97,9 @@ Configure Notification Threshold Crossed Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward diff --git a/SOL003/VNFFaultManagementNotification-API/Notifications.robot b/SOL003/VNFFaultManagementNotification-API/Notifications.robot index f199cb964..314eb7487 100644 --- a/SOL003/VNFFaultManagementNotification-API/Notifications.robot +++ b/SOL003/VNFFaultManagementNotification-API/Notifications.robot @@ -113,8 +113,9 @@ Configure Notification Alarm List Rebuilt Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Alarm Handler @@ -123,8 +124,9 @@ Configure Notification Alarm Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Alarm Cleareance Handler @@ -133,8 +135,9 @@ Configure Notification Alarm Cleareance Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward diff --git a/SOL003/VNFIndicator-API/Notifications.robot b/SOL003/VNFIndicator-API/Notifications.robot index 1e5e19e92..4338e884c 100644 --- a/SOL003/VNFIndicator-API/Notifications.robot +++ b/SOL003/VNFIndicator-API/Notifications.robot @@ -49,8 +49,9 @@ Configure Notification Indicator Value Change Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward diff --git a/SOL003/VNFLifecycleManagement-API/Notifications.robot b/SOL003/VNFLifecycleManagement-API/Notifications.robot index ebf4f10bc..b98745d5d 100644 --- a/SOL003/VNFLifecycleManagement-API/Notifications.robot +++ b/SOL003/VNFLifecycleManagement-API/Notifications.robot @@ -97,8 +97,9 @@ Configure Notification VNF LCM Operation Occurrence Start Handler set to dictionary ${json} notificationType ${type} changeType ${status} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check VNF LCM Operation Occurrence Result Notification Http POST Request Body Json Schema Is @@ -119,8 +120,9 @@ Configure Notification VNF LCM Operation Occurrence Result Handler set to dictionary ${json} notificationType ${type} changeType ${status} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check VNF Identifier Creation Notification Http POST Request Body Json Schema Is @@ -141,8 +143,9 @@ Configure Notification VNF Identifier Creation Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check VNF Identifier Deletion Notification Http POST Request Body Json Schema Is @@ -163,8 +166,9 @@ Configure Notification VNF Identifier Deletion Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check VNF LCM Operation Occurrence Start Notification Http POST Request Body notificationStatus attribute Is diff --git a/SOL003/VNFPackageManagement-API/Notifications.robot b/SOL003/VNFPackageManagement-API/Notifications.robot index c25964625..e5e84f2ff 100644 --- a/SOL003/VNFPackageManagement-API/Notifications.robot +++ b/SOL003/VNFPackageManagement-API/Notifications.robot @@ -118,8 +118,9 @@ Configure Notification Onboarding Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Delete Handler @@ -128,8 +129,9 @@ Configure Notification Delete Handler set to dictionary ${json} notificationType ${type} changeType ${change} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Change Status Handler @@ -138,8 +140,9 @@ Configure Notification Change Status Handler set to dictionary ${json} notificationType ${type} changeType ${change} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward diff --git a/SOL003/VNFPerformanceManagement-API/Notifications.robot b/SOL003/VNFPerformanceManagement-API/Notifications.robot index a9b8c9a63..b8c5b3d6f 100644 --- a/SOL003/VNFPerformanceManagement-API/Notifications.robot +++ b/SOL003/VNFPerformanceManagement-API/Notifications.robot @@ -85,8 +85,9 @@ Configure Notification Performance Information Available Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Threshold Crossed Handler @@ -95,8 +96,9 @@ Configure Notification Threshold Crossed Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Notifications.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Notifications.robot index 60f9d33b9..9235ba1a3 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Notifications.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Notifications.robot @@ -46,7 +46,7 @@ Configure Virtual Quota Available Notification Handler ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - Set Global Variable ${req} ${notification_request} + Set Global Variable ${notification_request} ${req} &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} diff --git a/SOL005/NSDManagement-API/Notifications.robot b/SOL005/NSDManagement-API/Notifications.robot index c3cd03770..e6d214945 100644 --- a/SOL005/NSDManagement-API/Notifications.robot +++ b/SOL005/NSDManagement-API/Notifications.robot @@ -222,8 +222,9 @@ Configure PNFD Deletion Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure NSD Deletion Handler @@ -232,8 +233,9 @@ Configure NSD Deletion Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure NSD Operational State Change Handler @@ -242,8 +244,9 @@ Configure NSD Operational State Change Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure PNFD Onboarding Handler @@ -252,8 +255,9 @@ Configure PNFD Onboarding Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification PNFD Onboarding Failure Handler @@ -262,8 +266,9 @@ Configure Notification PNFD Onboarding Failure Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure NSD Onboarding Handler @@ -272,8 +277,9 @@ Configure NSD Onboarding Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification NSD Onboarding Failure Handler @@ -282,8 +288,9 @@ Configure Notification NSD Onboarding Failure Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward diff --git a/SOL005/NSFaultManagement-API/Notifications.robot b/SOL005/NSFaultManagement-API/Notifications.robot index e0c28d721..fcdd6e072 100644 --- a/SOL005/NSFaultManagement-API/Notifications.robot +++ b/SOL005/NSFaultManagement-API/Notifications.robot @@ -53,14 +53,14 @@ NS Fault Alarm List Rebuilt Notification Check Alarm list rebuilt Notification Http POST Request Body notificationType attribute Is alarmListRebuiltNotification -NS Fault Alarm Notification with instrumental platform hook +NS Fault Alarm Notification with Instrumental Platform Hook [Documentation] Test ID: 5.3.3.5.4 - ... Test title: NS Fault Alarm Notification with instrumental platform hook - ... Test objective: The objective is to test the dispatch of NS Fault Alarm Notification when a virtualised resource within an NS instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. - ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm notifications is available in the NFVO. + ... Test title: NS Fault Alarm Notification with Instrumental Platform Hook + ... Test objective: The objective is to test the dispatch of NS Fault Alarm Notification when a virtualised resource within an NS instance failure is automatically triggerd through an instrumenation platform, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A NS instance is instantiated ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO - ... Applicability: none + ... Applicability: An instrumentation platform is available to trigger the NS instance failure condition ... Post-Conditions: none Trigger the fault of a virtualised resource in the NS instance Check Instrumentation Platform Alarm Notification Http POST Request Body Json Schema Is alarmNotification diff --git a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot index 8169b723f..c51eff200 100644 --- a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot @@ -5,6 +5,9 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=fal Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true *** Test Cases *** NS Instance Creation @@ -15,11 +18,13 @@ NS Instance Creation ... Reference: Clause 6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: The NS lifecycle management operation occurrence is in NOT_ISTANTIATED state + ... Post-Conditions: The NS resource is in NOT_ISTANTIATED state POST New nsInstance Check HTTP Response Status Code Is 201 Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is NsInstance + Check Notification Http POST Request Body Json Schema Is NsIdentifierCreationNotification + Check Notification Http POST Request Body notificationType attribute Is NsIdentifierCreationNotification Check resource not_instantiated NS Instance Creation with DISABLED Network Service Descriptor @@ -27,9 +32,9 @@ NS Instance Creation with DISABLED Network Service Descriptor ... Test title: NS Instance Creation with DISABLED Network Service Descriptor ... Test objective: The objective is to test the workflow for Creating a NS instance with a disabled NSD ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in disabled operational state. - ... Reference: Clauses 6.4.2.3.1 and 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v2.6.1 + ... Reference: Clauses 6.4.2.3.1 and 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none POST New nsInstance with DISABLED nsd - Check HTTP Response Status Code Is 409 \ No newline at end of file + Check HTTP Response Status Code Is 409 diff --git a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot index 889975a91..40b7de31a 100644 --- a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot @@ -5,6 +5,9 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=fal Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true *** Test Cases *** NS Instance Deletion @@ -16,7 +19,9 @@ NS Instance Deletion ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS Instance resource is deleted - Check resource not_instantiated DELETE IndividualNSInstance Check HTTP Response Status Code Is 204 + Check Notification Http POST Request Body Json Schema Is NsIdentifierDeletionNotification + Check Notification Http POST Request Body notificationType attribute Is NsIdentifierDeletionNotification Check Postcondition NS instance is deleted + diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index cf5f5977d..bbde72695 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -107,7 +107,8 @@ Configure Notification Status Handler Run Keyword If '${status}' != "" set to dictionary ${json["notificationStatus"]} dp=${status} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle ${endpoint} - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} &{headers} = Create Dictionary "Content-Type"="application/json" &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} @@ -1611,4 +1612,30 @@ Check Postcondition VNF Snapshot Resource Is Deleted Check Postcondition VNF Snapshot Resource Existence Get individual VNF Snapshot Integer response status 200 - Log VNF Snapshot Resource is not deleted \ No newline at end of file + Log VNF Snapshot Resource is not deleted + +Check Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + +Check Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification NS Creation Deletion Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + +Configure Notification NS Creation Deletion Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{headers} = Create Dictionary Content-Type=application/json + &{notification_response}= Create Mock Response headers=${headers} status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + + diff --git a/SOL005/NSLifecycleManagement-API/Notifications.robot b/SOL005/NSLifecycleManagement-API/Notifications.robot index f4b0ee615..ba6fa836a 100644 --- a/SOL005/NSLifecycleManagement-API/Notifications.robot +++ b/SOL005/NSLifecycleManagement-API/Notifications.robot @@ -97,7 +97,8 @@ Configure Notification NS LCM Operation Occurrence Start Handler set to dictionary ${json} notificationType ${type} changeType ${status} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} &{headers}= Create Dictionary Content-Type=application/json &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} @@ -120,7 +121,8 @@ Configure Notification NS LCM Operation Occurrence Result Handler set to dictionary ${json} notificationType ${type} changeType ${status} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} &{headers}= Create Dictionary Content-Type=application/json &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} @@ -143,7 +145,8 @@ Configure Notification NS Identifier Creation Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} &{headers}= Create Dictionary Content-Type=application/json &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} @@ -166,7 +169,8 @@ Configure Notification NS Identifier Deletion Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} &{headers}= Create Dictionary Content-Type=application/json &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} diff --git a/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot index 0bae43586..b6bd1278c 100644 --- a/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot @@ -18,8 +18,6 @@ Terminate Flow of NS lifecycle management operations ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in NOT_INSTANTIATED state - Check resource existence - Check resource instantiated POST Terminate NSInstance Check HTTP Response Status Code Is 202 Check Operation Occurrence Id diff --git a/SOL005/NSPerformanceManagement-API/Notifications.robot b/SOL005/NSPerformanceManagement-API/Notifications.robot index 3caa778fe..82e77fc74 100644 --- a/SOL005/NSPerformanceManagement-API/Notifications.robot +++ b/SOL005/NSPerformanceManagement-API/Notifications.robot @@ -85,7 +85,8 @@ Configure Notification Performance Information Available Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} &{headers} = Create Dictionary Content-Type=application/json &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} @@ -96,7 +97,8 @@ Configure Notification Threshold Crossed Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} &{headers} = Create Dictionary Content-Type=application/json &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} diff --git a/SOL005/VNFPackageManagement-API/Notifications.robot b/SOL005/VNFPackageManagement-API/Notifications.robot index 25e1d9790..77f29f526 100644 --- a/SOL005/VNFPackageManagement-API/Notifications.robot +++ b/SOL005/VNFPackageManagement-API/Notifications.robot @@ -118,9 +118,9 @@ Configure Notification Onboarding Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{headers} = Create Dictionary Content-Type=application/json - &{notification_response}= Create Mock Response headers=${headers} status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Set Suite Variable ${notification_request} ${notification_request} @@ -130,9 +130,9 @@ Configure Notification Delete Handler set to dictionary ${json} notificationType ${type} changeType ${change} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{headers} = Create Dictionary Content-Type=application/json - &{notification_response}= Create Mock Response headers=${headers} status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Change Status Handler @@ -141,8 +141,9 @@ Configure Notification Change Status Handler set to dictionary ${json} notificationType ${type} changeType ${change} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward -- GitLab From 5c2db07890fbe2a3129aea0b813afd11b715f95e Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 10 Jun 2021 15:46:32 +0200 Subject: [PATCH 540/580] upd on Instrumentation platform hooks --- .../NSFaultManagement-API/Notifications.robot | 71 +++++++++++++++---- 1 file changed, 59 insertions(+), 12 deletions(-) diff --git a/SOL005/NSFaultManagement-API/Notifications.robot b/SOL005/NSFaultManagement-API/Notifications.robot index fcdd6e072..c00298038 100644 --- a/SOL005/NSFaultManagement-API/Notifications.robot +++ b/SOL005/NSFaultManagement-API/Notifications.robot @@ -52,11 +52,10 @@ NS Fault Alarm List Rebuilt Notification Check Alarm list rebuilt Notification Http POST Request Body Json Schema Is alarmListRebuiltNotification Check Alarm list rebuilt Notification Http POST Request Body notificationType attribute Is alarmListRebuiltNotification - NS Fault Alarm Notification with Instrumental Platform Hook [Documentation] Test ID: 5.3.3.5.4 ... Test title: NS Fault Alarm Notification with Instrumental Platform Hook - ... Test objective: The objective is to test the dispatch of NS Fault Alarm Notification when a virtualised resource within an NS instance failure is automatically triggerd through an instrumenation platform, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Test objective: The objective is to test the dispatch of NS Fault Alarm Notification when a virtualised resource failure within an NS instance is automatically triggered through an instrumenation platform, and perform a JSON schema and content validation of the delivered notification. ... Pre-conditions: A NS instance is instantiated ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 ... Config ID: Config_prod_NFVO @@ -66,12 +65,51 @@ NS Fault Alarm Notification with Instrumental Platform Hook Check Instrumentation Platform Alarm Notification Http POST Request Body Json Schema Is alarmNotification Check Instrumentation Platform Alarm Notification Http POST Request Body notificationType attribute Is alarmNotification +NS Fault Alarm Cleared Notification with Instrumental Platform Hook + [Documentation] Test ID: 5.3.3.5.5 + ... Test title: NS Fault Alarm Cleared Notification with Instrumental Platform Hook + ... Test objective: The objective is to test the dispatch of NS Fault Clear Alarm Notification when a virtualised resource failure within an NS instance is automatically cleared through an instrumenation platform, and perform a JSON schema and content validation of the delivered notification. + ... Pre-conditions: A NS instance is instantiated and a virtualised resource is in faulty state. + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: An instrumentation platform is available to trigger the NS instance failure clear condition + ... Post-Conditions: none + Trigger the fault cleared of a virtualised resource in the NS instance + Check Instrumentation Platform Alarm Cleared Notification Http POST Request Body Json Schema Is alarmClearedNotification + Check Instrumentation Platform Alarm Cleared Notification Http POST Request Body notificationType attribute Is alarmClearedNotification + +NS Fault Alarm List Rebuilt Notification with Instrumental Platform Hook + [Documentation] Test ID: 5.3.3.5.6 + ... Test title: NS Fault Alarm List Rebuilt Notification with Instrumental Platform Hook + ... Test objective: The objective is to test the dispatch of NS Fault Alarm List Rebuilt Notification when the NFVO decision to rebuild the list of its NS alarms is automatically triggered through an instrumentation platform, and perform a JSON schema and content validation of the delivered notification. + ... Pre-conditions: A NS instance is instantiated and one or more virtualised resource are in faulty state + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v3.3.1 + ... Config ID: Config_prod_NFVO + ... Applicability: An instrumentation platform is available to trigger the NS instance alarm list rebuilt condition + ... Post-Conditions: none + Trigger the NS fault alarm list rebuild in the NFVO + Check Instrumentation Platform Alarm List Rebuilt Notification Http POST Request Body Json Schema Is alarmListRebuiltNotification + Check Instrumentation Platform Alarm List Rebuilt Notification Http POST Request Body notificationType attribute Is alarmListRebuiltNotification + *** Keywords *** Trigger the fault of a virtualised resource in the NS instance + Pass Execution If ${instrumentationPlatformSkip} Skip Test step -- Instrumentation platform not supported Create Alarm Subscription AlarmNotification &{keyvalues} Create Dictionary eventType=COMMUNICATIONS_ALARM delay=10s Trigger instrumentation platform ${upperTesterUrlForAlarmNotifications} ${nsInstanceIdForNotifications} nsInstance AlarmNotification null &{keyvalues} +Trigger the fault cleared of a virtualised resource in the NS instance + Pass Execution If ${instrumentationPlatformSkip} Skip Test step -- Instrumentation platform not supported + Create Alarm Subscription AlarmClearedNotification + &{keyvalues} Create Dictionary eventType=COMMUNICATIONS_ALARM delay=10s + Trigger instrumentation platform ${upperTesterUrlForAlarmNotifications} ${nsInstanceIdForNotifications} nsInstance AlarmClearedNotification null &{keyvalues} + +Trigger the NS fault alarm list rebuild in the NFVO + Pass Execution If ${instrumentationPlatformSkip} Skip Test step -- Instrumentation platform not supported + Create Alarm Subscription AlarmListRebuiltNotification + &{keyvalues} Create Dictionary eventType=COMMUNICATIONS_ALARM delay=10s + Trigger instrumentation platform ${upperTesterUrlForAlarmNotifications} ${nsInstanceIdForNotifications} nsInstance AlarmListRebuiltNotification null &{keyvalues} + Trigger the fault of a virtualised resource in the NS instance (external action) #do nothing Log do nothing @@ -95,6 +133,16 @@ Check Alarm List Rebuilt Notification Http POST Request Body notificationType at Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} Clear Requests ${callback_endpoint_fwd} + +Check Instrumentation Platform Alarm List Rebuilt Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + Pass Execution If ${instrumentationPlatformSkip} Skip Test step -- Instrumentation platform not supported + Check Alarm List Rebuilt Notification Http POST Request Body Json Schema Is ${element} + +Check Instrumentation Platform Alarm List Rebuilt Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Pass Execution If ${instrumentationPlatformSkip} Skip Test step -- Instrumentation platform not supported + Check Alarm List Rebuilt Notification Http POST Request Body notificationType attribute Is ${type} Check Alarm Notification Http POST Request Body Json Schema Is [Arguments] ${element} @@ -106,7 +154,6 @@ Check Instrumentation Platform Alarm Notification Http POST Request Body Json Sc Pass Execution If ${instrumentationPlatformSkip} Skip Test step -- Instrumentation platform not supported Check Alarm Notification Http POST Request Body Json Schema Is ${element} - Check Alarm Notification Http POST Request Body notificationType attribute Is [Arguments] ${type} Configure Notification Alarm Handler ${callback_endpoint_fwd} ${type} @@ -124,6 +171,15 @@ Check Alarm cleared Notification Http POST Request Body Json Schema Is ${schema}= Get File schemas/${element}.schema.json Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} +Check Instrumentation Platform Alarm Cleared Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + Pass Execution If ${instrumentationPlatformSkip} Skip Test step -- Instrumentation platform not supported + Check Alarm cleared Notification Http POST Request Body Json Schema Is ${element} + +Check Instrumentation Platform Alarm Cleared Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Pass Execution If ${instrumentationPlatformSkip} Skip Test step -- Instrumentation platform not supported + Check Alarm cleared Notification Http POST Request Body notificationType attribute Is ${type} Check Alarm cleared Notification Http POST Request Body notificationType attribute Is [Arguments] ${type} @@ -131,13 +187,6 @@ Check Alarm cleared Notification Http POST Request Body notificationType attribu Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} Clear Requests ${callback_endpoint_fwd} - - -Check Alarm Clerance Notification Http POST Request Body changeType attribute Is - [Arguments] ${type} - #do nothing - Log do nothing - Configure Notification Alarm List Rebuilt Handler [Arguments] ${endpoint} ${type} @@ -182,8 +231,6 @@ Configure Notification Forward &{notification_fwd}= Create Mock Http Forward ${endpoint_fwd} Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} - - Create Alarm Subscription [Arguments] ${notificationType} Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions -- GitLab From 23563cf36454897f9b16dd30663abc5f199b1793 Mon Sep 17 00:00:00 2001 From: reinaortega Date: Fri, 11 Jun 2021 08:18:14 +0200 Subject: [PATCH 541/580] Fixing small issues in some index files Signed-off-by: reinaortega --- indexes/sol_009_index.csv | 8 ++++---- indexes/sol_012_index.csv | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/indexes/sol_009_index.csv b/indexes/sol_009_index.csv index 4adfe239f..14ea0c1c0 100644 --- a/indexes/sol_009_index.csv +++ b/indexes/sol_009_index.csv @@ -1,5 +1,5 @@ 8, NFV-MANO Management Reference Point, SOL009 -8.3.1,NFV MANO Configuration And Information Management Interface +8.3.1,NFV MANO Configuration And Information Management Interface, NFVManoConfigurationAndInformationManagement-API 8.3.1.1,NFV MANO Entity Endpoint, NFVMANOEntity.robot 8.3.1.2,Change NFV MANO Entity State Task Endpoint, ChangeNFVMANOEntityStateTask.robot 8.3.1.3,Change State Operation Occurrences Endpoint, ChangeStateOperationOccurrences.robot @@ -14,7 +14,7 @@ 8.3.1.12,Notifications, Notifications.robot 8.3.1.13,API Version Endpoint, ApiVersion.robot 8.3.1.14,Notification Endpoint, NotificationEndpoint.robot -8.3.2,NFV MANO Performance Management interface +8.3.2,NFV MANO Performance Management interface, NFVMANOPerformanceManagement-API 8.3.2.1,PM Jobs Endpoint, PMJobs.robot 8.3.2.2,Individual Pm Job Endpoint, IndividualPmJob.robot 8.3.2.3,Individual Report Endpoint, IndividualReport.robot @@ -25,7 +25,7 @@ 8.3.2.8,Notifications,Notifications.robot 8.3.2.9,API Version Endpoint, ApiVersion.robot 8.3.2.10,Notification Endpoint, NotificationEndpoint.robot -8.3.3,NFV MANO Fault Management interface +8.3.3,NFV MANO Fault Management interface, NFVMANOFaultManagement-API 8.3.3.1,Alarms Endpoint, Alarms.robot 8.3.3.2,Individual Alarm Endpoint, IndividualAlarm.robot 8.3.3.3,Subscriptions Endpoint, Subscriptions.robot @@ -33,7 +33,7 @@ 8.3.3.5,Notifications, Notifications.robot 8.3.3.6, API Version Endpoint, ApiVersion.robot 8.3.3.7,Notification Endpoint, NotificationEndpoint.robot -8.3.4,NFV MANO Log Management interface +8.3.4,NFV MANO Log Management interface, NFVMANOLogManagement-API 8.3.4.1,Logging Jobs Endpoint, LoggingJobs.robot 8.3.4.2,Individual Logging Job Endpoint, IndividualLoggingJob.robot 8.3.4.3,Individual Report Endpoint, IndividualReport.robot diff --git a/indexes/sol_012_index.csv b/indexes/sol_012_index.csv index d2edfe57b..f093ecf85 100644 --- a/indexes/sol_012_index.csv +++ b/indexes/sol_012_index.csv @@ -4,7 +4,7 @@ 10.3.1.2,Policies Endpoint, Policies.robot 10.3.1.3,Individual Policy Endpoint, IndividualPolicy.robot 10.3.1.4,Selected Version of an Individual Policy Endpoint, SelectedVersionOfAnIndividualPolicy.robot -10.3.1.5,Particular Version of an Individual Policy Endpoint, Particular VersionOfAnIndividualPolicy.robot +10.3.1.5,Particular Version of an Individual Policy Endpoint, ParticularVersionOfAnIndividualPolicy.robot 10.3.1.6,Subscriptions Endpoint, Subscriptions.robot 10.3.1.7,Individual Subscription Endpoint, IndividualSubscription.robot 10.3.1.8,Notifications, Notifications.robot -- GitLab From ceb797632decea03f680dcc8b1e81d462f949700 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Fri, 11 Jun 2021 10:24:51 +0200 Subject: [PATCH 542/580] upd update NS wf --- SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot index 12c19c996..564bb6431 100644 --- a/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot @@ -5,6 +5,7 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=fal Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Library Process Suite Setup Initialize System Suite Teardown Terminate All Processes kill=true @@ -18,8 +19,6 @@ Update Flow of NS lifecycle management operations ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in INSTANTIATED state - Check resource existence - Check resource instantiated POST Update NSInstance Check HTTP Response Status Code Is 202 Check Operation Occurrence Id -- GitLab From 8f24878b6cc668ebf40838fbf26f26f421e2d858 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Fri, 11 Jun 2021 10:25:10 +0200 Subject: [PATCH 543/580] updated SOL011 test ids --- .../ApiVersion.robot | 20 ++++++------ .../IndividualSubscription.robot | 12 +++---- .../NotificationEndpoint.robot | 2 +- .../Notifications.robot | 4 +-- .../Subscriptions.robot | 32 +++++++++---------- .../ApiVersion.robot | 20 ++++++------ .../Grants.robot | 12 +++---- .../IndividualGrant.robot | 12 +++---- indexes/sol_011_index.csv | 20 ++++++------ 9 files changed, 67 insertions(+), 67 deletions(-) diff --git a/SOL011/NSInstanceUsageNotification-API/ApiVersion.robot b/SOL011/NSInstanceUsageNotification-API/ApiVersion.robot index 35b99e089..1b8c04385 100644 --- a/SOL011/NSInstanceUsageNotification-API/ApiVersion.robot +++ b/SOL011/NSInstanceUsageNotification-API/ApiVersion.robot @@ -9,7 +9,7 @@ Library JSONSchemaLibrary schemas/ *** Test Cases *** POST API Version - Method not implemented - [Documentation] Test ID: 9.3.4.5.1 + [Documentation] Test ID: 9.3.2.5.1 ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -21,7 +21,7 @@ POST API Version - Method not implemented Check HTTP Response Status Code Is 405 GET API Version - [Documentation] Test ID: 9.3.4.5.2 + [Documentation] Test ID: 9.3.2.5.2 ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none @@ -34,7 +34,7 @@ GET API Version Check HTTP Response Body Json Schema Is ApiVersionInformation PUT API Version - Method not implemented - [Documentation] Test ID: 9.3.4.5.3 + [Documentation] Test ID: 9.3.2.5.3 ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -46,7 +46,7 @@ PUT API Version - Method not implemented Check HTTP Response Status Code Is 405 PATCH API Version - Method not implemented - [Documentation] Test ID: 9.3.4.5.4 + [Documentation] Test ID: 9.3.2.5.4 ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -58,7 +58,7 @@ PATCH API Version - Method not implemented Check HTTP Response Status Code Is 405 DELETE API Version - Method not implemented - [Documentation] Test ID: 9.3.4.5.5 + [Documentation] Test ID: 9.3.2.5.5 ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none @@ -70,7 +70,7 @@ DELETE API Version - Method not implemented Check HTTP Response Status Code Is 405 POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 9.3.4.5.6 + [Documentation] Test ID: 9.3.2.5.6 ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -82,7 +82,7 @@ POST API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 GET API Version with apiMajorVerion - [Documentation] Test ID: 9.3.4.5.7 + [Documentation] Test ID: 9.3.2.5.7 ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none @@ -95,7 +95,7 @@ GET API Version with apiMajorVerion Check HTTP Response Body Json Schema Is ApiVersionInformation PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 9.3.4.5.8 + [Documentation] Test ID: 9.3.2.5.8 ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -107,7 +107,7 @@ PUT API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 9.3.4.5.9 + [Documentation] Test ID: 9.3.2.5.9 ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -119,7 +119,7 @@ PATCH API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 9.3.4.5.10 + [Documentation] Test ID: 9.3.2.5.10 ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot b/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot index 5f8fa000b..58cb22b51 100644 --- a/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot +++ b/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot @@ -8,7 +8,7 @@ Library JSONSchemaLibrary schemas/ *** Test Cases *** POST Individual Subscription - Method not implemented - [Documentation] Test ID: 9.3.4.2.1 + [Documentation] Test ID: 9.3.2.2.1 ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -20,7 +20,7 @@ POST Individual Subscription - Method not implemented Check HTTP Response Status Code Is 405 GET Information about an individual subscription - Successful - [Documentation] Test ID: 9.3.4.2.2 + [Documentation] Test ID: 9.3.2.2.2 ... Test title: GET Information about an individual subscription - Successful ... Test objective: The objective is to test the retrieval of NS instance usage notification subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: An NS instance is instantiated. At least one NS instance usage notification subscription is available in the NFVO. @@ -33,7 +33,7 @@ GET Information about an individual subscription - Successful Check HTTP Response Body Json Schema Is subscription PUT an individual subscription - Method not implemented - [Documentation] Test ID: 9.3.4.2.3 + [Documentation] Test ID: 9.3.2.2.3 ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -45,7 +45,7 @@ PUT an individual subscription - Method not implemented Check HTTP Response Status Code Is 405 PATCH an individual subscription - Method not implemented - [Documentation] Test ID: 9.3.4.2.4 + [Documentation] Test ID: 9.3.2.2.4 ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -57,7 +57,7 @@ PATCH an individual subscription - Method not implemented Check HTTP Response Status Code Is 405 DELETE an individual subscription - [Documentation] Test ID: 9.3.4.2.5 + [Documentation] Test ID: 9.3.2.2.5 ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that DELETE method deletes an individual subscription ... Pre-conditions: At least one instance usage notification subscription is available in the NFVO @@ -70,7 +70,7 @@ DELETE an individual subscription Check Postcondition Individual Subscription is Deleted GET Information about an individual subscription - NOT FOUND - [Documentation] Test ID: 9.3.4.2.6 + [Documentation] Test ID: 9.3.2.2.6 ... Test title: GET Information about an individual subscription - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual NS instance usage notification subscription fails when using an invalid resource identifier. ... Pre-conditions: An NS instance is instantiated. At least one NS instance usage notification subscription is available in the NFVO. diff --git a/SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot b/SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot index 00985877f..3aa2734ad 100644 --- a/SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot +++ b/SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot @@ -9,7 +9,7 @@ Suite Setup Check resource existence and get CallbackUri *** Test Cases *** NS Instance Usage Notification - [Documentation] Test ID: 9.3.4.4.1 + [Documentation] Test ID: 9.3.2.4.1 ... Test title: NS Instance Usage Notification ... Test objective: The objective is to test that NS Instance Usage Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for instance usage notification is available in the NFVO. diff --git a/SOL011/NSInstanceUsageNotification-API/Notifications.robot b/SOL011/NSInstanceUsageNotification-API/Notifications.robot index 311997a7d..d64563d9e 100644 --- a/SOL011/NSInstanceUsageNotification-API/Notifications.robot +++ b/SOL011/NSInstanceUsageNotification-API/Notifications.robot @@ -9,7 +9,7 @@ Library Collections *** Test Cases *** NS Instance Usage START Notification - [Documentation] Test ID: 9.3.4.3.1 + [Documentation] Test ID: 9.3.2.3.1 ... Test title: NS Instance Usage START Notification ... Test objective: The objective is to test the dispatch of NS Instance Usage Start Notification when the usage of an NS instance is started, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for NS instance usage notification is available in the NFVO. @@ -23,7 +23,7 @@ NS Instance Usage START Notification Check NS Instance Usage Start Notification Http POST Request Body notificationStatus attribute Is START NS Instance Usage END Notification - [Documentation] Test ID: 9.3.4.3.2 + [Documentation] Test ID: 9.3.2.3.2 ... Test title: NS Instance Usage END Notification ... Test objective: The objective is to test the dispatch of NS Instance Usage End Notification when the usage of an NS instance is ended, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for NS instance usage notification is available in the NFVO. diff --git a/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot index efde683fa..b6986371d 100644 --- a/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot +++ b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot @@ -8,7 +8,7 @@ Library JSONSchemaLibrary schemas/ *** Test Cases *** POST Create a new subscription - [Documentation] Test ID: 9.3.4.1.1 + [Documentation] Test ID: 9.3.2.1.1 ... Test title: POST Create a new subscription ... Test objective: The objective is to test that POST method creates a subscription ... Pre-conditions: none @@ -24,7 +24,7 @@ POST Create a new subscription Check Postcondition Subscription Is Set POST Create a new Subscription - DUPLICATION - [Documentation] Test ID: 9.3.4.1.2 + [Documentation] Test ID: 9.3.2.1.2 ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The objective is to test that POST method creates a duplicate subscription ... Pre-conditions: A subscription shall already exist @@ -40,7 +40,7 @@ POST Create a new Subscription - DUPLICATION Check Postcondition Subscription Resource Returned in Location Header Is Available POST Create a new Subscription - NO-DUPLICATION - [Documentation] Test ID: 9.3.4.1.3 + [Documentation] Test ID: 9.3.2.1.3 ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The objective is to test that POST method cannot create a duplicate subscription ... Pre-conditions: A subscription shall already exist @@ -55,7 +55,7 @@ POST Create a new Subscription - NO-DUPLICATION Check Postcondition Subscription Is Set GET Subscriptions - [Documentation] Test ID: 9.3.4.1.4 + [Documentation] Test ID: 9.3.2.1.4 ... Test title: GET Subscriptions ... Test objective: The objective is to test that GET method retrieves the list of existing subscriptions ... Pre-conditions: none @@ -68,7 +68,7 @@ GET Subscriptions Check HTTP Response Body Json Schema Is subscriptions GET Subscription - Filter - [Documentation] Test ID: 9.3.4.1.5 + [Documentation] Test ID: 9.3.2.1.5 ... Test title: GET Subscription - Filter ... Test objective: The objective is GET the list of active subscriptions using a filter ... Pre-conditions: none @@ -81,7 +81,7 @@ GET Subscription - Filter Check HTTP Response Body Json Schema Is subscriptions GET subscriptions - Bad Request Invalid attribute-based filtering parameters - [Documentation] Test ID: 9.3.4.1.6 + [Documentation] Test ID: 9.3.2.1.6 ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is GET the list of active subscriptions using an invalid filter ... Pre-conditions: none @@ -94,7 +94,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters Check HTTP Response Body Json Schema Is ProblemDetails GET subscriptions - Bad Request Response too Big - [Documentation] Test ID: 9.3.4.1.7 + [Documentation] Test ID: 9.3.2.1.7 ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of active subscriptions list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none @@ -107,7 +107,7 @@ GET subscriptions - Bad Request Response too Big Check HTTP Response Body Json Schema Is ProblemDetails GET subscriptions with "all_fields" attribute selector - [Documentation] Test ID: 9.3.4.1.8 + [Documentation] Test ID: 9.3.2.1.8 ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "all_fields" attribute selector ... Pre-conditions: none @@ -120,7 +120,7 @@ GET subscriptions with "all_fields" attribute selector Check HTTP Response Body Json Schema Is subscriptions GET subscriptions with "exclude_default" attribute selector - [Documentation] Test ID: 9.3.4.1.9 + [Documentation] Test ID: 9.3.2.1.9 ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_default"s attribute selector ... Pre-conditions: none @@ -133,7 +133,7 @@ GET subscriptions with "exclude_default" attribute selector Check HTTP Response Body Json Schema Is subscriptions GET subscriptions with "fields" attribute selector - [Documentation] Test ID: 9.3.4.1.10 + [Documentation] Test ID: 9.3.2.1.10 ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "fields" attribute selector ... Pre-conditions: none @@ -146,7 +146,7 @@ GET subscriptions with "fields" attribute selector Check HTTP Response Body Json Schema Is subscriptions GET subscriptions with "exclude_fields" attribute selector - [Documentation] Test ID: 9.3.4.1.11 + [Documentation] Test ID: 9.3.2.1.11 ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_fields" attribute selector ... Pre-conditions: none @@ -159,7 +159,7 @@ GET subscriptions with "exclude_fields" attribute selector Check HTTP Response Body Json Schema Is subscriptions GET Subscriptions as Paged Response - [Documentation] Test ID: 9.3.4.1.12 + [Documentation] Test ID: 9.3.2.1.12 ... Test title: GET Subscriptions as Paged Response ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions as paged response. ... Pre-conditions: none @@ -172,7 +172,7 @@ GET Subscriptions as Paged Response Check HTTP Response Header Contains Link PUT subscriptions - Method not implemented - [Documentation] Test ID: 9.3.4.1.13 + [Documentation] Test ID: 9.3.2.1.13 ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a NS instance usage subscription ... Pre-conditions: none @@ -184,7 +184,7 @@ PUT subscriptions - Method not implemented Check HTTP Response Status Code Is 405 PATCH subscriptions - Method not implemented - [Documentation] Test ID: 9.3.4.1.14 + [Documentation] Test ID: 9.3.2.1.14 ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a NS instance usage subscription ... Pre-conditions: none @@ -196,7 +196,7 @@ PATCH subscriptions - Method not implemented Check HTTP Response Status Code Is 405 DELETE subscriptions - Method not implemented - [Documentation] Test ID: 9.3.4.1.15 + [Documentation] Test ID: 9.3.2.1.15 ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method cannot delete a NS instance usage subscription ... Pre-conditions: none @@ -209,7 +209,7 @@ DELETE subscriptions - Method not implemented Check Postcondition Subscriptions Exist GET subscriptions with "exclude_default" and "fields" attribute selector - [Documentation] Test ID: 9.3.4.1.16 + [Documentation] Test ID: 9.3.2.1.16 ... Test title: GET subscriptions with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_default" and "fields" attribute selector ... Pre-conditions: diff --git a/SOL011/NSLifecycleOperationGranting-API/ApiVersion.robot b/SOL011/NSLifecycleOperationGranting-API/ApiVersion.robot index 501c850e3..a1f8eaaab 100644 --- a/SOL011/NSLifecycleOperationGranting-API/ApiVersion.robot +++ b/SOL011/NSLifecycleOperationGranting-API/ApiVersion.robot @@ -9,7 +9,7 @@ Library JSONSchemaLibrary schemas/ *** Test Cases *** POST API Version - Method not implemented - [Documentation] Test ID: 9.3.3.3.1 + [Documentation] Test ID: 9.3.1.3.1 ... Test title: POST API version - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -21,7 +21,7 @@ POST API Version - Method not implemented Check HTTP Response Status Code Is 405 GET API Version - [Documentation] Test ID: 9.3.3.3.2 + [Documentation] Test ID: 9.3.1.3.2 ... Test title: GET API Version ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none @@ -34,7 +34,7 @@ GET API Version Check HTTP Response Body Json Schema Is ApiVersionInformation PUT API Version - Method not implemented - [Documentation] Test ID: 9.3.3.3.3 + [Documentation] Test ID: 9.3.1.3.3 ... Test title: PUT API Version - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -46,7 +46,7 @@ PUT API Version - Method not implemented Check HTTP Response Status Code Is 405 PATCH API Version - Method not implemented - [Documentation] Test ID: 9.3.3.3.4 + [Documentation] Test ID: 9.3.1.3.4 ... Test title: PATCH API Version - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -58,7 +58,7 @@ PATCH API Version - Method not implemented Check HTTP Response Status Code Is 405 DELETE API Version - Method not implemented - [Documentation] Test ID: 9.3.3.3.5 + [Documentation] Test ID: 9.3.1.3.5 ... Test title: DELETE API Version - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none @@ -70,7 +70,7 @@ DELETE API Version - Method not implemented Check HTTP Response Status Code Is 405 POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 9.3.3.3.6 + [Documentation] Test ID: 9.3.1.3.6 ... Test title: POST API version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none @@ -82,7 +82,7 @@ POST API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 GET API Version with apiMajorVerion - [Documentation] Test ID: 9.3.3.3.7 + [Documentation] Test ID: 9.3.1.3.7 ... Test title: GET API Version with apiMajorVerion ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation ... Pre-conditions: none @@ -95,7 +95,7 @@ GET API Version with apiMajorVerion Check HTTP Response Body Json Schema Is ApiVersionInformation PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 9.3.3.3.8 + [Documentation] Test ID: 9.3.1.3.8 ... Test title: PUT API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none @@ -107,7 +107,7 @@ PUT API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 9.3.3.3.9 + [Documentation] Test ID: 9.3.1.3.9 ... Test title: PATCH API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none @@ -119,7 +119,7 @@ PATCH API Version with apiMajorVerion - Method not implemented Check HTTP Response Status Code Is 405 DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 9.3.3.3.10 + [Documentation] Test ID: 9.3.1.3.10 ... Test title: DELETE API Version with apiMajorVerion - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none diff --git a/SOL011/NSLifecycleOperationGranting-API/Grants.robot b/SOL011/NSLifecycleOperationGranting-API/Grants.robot index 55efdec90..c8d249123 100644 --- a/SOL011/NSLifecycleOperationGranting-API/Grants.robot +++ b/SOL011/NSLifecycleOperationGranting-API/Grants.robot @@ -8,7 +8,7 @@ Library JSONSchemaLibrary schemas/ *** Test Cases *** Requests a grant for a particular NS lifecycle operation - [Documentation] Test ID: 9.3.3.1.1 + [Documentation] Test ID: 9.3.1.1.1 ... Test title: Requests a grant for a particular NS lifecycle operation ... Test objective: The objective is to request a grant for a particular NS lifecycle operation and perform a JSON schema validation on the returned grant data structure ... Pre-conditions: @@ -23,7 +23,7 @@ Requests a grant for a particular NS lifecycle operation Check Postcondition Grant Is Set Requests a grant for a particular NS lifecycle operation - Forbidden - [Documentation] Test ID: 9.3.3.1.2 + [Documentation] Test ID: 9.3.1.1.2 ... Test title: Requests a grant for a particular NS lifecycle operation - Forbidden ... Test objective: The objective is to request a grant for a particular NS lifecycle operation and the grant is rejected ... Pre-conditions: none @@ -36,7 +36,7 @@ Requests a grant for a particular NS lifecycle operation - Forbidden Check HTTP Response Body Json Schema Is ProblemDetails GET Grants - Method not implemented - [Documentation] Test ID: 9.3.3.1.3 + [Documentation] Test ID: 9.3.1.1.3 ... Test title: GET Grants - Method not implemented ... Test objective: The objective is to test that GET method is not allowed for Lifecycle operation granting ... Pre-conditions: none @@ -48,7 +48,7 @@ GET Grants - Method not implemented Check HTTP Response Status Code Is 405 PUT Grants - Method not implemented - [Documentation] Test ID: 9.3.3.1.4 + [Documentation] Test ID: 9.3.1.1.4 ... Test title: PUT Grants - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Lifecycle operation granting ... Pre-conditions: none @@ -60,7 +60,7 @@ PUT Grants - Method not implemented Check HTTP Response Status Code Is 405 PATCH Grants - Method not implemented - [Documentation] Test ID: 9.3.3.1.5 + [Documentation] Test ID: 9.3.1.1.5 ... Test title: PATCH Grants - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Lifecycle operation granting ... Pre-conditions: none @@ -72,7 +72,7 @@ PATCH Grants - Method not implemented Check HTTP Response Status Code Is 405 DELETE Grants - Method not implemented - [Documentation] Test ID: 9.3.3.1.6 + [Documentation] Test ID: 9.3.1.1.6 ... Test title: DELETE Grants - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Lifecycle operation granting ... Pre-conditions: none diff --git a/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot index 3b05958c4..9eeb0b2a8 100644 --- a/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot @@ -11,7 +11,7 @@ Documentation This resource represents an individual grant. The client can us *** Test Cases *** POST Individual Grant - Method not implemented - [Documentation] Test ID: 9.3.3.2.1 + [Documentation] Test ID: 9.3.1.2.1 ... Test title: POST Individual Grant - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Lifecycle operation granting ... Pre-conditions: none @@ -23,7 +23,7 @@ POST Individual Grant - Method not implemented Check HTTP Response Status Code Is 405 GET an individual grant - Successful - [Documentation] Test ID: 9.3.3.2.2 + [Documentation] Test ID: 9.3.1.2.2 ... Test title: GET an individual grant - Successful ... Test objective: The objective is to retrieve a grant for a particular NS Lifecycle Operation. ... Pre-conditions: The grant information is available to the NFVO @@ -36,7 +36,7 @@ GET an individual grant - Successful Check HTTP Response Body Json Schema Is Grant PUT an individual grant - Method not implemented - [Documentation] Test ID: 9.3.3.2.3 + [Documentation] Test ID: 9.3.1.2.3 ... Test title: PUT an individual grant - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Lifecycle operation granting ... Pre-conditions: none @@ -48,7 +48,7 @@ PUT an individual grant - Method not implemented Check HTTP Response Status Code Is 405 PATCH an individual grant - Method not implemented - [Documentation] Test ID: 9.3.3.2.4 + [Documentation] Test ID: 9.3.1.2.4 ... Test title: PATCH an individual grant - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Lifecycle operation granting ... Pre-conditions: none @@ -60,7 +60,7 @@ PATCH an individual grant - Method not implemented Check HTTP Response Status Code Is 405 DELETE an individual grant - Method not implemented - [Documentation] Test ID: 9.3.3.2.5 + [Documentation] Test ID: 9.3.1.2.5 ... Test title: DELETE an individual grant - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Lifecycle operation granting ... Pre-conditions: none @@ -72,7 +72,7 @@ DELETE an individual grant - Method not implemented Check HTTP Response Status Code Is 405 GET an individual grant - NOT FOUND - [Documentation] Test ID: 9.3.3.2.6 + [Documentation] Test ID: 9.3.1.2.6 ... Test title: GET an individual grant - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual grant for a particular Lifecycle operation fails when using an invalid resource identifier ... Pre-conditions: The grant information is available to the NFVO diff --git a/indexes/sol_011_index.csv b/indexes/sol_011_index.csv index d20fb4720..70ea982f5 100644 --- a/indexes/sol_011_index.csv +++ b/indexes/sol_011_index.csv @@ -1,11 +1,11 @@ 9, Or-Or Reference Point, SOL011 -9.3.3,NS Lifecycle Operation Granting interface,NSLifecycleOperationGranting-API -9.3.3.1,Grants Endpoint, Grants.robot -9.3.3.2,Individual Grant Endpoint, IndividualGrant.robot -9.3.3.3,API Version Endpoint, ApiVersion.robot -9.3.4,NS Instance Usage Notification interface, NSInstanceUsageNotification-API -9.3.4.1,Subscriptions Endpoint, Subscriptions.robot -9.3.4.2,Individual Subscription Endpoint, IndividualSubscription.robot -9.3.4.3,Notifications, Notifications.robot -9.3.4.4,NotificationEndpoint, NotificationEndpoint.robot -9.3.4.5,API Version Endpoint, ApiVersion.robot +9.3.1,NS Lifecycle Operation Granting interface,NSLifecycleOperationGranting-API +9.3.1.1,Grants Endpoint, Grants.robot +9.3.1.2,Individual Grant Endpoint, IndividualGrant.robot +9.3.1.3,API Version Endpoint, ApiVersion.robot +9.3.2,NS Instance Usage Notification interface, NSInstanceUsageNotification-API +9.3.2.1,Subscriptions Endpoint, Subscriptions.robot +9.3.2.2,Individual Subscription Endpoint, IndividualSubscription.robot +9.3.2.3,Notifications, Notifications.robot +9.3.2.4,NotificationEndpoint, NotificationEndpoint.robot +9.3.2.5,API Version Endpoint, ApiVersion.robot -- GitLab From 36a13b9bca893a10e9162cdd276c7be3098f1051 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Fri, 11 Jun 2021 12:31:50 +0200 Subject: [PATCH 544/580] fixed Test ID SOL009 --- SOL009/NFVMANOLogManagement-API/Subscriptions.robot | 12 ++++++------ .../Subscriptions.robot | 12 ++++++------ .../Subscriptions.robot | 12 ++++++------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot index 37bf29bc6..357cf6df1 100644 --- a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot @@ -118,7 +118,7 @@ Get subscriptions with filter "filter.notificationTypes" Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_notificationTypes" Create new Subscription - [Documentation] Test ID 8.3.4.5.9 + [Documentation] Test ID: 8.3.4.5.9 ... Test title: Create new Subscription ... Test objective: The objective is to test the creation of a new subscription to log management notification and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none @@ -134,7 +134,7 @@ Create new Subscription Create request for duplicated Subscription not creating duplicated subscriptions [Tags] no-duplicated-subs - [Documentation] Test ID 8.3.4.5.10 + [Documentation] Test ID: 8.3.4.5.10 ... Test title: Create request for duplicated Subscription not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -150,7 +150,7 @@ Create request for duplicated Subscription not creating duplicated subscriptions Create request for duplicated Subscription creating duplicated subscriptions [Tags] duplicated-subs - [Documentation] Test ID 8.3.4.5.11 + [Documentation] Test ID: 8.3.4.5.11 ... Test title: Create request for duplicated Subscription creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -165,7 +165,7 @@ Create request for duplicated Subscription creating duplicated subscriptions Check Postcondition Subscription Is Set PUT Subscriptions - Method not implemented - [Documentation] Test ID 8.3.4.5.12 + [Documentation] Test ID: 8.3.4.5.12 ... Test title: PUT Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions ... Pre-conditions: none @@ -177,7 +177,7 @@ PUT Subscriptions - Method not implemented Check HTTP Response Status Code Is 405 PATCH Subscriptions - Method not implemented - [Documentation] Test ID 8.3.4.5.13 + [Documentation] Test ID: 8.3.4.5.13 ... Test title: PATCH Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions ... Pre-conditions: none @@ -189,7 +189,7 @@ PATCH Subscriptions - Method not implemented Check HTTP Response Status Code Is 405 DELETE Subscriptions - Method not implemented - [Documentation] Test ID 8.3.4.5.14 + [Documentation] Test ID: 8.3.4.5.14 ... Test title: DELETE Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions ... Pre-conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot index 3af4db130..6cef6ce67 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot @@ -90,7 +90,7 @@ GET Performance Subscriptions with invalid resource endpoint Check HTTP Response Status Code Is 404 Create new Performance subscription - [Documentation] Test ID 8.3.2.6.7 + [Documentation] Test ID: 8.3.2.6.7 ... Test title: Create new Performance subscription ... Test objective: The objective is to test the creation of a new performance subscription and perform a JSON schema and content validation of the returned subscription data structure. ... Pre-conditions: An instance is instantiated. @@ -107,7 +107,7 @@ Create new Performance subscription Create duplicated Performance subscription with NFV-MANO not creating duplicated subscriptions [Tags] no-duplicated-subs - [Documentation] Test ID 8.3.2.6.8 + [Documentation] Test ID: 8.3.2.6.8 ... Test title: Create duplicated Performance subscription with NFV-MANO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated performance subscription and check that no new subscription is created by the NFV-MANO and a link to the original subscription is returned ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. @@ -123,7 +123,7 @@ Create duplicated Performance subscription with NFV-MANO not creating duplicated Create duplicated Performance subscription with NFV-MANO creating duplicated subscriptions [Tags] duplicated-subs - [Documentation] Test ID 8.3.2.6.9 + [Documentation] Test ID: 8.3.2.6.9 ... Test title: Create duplicated Performance subscription with NFV-MANO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated performance subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. @@ -138,7 +138,7 @@ Create duplicated Performance subscription with NFV-MANO creating duplicated sub Check Postcondition Performance Subscription Is Set PUT Performance Subscriptions - Method not implemented - [Documentation] Test ID 8.3.2.6.10 + [Documentation] Test ID: 8.3.2.6.10 ... Test title: PUT Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify performance subscriptions ... Pre-conditions: none @@ -150,7 +150,7 @@ PUT Performance Subscriptions - Method not implemented Check HTTP Response Status Code Is 405 PATCH Performance Subscriptions - Method not implemented - [Documentation] Test ID 8.3.2.6.11 + [Documentation] Test ID: 8.3.2.6.11 ... Test title: PATCH Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update performance subscriptions ... Pre-conditions: none @@ -162,7 +162,7 @@ PATCH Performance Subscriptions - Method not implemented Check HTTP Response Status Code Is 405 DELETE Performance Subscriptions - Method not implemented - [Documentation] Test ID 8.3.2.6.12 + [Documentation] Test ID: 8.3.2.6.12 ... Test title: DELETE Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete performance subscriptions ... Pre-conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot index 40a5165ff..2f2d2a974 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot @@ -90,7 +90,7 @@ GET Subscriptions - invalid resource endpoint Check HTTP Response Status Code Is 404 Create new Subscription - [Documentation] Test ID 8.3.1.10.7 + [Documentation] Test ID: 8.3.1.10.7 ... Test title: Create new Subscription ... Test objective: The objective is to test the creation of a new subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none @@ -107,7 +107,7 @@ Create new Subscription Create request for duplicated Subscription not creating duplicated subscriptions [Tags] no-duplicated-subs - [Documentation] Test ID 8.3.1.10.8 + [Documentation] Test ID: 8.3.1.10.8 ... Test title: Create request for duplicated Subscription not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -123,7 +123,7 @@ Create request for duplicated Subscription not creating duplicated subscriptions Create request for duplicated Subscription creating duplicated subscriptions [Tags] duplicated-subs - [Documentation] Test ID 8.3.1.10.9 + [Documentation] Test ID: 8.3.1.10.9 ... Test title: Create request for duplicated Subscription creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. @@ -138,7 +138,7 @@ Create request for duplicated Subscription creating duplicated subscriptions Check Postcondition Subscription Is Set PUT Subscriptions - Method not implemented - [Documentation] Test ID 8.3.1.10.10 + [Documentation] Test ID: 8.3.1.10.10 ... Test title: PUT Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions ... Pre-conditions: none @@ -150,7 +150,7 @@ PUT Subscriptions - Method not implemented Check HTTP Response Status Code Is 405 PATCH Subscriptions - Method not implemented - [Documentation] Test ID 8.3.1.10.11 + [Documentation] Test ID: 8.3.1.10.11 ... Test title: PATCH Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions ... Pre-conditions: none @@ -162,7 +162,7 @@ PATCH Subscriptions - Method not implemented Check HTTP Response Status Code Is 405 DELETE Subscriptions - Method not implemented - [Documentation] Test ID 8.3.1.10.12 + [Documentation] Test ID: 8.3.1.10.12 ... Test title: DELETE Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions ... Pre-conditions: none -- GitLab From 0cb9655a65068c64089a2a821d6d7abe4d36aae0 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Fri, 11 Jun 2021 12:43:24 +0200 Subject: [PATCH 545/580] upd notification tests SOL009/11/12 to align with v2.7.1 and v2.8.1 --- .../Notifications.robot | 15 +++++++++------ .../NFVMANOLogManagement-API/Notifications.robot | 5 +++-- .../Notifications.robot | 10 ++++++---- .../Notifications.robot | 10 ++++++---- .../Notifications.robot | 10 ++++++---- SOL012/PolicyManagement-API/Notifications.robot | 5 +++-- 6 files changed, 33 insertions(+), 22 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/Notifications.robot b/SOL009/NFVMANOFaultManagement-API/Notifications.robot index 47640fb7c..50f61ce74 100644 --- a/SOL009/NFVMANOFaultManagement-API/Notifications.robot +++ b/SOL009/NFVMANOFaultManagement-API/Notifications.robot @@ -112,8 +112,9 @@ Configure Notification Alarm List Rebuilt Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Alarm Handler @@ -122,8 +123,9 @@ Configure Notification Alarm Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Alarm Cleareance Handler @@ -132,8 +134,9 @@ Configure Notification Alarm Cleareance Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward diff --git a/SOL009/NFVMANOLogManagement-API/Notifications.robot b/SOL009/NFVMANOLogManagement-API/Notifications.robot index 468b4ad2b..94975d858 100644 --- a/SOL009/NFVMANOLogManagement-API/Notifications.robot +++ b/SOL009/NFVMANOLogManagement-API/Notifications.robot @@ -53,8 +53,9 @@ Configure Notification Log Report Available Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} diff --git a/SOL009/NFVMANOPerformanceManagement-API/Notifications.robot b/SOL009/NFVMANOPerformanceManagement-API/Notifications.robot index d864a87ea..733fca6b5 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Notifications.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Notifications.robot @@ -86,8 +86,9 @@ Configure Notification Performance Information Available Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Threshold Crossed Handler @@ -96,8 +97,9 @@ Configure Notification Threshold Crossed Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot index 2e77ce90b..b7548e64e 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot @@ -85,8 +85,9 @@ Configure Notification Information Changed Notification Available Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification State Crossed Handler @@ -95,8 +96,9 @@ Configure Notification State Crossed Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification Forward diff --git a/SOL011/NSInstanceUsageNotification-API/Notifications.robot b/SOL011/NSInstanceUsageNotification-API/Notifications.robot index d64563d9e..d23921db3 100644 --- a/SOL011/NSInstanceUsageNotification-API/Notifications.robot +++ b/SOL011/NSInstanceUsageNotification-API/Notifications.robot @@ -63,8 +63,9 @@ Configure Notification NS Instance Usage Start Handler set to dictionary ${json} notificationType ${type} changeType ${status} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Configure Notification NS Instance Usage End Handler @@ -73,8 +74,9 @@ Configure Notification NS Instance Usage End Handler set to dictionary ${json} notificationType ${type} changeType ${status} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check NS Instance Usage Start Notification Http POST Request Body Json Schema Is diff --git a/SOL012/PolicyManagement-API/Notifications.robot b/SOL012/PolicyManagement-API/Notifications.robot index faa5def16..2e0efb08f 100644 --- a/SOL012/PolicyManagement-API/Notifications.robot +++ b/SOL012/PolicyManagement-API/Notifications.robot @@ -61,8 +61,9 @@ Configure Policy Management Notification Handler set to dictionary ${json} notificationType ${type} ${BODY}= evaluate json.dumps(${json}) json Log Creating mock request and response to handle status notification - &{notification_request}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - &{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 Create Mock Expectation ${notification_request} ${notification_response} Check Policy Management Notification Http POST Request Body Json Schema Is -- GitLab From acc78a13941482ec8b4f2dd2bb1025ecbdcb3119 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Fri, 11 Jun 2021 12:46:23 +0200 Subject: [PATCH 546/580] updated reference number to SOL009 --- .../NFVMANOFaultManagement-API/Alarms.robot | 14 +- .../ApiVersion.robot | 422 ++++++++-------- .../IndividualAlarm.robot | 16 +- .../IndividualSubscription.robot | 2 +- .../NotificationEndpoint.robot | 6 +- .../Notifications.robot | 6 +- .../NFVMANOLogManagement-API/ApiVersion.robot | 422 ++++++++-------- .../CompileLogTask.robot | 222 ++++---- .../IndividualLoggingJob.robot | 192 +++---- .../IndividualReport.robot | 186 +++---- .../IndividualSubscription.robot | 14 +- .../LoggingJobs.robot | 474 ++++++++--------- .../NotificationEndpoint.robot | 2 +- .../Notifications.robot | 2 +- .../Subscriptions.robot | 28 +- .../ApiVersion.robot | 422 ++++++++-------- .../IndividualPmJob.robot | 14 +- .../IndividualReport.robot | 12 +- .../IndividualSubscription.robot | 14 +- .../IndividualThreshold.robot | 14 +- .../NotificationEndpoint.robot | 4 +- .../Notifications.robot | 4 +- .../PMJobs.robot | 30 +- .../Subscriptions.robot | 24 +- .../Thresholds.robot | 18 +- .../ApiVersion.robot | 422 ++++++++-------- .../ChangeInterfaceStateTask.robot | 12 +- .../ChangeNFVMANOEntityStateTask.robot | 164 +++--- .../ChangeStateOperationOccurrences.robot | 400 +++++++-------- .../IndividualNFVMANOServiceInterface.robot | 220 ++++---- .../IndividualPeerEntity.robot | 216 ++++---- ...vidualStateChangeOperationOccurrence.robot | 162 +++--- .../IndividualSubscription.robot | 190 +++---- .../NFVMANOEntity.robot | 216 ++++---- .../NFVMANOServiceInterfaces.robot | 398 +++++++-------- .../NotificationEndpoint.robot | 4 +- .../Notifications.robot | 228 ++++----- .../PeerEntities.robot | 478 +++++++++--------- .../Subscriptions.robot | 348 ++++++------- 39 files changed, 3011 insertions(+), 3011 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/Alarms.robot b/SOL009/NFVMANOFaultManagement-API/Alarms.robot index 4ac515cb8..f0a5c2be5 100644 --- a/SOL009/NFVMANOFaultManagement-API/Alarms.robot +++ b/SOL009/NFVMANOFaultManagement-API/Alarms.robot @@ -12,7 +12,7 @@ POST Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create fault management alarms on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.3.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get information about multiple alarms ... Test title: Get information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema of the returned alarms data structure ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get information about multiple alarms with filter ... Test title: Get information about multiple alarms with filter ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ Get information about multiple alarms with invalid attribute-based filtering par ... Test title: Get information about multiple alarms with invalid attribute-based filtering parameters ... Test objective: The objective is to try to retrieve information about the alarm list with invalid filters and perform a JSON schema validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -195,7 +195,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify fault management alarms on NFV-MANO. ... Pre-conditions: none - ... Reference: clause 7.5.3.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -207,7 +207,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify fault management alarms on NFV-MANO. ... Pre-conditions: none - ... Reference: clause 7.5.3.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -219,7 +219,7 @@ DELETE Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for fault management alarms on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.3.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot b/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot index fc51479fd..85f1048e1 100644 --- a/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot +++ b/SOL009/NFVMANOFaultManagement-API/ApiVersion.robot @@ -1,211 +1,211 @@ -*** Settings *** -Resource environment/variables.txt -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 8.3.3.6.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 8.3.3.6.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 8.3.3.6.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 8.3.3.6.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 8.3.3.6.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.3.6.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 8.3.3.6.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.3.6.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.3.6.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.3.6.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} - Log Json Schema Validation OK +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 8.3.3.6.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 8.3.3.6.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 8.3.3.6.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 8.3.3.6.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 8.3.3.6.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.3.6.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 8.3.3.6.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.3.6.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.3.6.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.3.6.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot index 5a38fd5f5..e3ffa895a 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot @@ -13,7 +13,7 @@ POST Individual Alarm - Method not implemented ... Test title: POST Individual Alarm - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create fault management individual alarm on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.4.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get information about an fault management individual alarm ... Test title: Get information about an fault management individual alarm ... Test objective: The objective is to retrieve information about an individual alarm and perform a JSON schema and content validation of the returned alarm data structure ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get information about an fault management individual alarm - Not Found ... Test title: Get information about an fault management individual alarm ... Test objective: The objective is to test the retrieval of information about an individual alarm fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Individual Alarm - Method not implemented ... Test title: PUT Individual Alarm - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for fault management individual alarm on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.4.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.4.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Fault Management Individual Alarm ... Test title: PATCH Fault Management Individual Alarm ... Test objective: The objective is to Modify an individual alarm resource, and perform a JSON schema validation of the returned alarm data structure. ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Alarm is modified. @@ -76,7 +76,7 @@ Modify an individual alarm resource - Precondition failed ... Test title: Modify an individual alarm resource - Precondition failed ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set, and perform a JSON schema validation of the returned data structure. ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Alarm is not modified. @@ -90,7 +90,7 @@ Modify an individual alarm resource - Conflict ... Test title: Modify an individual alarm resource - Conflict ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the resource was modified by another entity , and perform a JSON schema validation of the returned data structure. ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Alarm is not modified. @@ -104,7 +104,7 @@ DELETE Individual Alarm - Method not implemented ... Test title: DELETE Individual Alarm - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete fault management individual alarm on NFV-MANO. ... Pre-conditions: none - ... Reference: clause 7.5.4.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot index a957c5e34..5205b68ee 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot @@ -36,7 +36,7 @@ Get Information about an individual subscription - Not Found ... Test title: Get Information about an individual subscription - Not Found ... Test objective: The objective is to test the retrieval of individual subscription from NFV-MANO alarms fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot index 3784c1612..e6b9f8829 100644 --- a/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ Alarm Notification ... Test title: Alarm Notification ... Test objective: The objective is to test that Alarm Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for alarm notification is available in the NFV-MANO. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Alarm Cleared Notification ... Test title: Alarm Cleared Notification ... Test objective: The objective is to test that Alarm Cleared Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for alarm cleared notification is available in the NFV-MANO. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Alarm List Rebuilt Notification ... Test title: Alarm List Rebuilt Notification ... Test objective: The objective is to test that Alarm List Rebuilt Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for alarm list rebuilt notification is available in the NFV-MANO. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/Notifications.robot b/SOL009/NFVMANOFaultManagement-API/Notifications.robot index 50f61ce74..b931d33f2 100644 --- a/SOL009/NFVMANOFaultManagement-API/Notifications.robot +++ b/SOL009/NFVMANOFaultManagement-API/Notifications.robot @@ -14,7 +14,7 @@ NFV-MANO Fault Alarm Notification ... Test title: NFV-MANO Fault Alarm Notification ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm Notification when a resource within an NFV-MANO instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NFV-MANO instance is instantiated, and a subscription for fault alarm notifications is available. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ NFV-MANO Fault Alarm Cleared Notification ... Test title: NFV-MANO Fault Alarm Cleared Notification ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm Cleared Notification when a faulty resource within an NFV-MANO instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NFV-MANO instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ NFV-MANO Fault Alarm List Rebuilt Notification ... Test title: NFV-MANO Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm List Rebuilt Notification when the NFV-MANO decides to rebuild the list of its NFV-MANO alarms, e.g. due to a corruption in the alarm storage, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NFV-MANO instance is instantiated, one or more virtualised resource are in faulty state, and a subscription for fault alarm list rebuilt notifications is available. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/ApiVersion.robot b/SOL009/NFVMANOLogManagement-API/ApiVersion.robot index ddd681ced..61144e06e 100644 --- a/SOL009/NFVMANOLogManagement-API/ApiVersion.robot +++ b/SOL009/NFVMANOLogManagement-API/ApiVersion.robot @@ -1,211 +1,211 @@ -*** Settings *** -Resource environment/variables.txt -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 8.3.4.8.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 8.3.4.8.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 8.3.4.8.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 8.3.4.8.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 8.3.4.8.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.4.8.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 8.3.4.8.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.4.8.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.4.8.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.4.8.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} - Log Json Schema Validation OK +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 8.3.4.8.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 8.3.4.8.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 8.3.4.8.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 8.3.4.8.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 8.3.4.8.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.4.8.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 8.3.4.8.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.4.8.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.4.8.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.4.8.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK diff --git a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot index 140313716..696be0399 100644 --- a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot +++ b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot @@ -1,112 +1,112 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Resource NFVMANOLogManagementKeywords.robot -Library JSONLibrary -Library OperatingSystem -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false - - -*** Test Cases *** -Request to compile the logged data into a file - Synchronous mode - [Documentation] Test ID: 8.3.4.4.1 - ... Test title: Request to compile the logged data into a file - Synchronous mode - ... Test objective: The objective is to request to compile the logged data into a file in synchronous mode and perform a JSON schema validation on the returned log report data structure - ... Pre-conditions: logging job is available - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: The NFV-MANO can decide immediately what to respond to a compile request - ... Post-Conditions: none - Send Log data Request in Synchronous mode - Check HTTP Response Status Code Is 201 - Check HTTP Response Header Contains Location - Check HTTP Response Body Json Schema Is LogReport - -Request to compile the logged data into a file - Asynchronous mode - [Documentation] Test ID: 8.3.4.4.2 - ... Test title: Request to compile the logged data into a file - Asynchronous mode - ... Test objective: The objective is to request to compile the logged data into a file in asynchronous mode - ... Pre-conditions: logging job is available - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: The NFV-MANO can not decide immediately what to respond to a compile request - ... Post-Conditions: log report is available to the API consumer - Send Log data Request in Asynchronous mode - Check HTTP Response Status Code Is 202 - Check HTTP Response Header Contains Location - Check postcondition Wait for compilation success notification - -Request to compile the logged data into a file - Already Processing - [Documentation] Test ID: 8.3.4.4.3 - ... Test title: Request to compile the logged data into a file - Already Processing - ... Test objective: The objective is to request to compile the logged data into a file when a log data compilation and report creation is already ongoing, or a log report has just been created, for the specified logging job at the time of processing the request - ... Pre-conditions: none - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Log data Request - Check HTTP Response Status Code Is 303 - Check HTTP Response Header Contains Location - -Request to compile the logged data into a file with unprocessable entity - [Documentation] Test ID: 8.3.4.4.4 - ... Test title: Request to compile the logged data into a file with unprocessable entity - ... Test objective: The objective is to test that the rrequest to compile the logged data into a file fails when error in request body. - ... Pre-conditions: none - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Log data Request - Check HTTP Response Status Code Is 422 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET Compiled Log Data - Method not implemented - [Documentation] Test ID: 8.3.4.4.5 - ... Test title: GET Compiled Log Data - Method not implemented - ... Test objective: The objective is to test that GET method is not allowed to retrieve compiled log data. - ... Pre-conditions: none - ... Reference: clause 8.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Get Compiled Log Data - Check HTTP Response Status Code Is 405 - -PUT Compiled Log Data - Method not implemented - [Documentation] Test ID: 8.3.4.4.6 - ... Test title: PUT Compiled Log Data - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to update compiled log data. - ... Pre-conditions: none - ... Reference: clause 8.5.6.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send PUT Compiled Log Data - Check HTTP Response Status Code Is 405 - -PATCH Compiled Log Data - Method not implemented - [Documentation] Test ID: 8.3.4.4.7 - ... Test title: PATCH Compiled Log Data - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update compiled log data. - ... Pre-conditions: none - ... Reference: clause 8.5.6.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send PATCH Compiled Log Data - Check HTTP Response Status Code Is 405 - -DELETE Compiled Log Data - Method not implemented - [Documentation] Test ID: 8.3.4.4.8 - ... Test title: DELETE Compiled Log Data - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to update compiled log data. - ... Pre-conditions: none - ... Reference: clause 8.5.6.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send DELETE Compiled Log Data - Check HTTP Response Status Code Is 405 +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource NFVMANOLogManagementKeywords.robot +Library JSONLibrary +Library OperatingSystem +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false + + +*** Test Cases *** +Request to compile the logged data into a file - Synchronous mode + [Documentation] Test ID: 8.3.4.4.1 + ... Test title: Request to compile the logged data into a file - Synchronous mode + ... Test objective: The objective is to request to compile the logged data into a file in synchronous mode and perform a JSON schema validation on the returned log report data structure + ... Pre-conditions: logging job is available + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO can decide immediately what to respond to a compile request + ... Post-Conditions: none + Send Log data Request in Synchronous mode + Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location + Check HTTP Response Body Json Schema Is LogReport + +Request to compile the logged data into a file - Asynchronous mode + [Documentation] Test ID: 8.3.4.4.2 + ... Test title: Request to compile the logged data into a file - Asynchronous mode + ... Test objective: The objective is to request to compile the logged data into a file in asynchronous mode + ... Pre-conditions: logging job is available + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO can not decide immediately what to respond to a compile request + ... Post-Conditions: log report is available to the API consumer + Send Log data Request in Asynchronous mode + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check postcondition Wait for compilation success notification + +Request to compile the logged data into a file - Already Processing + [Documentation] Test ID: 8.3.4.4.3 + ... Test title: Request to compile the logged data into a file - Already Processing + ... Test objective: The objective is to request to compile the logged data into a file when a log data compilation and report creation is already ongoing, or a log report has just been created, for the specified logging job at the time of processing the request + ... Pre-conditions: none + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Log data Request + Check HTTP Response Status Code Is 303 + Check HTTP Response Header Contains Location + +Request to compile the logged data into a file with unprocessable entity + [Documentation] Test ID: 8.3.4.4.4 + ... Test title: Request to compile the logged data into a file with unprocessable entity + ... Test objective: The objective is to test that the rrequest to compile the logged data into a file fails when error in request body. + ... Pre-conditions: none + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Log data Request + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Compiled Log Data - Method not implemented + [Documentation] Test ID: 8.3.4.4.5 + ... Test title: GET Compiled Log Data - Method not implemented + ... Test objective: The objective is to test that GET method is not allowed to retrieve compiled log data. + ... Pre-conditions: none + ... Reference: clause 8.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Get Compiled Log Data + Check HTTP Response Status Code Is 405 + +PUT Compiled Log Data - Method not implemented + [Documentation] Test ID: 8.3.4.4.6 + ... Test title: PUT Compiled Log Data - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update compiled log data. + ... Pre-conditions: none + ... Reference: clause 8.5.6.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send PUT Compiled Log Data + Check HTTP Response Status Code Is 405 + +PATCH Compiled Log Data - Method not implemented + [Documentation] Test ID: 8.3.4.4.7 + ... Test title: PATCH Compiled Log Data - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update compiled log data. + ... Pre-conditions: none + ... Reference: clause 8.5.6.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send PATCH Compiled Log Data + Check HTTP Response Status Code Is 405 + +DELETE Compiled Log Data - Method not implemented + [Documentation] Test ID: 8.3.4.4.8 + ... Test title: DELETE Compiled Log Data - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to update compiled log data. + ... Pre-conditions: none + ... Reference: clause 8.5.6.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send DELETE Compiled Log Data + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot index 576a9dcde..a6bc0ecff 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot @@ -1,97 +1,97 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Resource NFVMANOLogManagementKeywords.robot -Library JSONLibrary -Library OperatingSystem -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false - -*** Test Cases *** -POST Individual Logging Job - Method not implemented - [Documentation] Test ID: 8.3.4.2.1 - ... Test title: POST Individual Logging Job - method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create an Indiviual Logging - ... Pre-conditions: none - ... Reference: clause 8.5.4.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Post request for individual Logging Job - Check HTTP Response Status Code Is 405 - -GET individual Logging Job - [Documentation] Test ID: 8.3.4.2.2 - ... Test title: Get individual Logging Job - ... Test objective: The objective is to test the retrieval of an individual logging job and perform a JSON schema validation of the collected job data structure - ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET individual Logging Job - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is LoggingJob - Check HTTP Response Body Logging Job Identifier matches the requested Logging Job - -GET individual Logging Job with invalid resource identifier - [Documentation] Test ID: 8.3.4.2.3 - ... Test title: Get individual Logging Job with invalid resource identifier - ... Test objective: The objective is to test that the retrieval of an individual logging job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response - ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET individual Logging Job with invalid resource identifier - Check HTTP Response Status Code Is 404 - Check HTTP Response Body Json Schema Is ProblemDetails - -PUT Individual Logging Job - Method not implemented - [Documentation] Test ID: 8.3.4.2.4 - ... Test title: PUT Individual Logging Job - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to update an existing Logging Job - ... Pre-conditions: none - ... Reference: clause 8.5.4.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Put request for individual Logging Job - Check HTTP Response Status Code Is 405 - -PATCH Individual Logging Job - Method not implemented - [Documentation] Test ID: 8.3.4.2.5 - ... Test title: PATCH Individual Logging Job - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new Logging Job - ... Pre-conditions: none - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Patch request for individual Logging Job - Check HTTP Response Status Code Is 405 - -DELETE Individual Logging Job - [Documentation] Test ID: 8.3.4.2.6 - ... Test title: DELETE Individual Logging Job - ... Test objective: The objective is to test the deletion of an individual logging job - ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The Logging Job is no more available. - Send Delete request for individual Logging Job - Check HTTP Response Status Code Is 204 - Check Postcondition Logging Job is Deleted - -DELETE Individual Logging Job with invalid resource identifier - [Documentation] Test ID: 8.3.4.2.7 - ... Test title: DELETE Individual Logging Job with invalid resource identifier - ... Test objective: The objective is to test that the deletion of an individual logging job fails when using an invalid resource identifier - ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for individual Logging Job with invalid resource identifier - Check HTTP Response Status Code Is 404 +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource NFVMANOLogManagementKeywords.robot +Library JSONLibrary +Library OperatingSystem +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false + +*** Test Cases *** +POST Individual Logging Job - Method not implemented + [Documentation] Test ID: 8.3.4.2.1 + ... Test title: POST Individual Logging Job - method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create an Indiviual Logging + ... Pre-conditions: none + ... Reference: clause 8.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Post request for individual Logging Job + Check HTTP Response Status Code Is 405 + +GET individual Logging Job + [Documentation] Test ID: 8.3.4.2.2 + ... Test title: Get individual Logging Job + ... Test objective: The objective is to test the retrieval of an individual logging job and perform a JSON schema validation of the collected job data structure + ... Pre-conditions: Logging Job is already created. + ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET individual Logging Job + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJob + Check HTTP Response Body Logging Job Identifier matches the requested Logging Job + +GET individual Logging Job with invalid resource identifier + [Documentation] Test ID: 8.3.4.2.3 + ... Test title: Get individual Logging Job with invalid resource identifier + ... Test objective: The objective is to test that the retrieval of an individual logging job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response + ... Pre-conditions: Logging Job is already created. + ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET individual Logging Job with invalid resource identifier + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Individual Logging Job - Method not implemented + [Documentation] Test ID: 8.3.4.2.4 + ... Test title: PUT Individual Logging Job - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an existing Logging Job + ... Pre-conditions: none + ... Reference: clause 8.5.4.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put request for individual Logging Job + Check HTTP Response Status Code Is 405 + +PATCH Individual Logging Job - Method not implemented + [Documentation] Test ID: 8.3.4.2.5 + ... Test title: PATCH Individual Logging Job - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new Logging Job + ... Pre-conditions: none + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Patch request for individual Logging Job + Check HTTP Response Status Code Is 405 + +DELETE Individual Logging Job + [Documentation] Test ID: 8.3.4.2.6 + ... Test title: DELETE Individual Logging Job + ... Test objective: The objective is to test the deletion of an individual logging job + ... Pre-conditions: Logging Job is already created. + ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Logging Job is no more available. + Send Delete request for individual Logging Job + Check HTTP Response Status Code Is 204 + Check Postcondition Logging Job is Deleted + +DELETE Individual Logging Job with invalid resource identifier + [Documentation] Test ID: 8.3.4.2.7 + ... Test title: DELETE Individual Logging Job with invalid resource identifier + ... Test objective: The objective is to test that the deletion of an individual logging job fails when using an invalid resource identifier + ... Pre-conditions: Logging Job is already created. + ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for individual Logging Job with invalid resource identifier + Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot index 38f25ba6a..e6893d687 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot @@ -1,94 +1,94 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Resource NFVMANOLogManagementKeywords.robot -Library JSONLibrary -Library OperatingSystem -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false - -*** Test Cases *** -POST Individual Log Report - Method not implemented - [Documentation] Test ID: 8.3.4.3.1 - ... Test title: POST Individual Log Report - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new log report. - ... Pre-conditions: none - ... Reference: clause 8.5.5.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Post request for Individual Log Report - Check HTTP Response Status Code Is 405 - -Get Individual Log Report - [Documentation] Test ID: 8.3.4.3.2 - ... Test title: Get Individual Log Report - ... Test objective: The objective is to test the retrieval of an individual log report and perform a JSON schema validation of the collected report data structure - ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Individual Log Report - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is LogReport - -Get Individual Log Report (asynchronous) - [Documentation] Test ID: 8.3.4.3.3 - ... Test title: Get Individual Log Report (asynchronous) - ... Test objective: The objective is to test the retrieval of an individual log report is ongoing and no log report is available yet. - ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Individual Log Report - Check HTTP Response Status Code Is 202 - -Get Individual Log Report with invalid resource endpoint - [Documentation] Test ID: 8.3.4.3.4 - ... Test title: Get Individual Log Report with invalid resource endpoint - ... Test objective: The objective is to test that the retrieval of an individual log report fails when using an invalid resource endpoint. - ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Individual Log Report with invalid resource endpoint - Check HTTP Response Status Code Is 404 - Check HTTP Response Body Json Schema Is ProblemDetails - -PUT Individual Log Report - Method not implemented - [Documentation] Test ID: 8.3.4.3.5 - ... Test title: PUT Individual Log Report - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to update an existing log report. - ... Pre-conditions: none - ... Reference: clause 8.5.5.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Put request for Individual Log Report - Check HTTP Response Status Code Is 405 - -PATCH Individual Log Report - Method not implemented - [Documentation] Test ID: 8.3.4.3.6 - ... Test title: PATCH Individual Log Report - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existinglog report. - ... Pre-conditions: none - ... Reference: clause 8.5.5.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Patch request for Individual Log Report - Check HTTP Response Status Code Is 405 - -DELETE Individual Log Report - Method not implemented - [Documentation] Test ID: 8.3.4.3.7 - ... Test title: DELETE Individual Log Report - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing log report. - ... Pre-conditions: none - ... Reference: clause 8.5.5.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for Individual Log Report +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource NFVMANOLogManagementKeywords.robot +Library JSONLibrary +Library OperatingSystem +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false + +*** Test Cases *** +POST Individual Log Report - Method not implemented + [Documentation] Test ID: 8.3.4.3.1 + ... Test title: POST Individual Log Report - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new log report. + ... Pre-conditions: none + ... Reference: clause 8.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Post request for Individual Log Report + Check HTTP Response Status Code Is 405 + +Get Individual Log Report + [Documentation] Test ID: 8.3.4.3.2 + ... Test title: Get Individual Log Report + ... Test objective: The objective is to test the retrieval of an individual log report and perform a JSON schema validation of the collected report data structure + ... Pre-conditions: One or more log reports are set. + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Log Report + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LogReport + +Get Individual Log Report (asynchronous) + [Documentation] Test ID: 8.3.4.3.3 + ... Test title: Get Individual Log Report (asynchronous) + ... Test objective: The objective is to test the retrieval of an individual log report is ongoing and no log report is available yet. + ... Pre-conditions: One or more log reports are set. + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Log Report + Check HTTP Response Status Code Is 202 + +Get Individual Log Report with invalid resource endpoint + [Documentation] Test ID: 8.3.4.3.4 + ... Test title: Get Individual Log Report with invalid resource endpoint + ... Test objective: The objective is to test that the retrieval of an individual log report fails when using an invalid resource endpoint. + ... Pre-conditions: One or more log reports are set. + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Log Report with invalid resource endpoint + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Individual Log Report - Method not implemented + [Documentation] Test ID: 8.3.4.3.5 + ... Test title: PUT Individual Log Report - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an existing log report. + ... Pre-conditions: none + ... Reference: clause 8.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put request for Individual Log Report + Check HTTP Response Status Code Is 405 + +PATCH Individual Log Report - Method not implemented + [Documentation] Test ID: 8.3.4.3.6 + ... Test title: PATCH Individual Log Report - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existinglog report. + ... Pre-conditions: none + ... Reference: clause 8.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Patch request for Individual Log Report + Check HTTP Response Status Code Is 405 + +DELETE Individual Log Report - Method not implemented + [Documentation] Test ID: 8.3.4.3.7 + ... Test title: DELETE Individual Log Report - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing log report. + ... Pre-conditions: none + ... Reference: clause 8.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for Individual Log Report Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot index 65456e8fd..d89a0bdc3 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the retrieval of individual subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual Subscription - invalid resource identifier ... Test title: GET Individual Subscription - invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual subscription fails when using an invalid resource identifier ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ DELETE Individual Subscription ... Test title: DELETE Individual Subscription ... Test objective: The objective is to test the deletion of an individual subscription ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The is not available anymore in the NFV-MANO @@ -52,7 +52,7 @@ DELETE Individual Subscription - invalid resource identifier ... Test title: DELETE Individual Subscription - invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual subscription fails when using an invalid resource identifier ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Subscription ... Pre-conditions: none - ... Reference: clause 8.5.8.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.8.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PUT Individual Subscription - Method not implemented ... Test title: PUT Individual Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing subscription ... Pre-conditions: none - ... Reference: clause 8.5.8.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.8.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ PATCH Individual Subscription - Method not implemented ... Test title: PATCH Individual Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing subscription ... Pre-conditions: none - ... Reference: clause 8.5.8.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.8.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot index 94f69aa17..98d036a09 100644 --- a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot +++ b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot @@ -1,238 +1,238 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Resource NFVMANOLogManagementKeywords.robot -Library JSONLibrary -Library OperatingSystem -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false - -*** Test Cases *** -POST Create a new logging job - [Documentation] Test ID: 8.3.4.1.1 - ... Test title: POST Create a new logging job - ... Test objective: The objective is to create a new logging job, and perform the JSON schema validation of the operation HTTP response. - ... Pre-conditions: none - ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: logging job created - POST Create a new logging job - Check HTTP Response Status Code Is 201 - Check HTTP Response Header Contains Location - Check HTTP Response Body Json Schema Is LoggingJob - Check Post-Condition Logging job is created - -GET information about logging jobs - [Documentation] Test ID: 8.3.4.1.2 - ... Test title: GET information logging jobs - ... Test objective: The objective is to retrieve information about logging jobs, and perform the JSON schema validation of the operation HTTP response. - ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Logging Jobs - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is LoggingJobs - -GET Logging jobs - invalid attribute-based filter - [Documentation] Test ID: 8.3.4.1.3 - ... Test title: GET Logging jobs - invalid attribute-based filter - ... Test objective: The objective is to test that the retrieval of logging jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Logging Job with invalid filter - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET Logging jobs - invalid attribute selector - [Documentation] Test ID: 8.3.4.1.4 - ... Test title: GET Logging jobs - invalid attribute selector - ... Test objective: The objective is to test that the retrieval of logging jobs fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Logging Job with invalid selector - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET Logging jobs - Bad Request Response too Big - [Documentation] Test ID: 8.3.4.1.5 - ... Test title: GET Logging jobs - Bad Request Response too Big - ... Test objective: The objective is to test that the retrieval of Logging job fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Logging Jobs - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET information about logging jobs with attribute-based filter - [Documentation] Test ID: 8.3.4.1.6 - ... Test title: GET information about logging jobs with attribute-based filter - ... Test objective: The objective is to retrieve information about the logging jobs with attribute filters, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Logging Job with filter - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is LoggingJobs - -GET information about logging jobs with "all_fields" attribute selector - [Documentation] Test ID: 8.3.4.1.7 - ... Test title: GET information about logging jobs with "all_fields" attribute selector - ... Test objective: The objective is to retrieve information about logging jobs with "all_fields" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Logging jobs with all_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is LoggingJobs - -GET information about Logging Jobs with "exclude_default" attribute selector - [Documentation] Test ID: 8.3.4.1.8 - ... Test title: GET information about Logging Jobs with "exclude_default" attribute selector - ... Test objective: The objective is to retrieve information about logging jobs with "exclude_default" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Logging Jobs with exclude_default attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is LoggingJobs - -GET information about Logging Jobs with "fields" attribute selector - [Documentation] Test ID: 8.3.4.1.9 - ... Test title: GET information about Logging Jobs with fields attribute selector - ... Test objective: The objective is to retrieve information about Logging Jobs with fields attribute selector, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Logging Jobs with fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is LoggingJobs - -GET information about Logging Jobs with "exclude_fields" attribute selector - [Documentation] Test ID: 8.3.4.1.10 - ... Test title: GET information about Logging Jobs with "exclude_fields" attribute selector - ... Test objective: The objective is to retrieve information about the Logging Jobs with "exclude_fields" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Logging Jobs with exclude_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is LoggingJobs - -GET information about Logging Jobs with "fields" and "exclude_default" attribute selector - [Documentation] Test ID: 8.3.4.1.11 - ... Test title: GET information about Logging Jobs with fields and exclude_default attribute selector - ... Test objective: The objective is to retrieve information about Logging Jobs with fields and exclude_default attribute selector, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Logging Jobs with fields and exclude_default attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is LoggingJobs - -GET information about Logging Jobs with Paged Response - [Documentation] Test ID: 8.3.4.1.12 - ... Test title: GET information about Logging Jobs with Paged Response - ... Test objective: The objective is to query information about Logging Jobs to get Paged Response. - ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET Logging Jobs - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Contains Link - -GET information about Logging Jobs with malformed authorization token - [Documentation] Test ID: 8.3.1.8.13 - ... Test title: GET information about Logging Jobs with malformed authorization token - ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using malformed authorization token. - ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. - ... Post-Conditions: none - GET Logging Jobs with malformed authorization token - Check HTTP Response Status Code Is 401 - -GET information about Logging Jobs without authorization token - [Documentation] Test ID: 8.3.4.1.14 - ... Test title: GET information about Logging Jobs without authorization token - ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when omitting the authorization token. - ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. - ... Post-Conditions: none - GET Logging Jobs without authorization token - Check HTTP Response Status Code Is 401 - -GET information about Logging Jobs with expired or revoked authorization token - [Documentation] Test ID: 8.3.4.1.15 - ... Test title: GET information about Logging Jobs with expired or revoked authorization token - ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using expired or revoked authorization token. - ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. - ... Post-Conditions: none - GET Logging Jobs with expired or revoked authorization token - Check HTTP Response Status Code Is 401 - -PUT Logging Jobs - Method not implemented - [Documentation] Test ID: 8.3.4.1.13 - ... Test title: PUT Logging Jobs - Method not implemented - ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: none - ... Reference: clause 8.5.3.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PUT Logging Jobs - Check HTTP Response Status Code Is 405 - -PATCH Logging Jobs - Method not implemented - [Documentation] Test ID: 8.3.4.1.14 - ... Test title: PATCH Logging Jobs - Method not implemented - ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: none - ... Reference: clause 8.5.3.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PATCH Logging Jobs - Check HTTP Response Status Code Is 405 - -DELETE Logging Jobs - Method not implemented - [Documentation] Test ID: 8.3.4.1.15 - ... Test title: DELETE Logging Jobs - Method not implemented - ... Test objective: The objective is to test that the method is not implemented - ... Pre-conditions: none - ... Reference: clause 8.5.3.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - DELETE Logging Jobs +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Resource NFVMANOLogManagementKeywords.robot +Library JSONLibrary +Library OperatingSystem +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false + +*** Test Cases *** +POST Create a new logging job + [Documentation] Test ID: 8.3.4.1.1 + ... Test title: POST Create a new logging job + ... Test objective: The objective is to create a new logging job, and perform the JSON schema validation of the operation HTTP response. + ... Pre-conditions: none + ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: logging job created + POST Create a new logging job + Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location + Check HTTP Response Body Json Schema Is LoggingJob + Check Post-Condition Logging job is created + +GET information about logging jobs + [Documentation] Test ID: 8.3.4.1.2 + ... Test title: GET information logging jobs + ... Test objective: The objective is to retrieve information about logging jobs, and perform the JSON schema validation of the operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Logging Jobs + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + +GET Logging jobs - invalid attribute-based filter + [Documentation] Test ID: 8.3.4.1.3 + ... Test title: GET Logging jobs - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of logging jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Logging Job with invalid filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Logging jobs - invalid attribute selector + [Documentation] Test ID: 8.3.4.1.4 + ... Test title: GET Logging jobs - invalid attribute selector + ... Test objective: The objective is to test that the retrieval of logging jobs fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Logging Job with invalid selector + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Logging jobs - Bad Request Response too Big + [Documentation] Test ID: 8.3.4.1.5 + ... Test title: GET Logging jobs - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of Logging job fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Logging Jobs + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about logging jobs with attribute-based filter + [Documentation] Test ID: 8.3.4.1.6 + ... Test title: GET information about logging jobs with attribute-based filter + ... Test objective: The objective is to retrieve information about the logging jobs with attribute filters, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Logging Job with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + +GET information about logging jobs with "all_fields" attribute selector + [Documentation] Test ID: 8.3.4.1.7 + ... Test title: GET information about logging jobs with "all_fields" attribute selector + ... Test objective: The objective is to retrieve information about logging jobs with "all_fields" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Logging jobs with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + +GET information about Logging Jobs with "exclude_default" attribute selector + [Documentation] Test ID: 8.3.4.1.8 + ... Test title: GET information about Logging Jobs with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve information about logging jobs with "exclude_default" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Logging Jobs with exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + +GET information about Logging Jobs with "fields" attribute selector + [Documentation] Test ID: 8.3.4.1.9 + ... Test title: GET information about Logging Jobs with fields attribute selector + ... Test objective: The objective is to retrieve information about Logging Jobs with fields attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Logging Jobs with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + +GET information about Logging Jobs with "exclude_fields" attribute selector + [Documentation] Test ID: 8.3.4.1.10 + ... Test title: GET information about Logging Jobs with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve information about the Logging Jobs with "exclude_fields" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Logging Jobs with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + +GET information about Logging Jobs with "fields" and "exclude_default" attribute selector + [Documentation] Test ID: 8.3.4.1.11 + ... Test title: GET information about Logging Jobs with fields and exclude_default attribute selector + ... Test objective: The objective is to retrieve information about Logging Jobs with fields and exclude_default attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Logging Jobs with fields and exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is LoggingJobs + +GET information about Logging Jobs with Paged Response + [Documentation] Test ID: 8.3.4.1.12 + ... Test title: GET information about Logging Jobs with Paged Response + ... Test objective: The objective is to query information about Logging Jobs to get Paged Response. + ... Pre-conditions: At least one logging job is created. + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Logging Jobs + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +GET information about Logging Jobs with malformed authorization token + [Documentation] Test ID: 8.3.1.8.13 + ... Test title: GET information about Logging Jobs with malformed authorization token + ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using malformed authorization token. + ... Pre-conditions: none + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Logging Jobs with malformed authorization token + Check HTTP Response Status Code Is 401 + +GET information about Logging Jobs without authorization token + [Documentation] Test ID: 8.3.4.1.14 + ... Test title: GET information about Logging Jobs without authorization token + ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when omitting the authorization token. + ... Pre-conditions: none + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Logging Jobs without authorization token + Check HTTP Response Status Code Is 401 + +GET information about Logging Jobs with expired or revoked authorization token + [Documentation] Test ID: 8.3.4.1.15 + ... Test title: GET information about Logging Jobs with expired or revoked authorization token + ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using expired or revoked authorization token. + ... Pre-conditions: none + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Logging Jobs with expired or revoked authorization token + Check HTTP Response Status Code Is 401 + +PUT Logging Jobs - Method not implemented + [Documentation] Test ID: 8.3.4.1.13 + ... Test title: PUT Logging Jobs - Method not implemented + ... Test objective: The objective is to test that the method is not implemented + ... Pre-conditions: none + ... Reference: clause 8.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT Logging Jobs + Check HTTP Response Status Code Is 405 + +PATCH Logging Jobs - Method not implemented + [Documentation] Test ID: 8.3.4.1.14 + ... Test title: PATCH Logging Jobs - Method not implemented + ... Test objective: The objective is to test that the method is not implemented + ... Pre-conditions: none + ... Reference: clause 8.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH Logging Jobs + Check HTTP Response Status Code Is 405 + +DELETE Logging Jobs - Method not implemented + [Documentation] Test ID: 8.3.4.1.15 + ... Test title: DELETE Logging Jobs - Method not implemented + ... Test objective: The objective is to test that the method is not implemented + ... Pre-conditions: none + ... Reference: clause 8.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE Logging Jobs Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot index f124cf4b9..1fd55de42 100644 --- a/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ Log Report Available Notification ... Test title: Log Report Available Notification ... Test objective: The objective is to test that Log Report Available Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for log report available notification is available in the NFV-MANO. - ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/Notifications.robot b/SOL009/NFVMANOLogManagement-API/Notifications.robot index 94975d858..124d7f743 100644 --- a/SOL009/NFVMANOLogManagement-API/Notifications.robot +++ b/SOL009/NFVMANOLogManagement-API/Notifications.robot @@ -16,7 +16,7 @@ Log Report Avaliable Notification ... Test title: Log Report Avaliable Notification ... Test objective: The objective is to test the dispatch of Log Report Avaliable Notification when new log report is available in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: none - ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot index 357cf6df1..970ba04e0 100644 --- a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ GET all Subscriptions ... Test title: GET all Subscriptions ... Test objective: The objective is to test the retrieval list of active subscriptions list to log management notifications and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ GET Subscriptions with attribute-based filter ... Test title: GET Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of active subscriptions list to log management notifications using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ GET Subscriptions with Paged Response ... Test title: GET Subscriptions with Paged Response ... Test objective: The objective is to query information of active subscriptions list to log management notifications to get Paged Response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET Subscriptions - invalid attribute-based filter ... Test title: GET Subscriptions - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ GET Subscriptions - Bad Request Response too Big ... Test title: GET Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ GET Subscriptions - invalid resource endpoint ... Test title: GET Subscriptions - invalid resource endpoint ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when using invalid resource endpoint. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: none - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -108,7 +108,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: none - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ Create new Subscription ... Test title: Create new Subscription ... Test objective: The objective is to test the creation of a new subscription to log management notification and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The subscription is successfully set and it matches the issued subscription @@ -138,7 +138,7 @@ Create request for duplicated Subscription not creating duplicated subscriptions ... Test title: Create request for duplicated Subscription not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing Subscription returned is available in the NFV-MANO @@ -154,7 +154,7 @@ Create request for duplicated Subscription creating duplicated subscriptions ... Test title: Create request for duplicated Subscription creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated subscription is successfully set and it matches the issued subscription @@ -169,7 +169,7 @@ PUT Subscriptions - Method not implemented ... Test title: PUT Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions ... Pre-conditions: none - ... Reference: clause 8.5.7.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -181,7 +181,7 @@ PATCH Subscriptions - Method not implemented ... Test title: PATCH Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions ... Pre-conditions: none - ... Reference: clause 8.5.7.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -193,7 +193,7 @@ DELETE Subscriptions - Method not implemented ... Test title: DELETE Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions ... Pre-conditions: none - ... Reference: clause 8.5.7.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 8.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/ApiVersion.robot b/SOL009/NFVMANOPerformanceManagement-API/ApiVersion.robot index 466df91ae..7027ed256 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/ApiVersion.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/ApiVersion.robot @@ -1,211 +1,211 @@ -*** Settings *** -Resource environment/variables.txt -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 8.3.2.9.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 8.3.2.9.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 8.3.2.9.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 8.3.2.9.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 8.3.2.9.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.2.9.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 8.3.2.9.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.2.9.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.2.9.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.2.9.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} - Log Json Schema Validation OK +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 8.3.2.9.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 8.3.2.9.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 8.3.2.9.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 8.3.2.9.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 8.3.2.9.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.2.9.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 8.3.2.9.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.2.9.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.2.9.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.2.9.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot index e1a351ae0..7b7b2564e 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot @@ -11,7 +11,7 @@ POST Individual NFV-MANO Performance Job - Method not implemented ... Test title: POST Individual NFV-MANO Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO Performance Monitoring Job ... Pre-conditions: none - ... Reference: clause 6.5.4.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET individual NFV-MANO Performance Job ... Test title: Get individual NFV-MANO Performance Job ... Test objective: The objective is to test the retrieval of an individual performance monitoring job and perform a JSON schema validation of the collected job data structure ... Pre-conditions: A NFV-MANO instance is instantiated. - ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ GET individual NFV-MANO Performance Job with invalid resource identifier ... Test title: Get individual NFV-MANO Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual NFV-MANO Performance Job - Method not implemented ... Test title: PUT Individual NFV-MANO Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NFV-MANO Performance Monitoring Job ... Pre-conditions: none - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual NFV-MANO Performance Job - Method not implemented ... Test title: PATCH Individual NFV-MANO Performance Job - method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new NFV-MANO Performance Monitoring Job ... Pre-conditions: none - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual NFV-MANO Performance Job ... Test title: Delete Individual NFV-MANO Performance Job ... Test objective: The objective is to test the deletion of an individual performance monitoring job ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO Performance Job is no more available. @@ -87,7 +87,7 @@ DELETE Individual NFV-MANO Performance Job with invalid resource identifier ... Test title: Delete individual NFV-MANO Performance Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual NFV-MANO performance monitoring job fails when using an invalid resource identifier ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot index c3339721c..b11f802b7 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot @@ -11,7 +11,7 @@ POST Individual Performance Report - Method not implemented ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO performance report within a monitoring job. ... Pre-conditions: none - ... Reference: clause 6.5.5.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. - ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual NFV-MANO performance report associated to a monitoring job fails when using an invalid resource endpoint. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. - ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PUT Individual Performance Report - Method not implemented ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NFV-MANO performance report within a monitoring job. ... Pre-conditions: none - ... Reference: clause 6.5.5.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ PATCH Individual Performance Report - Method not implemented ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NFV-MANO performance report within a monitoring job. ... Pre-conditions: none - ... Reference: clause 6.5.5.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ DELETE Individual Performance Report - Method not implemented ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing NFV-MANO performance report within a monitoring job ... Pre-conditions: none - ... Reference: clause 6.5.5.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANOM ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot index 14b777ec4..0092c466b 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual Performance Subscription ... Test title: GET Individual Performance Subscription ... Test objective: The objective is to test the retrieval of individual performance subscription and perform a JSON schema validation of the returned subscription data structure. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. - ... Reference: clause 6.5.9.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.9.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual Performance Subscription with invalid resource identifier ... Test title: GET Individual Performance Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual performance subscription fails when using an invalid resource identifier. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. - ... Reference: clause 6.5.9.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.9.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ DELETE Individual Performance Subscription ... Test title: DELETE Individual Performance Subscription ... Test objective: The objective is to test the deletion of an individual performance subscription ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. - ... Reference: clause 6.5.9.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.9.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Performance Subscription is not available anymore in the NFV-MANO @@ -51,7 +51,7 @@ DELETE Individual Performance Subscription with invalid resource identifier ... Test title: DELETE Individual Performance Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual performance subscription fails when using an invalid resource identifier. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. - ... Reference: clause 6.5.9.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.9.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ POST Individual Performance Subscription - Method not implemented ... Test title: POST Individual Performance Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Performance Subscription ... Pre-conditions: none - ... Reference: clause 6.5.9.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PUT Individual Performance Subscription - Method not implemented ... Test title: PUT Individual Performance Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing Performance subscription. ... Pre-conditions: none - ... Reference: clause 6.5.9.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.9.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ PATCH Individual Performance Subscription - Method not implemented ... Test title: PATCH Individual Performance Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing Performance subscription ... Pre-conditions: none - ... Reference: clause 6.5.9.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.9.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot index 34f912e5c..1e8c9a94e 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot @@ -12,7 +12,7 @@ POST Individual Threshold - Method not implemented ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Performance Threshold ... Pre-conditions: none - ... Reference: clause 6.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual NFV-MANO performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual performance threshold fails when using an invalid resource identifier ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance jobs are set. - ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual Threshold - Method not implemented ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing Performance threshold ... Pre-conditions: none - ... Reference: clause 6.5.7.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.7.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual Threshold - Method not implemented ... Test title: PATCH Individual Threshold - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing Performance threshold ... Pre-conditions: none - ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual Threshold ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual performance threshold ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Performance Threshold is not available anymore in the NFV-MANO @@ -87,7 +87,7 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual performance threshold ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOPerformanceManagement-API/NotificationEndpoint.robot index 9fcc1ca51..420b3280a 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/NotificationEndpoint.robot @@ -15,7 +15,7 @@ Performance Information Available Notification ... Test title: Performance Information Available Notification ... Test objective: The objective is to test that Performance Available Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for performance available notification is available in the NFV-MANO. - ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Threshold Crossed Notification ... Test title: Threshold Crossed Notification ... Test objective: The objective is to test that Threshold Crossed Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for threshold crosssed notification is available in the NFV-MANO. - ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/Notifications.robot b/SOL009/NFVMANOPerformanceManagement-API/Notifications.robot index 733fca6b5..c2aaba955 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Notifications.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Notifications.robot @@ -17,7 +17,7 @@ Performance Information Availability Notification ... Test title: Performance Information Availability Notification ... Test objective: The objective is to test the dispatch of Performance Information Availability Notification when new performance information is available in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A performance job is created, and a subscription for information availability notifications is available in the NFV-MANO. - ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ Threshold Crossed Notification ... Test title: Threshold Crossed Notification ... Test objective: The objective is to test the dispatch of Threshold Crossed Notification when a previously set performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A performance job is created, and a threshold subscription is available in the NFV-MANO. - ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot index 5e9129e49..90488d69d 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot @@ -14,7 +14,7 @@ Create new NFV-MANO Performance Monitoring Job ... Test title: Create a new NFV-MANO Performance Monitoring Job ... Test objective: The objective is to test the creation of a new NFV-MANO performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO Performance Job is successfully created on the NFV-MANO @@ -28,7 +28,7 @@ GET all NFV-MANO Performance Monitoring Jobs ... Test title: GET all NFV-MANO Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance monitoring jobs and perform a JSON schema validation ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET NFV-MANO Performance Monitoring Jobs with attribute-based filter ... Test title: GET all NFV-MANO Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of NFV-MANO performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET all NFV-MANO Performance Monitoring Jobs with all_fields attribute selector ... Test title: GET all NFV-MANO Performance Monitoring Jobs with all_fields attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs all_fields attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET all NFV-MANO Performance Monitoring Jobs with exclude_default attribute sele ... Test title: GET all NFV-MANO Performance Monitoring Jobs with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ GET all NFV-MANO Performance Monitoring Jobs with fields attribute selector ... Test title: GET all NFV-MANO Performance Monitoring Jobs with fields attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs fields attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the use of fields attribute selector ... Post-Conditions: none @@ -93,7 +93,7 @@ GET all NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selec ... Test title: GET all NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs exclude_fields attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -106,7 +106,7 @@ GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NFV-MANO performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -119,7 +119,7 @@ GET NFV-MANO Performance Monitoring Jobs with invalid attribute selector ... Test title: GET NFV-MANO Performance Monitoring Jobs with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of NFV-MANO performance monitoring jobs fails with invalid attribute selector ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -132,7 +132,7 @@ GET information about multiple Performance Monitoring Jobs to get Paged Response ... Test title: GET information about multiple Performance Monitoring Jobs to get Paged Response ... Test objective: The objective is to retrieve information about the performance monitoring jobs to get paged response ... Pre-conditions: none - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -145,7 +145,7 @@ GET information about multiple Performance Monitoring Jobs for Bad Request Respo ... Test title: GET information about multiple Performance Monitoring Jobs for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about performance monitoring jobs when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: none - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -158,7 +158,7 @@ GET information about multiple Performance Monitoring Jobs with "fields" and "ex ... Test title: GET all NFV-MANO Performance Monitoring Jobs with "fields" and "exclude_default" attribute selector ... Test objective: The objective is to retrieve all performance monitoring jobs with fields and exclude default attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -207,7 +207,7 @@ PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test title: PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: clause 6.5.3.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -219,7 +219,7 @@ PATCH all NFV-MANO Performance Monitoring Jobs - (Method not implemented) ... Test title: PATCH all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NFV-MANO Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: clause 6.5.3.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -231,7 +231,7 @@ DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test title: DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: clause 6.5.3.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot index 6cef6ce67..c3ae8e0db 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot @@ -17,7 +17,7 @@ GET all Performance Subscriptions ... Test title: GET all Performance Subscriptions ... Test objective: The objective is to test the retrieval of all performance subscriptions and perform a JSON schema validation of the returned subscriptions data structure. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. - ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET Performance Subscriptions with attribute-based filter ... Test title: GET Performance Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of performance subscriptions using attribute-based filter, perform a JSON schema validation of the collected indicators data structure. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. - ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ GET Performance Management Subscriptions with Paged Response ... Test title: GET Performance Management Subscriptions with Paged Response ... Test objective: The objective is to query information about NFV-MANO Performance Subscriptions to get Paged Response. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. - ... Reference: clauseclause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clauseclause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET Performance Subscriptions with invalid attribute-based filter ... Test title: GET Performance Subscriptions with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of performance subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. - ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ GET Performance Subscriptions - Bad Request Response too Big ... Test title: GET Performance Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NFV-MANO performance subscriptions fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. - ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: @@ -82,7 +82,7 @@ GET Performance Subscriptions with invalid resource endpoint ... Test title: GET Performance Subscriptions with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all performance subscriptions fails when using invalid resource endpoint. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available. - ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ Create new Performance subscription ... Test title: Create new Performance subscription ... Test objective: The objective is to test the creation of a new performance subscription and perform a JSON schema and content validation of the returned subscription data structure. ... Pre-conditions: An instance is instantiated. - ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The performance subscription is successfully set and it matches the issued subscription. @@ -111,7 +111,7 @@ Create duplicated Performance subscription with NFV-MANO not creating duplicated ... Test title: Create duplicated Performance subscription with NFV-MANO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated performance subscription and check that no new subscription is created by the NFV-MANO and a link to the original subscription is returned ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. - ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing performance subscription returned is available in the NFV-MANO @@ -127,7 +127,7 @@ Create duplicated Performance subscription with NFV-MANO creating duplicated sub ... Test title: Create duplicated Performance subscription with NFV-MANO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated performance subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure. ... Pre-conditions: An instance is instantiated. At least one performance subscription is available in the NFV-MANO. - ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.8.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated performance subscription is successfully set and it matches the issued subscription @@ -142,7 +142,7 @@ PUT Performance Subscriptions - Method not implemented ... Test title: PUT Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify performance subscriptions ... Pre-conditions: none - ... Reference: clause 6.5.8.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.8.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -154,7 +154,7 @@ PATCH Performance Subscriptions - Method not implemented ... Test title: PATCH Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update performance subscriptions ... Pre-conditions: none - ... Reference: clause 6.5.8.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.8.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ DELETE Performance Subscriptions - Method not implemented ... Test title: DELETE Performance Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete performance subscriptions ... Pre-conditions: none - ... Reference: clause 6.5.8.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot index 2cc794a63..a96ea74c2 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot @@ -13,7 +13,7 @@ Create new Performance Threshold ... Test title: Create new Performance Threshold ... Test objective: The objective is to test the creation of a new NFV-MANO performance threshold and perform the JSON schema validation of the returned threshold data structure. ... Pre-conditions: A NFV-MANO instance is instantiated. - ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO Performance Threshold is successfully created on the NFV-MANO @@ -28,7 +28,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance thresholds and perform a JSON schema validation of the collected thresholds data structure. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET Performance Threshold with Paged Response ... Test title: GET Performance Threshold with Paged Response ... Test objective: The objective is to query information about NFV-MANO Performance Thresholds to get Paged Response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ GET Performance Thresholds - Invalid attribute-based filter ... Test title: GET Performance Thresholds - Invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NFV-MANO performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ GET Performance Threshold - Bad Request Response too Big ... Test title: GET Performance Threshold - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NFV-MANO performance thresholds fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ PUT Performance Thresholds - Method not implemented ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Thresholds ... Pre-conditions: none - ... Reference: clause 6.5.6.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.6.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ PATCH Performance Thresholds - Method not implemented ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify NFV-MANO Performance Thresholds ... Pre-conditions: none - ... Reference: clause 6.5.6.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.6.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ DELETE Performance Thresholds - Method not implemented ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Thresholds ... Pre-conditions: none - ... Reference: clause 6.5.6.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 6.5.6.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot index 35c195242..89e174233 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ApiVersion.robot @@ -1,211 +1,211 @@ -*** Settings *** -Resource environment/variables.txt -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 8.3.1.13.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 8.3.1.13.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 8.3.1.13.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 8.3.1.13.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 8.3.1.13.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.1.13.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 8.3.1.13.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.1.13.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.1.13.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 8.3.1.13.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} - Log Json Schema Validation OK +*** Settings *** +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 8.3.1.13.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 8.3.1.13.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 8.3.1.13.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 8.3.1.13.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 8.3.1.13.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.1.13.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 8.3.1.13.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.1.13.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.1.13.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 8.3.1.13.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 [5] + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} + Log Json Schema Validation OK diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot index 4cdc1a3ac..4d58d8b4b 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot @@ -13,7 +13,7 @@ POST Change interface state task ... Test title: POST Change interface state task ... Test objective: The objective is send put request to change the state of the NFV-MANO service interface produced by the NFV-MANO functional entity ... Pre-conditions: none - ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: interface status changed @@ -27,7 +27,7 @@ POST Change interface state task - Conflict ... Test title: POST Change interface state task - Conflict ... Test objective: The objective is to test that request to cchange the state of the NFV-MANO service interface produced by the NFV-MANO functional entity failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Change interface state task - Method not implemented ... Test title: GET Change interface state task - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 5.5.12.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Change interface state task - Conflict - Method not implemented ... Test title: PUT Change interface state task - Conflict - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 5.5.12.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Change interface state task - Conflict - Method not implemented ... Test title: PATCH Change interface state task - Conflict - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 5.5.12.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Change interface state task - Conflict - Method not implemented ... Test title: DELETE Change interface state task - Conflict - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 5.5.12.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot index 020c545e9..e450afa03 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot @@ -1,83 +1,83 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library JSONLibrary -Library OperatingSystem -Resource NFVMANOCimKeywords.robot -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library MockServerLibrary -*** Test Cases *** -POST NFV-MANO functional entity application state change - [Documentation] Test ID: 8.3.1.2.1 - ... Test title: POST NFV-MANO functional entity application state change - ... Test objective: The objective is to request state change of the NFV-MANO functional entity application. - ... Pre-conditions: none - ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: entity status changed - Send Post request for NFV-MANO functional entity application state change - Check HTTP Response Status Code Is 202 - Check HTTP Response Header Contains Location - Wait for entity state change success notification and validate status - -POST NFV-MANO functional entity application state change - Conflict - [Documentation] Test ID: 8.3.1.2.2 - ... Test title: POST NFV-MANO functional entity application state change - Conflict - ... Test objective: The objective is to test that request to change the state of the NFV-MANO functional entity application fails due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Post request for NFV-MANO functional entity application state change - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET NFV-MANO functional entity application state change - Method not implemented - [Documentation] Test ID: 8.3.1.2.3 - ... Test title: GET NFV-MANO functional entity application state change - Method not implemented - ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: none - ... Reference: clause 5.5.7.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Get request for NFV-MANO functional entity application state change - Check HTTP Response Status Code Is 405 - -PUT NFV-MANO functional entity application state change - Method not implemented - [Documentation] Test ID: 8.3.1.2.4 - ... Test title: PUT NFV-MANO functional entity application state change - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: none - ... Reference: clause 5.5.7.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Put request for NFV-MANO functional entity application state change - Check HTTP Response Status Code Is 405 - -PATCH NFV-MANO functional entity application state change - Method not implemented - [Documentation] Test ID: 8.3.1.2.5 - ... Test title: PATCH NFV-MANO functional entity application state change - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: none - ... Reference: clause 5.5.7.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Patch request for NFV-MANO functional entity application state change - Check HTTP Response Status Code Is 405 - -DELETE NFV-MANO functional entity application state change - Method not implemented - [Documentation] Test ID: 8.3.1.2.6 - ... Test title: DELETE NFV-MANO functional entity application state change - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. - ... Pre-conditions: none - ... Reference: clause 5.5.7.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for NFV-MANO functional entity application state change +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary +*** Test Cases *** +POST NFV-MANO functional entity application state change + [Documentation] Test ID: 8.3.1.2.1 + ... Test title: POST NFV-MANO functional entity application state change + ... Test objective: The objective is to request state change of the NFV-MANO functional entity application. + ... Pre-conditions: none + ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: entity status changed + Send Post request for NFV-MANO functional entity application state change + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Wait for entity state change success notification and validate status + +POST NFV-MANO functional entity application state change - Conflict + [Documentation] Test ID: 8.3.1.2.2 + ... Test title: POST NFV-MANO functional entity application state change - Conflict + ... Test objective: The objective is to test that request to change the state of the NFV-MANO functional entity application fails due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Post request for NFV-MANO functional entity application state change + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET NFV-MANO functional entity application state change - Method not implemented + [Documentation] Test ID: 8.3.1.2.3 + ... Test title: GET NFV-MANO functional entity application state change - Method not implemented + ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: none + ... Reference: clause 5.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Get request for NFV-MANO functional entity application state change + Check HTTP Response Status Code Is 405 + +PUT NFV-MANO functional entity application state change - Method not implemented + [Documentation] Test ID: 8.3.1.2.4 + ... Test title: PUT NFV-MANO functional entity application state change - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: none + ... Reference: clause 5.5.7.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put request for NFV-MANO functional entity application state change + Check HTTP Response Status Code Is 405 + +PATCH NFV-MANO functional entity application state change - Method not implemented + [Documentation] Test ID: 8.3.1.2.5 + ... Test title: PATCH NFV-MANO functional entity application state change - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: none + ... Reference: clause 5.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Patch request for NFV-MANO functional entity application state change + Check HTTP Response Status Code Is 405 + +DELETE NFV-MANO functional entity application state change - Method not implemented + [Documentation] Test ID: 8.3.1.2.6 + ... Test title: DELETE NFV-MANO functional entity application state change - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. + ... Pre-conditions: none + ... Reference: clause 5.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for NFV-MANO functional entity application state change Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot index a88f6f870..7f60fe749 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot @@ -1,200 +1,200 @@ -** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library JSONLibrary -Library OperatingSystem -Resource NFVMANOCimKeywords.robot -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library MockServerLibrary - -*** Test Cases *** -POST Change State Operation Occurrences - Method not implemented - [Documentation] Test ID: 8.3.1.3.1 - ... Test title: POST Change State Operation Occurrences - Method not implemented - ... Test objective: The objective is to test that POST method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Post request for Change State Operation Occurrences - Check HTTP Response Status Code Is 405 - -GET Change State Operation Occurrences - [Documentation] Test ID: 8.3.1.3.2 - ... Test title: GET Change State Operation Occurrences - ... Test objective: The objective is to query status information about multiple change state operation occurrences, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Change State Operation Occurrences - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ChangeStateOpOccs - -GET Change State Operation Occurrences - invalid attribute-based filter - [Documentation] Test ID: 8.3.1.3.3 - ... Test title: GET Change State Operation Occurrences - invalid attribute-based filter - ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Change State Operation Occurrences with invalid filter - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET Change State Operation Occurrences - invalid attribute selector - [Documentation] Test ID: 8.3.1.3.4 - ... Test title: GET Change State Operation Occurrences - invalid attribute selector - ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Change State Operation Occurrences with invalid selector - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET Change State Operation Occurrences - Bad Request Response too Big - [Documentation] Test ID: 8.3.1.3.5 - ... Test title: GET Change State Operation Occurrences - Bad Request Response too Big - ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Change State Operation Occurrences - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET Change State Operation Occurrences with attribute-based filter - [Documentation] Test ID: 8.3.1.3.6 - ... Test title: GET Change State Operation Occurrences with attribute-based filter - ... Test objective: The objective is to query status information about multiple change state operation occurrences with attribute filters, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Change State Operation Occurrences with filter - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ChangeStateOpOcc - -GET Change State Operation Occurrences with "all_fields" attribute selector - [Documentation] Test ID: 8.3.1.3.7 - ... Test title: GET Change State Operation Occurrences with "all_fields" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurrences with "all_fields" attribute selector, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Change State Operation Occurrences with all_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ChangeStateOpOcc - -GET Change State Operation Occurrences with "exclude_default" attribute selector - [Documentation] Test ID: 8.3.1.3.8 - ... Test title: GET Change State Operation Occurrence with "exclude_default" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurrence with "exclude_default" attribute selector, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Change State Operation Occurrences with exclude_default attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ChangeStateOpOcc - -GET Change State Operation Occurrences with "fields" attribute selector - [Documentation] Test ID: 8.3.1.3.9 - ... Test title: GET Change State Operation Occurrences with "fields" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurrences with fields attribute selector, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Change State Operation Occurrences with fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ChangeStateOpOcc - -GET Change State Operation Occurrences with "exclude_fields" attribute selector - [Documentation] Test ID: 8.3.1.3.10 - ... Test title: GET Change State Operation Occurrences with "exclude_fields" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurrences with "exclude_fields" attribute selector, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Change State Operation Occurrences with exclude_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ChangeStateOpOcc - -GET Change State Operation Occurrences with Paged Response - [Documentation] Test ID: 8.3.1.3.11 - ... Test title: GET Change State Operation Occurrence with Paged Response - ... Test objective: The objective is to query Change State Operation Occurrence to get Paged Response. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Change State Operation Occurrences - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Contains Link - -GET Change State Operation Occurrences with "fields" and "exclude_default" attribute selector - [Documentation] Test ID: 8.3.1.3.12 - ... Test title: GET Change State Operation Occurrences with "fields" and "exclude_default" attribute selector - ... Test objective: The objective is to retrieve Change State Operation Occurrences with fields and exclude default attribute selector, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Change State Operation Occurrences with fields and exclude_default attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ChangeStateOpOcc - -PUT Change State Operation Occurrences - Method not implemented - [Documentation] Test ID: 8.3.1.3.13 - ... Test title: PUT Change State Operation Occurrences - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Put request for Change State Operation Occurrences - Check HTTP Response Status Code Is 405 - -PATCH Change State Operation Occurrences - Method not implemented - [Documentation] Test ID: 8.3.1.3.14 - ... Test title: PATCH Change State Operation Occurrences - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Patch request for Change State Operation Occurrences - Check HTTP Response Status Code Is 405 - -DELETE Change State Operation Occurrences - Method not implemented - [Documentation] Test ID: 8.3.1.3.15 - ... Test title: DELETE Change State Operation Occurrences - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.8.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for Change State Operation Occurrences - Check HTTP Response Status Code Is 405 +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST Change State Operation Occurrences - Method not implemented + [Documentation] Test ID: 8.3.1.3.1 + ... Test title: POST Change State Operation Occurrences - Method not implemented + ... Test objective: The objective is to test that POST method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Post request for Change State Operation Occurrences + Check HTTP Response Status Code Is 405 + +GET Change State Operation Occurrences + [Documentation] Test ID: 8.3.1.3.2 + ... Test title: GET Change State Operation Occurrences + ... Test objective: The objective is to query status information about multiple change state operation occurrences, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Change State Operation Occurrences + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOccs + +GET Change State Operation Occurrences - invalid attribute-based filter + [Documentation] Test ID: 8.3.1.3.3 + ... Test title: GET Change State Operation Occurrences - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Change State Operation Occurrences with invalid filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Change State Operation Occurrences - invalid attribute selector + [Documentation] Test ID: 8.3.1.3.4 + ... Test title: GET Change State Operation Occurrences - invalid attribute selector + ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Change State Operation Occurrences with invalid selector + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Change State Operation Occurrences - Bad Request Response too Big + [Documentation] Test ID: 8.3.1.3.5 + ... Test title: GET Change State Operation Occurrences - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Change State Operation Occurrences + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Change State Operation Occurrences with attribute-based filter + [Documentation] Test ID: 8.3.1.3.6 + ... Test title: GET Change State Operation Occurrences with attribute-based filter + ... Test objective: The objective is to query status information about multiple change state operation occurrences with attribute filters, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Change State Operation Occurrences with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc + +GET Change State Operation Occurrences with "all_fields" attribute selector + [Documentation] Test ID: 8.3.1.3.7 + ... Test title: GET Change State Operation Occurrences with "all_fields" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrences with "all_fields" attribute selector, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Change State Operation Occurrences with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc + +GET Change State Operation Occurrences with "exclude_default" attribute selector + [Documentation] Test ID: 8.3.1.3.8 + ... Test title: GET Change State Operation Occurrence with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrence with "exclude_default" attribute selector, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Change State Operation Occurrences with exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc + +GET Change State Operation Occurrences with "fields" attribute selector + [Documentation] Test ID: 8.3.1.3.9 + ... Test title: GET Change State Operation Occurrences with "fields" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrences with fields attribute selector, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Change State Operation Occurrences with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc + +GET Change State Operation Occurrences with "exclude_fields" attribute selector + [Documentation] Test ID: 8.3.1.3.10 + ... Test title: GET Change State Operation Occurrences with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrences with "exclude_fields" attribute selector, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Change State Operation Occurrences with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc + +GET Change State Operation Occurrences with Paged Response + [Documentation] Test ID: 8.3.1.3.11 + ... Test title: GET Change State Operation Occurrence with Paged Response + ... Test objective: The objective is to query Change State Operation Occurrence to get Paged Response. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Change State Operation Occurrences + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +GET Change State Operation Occurrences with "fields" and "exclude_default" attribute selector + [Documentation] Test ID: 8.3.1.3.12 + ... Test title: GET Change State Operation Occurrences with "fields" and "exclude_default" attribute selector + ... Test objective: The objective is to retrieve Change State Operation Occurrences with fields and exclude default attribute selector, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Change State Operation Occurrences with fields and exclude_default attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc + +PUT Change State Operation Occurrences - Method not implemented + [Documentation] Test ID: 8.3.1.3.13 + ... Test title: PUT Change State Operation Occurrences - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put request for Change State Operation Occurrences + Check HTTP Response Status Code Is 405 + +PATCH Change State Operation Occurrences - Method not implemented + [Documentation] Test ID: 8.3.1.3.14 + ... Test title: PATCH Change State Operation Occurrences - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Patch request for Change State Operation Occurrences + Check HTTP Response Status Code Is 405 + +DELETE Change State Operation Occurrences - Method not implemented + [Documentation] Test ID: 8.3.1.3.15 + ... Test title: DELETE Change State Operation Occurrences - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for Change State Operation Occurrences + Check HTTP Response Status Code Is 405 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot index b662f5c30..caea555e4 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot @@ -1,110 +1,110 @@ -** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library JSONLibrary -Library OperatingSystem -Resource NFVMANOCimKeywords.robot -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library MockServerLibrary - -*** Test Cases *** -POST Individual NFV-MANO Service Interface - Method not implemented - [Documentation] Test ID: 8.3.1.6.1 - ... Test title: POST Individual NFV-MANO Service Interface - Method not implemented - ... Test objective: The objective is to test that POST method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.11.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Post request for Individual NFV-MANO Service Interface - Check HTTP Response Status Code Is 405 - -GET Individual NFV-MANO Service Interface - [Documentation] Test ID: 8.3.1.6.2 - ... Test title: GET Individual NFV-MANO Service Interface - ... Test objective: The objective is to query status information about an NFV-MANO service interface of the producer NFV-MANO functional entity by reading an "Individual NFV-MANO service interface" resource, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Individual NFV-MANO Service Interface - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ManoServiceInterface - -GET Individual NFV-MANO Service Interface - Not Found - [Documentation] Test ID: 8.3.1.6.3 - ... Test title: GET Individual NFV-MANO Service Interface - Not Found - ... Test objective: The objective is to test the retrieval of information about an NFV-MANO service interface of the producer NFV-MANO functional entity by reading an "Individual NFV-MANO service interface" resource fails when the resource is not present. - ... Pre-conditions: none - ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Individual NFV-MANO Service Interface - Check HTTP Response Status Code Is 404 - Check HTTP Response Body Json Schema Is ProblemDetails - -PUT Individual NFV-MANO Service Interface - Method not implemented - [Documentation] Test ID: 8.3.1.6.4 - ... Test title: PUT Individual NFV-MANO Service Interface - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.11.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Put request for Individual NFV-MANO Service Interface - Check HTTP Response Status Code Is 405 - -PATCH Individual NFV-MANO Service Interface - [Documentation] Test ID: 8.3.1.6.5 - ... Test title: PATCH Individual NFV-MANO Service Interface - ... Test objective: This method modifies the Individual NFV-MANO Service Interface resource, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. - ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The Individual NFV-MANO Service Interface is modified by the operation - Send Patch request for Individual NFV-MANO Service Interface - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ManoServiceInterfaceModifications - -PATCH Individual NFV-MANO Service Interface - Conflict - [Documentation] Test ID: 8.3.1.6.6 - ... Test title: PATCH Individual NFV-MANO Service Interface - Conflict - ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Service Interface resource failed due to a conflict with the state of the Individual NFV-MANO Service Interface resource and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. - ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The Individual NFV-MANO Service Interface is not modified by the operation - Send Patch request for Individual NFV-MANO Service Interface - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -PATCH Individual NFV-MANO Service Interface - PreCondition Failed - [Documentation] Test ID: 8.3.1.6.7 - ... Test title: PATCH Individual NFV-MANO Service Interface - PreCondition Failed - ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Service Interface resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. - ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The Individual NFV-MANO Service Interface is not modified by the operation - Send Patch request for Individual NFV-MANO Service Interface - Check HTTP Response Status Code Is 412 - Check HTTP Response Body Json Schema Is ProblemDetails - -DELETE Individual NFV-MANO Service Interface - Method not implemented - [Documentation] Test ID: 8.3.1.6.8 - ... Test title: DELETE Individual NFV-MANO Service Interface - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.11.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for Individual NFV-MANO Service Interface - Check HTTP Response Status Code Is 405 +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST Individual NFV-MANO Service Interface - Method not implemented + [Documentation] Test ID: 8.3.1.6.1 + ... Test title: POST Individual NFV-MANO Service Interface - Method not implemented + ... Test objective: The objective is to test that POST method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.11.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Post request for Individual NFV-MANO Service Interface + Check HTTP Response Status Code Is 405 + +GET Individual NFV-MANO Service Interface + [Documentation] Test ID: 8.3.1.6.2 + ... Test title: GET Individual NFV-MANO Service Interface + ... Test objective: The objective is to query status information about an NFV-MANO service interface of the producer NFV-MANO functional entity by reading an "Individual NFV-MANO service interface" resource, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual NFV-MANO Service Interface + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterface + +GET Individual NFV-MANO Service Interface - Not Found + [Documentation] Test ID: 8.3.1.6.3 + ... Test title: GET Individual NFV-MANO Service Interface - Not Found + ... Test objective: The objective is to test the retrieval of information about an NFV-MANO service interface of the producer NFV-MANO functional entity by reading an "Individual NFV-MANO service interface" resource fails when the resource is not present. + ... Pre-conditions: none + ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual NFV-MANO Service Interface + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Individual NFV-MANO Service Interface - Method not implemented + [Documentation] Test ID: 8.3.1.6.4 + ... Test title: PUT Individual NFV-MANO Service Interface - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.11.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put request for Individual NFV-MANO Service Interface + Check HTTP Response Status Code Is 405 + +PATCH Individual NFV-MANO Service Interface + [Documentation] Test ID: 8.3.1.6.5 + ... Test title: PATCH Individual NFV-MANO Service Interface + ... Test objective: This method modifies the Individual NFV-MANO Service Interface resource, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Individual NFV-MANO Service Interface is modified by the operation + Send Patch request for Individual NFV-MANO Service Interface + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaceModifications + +PATCH Individual NFV-MANO Service Interface - Conflict + [Documentation] Test ID: 8.3.1.6.6 + ... Test title: PATCH Individual NFV-MANO Service Interface - Conflict + ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Service Interface resource failed due to a conflict with the state of the Individual NFV-MANO Service Interface resource and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Individual NFV-MANO Service Interface is not modified by the operation + Send Patch request for Individual NFV-MANO Service Interface + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +PATCH Individual NFV-MANO Service Interface - PreCondition Failed + [Documentation] Test ID: 8.3.1.6.7 + ... Test title: PATCH Individual NFV-MANO Service Interface - PreCondition Failed + ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Service Interface resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The Individual NFV-MANO Service Interface is not modified by the operation + Send Patch request for Individual NFV-MANO Service Interface + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails + +DELETE Individual NFV-MANO Service Interface - Method not implemented + [Documentation] Test ID: 8.3.1.6.8 + ... Test title: DELETE Individual NFV-MANO Service Interface - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.11.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for Individual NFV-MANO Service Interface + Check HTTP Response Status Code Is 405 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot index eda38f18e..f6e5a7225 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot @@ -1,109 +1,109 @@ -** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library JSONLibrary -Library OperatingSystem -Resource NFVMANOCimKeywords.robot -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library MockServerLibrary - -*** Test Cases *** -POST Individual Peer Entity - Method not implemented - [Documentation] Test ID: 8.3.1.9.1 - ... Test title: POST Individual Peer Entity - Method not implemented - ... Test objective: The objective is to test that POST method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.14.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Post request for Individual Peer Entity - Check HTTP Response Status Code Is 405 - -GET Individual Peer Entity - [Documentation] Test ID: 8.3.1.9.2 - ... Test title: GET Individual Peer Entity - ... Test objective: The objective is to retrieves information and configuration hold in the producer NFV-MANO functional entity with regards to a peer entity by reading an individual peer entity resource - ... Pre-conditions: none - ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Individual Peer Entity - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PeerEntity - -GET Individual Peer Entity - Not Found - [Documentation] Test ID: 8.3.1.9.3 - ... Test title: GET Individual Peer Entity - Not Found - ... Test objective: The objective is to test the retrieval of information and configuration hold in the producer NFV-MANO functional entity with regards to a peer entity by reading an individual peer entity resource fails when the resource is not present. - ... Pre-conditions: none - ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Individual Peer Entity - Check HTTP Response Status Code Is 404 - -PUT Individual Peer Entity - Method not implemented - [Documentation] Test ID: 8.3.1.9.4 - ... Test title: PUT Individual Peer Entity - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.14.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Put request for Individual Peer Entity - Check HTTP Response Status Code Is 405 - -PATCH Individual Peer Entity - [Documentation] Test ID: 8.3.1.9.5 - ... Test title: PATCH Individual Peer Entity - ... Test objective: This method modifies configuration and information of the producer NFV-MANO functional entity with regards to a peer functional entity by updating the corresponding "Individual peer entity" resource. - ... Pre-conditions: At least one Peer Entity resource is created - ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: Peer Entity Resource is modified by the operation - Send Patch request for Individual Peer Entity - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ManoServiceInterfaceModifications - -PATCH Individual Peer Entity - Conflict - [Documentation] Test ID: 8.3.1.9.6 - ... Test title: PATCH Individual Peer Entity - Conflict - ... Test objective: The objective is to test that the modification of configuration and information of the producer NFV-MANO functional entity with regards to a peer functional entity by updating the corresponding "Individual peer entity" resource failed due to a conflict with the state of the Individual Peer Entity resource and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one Peer Entity resource is created - ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: Peer Entity Resource is not modified by the operation - Send Patch request for Individual Peer Entity - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -PATCH Individual Peer Entity - PreCondition Failed - [Documentation] Test ID: 8.3.1.9.7 - ... Test title: PATCH Individual Peer Entity - PreCondition Failed - ... Test objective: The objective is to test that the modification of the Individual Peer Entity resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one Peer Entity resource is created - ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: Peer Entity Resource is not modified by the operation - Send Patch request for Individual Peer Entity - Check HTTP Response Status Code Is 412 - Check HTTP Response Body Json Schema Is ProblemDetails - -DELETE Individual Peer Entity - Method not implemented - [Documentation] Test ID: 8.3.1.9.8 - ... Test title: DELETE Individual Peer Entity - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.14.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for Individual Peer Entity +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST Individual Peer Entity - Method not implemented + [Documentation] Test ID: 8.3.1.9.1 + ... Test title: POST Individual Peer Entity - Method not implemented + ... Test objective: The objective is to test that POST method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.14.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Post request for Individual Peer Entity + Check HTTP Response Status Code Is 405 + +GET Individual Peer Entity + [Documentation] Test ID: 8.3.1.9.2 + ... Test title: GET Individual Peer Entity + ... Test objective: The objective is to retrieves information and configuration hold in the producer NFV-MANO functional entity with regards to a peer entity by reading an individual peer entity resource + ... Pre-conditions: none + ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Peer Entity + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntity + +GET Individual Peer Entity - Not Found + [Documentation] Test ID: 8.3.1.9.3 + ... Test title: GET Individual Peer Entity - Not Found + ... Test objective: The objective is to test the retrieval of information and configuration hold in the producer NFV-MANO functional entity with regards to a peer entity by reading an individual peer entity resource fails when the resource is not present. + ... Pre-conditions: none + ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Peer Entity + Check HTTP Response Status Code Is 404 + +PUT Individual Peer Entity - Method not implemented + [Documentation] Test ID: 8.3.1.9.4 + ... Test title: PUT Individual Peer Entity - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.14.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put request for Individual Peer Entity + Check HTTP Response Status Code Is 405 + +PATCH Individual Peer Entity + [Documentation] Test ID: 8.3.1.9.5 + ... Test title: PATCH Individual Peer Entity + ... Test objective: This method modifies configuration and information of the producer NFV-MANO functional entity with regards to a peer functional entity by updating the corresponding "Individual peer entity" resource. + ... Pre-conditions: At least one Peer Entity resource is created + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: Peer Entity Resource is modified by the operation + Send Patch request for Individual Peer Entity + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaceModifications + +PATCH Individual Peer Entity - Conflict + [Documentation] Test ID: 8.3.1.9.6 + ... Test title: PATCH Individual Peer Entity - Conflict + ... Test objective: The objective is to test that the modification of configuration and information of the producer NFV-MANO functional entity with regards to a peer functional entity by updating the corresponding "Individual peer entity" resource failed due to a conflict with the state of the Individual Peer Entity resource and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one Peer Entity resource is created + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: Peer Entity Resource is not modified by the operation + Send Patch request for Individual Peer Entity + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +PATCH Individual Peer Entity - PreCondition Failed + [Documentation] Test ID: 8.3.1.9.7 + ... Test title: PATCH Individual Peer Entity - PreCondition Failed + ... Test objective: The objective is to test that the modification of the Individual Peer Entity resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one Peer Entity resource is created + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: Peer Entity Resource is not modified by the operation + Send Patch request for Individual Peer Entity + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails + +DELETE Individual Peer Entity - Method not implemented + [Documentation] Test ID: 8.3.1.9.8 + ... Test title: DELETE Individual Peer Entity - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.14.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for Individual Peer Entity Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot index b2f606aa8..c9797ea9e 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot @@ -1,82 +1,82 @@ -** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library JSONLibrary -Library OperatingSystem -Resource NFVMANOCimKeywords.robot -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library MockServerLibrary - -*** Test Cases *** -POST Individual Change State Operation Occurrence - Method not implemented - [Documentation] Test ID: 8.3.1.4.1 - ... Test title: POST Individual Change State Operation Occurrence - Method not implemented - ... Test objective: The objective is to test that POST method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.9.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Post request for Individual Change State Operation Occurrence - Check HTTP Response Status Code Is 405 - -GET Individual Change State Operation Occurrence - [Documentation] Test ID: 8.3.1.4.2 - ... Test title: GET Individual Change State Operation Occurrence - ... Test objective: The objective is to query status information about Individual change state operation occurrence. - ... Pre-conditions: none - ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Individual Change State Operation Occurrence - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ChangeStateOpOcc - -GET Individual Change State Operation Occurrence - Not Found - [Documentation] Test ID: 8.3.1.4.3 - ... Test title: GET Individual Change State Operation Occurrence - Not Found - ... Test objective: The objective is to test the retrieval of information about individual change state operation occurence fails when the resource is not present. - ... Pre-conditions: none - ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Individual Change State Operation Occurrence - Check HTTP Response Status Code Is 404 - -PUT Individual Change State Operation Occurrence - Method not implemented - [Documentation] Test ID: 8.3.1.4.4 - ... Test title: PUT Individual Change State Operation Occurrence - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.9.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Put request for Individual Change State Operation Occurrence - Check HTTP Response Status Code Is 405 - -PATCH Individual Change State Operation Occurrence - Method not implemented - [Documentation] Test ID: 8.3.1.4.5 - ... Test title: PATCH Individual Change State Operation Occurrence - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.9.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Patch request for Individual Change State Operation Occurrence - Check HTTP Response Status Code Is 405 - -DELETE Individual Change State Operation Occurrence - Method not implemented - [Documentation] Test ID: 8.3.1.4.6 - ... Test title: DELETE Individual Change State Operation Occurrence - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.9.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for Individual Change State Operation Occurrence +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST Individual Change State Operation Occurrence - Method not implemented + [Documentation] Test ID: 8.3.1.4.1 + ... Test title: POST Individual Change State Operation Occurrence - Method not implemented + ... Test objective: The objective is to test that POST method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Post request for Individual Change State Operation Occurrence + Check HTTP Response Status Code Is 405 + +GET Individual Change State Operation Occurrence + [Documentation] Test ID: 8.3.1.4.2 + ... Test title: GET Individual Change State Operation Occurrence + ... Test objective: The objective is to query status information about Individual change state operation occurrence. + ... Pre-conditions: none + ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Change State Operation Occurrence + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ChangeStateOpOcc + +GET Individual Change State Operation Occurrence - Not Found + [Documentation] Test ID: 8.3.1.4.3 + ... Test title: GET Individual Change State Operation Occurrence - Not Found + ... Test objective: The objective is to test the retrieval of information about individual change state operation occurence fails when the resource is not present. + ... Pre-conditions: none + ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Change State Operation Occurrence + Check HTTP Response Status Code Is 404 + +PUT Individual Change State Operation Occurrence - Method not implemented + [Documentation] Test ID: 8.3.1.4.4 + ... Test title: PUT Individual Change State Operation Occurrence - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.9.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put request for Individual Change State Operation Occurrence + Check HTTP Response Status Code Is 405 + +PATCH Individual Change State Operation Occurrence - Method not implemented + [Documentation] Test ID: 8.3.1.4.5 + ... Test title: PATCH Individual Change State Operation Occurrence - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.9.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Patch request for Individual Change State Operation Occurrence + Check HTTP Response Status Code Is 405 + +DELETE Individual Change State Operation Occurrence - Method not implemented + [Documentation] Test ID: 8.3.1.4.6 + ... Test title: DELETE Individual Change State Operation Occurrence - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.9.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for Individual Change State Operation Occurrence Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot index a1d37e215..e20248234 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot @@ -1,95 +1,95 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Resource NFVMANOCimKeywords.robot - -*** Test Cases *** -GET Individual Subscription - [Documentation] Test ID: 8.3.1.11.1 - ... Test title: GET Individual Subscription - ... Test objective: The objective is to test the retrieval of individual subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Individual Subscription - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is CimSubscription - Check HTTP Response Body Subscription Identifier matches the requested Subscription - -GET Individual Subscription - invalid resource identifier - [Documentation] Test ID: 8.3.1.11.2 - ... Test title: GET Individual Subscription - invalid resource identifier - ... Test objective: The objective is to test that the retrieval of an individual subscription fails when using an invalid resource identifier - ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET individual Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 - -DELETE Individual Subscription - [Documentation] Test ID: 8.3.1.11.3 - ... Test title: DELETE Individual Subscription - ... Test objective: The objective is to test the deletion of an individual subscription - ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The resource is not available anymore in the NFV-MANO - Send Delete request for individual Subscription - Check HTTP Response Status Code Is 204 - Check Postcondition Subscription is Deleted - -DELETE Individual Subscription - invalid resource identifier - [Documentation] Test ID: 8.3.1.11.4 - ... Test title: DELETE Individual Subscription - invalid resource identifier - ... Test objective: The objective is to test that the deletion of an individual subscription fails when using an invalid resource identifier - ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for individual Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 - -POST Individual Subscription - Method not implemented - [Documentation] Test ID: 8.3.1.11.5 - ... Test title: POST Individual Subscription - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new Subscription - ... Pre-conditions: none - ... Reference: clause 5.5.5.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Post request for individual Subscription - Check HTTP Response Status Code Is 405 - -PUT Individual Subscription - Method not implemented - [Documentation] Test ID: 8.3.1.11.6 - ... Test title: PUT Individual Subscription - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to update an existing subscription - ... Pre-conditions: none - ... Reference: clause 5.5.5.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Put request for individual Subscription - Check HTTP Response Status Code Is 405 - -PATCH Individual Subscription - Method not implemented - [Documentation] Test ID: 8.3.1.11.7 - ... Test title: PATCH Individual Subscription - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing subscription - ... Pre-conditions: none - ... Reference: clause 5.5.5.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Patch request for individual Subscription - Check HTTP Response Status Code Is 405 +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Resource NFVMANOCimKeywords.robot + +*** Test Cases *** +GET Individual Subscription + [Documentation] Test ID: 8.3.1.11.1 + ... Test title: GET Individual Subscription + ... Test objective: The objective is to test the retrieval of individual subscription and perform a JSON schema and content validation of the returned subscription data structure + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Individual Subscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CimSubscription + Check HTTP Response Body Subscription Identifier matches the requested Subscription + +GET Individual Subscription - invalid resource identifier + [Documentation] Test ID: 8.3.1.11.2 + ... Test title: GET Individual Subscription - invalid resource identifier + ... Test objective: The objective is to test that the retrieval of an individual subscription fails when using an invalid resource identifier + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET individual Subscription with invalid resource identifier + Check HTTP Response Status Code Is 404 + +DELETE Individual Subscription + [Documentation] Test ID: 8.3.1.11.3 + ... Test title: DELETE Individual Subscription + ... Test objective: The objective is to test the deletion of an individual subscription + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The resource is not available anymore in the NFV-MANO + Send Delete request for individual Subscription + Check HTTP Response Status Code Is 204 + Check Postcondition Subscription is Deleted + +DELETE Individual Subscription - invalid resource identifier + [Documentation] Test ID: 8.3.1.11.4 + ... Test title: DELETE Individual Subscription - invalid resource identifier + ... Test objective: The objective is to test that the deletion of an individual subscription fails when using an invalid resource identifier + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for individual Subscription with invalid resource identifier + Check HTTP Response Status Code Is 404 + +POST Individual Subscription - Method not implemented + [Documentation] Test ID: 8.3.1.11.5 + ... Test title: POST Individual Subscription - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create a new Subscription + ... Pre-conditions: none + ... Reference: clause 5.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Post request for individual Subscription + Check HTTP Response Status Code Is 405 + +PUT Individual Subscription - Method not implemented + [Documentation] Test ID: 8.3.1.11.6 + ... Test title: PUT Individual Subscription - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an existing subscription + ... Pre-conditions: none + ... Reference: clause 5.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put request for individual Subscription + Check HTTP Response Status Code Is 405 + +PATCH Individual Subscription - Method not implemented + [Documentation] Test ID: 8.3.1.11.7 + ... Test title: PATCH Individual Subscription - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing subscription + ... Pre-conditions: none + ... Reference: clause 5.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Patch request for individual Subscription + Check HTTP Response Status Code Is 405 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot index 97268a15b..74a29921b 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot @@ -1,109 +1,109 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library JSONLibrary -Library OperatingSystem -Resource NFVMANOCimKeywords.robot -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library MockServerLibrary - -*** Test Cases *** -POST NFV-MANO entity - Method not implemented - [Documentation] Test ID: 8.3.1.1.1 - ... Test title: POST NFV-MANO entity - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create an NFV-MANO Entity. - ... Pre-conditions: none - ... Reference: clause 5.5.3.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Post request for NFV-MANO Entity - Check HTTP Response Status Code Is 405 - -GET NFV-MANO entity - [Documentation] Test ID: 8.3.1.1.2 - ... Test title: Get NFV-MANO entity - ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource and perform a JSON schema and content validation of the collected job data structure. - ... Pre-conditions: none - ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET NFV-MANO entity resource - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ManoEntity - -GET NFV-MANO entity - Not Found - [Documentation] Test ID: 8.3.1.1.3 - ... Test title: Get NFV-MANO entity - Not Found - ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource fails when the resource is not present. - ... Pre-conditions: none - ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - GET NFV-MANO entity resource - Check HTTP Response Status Code Is 404 - -PUT NFV-MANO entity - Method not implemented - [Documentation] Test ID: 8.3.1.1.4 - ... Test title: PUT NFV-MANO entity - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to update an NFV-MANO Entity. - ... Pre-conditions: none - ... Reference: clause 5.5.3.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Put request for NFV-MANO Entity - Check HTTP Response Status Code Is 405 - -PATCH NFV-MANO entity - [Documentation] Test ID: 8.3.1.1.5 - ... Test title: PATCH NFV-MANO entity - ... Test objective: The objective is to test that PATCH method modifies the NFV-MANO entity resource and perform a JSON schema and content validation of the modified response. - ... Pre-conditions: NFV-MANO entity resource is already created. - ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The NFV-MANO entity is modified by the operation - Send Patch request for NFV-MANO Entity - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ManoConfigModifications - -PATCH NFV-MANO entity - Conflict - [Documentation] Test ID: 8.3.1.1.6 - ... Test title: PATCH NFV-MANO entity - Conflict - ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: NFV-MANO entity resource is already created. - ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The NFV-MANO entity is not modified by the operation - Send Patch request for NFV-MANO Entity - Check HTTP Response Status Code Is 409 - Check HTTP Response Body Json Schema Is ProblemDetails - -PATCH NFV-MANO entity - PreCondition Failed - [Documentation] Test ID: 8.3.1.1.7 - ... Test title: PATCH NFV-MANO entity - PreCondition Failed - ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: NFV-MANO entity resource is already created. - ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The NFV-MANO entity is not modified by the operation - Send Patch request for NFV-MANO Entity - Check HTTP Response Status Code Is 412 - Check HTTP Response Body Json Schema Is ProblemDetails - -DELETE NFV-MANO entity - Method not implemented - [Documentation] Test ID: 8.3.1.1.8 - ... Test title: DELETE NFV-MANO entity - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete an NFV-MANO Entity. - ... Pre-conditions: none - ... Reference: clause 5.5.3.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for NFV-MANO Entity +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST NFV-MANO entity - Method not implemented + [Documentation] Test ID: 8.3.1.1.1 + ... Test title: POST NFV-MANO entity - Method not implemented + ... Test objective: The objective is to test that POST method is not allowed to create an NFV-MANO Entity. + ... Pre-conditions: none + ... Reference: clause 5.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Post request for NFV-MANO Entity + Check HTTP Response Status Code Is 405 + +GET NFV-MANO entity + [Documentation] Test ID: 8.3.1.1.2 + ... Test title: Get NFV-MANO entity + ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource and perform a JSON schema and content validation of the collected job data structure. + ... Pre-conditions: none + ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET NFV-MANO entity resource + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoEntity + +GET NFV-MANO entity - Not Found + [Documentation] Test ID: 8.3.1.1.3 + ... Test title: Get NFV-MANO entity - Not Found + ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource fails when the resource is not present. + ... Pre-conditions: none + ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET NFV-MANO entity resource + Check HTTP Response Status Code Is 404 + +PUT NFV-MANO entity - Method not implemented + [Documentation] Test ID: 8.3.1.1.4 + ... Test title: PUT NFV-MANO entity - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to update an NFV-MANO Entity. + ... Pre-conditions: none + ... Reference: clause 5.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put request for NFV-MANO Entity + Check HTTP Response Status Code Is 405 + +PATCH NFV-MANO entity + [Documentation] Test ID: 8.3.1.1.5 + ... Test title: PATCH NFV-MANO entity + ... Test objective: The objective is to test that PATCH method modifies the NFV-MANO entity resource and perform a JSON schema and content validation of the modified response. + ... Pre-conditions: NFV-MANO entity resource is already created. + ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO entity is modified by the operation + Send Patch request for NFV-MANO Entity + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoConfigModifications + +PATCH NFV-MANO entity - Conflict + [Documentation] Test ID: 8.3.1.1.6 + ... Test title: PATCH NFV-MANO entity - Conflict + ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: NFV-MANO entity resource is already created. + ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO entity is not modified by the operation + Send Patch request for NFV-MANO Entity + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +PATCH NFV-MANO entity - PreCondition Failed + [Documentation] Test ID: 8.3.1.1.7 + ... Test title: PATCH NFV-MANO entity - PreCondition Failed + ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: NFV-MANO entity resource is already created. + ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The NFV-MANO entity is not modified by the operation + Send Patch request for NFV-MANO Entity + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails + +DELETE NFV-MANO entity - Method not implemented + [Documentation] Test ID: 8.3.1.1.8 + ... Test title: DELETE NFV-MANO entity - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete an NFV-MANO Entity. + ... Pre-conditions: none + ... Reference: clause 5.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for NFV-MANO Entity Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot index 9d0a7f2e4..938b1b0f4 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot @@ -1,200 +1,200 @@ -** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library JSONLibrary -Library OperatingSystem -Resource NFVMANOCimKeywords.robot -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library MockServerLibrary - -*** Test Cases *** -POST NFV-MANO Service Interfaces - Method not implemented - [Documentation] Test ID: 8.3.1.5.1 - ... Test title: POST NFV-MANO Service Interfaces - Method not implemented - ... Test objective: The objective is to test that POST method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Post request for NFV-MANO Service Interfaces - Check HTTP Response Status Code Is 405 - -GET NFV-MANO Service Interfaces - [Documentation] Test ID: 8.3.1.5.2 - ... Test title: GET NFV-MANO Service Interfaces - ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get NFV-MANO Service Interfaces - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ManoServiceInterfaces - -GET NFV-MANO Service Interfaces - invalid attribute-based filter - [Documentation] Test ID: 8.3.1.5.3 - ... Test title: GET NFV-MANO Service Interfaces - invalid attribute-based filter - ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get NFV-MANO Service Interfaces with invalid filter - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET NFV-MANO Service Interfaces - invalid attribute selector - [Documentation] Test ID: 8.3.1.5.4 - ... Test title: GET NFV-MANO Service Interfaces - invalid attribute selector - ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get NFV-MANO Service Interfaces with invalid selector - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET NFV-MANO Service Interfaces - Bad Request Response too Big - [Documentation] Test ID: 8.3.1.5.5 - ... Test title: GET NFV-MANO Service Interfaces - Bad Request Response too Big - ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get NFV-MANO Service Interfaces - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET NFV-MANO Service Interfaces with attribute-based filter - [Documentation] Test ID: 8.3.1.5.6 - ... Test title: GET NFV-MANO Service Interfaces with attribute-based filter - ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entities with attribute filters, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get NFV-MANO Service Interfaces with filter - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ManoServiceInterfaces - -GET NFV-MANO Service Interfaces with "all_fields" attribute selector - [Documentation] Test ID: 8.3.1.5.7 - ... Test title: GET NFV-MANO Service Interface with "all_fields" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "all_fields" attribute selector, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get NFV-MANO Service Interfaces with all_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ManoServiceInterfaces - -GET NFV-MANO Service Interfaces with "exclude_default" attribute selector - [Documentation] Test ID: 8.3.1.5.8 - ... Test title: GET NFV-MANO Service Interfaces with "exclude_default" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_default" attribute selector, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get NFV-MANO Service Interfaces with all_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ManoServiceInterfaces - -GET NFV-MANO Service Interfaces with "fields" attribute selector - [Documentation] Test ID: 8.3.1.5.9 - ... Test title: GET NFV-MANO Service Interfaces with "fields" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with fields attribute selector, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get NFV-MANO Service Interfaces with fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ManoServiceInterfaces - -GET NFV-MANO Service Interfaces with "exclude_fields" attribute selector - [Documentation] Test ID: 8.3.1.5.10 - ... Test title: GET NFV-MANO Service Interfaces with "exclude_fields" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_fields" attribute selector, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get NFV-MANO Service Interfaces with exclude_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ManoServiceInterfaces - -GET NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute selector - [Documentation] Test ID: 8.3.1.5.11 - ... Test title: GET NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute selector - ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute selector, and perform the JSON schema validation of the HTTP response. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get NFV-MANO Service Interfaces with exclude_default and fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ManoServiceInterfaces - -GET NFV-MANO Service Interfaces with Paged Response - [Documentation] Test ID: 8.3.1.5.12 - ... Test title: GET NFV-MANO Service Interfaces with Paged Response - ... Test objective: The objective is to query NFV-MANO Service Interface to get Paged Response. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get NFV-MANO Service Interfaces - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Contains Link - -PUT NFV-MANO Service Interfaces - Method not implemented - [Documentation] Test ID: 8.3.1.5.13 - ... Test title: PUT NFV-MANO Service Interfaces - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Put request for NFV-MANO Service Interfaces - Check HTTP Response Status Code Is 405 - -PATCH NFV-MANO Service Interfaces - Method not implemented - [Documentation] Test ID: 8.3.1.5.14 - ... Test title: PATCH NFV-MANO Service Interfaces - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Patch request for NFV-MANO Service Interfaces - Check HTTP Response Status Code Is 405 - -DELETE NFV-MANO Service Interfaces - Method not implemented - [Documentation] Test ID: 8.3.1.5.15 - ... Test title: DELETE NFV-MANO Service Interfaces - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.10.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for NFV-MANO Service Interfaces +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST NFV-MANO Service Interfaces - Method not implemented + [Documentation] Test ID: 8.3.1.5.1 + ... Test title: POST NFV-MANO Service Interfaces - Method not implemented + ... Test objective: The objective is to test that POST method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Post request for NFV-MANO Service Interfaces + Check HTTP Response Status Code Is 405 + +GET NFV-MANO Service Interfaces + [Documentation] Test ID: 8.3.1.5.2 + ... Test title: GET NFV-MANO Service Interfaces + ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get NFV-MANO Service Interfaces + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + +GET NFV-MANO Service Interfaces - invalid attribute-based filter + [Documentation] Test ID: 8.3.1.5.3 + ... Test title: GET NFV-MANO Service Interfaces - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get NFV-MANO Service Interfaces with invalid filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET NFV-MANO Service Interfaces - invalid attribute selector + [Documentation] Test ID: 8.3.1.5.4 + ... Test title: GET NFV-MANO Service Interfaces - invalid attribute selector + ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get NFV-MANO Service Interfaces with invalid selector + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET NFV-MANO Service Interfaces - Bad Request Response too Big + [Documentation] Test ID: 8.3.1.5.5 + ... Test title: GET NFV-MANO Service Interfaces - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get NFV-MANO Service Interfaces + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET NFV-MANO Service Interfaces with attribute-based filter + [Documentation] Test ID: 8.3.1.5.6 + ... Test title: GET NFV-MANO Service Interfaces with attribute-based filter + ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entities with attribute filters, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get NFV-MANO Service Interfaces with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + +GET NFV-MANO Service Interfaces with "all_fields" attribute selector + [Documentation] Test ID: 8.3.1.5.7 + ... Test title: GET NFV-MANO Service Interface with "all_fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "all_fields" attribute selector, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get NFV-MANO Service Interfaces with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + +GET NFV-MANO Service Interfaces with "exclude_default" attribute selector + [Documentation] Test ID: 8.3.1.5.8 + ... Test title: GET NFV-MANO Service Interfaces with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_default" attribute selector, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get NFV-MANO Service Interfaces with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + +GET NFV-MANO Service Interfaces with "fields" attribute selector + [Documentation] Test ID: 8.3.1.5.9 + ... Test title: GET NFV-MANO Service Interfaces with "fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with fields attribute selector, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get NFV-MANO Service Interfaces with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + +GET NFV-MANO Service Interfaces with "exclude_fields" attribute selector + [Documentation] Test ID: 8.3.1.5.10 + ... Test title: GET NFV-MANO Service Interfaces with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_fields" attribute selector, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get NFV-MANO Service Interfaces with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + +GET NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 8.3.1.5.11 + ... Test title: GET NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute selector, and perform the JSON schema validation of the HTTP response. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get NFV-MANO Service Interfaces with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ManoServiceInterfaces + +GET NFV-MANO Service Interfaces with Paged Response + [Documentation] Test ID: 8.3.1.5.12 + ... Test title: GET NFV-MANO Service Interfaces with Paged Response + ... Test objective: The objective is to query NFV-MANO Service Interface to get Paged Response. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get NFV-MANO Service Interfaces + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +PUT NFV-MANO Service Interfaces - Method not implemented + [Documentation] Test ID: 8.3.1.5.13 + ... Test title: PUT NFV-MANO Service Interfaces - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put request for NFV-MANO Service Interfaces + Check HTTP Response Status Code Is 405 + +PATCH NFV-MANO Service Interfaces - Method not implemented + [Documentation] Test ID: 8.3.1.5.14 + ... Test title: PATCH NFV-MANO Service Interfaces - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Patch request for NFV-MANO Service Interfaces + Check HTTP Response Status Code Is 405 + +DELETE NFV-MANO Service Interfaces - Method not implemented + [Documentation] Test ID: 8.3.1.5.15 + ... Test title: DELETE NFV-MANO Service Interfaces - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.10.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for NFV-MANO Service Interfaces Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot index 27fa56033..7ffefd8e7 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ Information Changed Notification ... Test title: Information Changed Notification ... Test objective: The objective is to test that Information Changed Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for information availability notification is available in the NFV-MANO. - ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Change State Notification ... Test title: Change State Notification ... Test objective: The objective is to test that Change State Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for change state notification is available in the NFV-MANO. - ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot index b7548e64e..7e00c3d89 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot @@ -1,114 +1,114 @@ -*** Setting *** -Resource environment/variables.txt -Suite Setup Create Sessions -Suite Teardown Terminate All Processes kill=true -Library MockServerLibrary -Library Process -Library OperatingSystem -Library BuiltIn -Library Collections -Library String - - -*** Test Cases *** -Information Changed Notification - [Documentation] Test ID: 8.3.1.12.1 - ... Test title: Information Changed Notification - ... Test objective: The objective is to test the dispatch of Information Changed Notification when configuration or information is changed in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. - ... Pre-conditions: A subscription for information availability notifications is available in the NFV-MANO. - ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Trigger the availability of Information Changed Notification (external action) - Check Information Changed Notification Available Http POST Request Body Json Schema Is InformationChangedNotification - Check Information Changed Notification Available Http POST Request Body notificationType attribute Is InformationChangedNotification - -Change State Notification - [Documentation] Test ID: 8.3.1.12.2 - ... Test title: Change State Notification - ... Test objective: The objective is to test the dispatch of Change State Notification when state changes of the NFV-MANO functional entity and its managed objects, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. - ... Pre-conditions: A performance job is created, and a state change subscription is available in the NFV-MANO. - ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANOz - ... Applicability: none - ... Post-Conditions: none - Trigger the cross of Change State (external action) - Check Change State Notification Http POST Request Body Json Schema Is ChangeStateNotification - Check Change State Notification Http POST Request Body notificationType attribute Is ChangeStateNotification - - -*** Keywords *** -Trigger the availability of Information Changed Notification (external action) - #do nothing - Log do nothing - -Trigger the cross of Change State (external action) - #do nothing - Log do nothing - -Check Information Changed Notification Available Http POST Request Body Json Schema Is - [Arguments] ${element} - ${schema}= Get File schemas/${element}.schema.json - Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} - -Check Information Changed Notification Available Http POST Request Body notificationType attribute Is - [Arguments] ${type} - Configure Notification Information Changed Notification Available Handler ${callback_endpoint_fwd} ${type} - Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} - Clear Requests ${callback_endpoint} - Clear Requests ${callback_endpoint_fwd} - -Check Change State Notification Http POST Request Body Json Schema Is - [Arguments] ${element} - ${schema}= Get File schemas/${element}.schema.json - Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} - - -Check Change State Notification Http POST Request Body notificationType attribute Is - [Arguments] ${type} - Configure Notification State Crossed Handler ${callback_endpoint_fwd} ${type} - Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} - Clear Requests ${callback_endpoint} - Clear Requests ${callback_endpoint_fwd} - - -Check Change State Notification Http POST Request Body changeType attribute Is - [Arguments] ${type} - #do nothing - Log do nothing - - -Configure Notification Information Changed Notification Available Handler - [Arguments] ${endpoint} ${type} - ${json}= evaluate {} - set to dictionary ${json} notificationType ${type} - ${BODY}= evaluate json.dumps(${json}) json - Log Creating mock request and response to handle status notification - &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - Set Global Variable ${notification_request} ${req} - &{notification_response}= Create Mock Response status_code=204 - Create Mock Expectation ${notification_request} ${notification_response} - -Configure Notification State Crossed Handler - [Arguments] ${endpoint} ${type} - ${json}= evaluate {} - set to dictionary ${json} notificationType ${type} - ${BODY}= evaluate json.dumps(${json}) json - Log Creating mock request and response to handle status notification - &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - Set Global Variable ${notification_request} ${req} - &{notification_response}= Create Mock Response status_code=204 - Create Mock Expectation ${notification_request} ${notification_response} - -Configure Notification Forward - [Arguments] ${schema} ${endpoint} ${endpoint_fwd} - Log Creating mock Http POST forward to handle ${schema} - &{notification_tmp}= Create Mock Request Matcher POST ${endpoint} body_type="JSON_SCHEMA" body=${schema} - &{notification_fwd}= Create Mock Http Forward ${endpoint_fwd} - Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} - -Create Sessions - Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance - Wait For Process handle=mockInstance timeout=5s on_timeout=continue - Create Mock Session ${callback_uri}:${callback_port} +*** Setting *** +Resource environment/variables.txt +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true +Library MockServerLibrary +Library Process +Library OperatingSystem +Library BuiltIn +Library Collections +Library String + + +*** Test Cases *** +Information Changed Notification + [Documentation] Test ID: 8.3.1.12.1 + ... Test title: Information Changed Notification + ... Test objective: The objective is to test the dispatch of Information Changed Notification when configuration or information is changed in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A subscription for information availability notifications is available in the NFV-MANO. + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Trigger the availability of Information Changed Notification (external action) + Check Information Changed Notification Available Http POST Request Body Json Schema Is InformationChangedNotification + Check Information Changed Notification Available Http POST Request Body notificationType attribute Is InformationChangedNotification + +Change State Notification + [Documentation] Test ID: 8.3.1.12.2 + ... Test title: Change State Notification + ... Test objective: The objective is to test the dispatch of Change State Notification when state changes of the NFV-MANO functional entity and its managed objects, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. + ... Pre-conditions: A performance job is created, and a state change subscription is available in the NFV-MANO. + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANOz + ... Applicability: none + ... Post-Conditions: none + Trigger the cross of Change State (external action) + Check Change State Notification Http POST Request Body Json Schema Is ChangeStateNotification + Check Change State Notification Http POST Request Body notificationType attribute Is ChangeStateNotification + + +*** Keywords *** +Trigger the availability of Information Changed Notification (external action) + #do nothing + Log do nothing + +Trigger the cross of Change State (external action) + #do nothing + Log do nothing + +Check Information Changed Notification Available Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + +Check Information Changed Notification Available Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification Information Changed Notification Available Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + +Check Change State Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + + +Check Change State Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification State Crossed Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + + +Check Change State Notification Http POST Request Body changeType attribute Is + [Arguments] ${type} + #do nothing + Log do nothing + + +Configure Notification Information Changed Notification Available Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Configure Notification State Crossed Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Configure Notification Forward + [Arguments] ${schema} ${endpoint} ${endpoint_fwd} + Log Creating mock Http POST forward to handle ${schema} + &{notification_tmp}= Create Mock Request Matcher POST ${endpoint} body_type="JSON_SCHEMA" body=${schema} + &{notification_fwd}= Create Mock Http Forward ${endpoint_fwd} + Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} + +Create Sessions + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot index e2c01b989..0e84092dc 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot @@ -1,239 +1,239 @@ -** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library JSONLibrary -Library OperatingSystem -Resource NFVMANOCimKeywords.robot -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library MockServerLibrary - -*** Test Cases *** -POST Peer Entity - [Documentation] Test ID: 8.3.1.8.1 - ... Test title: POST Peer Entity - ... Test objective: The objective is to creates in the producer NFV-MANO functional entity a new peer entity resource which contains configuration and information with regards to the peer functional entity and perform the JSON schema validation of the returned job data structure. - ... Pre-conditions: none - ... Reference: clause 5.5.13.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: Peer Entity is created - Send Post request for Peer Entity - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is PeerEntity - Check HTTP Response Header Contains Location - Check Postcondition Peer Entity Resource is created - -GET Peer Entities - [Documentation] Test ID: 8.3.1.8.2 - ... Test title: GET Peer Entities - ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities, and perform the JSON schema validation of the returned job data structure. - ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Peer Entities - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PeerEntities - -GET Peer Entities - invalid attribute-based filter - [Documentation] Test ID: 8.3.1.8.3 - ... Test title: GET Peer Entities - invalid attribute-based filter - ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Peer Entities with invalid filter - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET Peer Entities - invalid attribute selector - [Documentation] Test ID: 8.3.1.8.4 - ... Test title: GET Peer Entities - invalid attribute selector - ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Peer Entities with invalid selector - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET Peer Entities - Bad Request Response too Big - [Documentation] Test ID: 8.3.1.8.5 - ... Test title: GET Peer Entities - Bad Request Response too Big - ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Peer Entities - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET Peer Entities with attribute-based filter - [Documentation] Test ID: 8.3.1.8.6 - ... Test title: GET Peer Entities with attribute-based filter - ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with attribute filters, and perform the JSON schema validation of the returned job data structure. - ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Peer Entities with filter - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PeerEntities - -GET Peer Entities with "all_fields" attribute selector - [Documentation] Test ID: 8.3.1.8.7 - ... Test title: GET Peer Entities with "all_fields" attribute selector - ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "all_fields" attribute selector, and perform the JSON schema validation of the returned job data structure. - ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Peer Entities with all_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PeerEntities - -GET Peer Entities with "exclude_default" attribute selector - [Documentation] Test ID: 8.3.1.8.8 - ... Test title: GET Peer Entities with "exclude_default" attribute selector - ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_default" attribute selector, and perform the JSON schema validation of the returned job data structure. - ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Peer Entities with all_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PeerEntities - -GET Peer Entities with "fields" attribute selector - [Documentation] Test ID: 8.3.1.8.9 - ... Test title: GET Peer Entities with "fields" attribute selector - ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with fields attribute selector, and perform the JSON schema validation of the returned job data structure. - ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Peer Entities with fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PeerEntities - -GET Peer Entities with "exclude_fields" attribute selector - [Documentation] Test ID: 8.3.1.8.10 - ... Test title: GET Peer Entities with "exclude_fields" attribute selector - ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_fields" attribute selector, and perform the JSON schema validation of the returned job data structure. - ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Peer Entities with exclude_fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PeerEntities - -GET Peer Entities with "exclude_default" and "fields" attribute selector - [Documentation] Test ID: 8.3.1.8.11 - ... Test title: GET Peer Entities with "exclude_default" and "fields" attribute selector - ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_default" and "fields" attribute selector, and perform the JSON schema validation of the returned job data structure. - ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Peer Entity with exclude_default and fields attribute selector - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PeerEntities - -GET Peer Entity with Paged Response - [Documentation] Test ID: 8.3.1.8.12 - ... Test title: GET Peer Entity with Paged Response - ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities to get Paged Response. - ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Peer Entities - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Contains Link - -Get Peer Entity with malformed authorization token - [Documentation] Test ID: 8.3.1.8.13 - ... Test title: Get Peer Entity with malformed authorization token - ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using malformed authorization token. - ... Pre-conditions: none - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. - ... Post-Conditions: none - GET Peer Entities with malformed authorization token - Check HTTP Response Status Code Is 401 - -Get Peer Entity without authorization token - [Documentation] Test ID: 8.3.1.8.14 - ... Test title: Get Peer Entity without authorization token - ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when omitting the authorization token. - ... Pre-conditions: none - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. - ... Post-Conditions: none - GET Peer Entities without authorization token - Check HTTP Response Status Code Is 401 - -GET information about multiple alarms with expired or revoked authorization token - [Documentation] Test ID: 8.3.1.8.15 - ... Test title: GET information about multiple alarms with expired or revoked authorization token - ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using expired or revoked authorization token. - ... Pre-conditions: none - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. - ... Post-Conditions: none - GET Peer Entities with expired or revoked authorization token - Check HTTP Response Status Code Is 401 - -PUT Peer Entities - Method not implemented - [Documentation] Test ID: 8.3.1.8.16 - ... Test title: PUT Peer Entities - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.13.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Put request for Peer Entities - Check HTTP Response Status Code Is 405 - -PATCH Peer Entities - Method not implemented - [Documentation] Test ID: 8.3.1.8.17 - ... Test title: PATCH Peer Entities - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.13.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Patch request for Peer Entities - Check HTTP Response Status Code Is 405 - -DELETE Peer Entities - Method not implemented - [Documentation] Test ID: 8.3.1.8.18 - ... Test title: DELETE Peer Entities - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemeted. - ... Pre-conditions: none - ... Reference: clause 5.5.13.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete request for Peer Entities - Check HTTP Response Status Code Is 405 +** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Resource NFVMANOCimKeywords.robot +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library MockServerLibrary + +*** Test Cases *** +POST Peer Entity + [Documentation] Test ID: 8.3.1.8.1 + ... Test title: POST Peer Entity + ... Test objective: The objective is to creates in the producer NFV-MANO functional entity a new peer entity resource which contains configuration and information with regards to the peer functional entity and perform the JSON schema validation of the returned job data structure. + ... Pre-conditions: none + ... Reference: clause 5.5.13.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: Peer Entity is created + Send Post request for Peer Entity + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PeerEntity + Check HTTP Response Header Contains Location + Check Postcondition Peer Entity Resource is created + +GET Peer Entities + [Documentation] Test ID: 8.3.1.8.2 + ... Test title: GET Peer Entities + ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities, and perform the JSON schema validation of the returned job data structure. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Peer Entities + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + +GET Peer Entities - invalid attribute-based filter + [Documentation] Test ID: 8.3.1.8.3 + ... Test title: GET Peer Entities - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Peer Entities with invalid filter + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Peer Entities - invalid attribute selector + [Documentation] Test ID: 8.3.1.8.4 + ... Test title: GET Peer Entities - invalid attribute selector + ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Peer Entities with invalid selector + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Peer Entities - Bad Request Response too Big + [Documentation] Test ID: 8.3.1.8.5 + ... Test title: GET Peer Entities - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Peer Entities + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Peer Entities with attribute-based filter + [Documentation] Test ID: 8.3.1.8.6 + ... Test title: GET Peer Entities with attribute-based filter + ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with attribute filters, and perform the JSON schema validation of the returned job data structure. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Peer Entities with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + +GET Peer Entities with "all_fields" attribute selector + [Documentation] Test ID: 8.3.1.8.7 + ... Test title: GET Peer Entities with "all_fields" attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "all_fields" attribute selector, and perform the JSON schema validation of the returned job data structure. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Peer Entities with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + +GET Peer Entities with "exclude_default" attribute selector + [Documentation] Test ID: 8.3.1.8.8 + ... Test title: GET Peer Entities with "exclude_default" attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_default" attribute selector, and perform the JSON schema validation of the returned job data structure. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Peer Entities with all_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + +GET Peer Entities with "fields" attribute selector + [Documentation] Test ID: 8.3.1.8.9 + ... Test title: GET Peer Entities with "fields" attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with fields attribute selector, and perform the JSON schema validation of the returned job data structure. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Peer Entities with fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + +GET Peer Entities with "exclude_fields" attribute selector + [Documentation] Test ID: 8.3.1.8.10 + ... Test title: GET Peer Entities with "exclude_fields" attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_fields" attribute selector, and perform the JSON schema validation of the returned job data structure. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Peer Entities with exclude_fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + +GET Peer Entities with "exclude_default" and "fields" attribute selector + [Documentation] Test ID: 8.3.1.8.11 + ... Test title: GET Peer Entities with "exclude_default" and "fields" attribute selector + ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_default" and "fields" attribute selector, and perform the JSON schema validation of the returned job data structure. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Peer Entity with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PeerEntities + +GET Peer Entity with Paged Response + [Documentation] Test ID: 8.3.1.8.12 + ... Test title: GET Peer Entity with Paged Response + ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities to get Paged Response. + ... Pre-conditions: At least one Peer Entity is already created. + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Peer Entities + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +Get Peer Entity with malformed authorization token + [Documentation] Test ID: 8.3.1.8.13 + ... Test title: Get Peer Entity with malformed authorization token + ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using malformed authorization token. + ... Pre-conditions: none + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Peer Entities with malformed authorization token + Check HTTP Response Status Code Is 401 + +Get Peer Entity without authorization token + [Documentation] Test ID: 8.3.1.8.14 + ... Test title: Get Peer Entity without authorization token + ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when omitting the authorization token. + ... Pre-conditions: none + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Peer Entities without authorization token + Check HTTP Response Status Code Is 401 + +GET information about multiple alarms with expired or revoked authorization token + [Documentation] Test ID: 8.3.1.8.15 + ... Test title: GET information about multiple alarms with expired or revoked authorization token + ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using expired or revoked authorization token. + ... Pre-conditions: none + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. + ... Post-Conditions: none + GET Peer Entities with expired or revoked authorization token + Check HTTP Response Status Code Is 401 + +PUT Peer Entities - Method not implemented + [Documentation] Test ID: 8.3.1.8.16 + ... Test title: PUT Peer Entities - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.13.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put request for Peer Entities + Check HTTP Response Status Code Is 405 + +PATCH Peer Entities - Method not implemented + [Documentation] Test ID: 8.3.1.8.17 + ... Test title: PATCH Peer Entities - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.13.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Patch request for Peer Entities + Check HTTP Response Status Code Is 405 + +DELETE Peer Entities - Method not implemented + [Documentation] Test ID: 8.3.1.8.18 + ... Test title: DELETE Peer Entities - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemeted. + ... Pre-conditions: none + ... Reference: clause 5.5.13.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete request for Peer Entities + Check HTTP Response Status Code Is 405 diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot index 2f2d2a974..9ff981dd1 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot @@ -1,174 +1,174 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Resource NFVMANOCimKeywords.robot -Library MockServerLibrary -Library Process -Suite Setup Create Sessions -Suite Teardown Terminate All Processes kill=true - -*** Test Cases *** -GET all Subscriptions - [Documentation] Test ID: 8.3.1.10.1 - ... Test title: GET all Subscriptions - ... Test objective: The objective is to test the retrieval list of active subscriptions of API consumer and perform a JSON schema validation of the returned subscriptions data structure. - ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get all Subscriptions - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is CimSubscriptions - -GET Subscriptions with attribute-based filter - [Documentation] Test ID: 8.3.1.10.2 - ... Test title: GET Subscriptions with attribute-based filter - ... Test objective: The objective is to test the retrieval of active subscriptions list of API consumer using attribute-based filter and perform a JSON schema validation of the collected indicators data structure. - ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Subscriptions with attribute-based filters - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is CimSubscriptions - -GET Subscriptions with Paged Response - [Documentation] Test ID: 8.3.1.10.3 - ... Test title: GET Subscriptions with Paged Response - ... Test objective: The objective is to query information of active subscriptions list to of API consumer to get Paged Response. - ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: - ... Post-Conditions: - Get all Subscriptions - Check HTTP Response Status Code Is 200 - Check HTTP Response Header Contains Link - -GET Subscriptions - invalid attribute-based filter - [Documentation] Test ID: 8.3.1.10.4 - ... Test title: GET Subscriptions - invalid attribute-based filter - ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get Subscriptions with invalid attribute-based filters - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - - -GET Subscriptions - Bad Request Response too Big - [Documentation] Test ID: 8.3.1.10.5 - ... Test title: GET Subscriptions - Bad Request Response too Big - ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get all Subscriptions - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET Subscriptions - invalid resource endpoint - [Documentation] Test ID: 8.3.1.10.6 - ... Test title: GET Subscriptions - invalid resource endpoint - ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when using invalid resource endpoint. - ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Get all Subscriptions - Check HTTP Response Status Code Is 404 - -Create new Subscription - [Documentation] Test ID: 8.3.1.10.7 - ... Test title: Create new Subscription - ... Test objective: The objective is to test the creation of a new subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: none - ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: The subscription is successfully set and it matches the issued subscription - Send Post Request for Subscription - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is CimSubscription - Check HTTP Response Body CimSubscription Attributes Values Match the Issued Subscription - Check Postcondition Subscription Is Set - - -Create request for duplicated Subscription not creating duplicated subscriptions - [Tags] no-duplicated-subs - [Documentation] Test ID: 8.3.1.10.8 - ... Test title: Create request for duplicated Subscription not creating duplicated subscriptions - ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned - ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: The NFV-MANO does not support the creation of duplicated subscriptions - ... Post-Conditions: The existing Subscription returned is available in the NFV-MANO - Send Post Request for Duplicated Subscription - Check HTTP Response Status Code Is 303 - Check HTTP Response Body Is Empty - Check HTTP Response Header Contains Location - Check Postcondition Subscription Resource Returned in Location Header Is Available - -Create request for duplicated Subscription creating duplicated subscriptions - [Tags] duplicated-subs - [Documentation] Test ID: 8.3.1.10.9 - ... Test title: Create request for duplicated Subscription creating duplicated subscriptions - ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure - ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: The NFV-MANO supports the creation of duplicated subscriptions - ... Post-Conditions: The duplicated subscription is successfully set and it matches the issued subscription - Send Post Request for Duplicated Subscription - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body CimSubscription Attributes Values Match the Issued Subscription - Check Postcondition Subscription Is Set - -PUT Subscriptions - Method not implemented - [Documentation] Test ID: 8.3.1.10.10 - ... Test title: PUT Subscriptions - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions - ... Pre-conditions: none - ... Reference: clause 5.5.4.3.3 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Put Request for Subscriptions - Check HTTP Response Status Code Is 405 - -PATCH Subscriptions - Method not implemented - [Documentation] Test ID: 8.3.1.10.11 - ... Test title: PATCH Subscriptions - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions - ... Pre-conditions: none - ... Reference: clause 5.5.4.3.4 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Patch Request for Subscriptions - Check HTTP Response Status Code Is 405 - -DELETE Subscriptions - Method not implemented - [Documentation] Test ID: 8.3.1.10.12 - ... Test title: DELETE Subscriptions - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions - ... Pre-conditions: none - ... Reference: clause 5.5.4.3.5 - ETSI GS NFV-SOL 009 [6] V3.3.1 - ... Config ID: Config_prod_NFV-MANO - ... Applicability: none - ... Post-Conditions: none - Send Delete Request for Subscriptions - Check HTTP Response Status Code Is 405 +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Resource NFVMANOCimKeywords.robot +Library MockServerLibrary +Library Process +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true + +*** Test Cases *** +GET all Subscriptions + [Documentation] Test ID: 8.3.1.10.1 + ... Test title: GET all Subscriptions + ... Test objective: The objective is to test the retrieval list of active subscriptions of API consumer and perform a JSON schema validation of the returned subscriptions data structure. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get all Subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CimSubscriptions + +GET Subscriptions with attribute-based filter + [Documentation] Test ID: 8.3.1.10.2 + ... Test title: GET Subscriptions with attribute-based filter + ... Test objective: The objective is to test the retrieval of active subscriptions list of API consumer using attribute-based filter and perform a JSON schema validation of the collected indicators data structure. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Subscriptions with attribute-based filters + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CimSubscriptions + +GET Subscriptions with Paged Response + [Documentation] Test ID: 8.3.1.10.3 + ... Test title: GET Subscriptions with Paged Response + ... Test objective: The objective is to query information of active subscriptions list to of API consumer to get Paged Response. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: + ... Post-Conditions: + Get all Subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Link + +GET Subscriptions - invalid attribute-based filter + [Documentation] Test ID: 8.3.1.10.4 + ... Test title: GET Subscriptions - invalid attribute-based filter + ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get Subscriptions with invalid attribute-based filters + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + + +GET Subscriptions - Bad Request Response too Big + [Documentation] Test ID: 8.3.1.10.5 + ... Test title: GET Subscriptions - Bad Request Response too Big + ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get all Subscriptions + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Subscriptions - invalid resource endpoint + [Documentation] Test ID: 8.3.1.10.6 + ... Test title: GET Subscriptions - invalid resource endpoint + ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when using invalid resource endpoint. + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Get all Subscriptions + Check HTTP Response Status Code Is 404 + +Create new Subscription + [Documentation] Test ID: 8.3.1.10.7 + ... Test title: Create new Subscription + ... Test objective: The objective is to test the creation of a new subscription and perform a JSON schema and content validation of the returned subscription data structure + ... Pre-conditions: none + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: The subscription is successfully set and it matches the issued subscription + Send Post Request for Subscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is CimSubscription + Check HTTP Response Body CimSubscription Attributes Values Match the Issued Subscription + Check Postcondition Subscription Is Set + + +Create request for duplicated Subscription not creating duplicated subscriptions + [Tags] no-duplicated-subs + [Documentation] Test ID: 8.3.1.10.8 + ... Test title: Create request for duplicated Subscription not creating duplicated subscriptions + ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO does not support the creation of duplicated subscriptions + ... Post-Conditions: The existing Subscription returned is available in the NFV-MANO + Send Post Request for Duplicated Subscription + Check HTTP Response Status Code Is 303 + Check HTTP Response Body Is Empty + Check HTTP Response Header Contains Location + Check Postcondition Subscription Resource Returned in Location Header Is Available + +Create request for duplicated Subscription creating duplicated subscriptions + [Tags] duplicated-subs + [Documentation] Test ID: 8.3.1.10.9 + ... Test title: Create request for duplicated Subscription creating duplicated subscriptions + ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure + ... Pre-conditions: At least one subscription is available in the NFV-MANO. + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: The NFV-MANO supports the creation of duplicated subscriptions + ... Post-Conditions: The duplicated subscription is successfully set and it matches the issued subscription + Send Post Request for Duplicated Subscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is PmSubscription + Check HTTP Response Body CimSubscription Attributes Values Match the Issued Subscription + Check Postcondition Subscription Is Set + +PUT Subscriptions - Method not implemented + [Documentation] Test ID: 8.3.1.10.10 + ... Test title: PUT Subscriptions - Method not implemented + ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions + ... Pre-conditions: none + ... Reference: clause 5.5.4.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Put Request for Subscriptions + Check HTTP Response Status Code Is 405 + +PATCH Subscriptions - Method not implemented + [Documentation] Test ID: 8.3.1.10.11 + ... Test title: PATCH Subscriptions - Method not implemented + ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions + ... Pre-conditions: none + ... Reference: clause 5.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Patch Request for Subscriptions + Check HTTP Response Status Code Is 405 + +DELETE Subscriptions - Method not implemented + [Documentation] Test ID: 8.3.1.10.12 + ... Test title: DELETE Subscriptions - Method not implemented + ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions + ... Pre-conditions: none + ... Reference: clause 5.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send Delete Request for Subscriptions + Check HTTP Response Status Code Is 405 -- GitLab From ec31cd7032d907655efccf6db1e7554e20a8b546 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Fri, 11 Jun 2021 12:48:02 +0200 Subject: [PATCH 547/580] updated reference number to SOL011 --- .../IndividualSubscription.robot | 12 +++---- .../NotificationEndpoint.robot | 2 +- .../Notifications.robot | 4 +-- .../Subscriptions.robot | 32 +++++++++---------- .../Grants.robot | 12 +++---- .../IndividualGrant.robot | 12 +++---- 6 files changed, 37 insertions(+), 37 deletions(-) diff --git a/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot b/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot index 58cb22b51..321078c10 100644 --- a/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot +++ b/SOL011/NSInstanceUsageNotification-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 8.5.4.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.4.3.1 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Information about an individual subscription - Successful ... Test title: GET Information about an individual subscription - Successful ... Test objective: The objective is to test the retrieval of NS instance usage notification subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: An NS instance is instantiated. At least one NS instance usage notification subscription is available in the NFVO. - ... Reference: Clause 8.5.4.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.4.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 8.5.4.3.3 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.4.3.3 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 8.5.4.3.4 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.4.3.4 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that DELETE method deletes an individual subscription ... Pre-conditions: At least one instance usage notification subscription is available in the NFVO - ... Reference: Clause 8.5.4.3.5 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.4.3.5 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance usage notification subscription is not available anymore on NFVO @@ -74,7 +74,7 @@ GET Information about an individual subscription - NOT FOUND ... Test title: GET Information about an individual subscription - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual NS instance usage notification subscription fails when using an invalid resource identifier. ... Pre-conditions: An NS instance is instantiated. At least one NS instance usage notification subscription is available in the NFVO. - ... Reference: Clause 8.5.4.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.4.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot b/SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot index 3aa2734ad..2eb57060f 100644 --- a/SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot +++ b/SOL011/NSInstanceUsageNotification-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ NS Instance Usage Notification ... Test title: NS Instance Usage Notification ... Test objective: The objective is to test that NS Instance Usage Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for instance usage notification is available in the NFVO. - ... Reference: Clause 8.5.5.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.5.3.1 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL011/NSInstanceUsageNotification-API/Notifications.robot b/SOL011/NSInstanceUsageNotification-API/Notifications.robot index d23921db3..0d0334847 100644 --- a/SOL011/NSInstanceUsageNotification-API/Notifications.robot +++ b/SOL011/NSInstanceUsageNotification-API/Notifications.robot @@ -13,7 +13,7 @@ NS Instance Usage START Notification ... Test title: NS Instance Usage START Notification ... Test objective: The objective is to test the dispatch of NS Instance Usage Start Notification when the usage of an NS instance is started, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for NS instance usage notification is available in the NFVO. - ... Reference: Clause 8.5.5.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.5.3.1 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ NS Instance Usage END Notification ... Test title: NS Instance Usage END Notification ... Test objective: The objective is to test the dispatch of NS Instance Usage End Notification when the usage of an NS instance is ended, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for NS instance usage notification is available in the NFVO. - ... Reference: Clause 8.5.5.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.5.3.1 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot index b6986371d..45b83dff1 100644 --- a/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot +++ b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot @@ -12,7 +12,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The objective is to test that POST method creates a subscription ... Pre-conditions: none - ... Reference: Clause 8.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.1 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Subscription is created in the NFVO @@ -28,7 +28,7 @@ POST Create a new Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The objective is to test that POST method creates a duplicate subscription ... Pre-conditions: A subscription shall already exist - ... Reference: Clause 8.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.1 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: Duplication supported by NFVO-C ... Post-Conditions: Duplicate subscription is created in the NFVO @@ -44,7 +44,7 @@ POST Create a new Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The objective is to test that POST method cannot create a duplicate subscription ... Pre-conditions: A subscription shall already exist - ... Reference: Clause 8.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.1 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: Duplication NOT supported by NFVO-C ... Post-Conditions: Duplicate subscription is not created in the NFVO @@ -59,7 +59,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is to test that GET method retrieves the list of existing subscriptions ... Pre-conditions: none - ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ GET Subscription - Filter ... Test title: GET Subscription - Filter ... Test objective: The objective is GET the list of active subscriptions using a filter ... Pre-conditions: none - ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is GET the list of active subscriptions using an invalid filter ... Pre-conditions: none - ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of active subscriptions list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ GET subscriptions with "all_fields" attribute selector ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "all_fields" attribute selector ... Pre-conditions: none - ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_default"s attribute selector ... Pre-conditions: none - ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -137,7 +137,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "fields" attribute selector ... Pre-conditions: none - ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -150,7 +150,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_fields" attribute selector ... Pre-conditions: none - ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -163,7 +163,7 @@ GET Subscriptions as Paged Response ... Test title: GET Subscriptions as Paged Response ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions as paged response. ... Pre-conditions: none - ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -176,7 +176,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a NS instance usage subscription ... Pre-conditions: none - ... Reference: Clause 8.5.3.3.3 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.3 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -188,7 +188,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a NS instance usage subscription ... Pre-conditions: none - ... Reference: Clause 8.5.3.3.4 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.4 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -200,7 +200,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method cannot delete a NS instance usage subscription ... Pre-conditions: none - ... Reference: Clause 8.5.3.3.5 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.5 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Subscriptions are not deleted @@ -213,7 +213,7 @@ GET subscriptions with "exclude_default" and "fields" attribute selector ... Test title: GET subscriptions with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with "exclude_default" and "fields" attribute selector ... Pre-conditions: - ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 8.5.3.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL011/NSLifecycleOperationGranting-API/Grants.robot b/SOL011/NSLifecycleOperationGranting-API/Grants.robot index c8d249123..61e4353b8 100644 --- a/SOL011/NSLifecycleOperationGranting-API/Grants.robot +++ b/SOL011/NSLifecycleOperationGranting-API/Grants.robot @@ -12,7 +12,7 @@ Requests a grant for a particular NS lifecycle operation ... Test title: Requests a grant for a particular NS lifecycle operation ... Test objective: The objective is to request a grant for a particular NS lifecycle operation and perform a JSON schema validation on the returned grant data structure ... Pre-conditions: - ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO can decide immediately what to respond to a grant request ... Post-Conditions: The grant information is available to the NFVO. @@ -27,7 +27,7 @@ Requests a grant for a particular NS lifecycle operation - Forbidden ... Test title: Requests a grant for a particular NS lifecycle operation - Forbidden ... Test objective: The objective is to request a grant for a particular NS lifecycle operation and the grant is rejected ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.1 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Grants - Method not implemented ... Test title: GET Grants - Method not implemented ... Test objective: The objective is to test that GET method is not allowed for Lifecycle operation granting ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Grants - Method not implemented ... Test title: PUT Grants - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Lifecycle operation granting ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.3 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.3 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Grants - Method not implemented ... Test title: PATCH Grants - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Lifecycle operation granting ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.4 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.4 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Grants - Method not implemented ... Test title: DELETE Grants - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Lifecycle operation granting ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.5 - ETSI GS NFV-SOL 011 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.5 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Resources are not deleted diff --git a/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot index 9eeb0b2a8..dcc0f4795 100644 --- a/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL011/NSLifecycleOperationGranting-API/IndividualGrant.robot @@ -15,7 +15,7 @@ POST Individual Grant - Method not implemented ... Test title: POST Individual Grant - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Lifecycle operation granting ... Pre-conditions: none - ... Reference: Clause 7.5.4.3.1 - ETSI GS NFV-SOL 011 [1] v3.3.1 + ... Reference: Clause 7.5.4.3.1 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET an individual grant - Successful ... Test title: GET an individual grant - Successful ... Test objective: The objective is to retrieve a grant for a particular NS Lifecycle Operation. ... Pre-conditions: The grant information is available to the NFVO - ... Reference: Clause 7.5.4.3.2 - ETSI GS NFV-SOL 011 [1] v3.3.1 + ... Reference: Clause 7.5.4.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ PUT an individual grant - Method not implemented ... Test title: PUT an individual grant - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Lifecycle operation granting ... Pre-conditions: none - ... Reference: Clause 7.5.4.3.3 - ETSI GS NFV-SOL 011 [1] v3.3.1 + ... Reference: Clause 7.5.4.3.3 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PATCH an individual grant - Method not implemented ... Test title: PATCH an individual grant - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Lifecycle operation granting ... Pre-conditions: none - ... Reference: Clause 7.5.4.3.4 - ETSI GS NFV-SOL 011 [1] v3.3.1 + ... Reference: Clause 7.5.4.3.4 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ DELETE an individual grant - Method not implemented ... Test title: DELETE an individual grant - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Lifecycle operation granting ... Pre-conditions: none - ... Reference: Clause 7.5.4.3.5 - ETSI GS NFV-SOL 011 [1] v3.3.1 + ... Reference: Clause 7.5.4.3.5 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ GET an individual grant - NOT FOUND ... Test title: GET an individual grant - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual grant for a particular Lifecycle operation fails when using an invalid resource identifier ... Pre-conditions: The grant information is available to the NFVO - ... Reference: Clause 7.5.4.3.2 - ETSI GS NFV-SOL 011 [1] v3.3.1 + ... Reference: Clause 7.5.4.3.2 - ETSI GS NFV-SOL 011 [8] v3.3.1 ... Config ID: Config_prod_NFVO ... Applicability: Invalid resource identifier is used ... Post-Conditions: none -- GitLab From f06df0c7acacd076d815832f23808aaa538a36c3 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 14 Jun 2021 17:42:25 +0200 Subject: [PATCH 548/580] updated READMEs and added README for SOL011 and SOL012 --- README.md | 6 +++--- SOL002/README.md | 9 +-------- SOL003/README.md | 9 +-------- SOL005/README.md | 9 +-------- SOL009/README.md | 7 ------- SOL011/README.md | 37 +++++++++++++++++++++++++++++++++++++ SOL012/README.md | 6 ++++++ 7 files changed, 49 insertions(+), 34 deletions(-) create mode 100644 SOL011/README.md create mode 100644 SOL012/README.md diff --git a/README.md b/README.md index 4d80b0f22..a2c16f5a6 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ This repository hosts the NFV API Conformance test specification for the APIs defined in ETSI NFV GS [SOL002](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf), [SOL003](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf), [SOL005](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_NFV-SOL005v030301p.pdf), -[SOL009](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_NFV-SOL009v030301p.pdf), -[SOL011](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_NFV-SOL011v030301p.pdf), in their versions -v3.3.1 and [SOL012](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.04.01_60/gs_NFV-SOL012v030401p.pdf) in itis version v3.4.1 +[SOL009](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/009/03.03.01_60/gs_NFV-SOL009v030301p.pdf), +[SOL011](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/011/03.03.01_60/gs_NFV-SOL011v030301p.pdf), in their versions +v3.3.1 and [SOL012](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/012/03.04.01_60/gs_NFV-SOL012v030401p.pdf) in itis version v3.4.1 More information and download is available at [DGS/NFV-TST010ed331](https://portal.etsi.org/webapp/WorkProgram/Report_WorkItem.asp?WKI_ID=58931). diff --git a/SOL002/README.md b/SOL002/README.md index 114399fcb..a530db164 100644 --- a/SOL002/README.md +++ b/SOL002/README.md @@ -2,12 +2,5 @@ This folder includes the NFV API conformance test descriptions for NFV SOL002 APIs. -The reference spec version is v2.7.1: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/02.07.01_60/gs_NFV-SOL002v020701p.pdf +The reference spec version is v3.3.1: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf -## License - -Any software in this repository is released under the ETSI Software License. -Licensing information is available in the attached LICENSE file. - - -Copyright (c) ETSI 2018 diff --git a/SOL003/README.md b/SOL003/README.md index 32e5d14a6..193d0675e 100644 --- a/SOL003/README.md +++ b/SOL003/README.md @@ -2,12 +2,5 @@ This folder includes the NFV API conformance test descriptions for NFV SOL003 APIs. -The reference spec version is v2.7.1: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.07.01_60/gs_NFV-SOL003v020701p.pdf +The reference spec version is v3.3.1: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf -## License - -Any software in this repository is released under the ETSI Software License. -Licensing information is available in the attached LICENSE file. - - -Copyright (c) ETSI 2018 diff --git a/SOL005/README.md b/SOL005/README.md index 0b08282d2..995ec9e11 100644 --- a/SOL005/README.md +++ b/SOL005/README.md @@ -2,12 +2,5 @@ This folder includes the NFV API conformance test descriptions for NFV SOL005 APIs. -The reference spec version is v2.7.1: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.07.01_60/gs_NFV-SOL005v020701p.pdf +The reference spec version is v3.3.1: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_NFV-SOL005v030301p.pdf -## License - -Any software in this repository is released under the ETSI Software License. -Licensing information is available in the attached LICENSE file. - - -Copyright (c) ETSI 2018 diff --git a/SOL009/README.md b/SOL009/README.md index 8554b3f0e..bb1592d77 100644 --- a/SOL009/README.md +++ b/SOL009/README.md @@ -4,10 +4,3 @@ This folder includes the NFV API conformance test descriptions for NFV SOL009 AP The reference spec version is v3.3.1: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/009/03.03.01_60/gs_NFV-SOL009v030301p.pdf -## License - -Any software in this repository is released under the ETSI Software License. -Licensing information is available in the attached LICENSE file. - - -Copyright (c) ETSI 2018 diff --git a/SOL011/README.md b/SOL011/README.md new file mode 100644 index 000000000..dc212cbbc --- /dev/null +++ b/SOL011/README.md @@ -0,0 +1,37 @@ +# NFV API Tests + +This folder includes the NFV API conformance test descriptions for NFV SOL011 APIs. + +The reference spec version is v3.3.1: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/011/03.03.01_60/gs_NFV-SOL011v030301p.pdf + +## Applicable Tests +In addition to the SOL011 tests included in this folder for NS Instance Usage Notification API and NS Lifecycle Operation Granting API, the SOL011 tests make use of applicable SOL005 tests. +The following SOL011 interfaces reference the related SOL005 interfaces. + +### SOL011 NSD Management +The interface follows the provisions specified in the clause 5 of ETSI GS NFV-SOL 005 for the NSD management interface, except that the producer is NFVO-N and the consumer is NFVO-C. +The following SOL005 NSD Management conformance tests only are applicable to SOL011: + + +| Resource | Applicable Test IDs | +|---------------------------|-------------------------------| +| NS Descriptors | 5.3.1.1.1-10, 5.3.1.1.1-15-17 | +| Individual NS Descriptors | 5.3.1.2.1-2 | + + +### SOL011 NS Lifecycle Management +The interface follows the provisions specified in the clause 6 of ETSI GS NFV-SOL 005 [3] for the NS lifecycle management interface, except that the producer is NFVO-N and the consumer is NFVO-C. +All of the SOL005 NS Lifecycle Management tests are applicable to SOL011, except for the following ones: + +| Resource | Not Applicable Test IDs | +|---------------------------|-------------------------------| +| Update NS task | 5.3.2.5.1-6, 5.3.2.24.1 | + +### SOL011 NS Performance Management +The interface follows the provisions specified in the clause 7 of ETSI GS NFV-SOL 005 for the performance management interface, except that the producer is NFVO-N and the consumer is NFVO-C. +All of the SOL005 NS Performance Management tests are applicable to SOL011. + +### SOL011 NS Fault Management +The interface follows the provisions specified in the clause 8 of ETSI GS NFV-SOL 005 for the fault management interface, except that the producer is NFVO-N and the consumer is NFVO-C. +All of the SOL005 NS Fault Management tests are applicable to SOL011. + diff --git a/SOL012/README.md b/SOL012/README.md new file mode 100644 index 000000000..5c51a4086 --- /dev/null +++ b/SOL012/README.md @@ -0,0 +1,6 @@ +# NFV API Tests + +This folder includes the NFV API conformance test descriptions for NFV SOL012 APIs. + +The reference spec version is v3.3.1: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/012/03.04.01_60/gs_NFV-SOL012v030401p.pdf + -- GitLab From 703ce97c916c700600df5113bd54a03037a309c9 Mon Sep 17 00:00:00 2001 From: reinaortega Date: Wed, 16 Jun 2021 16:53:55 +0200 Subject: [PATCH 549/580] Some fixes: - update robot2doc in docker image if updates available - creating .docx only for XXXXX-dev and master branches Signed-off-by: reinaortega --- .jenkins.sh | 2 +- scripts/docker/Dockerfile | 2 ++ scripts/run-container.sh | 4 +++- scripts/validate.sh | 12 ++++++++---- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.jenkins.sh b/.jenkins.sh index 3bad4e68f..b10cf6c71 100644 --- a/.jenkins.sh +++ b/.jenkins.sh @@ -10,7 +10,7 @@ cd "$(dirname "$0")" run_dir="$(pwd)" bash ./scripts/build-container.sh -bash ./scripts/run-container.sh "${run_dir}" +bash ./scripts/run-container.sh "${run_dir}" "$(BRANCH_NAME)" ret=$? echo "Final validation result: $ret" diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile index 9f753df87..bf5f18016 100644 --- a/scripts/docker/Dockerfile +++ b/scripts/docker/Dockerfile @@ -35,6 +35,8 @@ ADD extensions /home/etsi/dev/robot/extensions RUN ls /home/etsi/dev/robot +#To avoid to use the cache when new commits are available +ADD "https://forge.etsi.org/rep/api/v4/projects/224/repository/branches/master" /tmp/devalidateCache RUN DEBIAN_FRONTED=noninteractive \ cd /home/etsi/dev/ \ diff --git a/scripts/run-container.sh b/scripts/run-container.sh index c0ea09699..febba94f4 100644 --- a/scripts/run-container.sh +++ b/scripts/run-container.sh @@ -7,8 +7,10 @@ mkdir -p build +echo "Using git branch $2" + docker run -v "$(pwd)/build:/home/etsi/dev/build" stf583-rf-validation:latest "bash" \ - -c "/home/etsi/dev/robot/scripts/validate.sh" + -c "/home/etsi/dev/robot/scripts/validate.sh" "$2" ret=$? diff --git a/scripts/validate.sh b/scripts/validate.sh index ae06e2ea0..1f1e2784e 100644 --- a/scripts/validate.sh +++ b/scripts/validate.sh @@ -17,11 +17,15 @@ for i in */*/*.robot ; do fi done -cd /home/etsi/dev/robot2doc/robot2doc +if [[ "$1" =~ .*-dev$ || "$1" == "master" ]]; then -mkdir -p /home/etsi/dev/build + cd /home/etsi/dev/robot2doc/robot2doc -python3 create_sols.py ../../robot 'local' ../../build -res2=$? + mkdir -p /home/etsi/dev/build + + python3 create_sols.py ../../robot 'local' ../../build + res2=$? +else res2=0 +fi exit $res && $res2 -- GitLab From ecc202078593f7ab9e186183ddc8b4a305a106c9 Mon Sep 17 00:00:00 2001 From: reinaortega Date: Wed, 16 Jun 2021 17:00:31 +0200 Subject: [PATCH 550/580] Fix using environment variable Signed-off-by: reinaortega --- .jenkins.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.jenkins.sh b/.jenkins.sh index b10cf6c71..042441043 100644 --- a/.jenkins.sh +++ b/.jenkins.sh @@ -10,7 +10,7 @@ cd "$(dirname "$0")" run_dir="$(pwd)" bash ./scripts/build-container.sh -bash ./scripts/run-container.sh "${run_dir}" "$(BRANCH_NAME)" +bash ./scripts/run-container.sh "${run_dir}" "${BRANCH_NAME}" ret=$? echo "Final validation result: $ret" -- GitLab From 99fc3deff56483107ecba0495ecd52fe97410290 Mon Sep 17 00:00:00 2001 From: reinaortega Date: Wed, 16 Jun 2021 17:13:59 +0200 Subject: [PATCH 551/580] Testing BRANCH_NAME environment variable Signed-off-by: reinaortega --- .jenkins.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.jenkins.sh b/.jenkins.sh index 042441043..40a63c09d 100644 --- a/.jenkins.sh +++ b/.jenkins.sh @@ -9,8 +9,11 @@ cd "$(dirname "$0")" run_dir="$(pwd)" +echo "Using git branch $BRANCH_NAME" +echo "Using git branch env.BRANCH_NAME" + bash ./scripts/build-container.sh -bash ./scripts/run-container.sh "${run_dir}" "${BRANCH_NAME}" +bash ./scripts/run-container.sh "${run_dir}" "$BRANCH_NAME" ret=$? echo "Final validation result: $ret" -- GitLab From 4f28f47e89e748185860bdc3a9620ded200979ff Mon Sep 17 00:00:00 2001 From: reinaortega Date: Wed, 16 Jun 2021 17:16:29 +0200 Subject: [PATCH 552/580] Test env.BRANCH_NAME Signed-off-by: reinaortega --- .jenkins.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.jenkins.sh b/.jenkins.sh index 40a63c09d..c2a20eb09 100644 --- a/.jenkins.sh +++ b/.jenkins.sh @@ -11,6 +11,7 @@ run_dir="$(pwd)" echo "Using git branch $BRANCH_NAME" echo "Using git branch env.BRANCH_NAME" +echo env.BRANCH_NAME bash ./scripts/build-container.sh bash ./scripts/run-container.sh "${run_dir}" "$BRANCH_NAME" -- GitLab From a4df71d3b12eb61f4a6f04e4916924a83230bb61 Mon Sep 17 00:00:00 2001 From: reinaortega Date: Wed, 16 Jun 2021 17:20:54 +0200 Subject: [PATCH 553/580] Test GIT_BRANCH Signed-off-by: reinaortega --- .jenkins.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.jenkins.sh b/.jenkins.sh index c2a20eb09..dbf5ad646 100644 --- a/.jenkins.sh +++ b/.jenkins.sh @@ -12,6 +12,9 @@ run_dir="$(pwd)" echo "Using git branch $BRANCH_NAME" echo "Using git branch env.BRANCH_NAME" echo env.BRANCH_NAME +echo "Using git branch $GIT_BRANCH" +echo "Using git branch 'env.GIT_BRANCH'" +echo 'env.GIT_BRANCH' bash ./scripts/build-container.sh bash ./scripts/run-container.sh "${run_dir}" "$BRANCH_NAME" -- GitLab From 8dcbb660ee8426d3891cef0b9d60ee35ac8c67a1 Mon Sep 17 00:00:00 2001 From: reinaortega Date: Wed, 16 Jun 2021 17:25:18 +0200 Subject: [PATCH 554/580] Using GIT_BRANCH Signed-off-by: reinaortega --- .jenkins.sh | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.jenkins.sh b/.jenkins.sh index dbf5ad646..010affd4a 100644 --- a/.jenkins.sh +++ b/.jenkins.sh @@ -9,15 +9,10 @@ cd "$(dirname "$0")" run_dir="$(pwd)" -echo "Using git branch $BRANCH_NAME" -echo "Using git branch env.BRANCH_NAME" -echo env.BRANCH_NAME echo "Using git branch $GIT_BRANCH" -echo "Using git branch 'env.GIT_BRANCH'" -echo 'env.GIT_BRANCH' bash ./scripts/build-container.sh -bash ./scripts/run-container.sh "${run_dir}" "$BRANCH_NAME" +bash ./scripts/run-container.sh "${run_dir}" "$GIT_BRANCH" ret=$? echo "Final validation result: $ret" -- GitLab From 36e07d2289284b21d796be28fc0302586dd42134 Mon Sep 17 00:00:00 2001 From: reinaortega Date: Wed, 16 Jun 2021 17:34:34 +0200 Subject: [PATCH 555/580] Checking git branch used in validate.sh script Signed-off-by: reinaortega --- scripts/validate.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/validate.sh b/scripts/validate.sh index 1f1e2784e..e6945847e 100644 --- a/scripts/validate.sh +++ b/scripts/validate.sh @@ -17,6 +17,8 @@ for i in */*/*.robot ; do fi done +echo "Using git branch $1" + if [[ "$1" =~ .*-dev$ || "$1" == "master" ]]; then cd /home/etsi/dev/robot2doc/robot2doc -- GitLab From e0ccb34e7170a3c69f7c2321a2858c8c2f6dbb38 Mon Sep 17 00:00:00 2001 From: reinaortega Date: Wed, 16 Jun 2021 17:41:49 +0200 Subject: [PATCH 556/580] Fix run-container.sh script Signed-off-by: reinaortega --- scripts/run-container.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/run-container.sh b/scripts/run-container.sh index febba94f4..af5a8eb9b 100644 --- a/scripts/run-container.sh +++ b/scripts/run-container.sh @@ -10,7 +10,7 @@ mkdir -p build echo "Using git branch $2" docker run -v "$(pwd)/build:/home/etsi/dev/build" stf583-rf-validation:latest "bash" \ - -c "/home/etsi/dev/robot/scripts/validate.sh" "$2" + -c "/home/etsi/dev/robot/scripts/validate.sh $2" ret=$? -- GitLab From 71feebb2c3711afbeac0845488f77aba82802b6c Mon Sep 17 00:00:00 2001 From: reinaortega Date: Wed, 16 Jun 2021 17:58:56 +0200 Subject: [PATCH 557/580] Matching tag names Signed-off-by: reinaortega --- scripts/validate.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/validate.sh b/scripts/validate.sh index e6945847e..7e50abcd5 100644 --- a/scripts/validate.sh +++ b/scripts/validate.sh @@ -19,7 +19,7 @@ done echo "Using git branch $1" -if [[ "$1" =~ .*-dev$ || "$1" == "master" ]]; then +if [[ "$1" =~ .*-dev$ || "$1" =~ \d+(\.?\d)+ || "$1" == "master" ]]; then cd /home/etsi/dev/robot2doc/robot2doc -- GitLab From 88c9c1c62b6e070f720792b431166dd67f6b619c Mon Sep 17 00:00:00 2001 From: reinaortega Date: Thu, 17 Jun 2021 11:25:47 +0200 Subject: [PATCH 558/580] Cleanup build folder before new files are generated Signed-off-by: reinaortega --- scripts/validate.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/validate.sh b/scripts/validate.sh index 7e50abcd5..bf93a7535 100644 --- a/scripts/validate.sh +++ b/scripts/validate.sh @@ -19,12 +19,14 @@ done echo "Using git branch $1" +mkdir -p /home/etsi/dev/build +cd /home/etsi/dev/build +rm -r -v * + if [[ "$1" =~ .*-dev$ || "$1" =~ \d+(\.?\d)+ || "$1" == "master" ]]; then cd /home/etsi/dev/robot2doc/robot2doc - mkdir -p /home/etsi/dev/build - python3 create_sols.py ../../robot 'local' ../../build res2=$? else res2=0 -- GitLab From 03d020e6e40054bba34921708c17fe28ad0a7ceb Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Fri, 25 Jun 2021 18:43:31 +0200 Subject: [PATCH 559/580] fixed SOL012 Test ID: 10.3.1.1. documentation typo --- SOL012/PolicyManagement-API/ApiVersion.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL012/PolicyManagement-API/ApiVersion.robot b/SOL012/PolicyManagement-API/ApiVersion.robot index 142232e7c..f26741e7f 100644 --- a/SOL012/PolicyManagement-API/ApiVersion.robot +++ b/SOL012/PolicyManagement-API/ApiVersion.robot @@ -78,7 +78,7 @@ POST API Version with apiMajorVersion - Method not implemented Check HTTP Response Status Code Is 405 GET API Version with apiMajorVersion - [Documentation] 10.3.1.1.7 + [Documentation] Test ID: 10.3.1.1.7 ... Test title: GET API Version with apiMajorVersion ... Test objective: The objective is to test that GET method successfully returns ApiVersionInformation. ... Pre-conditions: none -- GitLab From 17d904b42e28cabd54719673585c18ccd0dbd0f1 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 7 Jul 2021 09:08:25 +0200 Subject: [PATCH 560/580] fixed typos in Test IDs --- SOL003/VNFIndicator-API/NotificationEndpoint.robot | 4 ++-- SOL003/VNFLifecycleManagement-API/VNFInstances.robot | 2 +- .../VNFPackageManagement-API/VNFPackageArtifacts.robot | 2 +- .../IndividualCapacityThreshold.robot | 10 +++++----- .../IndividualVIMsNFVICapacityInformation.robot | 2 +- SOL009/NFVMANOLogManagement-API/LoggingJobs.robot | 6 +++--- indexes/sol_005_index.csv | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/SOL003/VNFIndicator-API/NotificationEndpoint.robot b/SOL003/VNFIndicator-API/NotificationEndpoint.robot index e0432f2bc..ceeee79e1 100644 --- a/SOL003/VNFIndicator-API/NotificationEndpoint.robot +++ b/SOL003/VNFIndicator-API/NotificationEndpoint.robot @@ -8,7 +8,7 @@ Suite Setup Check resource existence and get CallbackUri *** Test Cases *** VNF Indicator Value Change Notification - [Documentation] Test ID: 7.3.6.7.1 + [Documentation] Test ID: 7.3.6.8.1 ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification. ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNFM. @@ -20,7 +20,7 @@ VNF Indicator Value Change Notification Check HTTP Response Status Code Is 204 Supported Indicators Change Notification - [Documentation] Test ID: 7.3.6.7.2 + [Documentation] Test ID: 7.3.6.8.2 ... Test title: Supported Indicators Change Notification ... Test objective: The objective is to test that the POST request triggers Supported Indicators Change Notification. ... Pre-conditions: A VNF is instantiated, and a individual subscription resource for supported indicators change notifications is available in the VNFM. diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index e8c8ea246..4c1acc70b 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -163,7 +163,7 @@ GET information about multiple VNF instances to get Paged Response Check HTTP Response Header Contain Link GET information about multiple VNF instances as a Paged Response with nextpage_opauque_marker parameter - [Documentation] Test ID: 7.3.1.17.12a + [Documentation] Test ID: 7.3.1.11.12a ... Test title: GET information about multiple VNF instances as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about multiple VNF instances as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving multiple VNF instances as a paged response has been successfully issued (Test ID: 7.3.1.1.12) diff --git a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot index 2d8d1e99c..400d108f4 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -402,7 +402,7 @@ Get VNF Package Artifact with "include_external_artifacts" parameter Check HTTP Response Header Content-Type Is application/zip Get OnBoarded VNF Package Artifact with "include_external_artifacts" parameter - [Documentation] Test ID: 7.3.3.11.17 + [Documentation] Test ID: 7.3.3.11.32 ... Test title: Get OnBoarded VNF Package Artifact with "include_external_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the external OnBoarded VNF Package Artifacts successfully when requested with "include_external_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. diff --git a/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot b/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot index fc3f2003e..5c3a7b247 100644 --- a/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot +++ b/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot @@ -91,12 +91,12 @@ PATCH Individual Capacity Threshold - Unprocessible Entity Check HTTP Response Status Code Is 422 Check HTTP Response Body Json Schema Is ProblemDetails -DELETE Individual VNF Snapshot - [Documentation] Test ID: 7.3.1.41.8 - ... Test title: DELETE Individual VNF Snapshot - ... Test objective: The objective is to delete a VNF Snapshot +DELETE Individual Capacity Threshold + [Documentation] Test ID: 5.3.6.4.8 + ... Test title: DELETE Individual Capacity Threshold + ... Test objective: The objective is to delete an Individual Capacity Threshold ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v3.3.1 + ... Reference: Clause 10.4.5.3.4 - ETSI GS NFV-SOL 005 [1] v3.3.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF Snapshot deleted diff --git a/SOL005/NFVICapacityInformation-API/IndividualVIMsNFVICapacityInformation.robot b/SOL005/NFVICapacityInformation-API/IndividualVIMsNFVICapacityInformation.robot index 048f031cc..1fc10029b 100644 --- a/SOL005/NFVICapacityInformation-API/IndividualVIMsNFVICapacityInformation.robot +++ b/SOL005/NFVICapacityInformation-API/IndividualVIMsNFVICapacityInformation.robot @@ -28,7 +28,7 @@ GET Information about an Individual VIMs NFVI Capacity Information Check HTTP Response Body Json Schema Is NfviCapacityInfo GET Information about an Individual VIMs NFVI Capacity Information using filter query parameter - [Documentation] Test ID: 5.3.6.3.2 + [Documentation] Test ID: 5.3.6.3.3 ... Test title: GET Information about an Individual VIMs NFVI Capacity Information using filter query parameter ... Test objective: The objective is to retrieve information about Individual VIMs NFVI Capacity Information using filter query parameter ... Pre-conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot index 98d036a09..7ec510375 100644 --- a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot +++ b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot @@ -202,7 +202,7 @@ GET information about Logging Jobs with expired or revoked authorization token Check HTTP Response Status Code Is 401 PUT Logging Jobs - Method not implemented - [Documentation] Test ID: 8.3.4.1.13 + [Documentation] Test ID: 8.3.4.1.15 ... Test title: PUT Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none @@ -214,7 +214,7 @@ PUT Logging Jobs - Method not implemented Check HTTP Response Status Code Is 405 PATCH Logging Jobs - Method not implemented - [Documentation] Test ID: 8.3.4.1.14 + [Documentation] Test ID: 8.3.4.1.16 ... Test title: PATCH Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none @@ -226,7 +226,7 @@ PATCH Logging Jobs - Method not implemented Check HTTP Response Status Code Is 405 DELETE Logging Jobs - Method not implemented - [Documentation] Test ID: 8.3.4.1.15 + [Documentation] Test ID: 8.3.4.1.17 ... Test title: DELETE Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none diff --git a/indexes/sol_005_index.csv b/indexes/sol_005_index.csv index e45e8cd31..7a3c3503c 100644 --- a/indexes/sol_005_index.csv +++ b/indexes/sol_005_index.csv @@ -78,7 +78,7 @@ 5.3.6.2,NFVI Capacity Information Endpoint, NFVICapacityInformation.robot 5.3.6.3,Individual VIMs NFVI Capacity Information Endpoint, IndividualVIMsNFVICapacityInformation.robot 5.3.6.4,Individual Capacity Threshold Endpoint, IndividualCapacityThreshold.robot -5.3.6.5,Capacity Thresholds Endpoint, IndividualCapacityThreshold.robot +5.3.6.5,Capacity Thresholds Endpoint, CapacityThresholds.robot 5.3.6.6,Notification Endpoint, NotificationEndpoint.robot 5.3.7,VNF Snapshot Package Management Interface, VNFSnapshotPackageManagement-API 5.3.7.1,API Version Resource Endpoint, ApiVersion.robot -- GitLab From 2d413f2ae82a01f6f21c9d24bf5aea8b2168fb63 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 7 Jul 2021 09:51:41 +0200 Subject: [PATCH 561/580] fixed refs to Test Ids --- SOL003/VNFFaultManagement-API/Alarms.robot | 2 +- SOL003/VNFLifecycleManagement-API/Subscriptions.robot | 2 +- SOL003/VNFLifecycleManagement-API/VNFInstances.robot | 4 ++-- .../VnfLcmOperationOccurences.robot | 2 +- SOL003/VNFPackageManagement-API/Subscriptions.robot | 2 +- SOL003/VNFPackageManagement-API/VNFPackages.robot | 4 ++-- SOL003/VNFPerformanceManagement-API/PMJobs.robot | 2 +- .../Subscriptions.robot | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/Alarms.robot b/SOL003/VNFFaultManagement-API/Alarms.robot index 254930cc7..d3dc4b066 100644 --- a/SOL003/VNFFaultManagement-API/Alarms.robot +++ b/SOL003/VNFFaultManagement-API/Alarms.robot @@ -157,7 +157,7 @@ GET information about multiple alarms as a Paged Response with nextpage_opauque_ [Documentation] Test ID: 7.3.5.1.12a ... Test title: GET information about multiple alarms as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about multiple alarms as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter - ... Pre-conditions: A request for retrieving multiple alarms as a paged response has been successfully issued (Test ID: 7.3.5.1.12) + ... Pre-conditions: A request for retrieving multiple alarms as a paged response has been successfully issued (Test ID 7.3.5.1.12) ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF alarm resources diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index ae88137bd..6f7b8b830 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -212,7 +212,7 @@ GET Subscriptions as a Paged Response with nextpage_opauque_marker parameter [Documentation] Test ID: 7.3.1.17.17 ... Test title: GET Subscriptions as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to Get the list of active subscriptions as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter - ... Pre-conditions: A request for retrieving subscriptions as a paged response has been successfully issued (Test ID: 7.3.1.17.14) + ... Pre-conditions: A request for retrieving subscriptions as a paged response has been successfully issued (Test ID 7.3.1.17.14) ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the subscriptions resources diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index 4c1acc70b..58f002bed 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -163,10 +163,10 @@ GET information about multiple VNF instances to get Paged Response Check HTTP Response Header Contain Link GET information about multiple VNF instances as a Paged Response with nextpage_opauque_marker parameter - [Documentation] Test ID: 7.3.1.11.12a + [Documentation] Test ID: 7.3.1.1.12a ... Test title: GET information about multiple VNF instances as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about multiple VNF instances as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter - ... Pre-conditions: A request for retrieving multiple VNF instances as a paged response has been successfully issued (Test ID: 7.3.1.1.12) + ... Pre-conditions: A request for retrieving multiple VNF instances as a paged response has been successfully issued (Test ID 7.3.1.1.12) ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF instance resources diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index 3eb1f6077..267512666 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -162,7 +162,7 @@ GET information about multiple VNF LCM Operation OCC as a Paged Response with ne [Documentation] Test ID: 7.3.1.11.12a ... Test title: GET information about multiple VNF LCM Operation OCC as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about multiple VNF lifecycle management operation occurrences as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter - ... Pre-conditions: A request for retrieving multiple VNF lifecycle management operation occurrences as a paged response has been successfully issued (Test ID: 7.3.1.11.12) + ... Pre-conditions: A request for retrieving multiple VNF lifecycle management operation occurrences as a paged response has been successfully issued (Test ID 7.3.1.11.12) ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF lifecycle management operation occurrences resources diff --git a/SOL003/VNFPackageManagement-API/Subscriptions.robot b/SOL003/VNFPackageManagement-API/Subscriptions.robot index bf1c7ca3b..df84485be 100644 --- a/SOL003/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL003/VNFPackageManagement-API/Subscriptions.robot @@ -166,7 +166,7 @@ GET All VNF Package Subscriptions as a Paged Response with nextpage_opauque_mark [Documentation] Test ID: 7.3.3.6.11a ... Test title: GET All VNF Package Subscriptions as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about all VNF package subscriptions as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter - ... Pre-conditions: A request for retrieving all VNF package subscriptions as a paged response has been successfully issued (Test ID: 7.3.3.6.11) + ... Pre-conditions: A request for retrieving all VNF package subscriptions as a paged response has been successfully issued (Test ID 7.3.3.6.11) ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports response paging for the subscription resources diff --git a/SOL003/VNFPackageManagement-API/VNFPackages.robot b/SOL003/VNFPackageManagement-API/VNFPackages.robot index 61d743408..3bd6a50c6 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackages.robot @@ -182,7 +182,7 @@ GET all VNF Packages as a Paged Response with nextpage_opauque_marker parameter [Documentation] Test ID: 7.3.3.1.13a ... Test title: GET all VNF Packages as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about all VNF packages as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter - ... Pre-conditions: A request for retrieving all VNF packages as a paged response has been successfully issued (Test ID: 7.3.3.1.13) + ... Pre-conditions: A request for retrieving all VNF packages as a paged response has been successfully issued (Test ID 7.3.3.1.13) ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports response paging for the VNF package resources @@ -380,7 +380,7 @@ GET all OnBoarded VNF Packages as a Paged Response with nextpage_opauque_marker [Documentation] Test ID: 7.3.3.1.27a ... Test title: GET all OnBoarded VNF Packages as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about all onBoarded VNF packages as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter - ... Pre-conditions: A request for retrieving all onBoarded VNF packages as a paged response has been successfully issued (Test ID: 7.3.3.1.27) + ... Pre-conditions: A request for retrieving all onBoarded VNF packages as a paged response has been successfully issued (Test ID 7.3.3.1.27) ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports response paging for the VNF package resources diff --git a/SOL003/VNFPerformanceManagement-API/PMJobs.robot b/SOL003/VNFPerformanceManagement-API/PMJobs.robot index 4db6e029e..62f90e043 100644 --- a/SOL003/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL003/VNFPerformanceManagement-API/PMJobs.robot @@ -185,7 +185,7 @@ GET all VNF Performance Monitoring Jobs as Paged Response with nextpage_opauque_ [Documentation] Test ID: 7.3.4.1.13a ... Test title: GET all VNF Performance Monitoring Jobs as Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about all the available VNF performance monitoring jobs as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter - ... Pre-conditions: A request for retrieving the available VNF performance monitoring jobs as a paged response has been successfully issued (Test ID: 7.3.4.1.13) + ... Pre-conditions: A request for retrieving the available VNF performance monitoring jobs as a paged response has been successfully issued (Test ID 7.3.4.1.13) ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF performance jobs resources diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot index 6aaa28a76..bed62b182 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot @@ -143,7 +143,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions as Paged Re [Documentation] Test ID: 7.3.7.1.10a ... Test title: GET Virtualised Resources Quota Available Notification Subscriptions as Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query the list of active Virtualised Resources Quota Available Notification subscriptions as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter - ... Pre-conditions: A request for retrieving the list of active Virtualised Resources Quota Available Notification subscriptions as a paged response has been successfully issued (Test ID: 7.3.7.1.10) + ... Pre-conditions: A request for retrieving the list of active Virtualised Resources Quota Available Notification subscriptions as a paged response has been successfully issued (Test ID 7.3.7.1.10) ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v2.8.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the subscription resources -- GitLab From 695c2b271505c74302ea80841a8f58e8157f0b5c Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Wed, 11 Aug 2021 02:35:17 +0500 Subject: [PATCH 562/580] fixed Test IDs --- .../IndividualCapacityThreshold.robot | 4 ++-- SOL009/NFVMANOLogManagement-API/LoggingJobs.robot | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot b/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot index 5c3a7b247..15457a951 100644 --- a/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot +++ b/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot @@ -97,9 +97,9 @@ DELETE Individual Capacity Threshold ... Test objective: The objective is to delete an Individual Capacity Threshold ... Pre-conditions: none ... Reference: Clause 10.4.5.3.4 - ETSI GS NFV-SOL 005 [1] v3.3.1 - ... Config ID: Config_prod_VNFM + ... Config ID: Config_prod_NFVO ... Applicability: none - ... Post-Conditions: VNF Snapshot deleted + ... Post-Conditions: Capacity threshold is deleted DELETE Individual Capacity Threshold Check HTTP Response Status Code Is 204 Check Postcondition resource is deleted \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot index 7ec510375..81b86054f 100644 --- a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot +++ b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot @@ -202,7 +202,7 @@ GET information about Logging Jobs with expired or revoked authorization token Check HTTP Response Status Code Is 401 PUT Logging Jobs - Method not implemented - [Documentation] Test ID: 8.3.4.1.15 + [Documentation] Test ID: 8.3.4.1.16 ... Test title: PUT Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none @@ -214,7 +214,7 @@ PUT Logging Jobs - Method not implemented Check HTTP Response Status Code Is 405 PATCH Logging Jobs - Method not implemented - [Documentation] Test ID: 8.3.4.1.16 + [Documentation] Test ID: 8.3.4.1.17 ... Test title: PATCH Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none @@ -226,7 +226,7 @@ PATCH Logging Jobs - Method not implemented Check HTTP Response Status Code Is 405 DELETE Logging Jobs - Method not implemented - [Documentation] Test ID: 8.3.4.1.17 + [Documentation] Test ID: 8.3.4.1.18 ... Test title: DELETE Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none -- GitLab From 0f6f8c110c56143c2cbaf413d5dbe200f027e75a Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 16 Aug 2021 09:43:06 +0200 Subject: [PATCH 563/580] fixed test ids and ref to sol009 --- .../NFVMANOFaultManagement-API/Alarms.robot | 20 ++++++------ .../IndividualSubscription.robot | 10 +++--- .../Subscriptions.robot | 32 +++++++++---------- .../LoggingJobs.robot | 8 ++--- .../PMJobs.robot | 6 ++-- .../PeerEntities.robot | 6 ++-- 6 files changed, 41 insertions(+), 41 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/Alarms.robot b/SOL009/NFVMANOFaultManagement-API/Alarms.robot index f0a5c2be5..3e5a4f0b6 100644 --- a/SOL009/NFVMANOFaultManagement-API/Alarms.robot +++ b/SOL009/NFVMANOFaultManagement-API/Alarms.robot @@ -63,7 +63,7 @@ Get information about multiple alarms as a Paged Response ... Test title: Get information about multiple alarms as a Paged Response ... Test objective: The objective is to retrieve information about the alarm list as a Paged Response. ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ Get information about multiple alarms - Bad Request Response too Big ... Test title: Get information about multiple alarms - Bad Request Response too Big ... Test objective: The objective is to try to retrieve information about the alarm list because response is too big and perform a JSON schema validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ GET information about alarms with attribute-based filter "id" ... Test title: GET information about alarms with attribute-based filter "id" ... Test objective: The objective is to retrieve information about the alarm list with alarm filter "id" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ GET information about multiple alarms with attribute-based filter "managedObject ... Test title: GET information about multiple alarms with attribute-based filter "managedObjectId" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "managedObjectId" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ GET information about multiple alarms with attribute-based filter "eventType" ... Test title: GET information about multiple alarms with attribute-based filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "eventType" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -131,7 +131,7 @@ GET information about multiple alarms with attribute-based filter "perceivedSeve ... Test title: GET information about multiple alarms with attribute-based filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "perceivedSeverity" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -145,7 +145,7 @@ GET information about multiple alarms with attribute-based filter "probableCause ... Test title: GET information about multiple alarms with attribute-based filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "probableCause" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -159,7 +159,7 @@ Get information about multiple alarms with malformed authorization token ... Test title: Get information about multiple alarms with malformed authorization token ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when using malformed authorization token ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -171,7 +171,7 @@ Get information about multiple alarms without authorization token ... Test title: Get information about multiple alarms without authorization token ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when omitting the authorization token ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -183,7 +183,7 @@ GET information about multiple alarms with expired or revoked authorization toke ... Test title: GET information about multiple alarms with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when using expired or revoked authorization token ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot index 5205b68ee..c0e603a97 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ Post Individual Subscription - Method not implemented ... Test title: Post Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for fault management subscription on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.6.3.1 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ Get Information about an individual subscription ... Test title: Get Information about an individual subscription ... Test objective: The objective is to read an individual subscription from NFV-MANO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure ... Pre-conditions: The subscription with the given id exists - ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PUT an individual subscription - Method not implemented ... Test title:PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for fault management individual subscription on VNF ... Pre-conditions: none - ... Reference: clause 7.5.6.3.3 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.6.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ PATCH an individual subscription - Method not implemented ... Test title:PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for fault management individual subscription on VNF ... Pre-conditions: none - ... Reference: clause 7.5.6.3.4 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.6.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ DELETE an individual subscription ... Test title:DELETE an individual subscription ... Test objective: The objective is to test that DELETE method removes individual subscription on VNF ... Pre-conditions: The Subsbcription already exists - ... Reference: clause 7.5.6.3.5 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.6.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: subscription is deleted diff --git a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot index d9f55b948..b95d85947 100644 --- a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot @@ -13,7 +13,7 @@ Create a new Fault Management alarm subscription ... Test title: Create a new fault management alarm subscription ... Test objective: The objective is to create a new fault management alarm subscription and perform a JSON schema validation of the returned fault management alarms subscription data structure ... Pre-conditions: No subscription with the same filter and callbackUri exists - ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: subscription is created @@ -28,7 +28,7 @@ Create a new alarm subscription - DUPLICATION ... Test title: Create a new alarm subscription - DUPLICATION ... Test objective: The objective is to create a new subscription with the NFV-MANO allowing duplication and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: the NFV-MANO allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists ... Post-Conditions: duplicated subscription is created @@ -43,7 +43,7 @@ Create a new alarm subscription - NO DUPLICATION ... Test title: Create a new alarm subscription - NO DUPLICATION ... Test objective: The objective is to create a new subscription with the NFV-MANO not allowing duplication and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: the NFV-MANO does not allow to create a duplicate subscription resource ... Post-Conditions: duplicated subscription is not created @@ -58,7 +58,7 @@ Retrieve a list of alarm subscriptions ... Test title: Retrieve a list of alarm subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: noe @@ -71,7 +71,7 @@ Retrieve a list of alarm subscriptions with filter ... Test title: Retrieve a list of alarm subscriptions with filter ... Test objective: The objective is to retrieve the list of active subscriptions with filter and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ Get information about multiple alarms as a Paged Response ... Test title: Get information about multiple alarms as a Paged Response ... Test objective: The objective is to retrieve information about active list subscriptions as a Paged Response ... Pre-conditions: none - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters and perform a JSON schema validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ Get information about multiple alarms - Bad Request Response too Big ... Test title: Get information about multiple alarms - Bad Request Response too Big ... Test objective: The objective is to try to retrieve information about active list subscription to check that response is too big and perform a JSON schema validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: none - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -137,7 +137,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: none - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ Get subscriptions with filter "filter.perceivedSeverities" ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" ... Pre-conditions: none - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ Get subscriptions with filter "filter.eventTypes" ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" ... Pre-conditions: none - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -179,7 +179,7 @@ Get subscriptions with filter "filter.probableCauses" ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" ... Pre-conditions: none - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -193,7 +193,7 @@ PUT subscriptions - Method not implemented ... Test title:PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none - ... RReference: clause 7.5.5.3.3 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... RReference: clause 7.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -205,7 +205,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none - ... Reference: clause 7.5.5.3.4 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -217,7 +217,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none - ... Reference: clause 7.5.5.3.5 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 7.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot index 81b86054f..5b2599a5f 100644 --- a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot +++ b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot @@ -166,11 +166,11 @@ GET information about Logging Jobs with Paged Response Check HTTP Response Header Contains Link GET information about Logging Jobs with malformed authorization token - [Documentation] Test ID: 8.3.1.8.13 + [Documentation] Test ID: 8.3.4.1.13 ... Test title: GET information about Logging Jobs with malformed authorization token ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using malformed authorization token. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -182,7 +182,7 @@ GET information about Logging Jobs without authorization token ... Test title: GET information about Logging Jobs without authorization token ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when omitting the authorization token. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -194,7 +194,7 @@ GET information about Logging Jobs with expired or revoked authorization token ... Test title: GET information about Logging Jobs with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using expired or revoked authorization token. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot index 90488d69d..f9be6fcb0 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot @@ -171,7 +171,7 @@ Get information about multiple Performance Monitoring Jobs with malformed author ... Test title: Get information about multiple Performance Monitoring Jobs with malformed authorization token ... Test objective: The objective is to test that the retrieval of information about Performance Monitoring Jobs fails when using malformed authorization token ... Pre-conditions: none - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -183,7 +183,7 @@ Get information about multiple Performance Monitoring Jobs without authorization ... Test title: Get information about multiple Performance Monitoring Jobs without authorization token ... Test objective: The objective is to test that the retrieval of information about Performance Monitoring Jobs fails when omitting the authorization token ... Pre-conditions: none - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [3] v3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -195,7 +195,7 @@ GET information about multiple Performance Monitoring Jobs with expired or revok ... Test title: GET information about multiple Performance Monitoring Jobs with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information about Performance Monitoring Jobs fails when using expired or revoked authorization token ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [3] v3.3.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot index 0e84092dc..2fe8eb548 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot @@ -171,7 +171,7 @@ Get Peer Entity with malformed authorization token ... Test title: Get Peer Entity with malformed authorization token ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using malformed authorization token. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -183,7 +183,7 @@ Get Peer Entity without authorization token ... Test title: Get Peer Entity without authorization token ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when omitting the authorization token. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -195,7 +195,7 @@ GET information about multiple alarms with expired or revoked authorization toke ... Test title: GET information about multiple alarms with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using expired or revoked authorization token. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [6] v3.3.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none -- GitLab From 176b725726e5ef4e29eb28cd8be42248c9065a73 Mon Sep 17 00:00:00 2001 From: reinaortega Date: Tue, 31 Aug 2021 05:56:47 +0200 Subject: [PATCH 564/580] Triggering CI/CD of Robot Hive Tap Test Tools project for 'plu' branches --- .jenkins.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.jenkins.sh b/.jenkins.sh index 010affd4a..22ed7fcf2 100644 --- a/.jenkins.sh +++ b/.jenkins.sh @@ -14,6 +14,19 @@ echo "Using git branch $GIT_BRANCH" bash ./scripts/build-container.sh bash ./scripts/run-container.sh "${run_dir}" "$GIT_BRANCH" +if [[ "$GIT_BRANCH" =~ .*fix-plu$ ]]; then + + apiTestsVersion=$(echo $GIT_BRANCH | cut -d'/' -f 2) + apiTestsVersion=$(echo $apiTestsVersion | cut -d'-' -f 1) + echo apiTestsVersion + + curl -X POST \ + -F token=${ROBOT_HIVE_TAP_TT_TOKEN} \ + -F ref=master \ + -F "variables[API_TESTS_VERSION]=$apiTestsVersion" \ + -F "variables[TEST_SUITE]=NFV" \ + https://forge.etsi.org/rep/api/v4/projects/484/trigger/pipeline +fi ret=$? echo "Final validation result: $ret" exit $ret -- GitLab From 56c57cb713d0be956908b542db138fd0b7bf26b1 Mon Sep 17 00:00:00 2001 From: muhammadh Date: Wed, 15 Sep 2021 15:26:35 +0500 Subject: [PATCH 565/580] internal variables to ignore while building the HIVE-TAP GUI --- internal_variables.txt | 541 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 541 insertions(+) create mode 100644 internal_variables.txt diff --git a/internal_variables.txt b/internal_variables.txt new file mode 100644 index 000000000..51cafb784 --- /dev/null +++ b/internal_variables.txt @@ -0,0 +1,541 @@ +################################################################ +####################### v3.3.1-fix-plu ######################### +################################################################ + + +######################### SOL002 ############################### + + +### SOL002 VNFConfiguration-API ### + +${response}= httpresponse +${ACCEPT} application/json +${CONTENT_TYPE} application/json + +### SOL002 VNFFaultManagement-API ### + +${ACCEPT} application/json +${ACCEPT_JSON} application/json +${CONTENT_TYPE} application/json +${origResponse}= httpresponse +${CONTENT_TYPE_PATCH} application/merge-patch+json +${notification_request} [] +${notification_response} [] +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +${AlarmNotification} {} +${AlarmClearedNotification} {} +${AlarmListRebuiltNotification} {} +#${response}= httpresponse + +### SOL002 VNFIndicator-API ### + +${CONTENT_TYPE_JSON} application/json +#${ACCEPT_JSON} application/json +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${response} some_response_object +#${origResponse}= httpresponse +${vnfIndicators} = + +### SOL002 VNFIndicatorNotification-API ### + +#${notification_request} [] +#${notification_response} [] +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +### SOL002 VNFLifecycleManagement-API ### + +#${CONTENT_TYPE} application/json +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${ACCEPT} application/json +#${ACCEPT_JSON} application/json +${ACCEPT_PLAIN} text/plain +${ACCEPT_ZIP} application/zip +${ARTIFACT_TYPE} application/octet-stream +${WRONG_ACCEPT} application/json +${VnfLcmOperationOccurrenceNotification} {} +${VnfIdentifierCreationNotification} {} +${VnfIdentifierDeletionNotification} {} +#${notification_request} [] +#${notification_response} [] +#${response}= httpresponse +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +${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} + +${scaleVnfRequesttype} SCALE_OUT +${scaleVnfRequestAspect} Aspect + + +### SOL002 VNFPerformanceManagement-API ### + +#${CONTENT_TYPE_JSON} application/json +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${ACCEPT_JSON} application/json +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${response} http-response +${subscribe} /subscribe +${OrigResponse}= httpresponse + +### SOL002 VNFPerformanceManagementNotification-API ### + +#${notification_request} [] +#${notification_response} [] +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + + +######################### SOL003 ############################### + + +### SOL003 VirtualizedQuotaAvailableNotification-API ### + +#${CONTENT_TYPE} application/json +#${ACCEPT} application/json +#${notification_request} [] +#${notification_response} [] +${VrQuotaAvailNotification} {} +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${response} {} + + +### SOL003 VNFFaultManagement-API ### + +#${CONTENT_TYPE} application/json +#${ACCEPT} application/json +#${ACCEPT_JSON} application/json +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${AlarmNotification} {} +#${AlarmClearedNotification} {} +#${AlarmListRebuiltNotification} {} +#${response} {} +${req_mock} {} +${resp_mock} {} +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + + +### SOL003 VNFFaultManagementNotification-API ### + +#${notification_request} [] +#${notification_response} [] +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + + +### SOL003 VNFIndicator-API ### + +#${ACCEPT_JSON} application/json +#${CONTENT_TYPE_JSON} application/json +#${response} +#${notification_request} [] +#${notification_response} [] +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${origResponse} httpresponse + + +### SOL003 VNFLifecycleManagement-API ### + +#${ACCEPT} application/json +#${ACCEPT_JSON} application/json +#${CONTENT_TYPE} application/json +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${ACCEPT_PLAIN} text/plain +#${ACCEPT_ZIP} application/zip +#${ARTIFACT_TYPE} application/octet-stream +#${WRONG_ACCEPT} application/json +${ACCEPT_OCTET} application/octet-stream + +${CONTENT_TYPE_OCTET} application/octet-stream +${VnfLcmOperationOccurrenceNotification} {} +${VnfIdentifierCreationNotification} {} +${VnfIdentifierDeletionNotification} {} +#${response} {} +${json} {} + +${changeVnfFlavourRequest} {} +${changeVnfOperateRequest} {} +${requestedState} test +${changeVnfExtConnectivityRequest} {} +${patchBodyRequest} {} + +#${notification_request} [] +#${notification_response} [] +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +${LccnSubscriptions} +${scaleInfo} +${element} +${scaleOutResponse} + +#${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} + +#${Descriptor_ID} +#${Provider} +#${Product_Name} +#${Software_Version} +#${Descriptor_Version} + + +### SOL003 VNFLifecycleOperationGranting-API ### + +#${CONTENT_TYPE} application/json +#${ACCEPT} application/json +#${response} {} +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${ACCEPT_PLAIN} text/plain +#${ACCEPT_ZIP} application/zip +#${ARTIFACT_TYPE} application/octet-stream +#${WRONG_ACCEPT} application/json +#${VrQuotaAvailNotification} {} + +#${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} + +#${Descriptor_ID} +#${Provider} +#${Product_Name} +#${Software_Version} +#${Descriptor_Version} + + +### SOL003 VNFPackageManagement-API ### + +#${ACCEPT_JSON} application/json +#${CONTENT_TYPE_JSON} application/json +#${response} httpresponse +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${notification_request} [] +#${notification_response} [] +#${origResponse} httpresponse +#${ACCEPT_PLAIN} text/plain +${CONTENT_TYPE_PLAIN} text/plain +#${ACCEPT_ZIP} application/zip +${CONTENT_TYPE_ZIP} application/zip +#${artifactPath} artifactPath +#${CONTENT_TYPE_OCTET} application/octet-stream + +#${Descriptor_ID} +#${Provider} +#${Product_Name} +#${Software_Version} +#${Descriptor_Version} + +### SOL003 VNFPerformanceManagement-API ### + + +#${CONTENT_TYPE_JSON} application/json +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${ACCEPT_JSON} application/json +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${response}= httpresponse +#${OrigResponse}= httpresponse +#${notification_request} [] +#${notification_response} [] + + +### SOL003 VNFSnapshotPackages-API ### + +#${ACCEPT_JSON} application/json +#${AUTH_USAGE} 1 +#${CONTENT_TYPE_JSON} application/json +#${response} httpresponse +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${notification_request} [] +#${notification_response} [] +#${origResponse} httpresponse +#${ACCEPT_PLAIN} text/plain +#${CONTENT_TYPE_PLAIN} text/plain +#${ACCEPT_ZIP} application/zip +#${ACCEPT_OCTET} application/octet-stream +#${CONTENT_TYPE_ZIP} application/zip +#${CONTENT_TYPE_OCTET} application/octet-stream + + +######################### SOL005 ############################### + + +### SOL005 NFVICapacityInformation-API ### + +#${ACCEPT_JSON} application/json +#${CONTENT_TYPE_JSON} application/json +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${response} httpresponse +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${notification_request} [] +#${notification_response} [] +#${origResponse} httpresponse +#${ACCEPT_PLAIN} text/plain +#${CONTENT_TYPE_PLAIN} text/plain +#${ACCEPT_ZIP} application/zip +#${ACCEPT_OCTET} application/octet-stream +#${CONTENT_TYPE_ZIP} application/zip +#${CONTENT_TYPE_OCTET} application/octet-stream + + +### SOL005 NSDManagement-API ### + +#${CONTENT_TYPE_JSON} application/json +#${ACCEPT_JSON} application/json +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${notification_request} [] +#${notification_response} [] +#${response} httpresponse +#${origResponse} httpresponse +#${ACCEPT_ZIP} application/zip +#${ACCEPT_PLAIN} text/plain +#${CONTENT_TYPE_ZIP} application/zip +#${CONTENT_TYPE_PLAIN} text/plain +#${CONTENT_TYPE_OCTET} application/octet-stream + + +### SOL005 NSFaultManagement-API ### + +#${ACCEPT} application/json +#${ACCEPT_JSON} application/json +#${CONTENT_TYPE} application/json +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${AlarmNotification} {} +#${AlarmClearedNotification} {} +#${AlarmListRebuiltNotification} {} +#${response} {} +#${req_mock} {} +#${resp_mock} {} +#${notification_request} [] +#${notification_response} [] + + +### SOL005 NSLifecycleManagement-API ### + +#${CONTENT_TYPE} application/json +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${ACCEPT_JSON} application/json +#${ACCEPT} application/json +#${ACCEPT_PLAIN} text/plain +#${ACCEPT_ZIP} application/zip +#${ARTIFACT_TYPE} application/octet-stream +#${WRONG_ACCEPT} application/json +#${VnfLcmOperationOccurrenceNotification} {} +#${VnfIdentifierCreationNotification} {} +#${VnfIdentifierDeletionNotification} {} +#${notification_request} {} +#${notification_response} {} +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${response} {} +#${json} {"notificationStatus": ""} + +#${tosca_type_VDU_compute} tosca.nodes.nfv.Vdu.Compute +#${tosca_type_VNF} tst010.vnf.simple # custom tosca type defined in the descriptor vnfd_SOL001.yaml in descriptors folder +#${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} + + +### SOL005 NSPerformanceManagement-API ### + +#${CONTENT_TYPE_JSON} application/json +#${ACCEPT_JSON} application/json +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +#${response} {} +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${origResponse}= httpresponse +#${notification_request} [] +#${notification_response} [] + + +### SOL005 VNFPackageManagement-API ### + +#${CONTENT_TYPE_JSON} application/json +#${ACCEPT_JSON} application/json +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${response} +#${notification_request} [] +#${notification_response} [] +#${origResponse} httpresponse +#${ACCEPT_PLAIN} text/plain +#${ACCEPT_ZIP} application/zip +#${CONTENT_TYPE_PLAIN} text/plain +#${CONTENT_TYPE_ZIP} application/zip +#${CONTENT_TYPE_OCTET} application/octet-stream + +#${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} + +### SOL005 VNFSnapshotPackageManagement-API ### + +#${ACCEPT_JSON} application/json +#${CONTENT_TYPE_JSON} application/json +#${response} httpresponse +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${notification_request} [] +#${notification_response} [] +#${origResponse} httpresponse +#${ACCEPT_PLAIN} text/plain +#${CONTENT_TYPE_PLAIN} text/plain +#${ACCEPT_ZIP} application/zip +#${ACCEPT_OCTET} application/octet-stream +#${CONTENT_TYPE_ZIP} application/zip +#${CONTENT_TYPE_OCTET} application/octet-stream + + +######################### SOL009 ############################### + +### SOL009 NFVManoConfigurationAndInformationManagement-API ### + +#${CONTENT_TYPE_JSON} application/json +#${ACCEPT_JSON} application/json +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${response} +#${notification_request} [] +#${notification_response} [] +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${origResponse} {} + + +### SOL009 NFVMANOFaultManagement-API ### + +#${CONTENT_TYPE} application/json +#${ACCEPT} application/json +#${ACCEPT_JSON} application/json +#${response} {} +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${notification_request} [] +#${notification_response} [] +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + + +### SOL009 NFVMANOLogManagement-API ### + +#${CONTENT_TYPE} application/json +#${CONTENT_TYPE_JSON} application/json +#${ACCEPT_JSON} application/json +#${ACCEPT} application/json +#${response} {} +#${origResponse} {} +#${notification_request} [] +#${notification_response} [] +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + + +### SOL009 NFVMANOPerformanceManagement-API ### + +#${response}= httpresponse +#${OrigResponse}= httpresponse +#${notification_request} [] +#${notification_response} [] +#${CONTENT_TYPE_JSON} application/json +#${ACCEPT_JSON} application/json +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +#${response} + + +######################### SOL011 ############################### + + +### SOL011 NSInstanceUsageNotification-API ### + +#${CONTENT_TYPE} application/json +#${CONTENT_TYPE_JSON} application/json +#${ACCEPT} application/json +#${ACCEPT_JSON} application/json +#${response} {} +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${ACCEPT_PLAIN} text/plain +#${ACCEPT_ZIP} application/zip +#${ARTIFACT_TYPE} application/octet-stream +#${WRONG_ACCEPT} application/json +#${VrQuotaAvailNotification} {} +#${notification_request} [] +#${notification_response} [] +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +### SOL011 NSLifecycleOperationGranting-API ### + +#${CONTENT_TYPE} application/json +#${ACCEPT} application/json +#${response} +#${CONTENT_TYPE_PATCH} application/merge-patch+json +#${ACCEPT_PLAIN} text/plain +#${ACCEPT_ZIP} application/zip +#${ARTIFACT_TYPE} application/octet-stream +#${WRONG_ACCEPT} application/json +#${VrQuotaAvailNotification} {} + + +######################### SOL012 ############################### + + +### SOL012 PolicyManagement-API ### + +#${CONTENT_TYPE} application/json +#${CONTENT_TYPE_JSON} application/json +#${ACCEPT} application/json +#${ACCEPT_JSON} application/json +${POLICY_CONTENT_TYPE} application/json +#${response} {} +#${VrQuotaAvailNotification} {} +#${notification_request} [] +#${notification_response} [] +#${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar \ No newline at end of file -- GitLab From 582b6ad681b9107832c357b1108f2cfd72846b54 Mon Sep 17 00:00:00 2001 From: muhammadh Date: Fri, 17 Sep 2021 15:18:16 +0500 Subject: [PATCH 566/580] changed the notation for list type environment/variables and internal variables --- .../environment/variables.txt | 16 ++--- .../environment/variables.txt | 16 ++--- .../environment/variables.txt | 10 +-- .../environment/variables.txt | 24 +++---- .../environment/variables.txt | 16 ++--- internal_variables.txt | 64 +++++++++---------- 6 files changed, 73 insertions(+), 73 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index fb0bb2907..4c3960dbd 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -101,14 +101,14 @@ ${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} +${VDU_IDs} +${VNF_IDs} +${virtualLink_IDs} +${CP_IDs} +${Storage_IDs} +${internalCP_IDs} +${externalCP_IDs} +${InstantiationLevel_IDs} ${Descriptor_ID} ${Provider} diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 53851db2a..bb8e1657f 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -146,14 +146,14 @@ ${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} +${VDU_IDs} +${VNF_IDs} +${virtualLink_IDs} +${CP_IDs} +${Storage_IDs} +${internalCP_IDs} +${externalCP_IDs} +${InstantiationLevel_IDs} ${Descriptor_ID} ${Provider} diff --git a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index dbbedb4bf..61ccb5695 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -51,11 +51,11 @@ ${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} +${VDU_IDs} +${virtualLink_IDs} +${CP_IDs} +${externalCP_IDs} +${Compute_IDs} ${Descriptor_ID} ${Provider} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index 5576d1622..ca2f36fe8 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -111,18 +111,18 @@ ${tosca_type_NS} tosca.nodes.nfv.NS ${tosca_type_NsVirtualLink} tosca.nodes.nfv.NsVirtualLink ${tosca_type_NsCP} tosca.nodes.nfv.Cp -@{VDU_IDs} -@{VNF_IDs} -@{virtualLink_IDs} -@{CP_IDs} -@{Storage_IDs} -@{internalCP_IDs} -@{externalCP_IDs} -@{InstantiationLevel_IDs} - -@{NS_VirtualLink_IDs} -@{NsCP_IDs} -@{SAP_IDs} +${VDU_IDs} +${VNF_IDs} +${virtualLink_IDs} +${CP_IDs} +${Storage_IDs} +${internalCP_IDs} +${externalCP_IDs} +${InstantiationLevel_IDs} + +${NS_VirtualLink_IDs} +${NsCP_IDs} +${SAP_IDs} ${NS_DescriptorID} ${Designer} diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 8846ff677..af33fce8c 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -99,14 +99,14 @@ ${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} +${VDU_IDs} +${VNF_IDs} +${virtualLink_IDs} +${CP_IDs} +${Storage_IDs} +${internalCP_IDs} +${externalCP_IDs} +${InstantiationLevel_IDs} ${Descriptor_ID} ${Provider} diff --git a/internal_variables.txt b/internal_variables.txt index 51cafb784..89817045f 100644 --- a/internal_variables.txt +++ b/internal_variables.txt @@ -66,14 +66,14 @@ ${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} +${VDU_IDs} +${VNF_IDs} +${virtualLink_IDs} +${CP_IDs} +${Storage_IDs} +${internalCP_IDs} +${externalCP_IDs} +${InstantiationLevel_IDs} ${Descriptor_ID} ${Provider} @@ -187,10 +187,10 @@ ${scaleOutResponse} #${tosca_type_virtual_link} tosca.nodes.nfv.VnfVirtualLink #${tosca_type_VDU_cp} tosca.nodes.nfv.VduCp -#@{VDU_IDs} -#@{virtualLink_IDs} -#@{CP_IDs} -#@{externalCP_IDs} +#${VDU_IDs} +#${virtualLink_IDs} +#${CP_IDs} +#${externalCP_IDs} #${Descriptor_ID} #${Provider} @@ -215,10 +215,10 @@ ${scaleOutResponse} #${tosca_type_virtual_link} tosca.nodes.nfv.VnfVirtualLink #${tosca_type_VDU_cp} tosca.nodes.nfv.VduCp -#@{VDU_IDs} -#@{virtualLink_IDs} -#@{CP_IDs} -#@{externalCP_IDs} +#${VDU_IDs} +#${virtualLink_IDs} +#${CP_IDs} +#${externalCP_IDs} #${Descriptor_ID} #${Provider} @@ -358,14 +358,14 @@ ${CONTENT_TYPE_ZIP} application/zip #${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} +#${VDU_IDs} +#${VNF_IDs} +#${virtualLink_IDs} +#${CP_IDs} +#${Storage_IDs} +#${internalCP_IDs} +#${externalCP_IDs} +#${InstantiationLevel_IDs} #${Descriptor_ID} #${Provider} @@ -408,14 +408,14 @@ ${CONTENT_TYPE_ZIP} application/zip #${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} +#${VDU_IDs} +#${VNF_IDs} +#${virtualLink_IDs} +#${CP_IDs} +#${Storage_IDs} +#${internalCP_IDs} +#${externalCP_IDs} +#${InstantiationLevel_IDs} #${Descriptor_ID} #${Provider} -- GitLab From fd70870c839a4943153b480610bd3721653a6341 Mon Sep 17 00:00:00 2001 From: hammad zafar Date: Mon, 20 Sep 2021 11:58:56 +0500 Subject: [PATCH 567/580] added some missing internal variables to be removed from TAP GUI --- internal_variables.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/internal_variables.txt b/internal_variables.txt index 89817045f..5890a71c9 100644 --- a/internal_variables.txt +++ b/internal_variables.txt @@ -316,6 +316,12 @@ ${CONTENT_TYPE_ZIP} application/zip #${CONTENT_TYPE_PLAIN} text/plain #${CONTENT_TYPE_OCTET} application/octet-stream +${NS_DescriptorID} +${Designer} +${NS_Name} +${NS_Version} +${NS_InvariantId} + ### SOL005 NSFaultManagement-API ### @@ -373,6 +379,12 @@ ${CONTENT_TYPE_ZIP} application/zip #${Software_Version} #${Descriptor_Version} +#${NS_DescriptorID} +#${Designer} +#${NS_Name} +#${NS_Version} +#${NS_InvariantId} + ### SOL005 NSPerformanceManagement-API ### -- GitLab From e26b745a40da90629b06536df1d70d5974e80bf9 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Tue, 21 Sep 2021 18:28:55 +0200 Subject: [PATCH 568/580] fixed issues #90 and #190 in 3.3.1 --- SOL002/VNFConfiguration-API/Configuration.robot | 3 ++- SOL002/VNFFaultManagement-API/Alarms.robot | 3 ++- SOL002/VNFFaultManagement-API/IndividualAlarm.robot | 3 ++- SOL002/VNFFaultManagement-API/IndividualSubscription.robot | 3 ++- SOL002/VNFFaultManagement-API/Subscriptions.robot | 3 ++- SOL002/VNFIndicator-API/IndividualSubscription.robot | 3 ++- SOL002/VNFIndicator-API/IndividualVNFindicator.robot | 3 ++- SOL002/VNFIndicator-API/Subscriptions.robot | 3 ++- SOL002/VNFIndicator-API/VNFIndicators.robot | 3 ++- SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot | 3 ++- .../VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot | 2 ++ SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot | 3 ++- SOL002/VNFPerformanceManagement-API/IndividualReport.robot | 3 ++- SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot | 3 ++- SOL002/VNFPerformanceManagement-API/PMJobs.robot | 3 ++- SOL002/VNFPerformanceManagement-API/Thresholds.robot | 3 ++- .../VNFPerformanceManagementKeywords.robot | 3 ++- SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot | 2 ++ SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot | 3 ++- .../VnfLcmMntOperationKeywords.robot | 2 ++ SOL003/VNFLifecycleOperationGranting-API/Grants.robot | 2 ++ SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot | 2 ++ .../VNFPackageManagementKeywords.robot | 3 ++- SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot | 3 ++- SOL003/VNFPerformanceManagement-API/IndividualReport.robot | 3 ++- SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot | 3 ++- SOL003/VNFPerformanceManagement-API/PMJobs.robot | 3 ++- SOL003/VNFPerformanceManagement-API/Thresholds.robot | 3 ++- .../VnfSnapshotPackageManagementKeywords.robot | 2 ++ .../VRQANOperationKeywords.robot | 2 ++ .../NFVICapacityInformationKeywords.robot | 2 ++ SOL005/NSDManagement-API/NSDManagementKeywords.robot | 3 ++- SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot | 2 ++ SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot | 2 ++ .../NSPerformanceManagementKeywords.robot | 3 ++- .../VNFPackageManagementKeywords.robot | 3 ++- .../VnfSnapshotPackageManagementKeywords.robot | 2 ++ .../FaultManagement-APIKeyword.robot | 2 ++ .../NFVMANOLogManagementKeywords.robot | 3 ++- SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot | 3 ++- SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot | 3 ++- .../IndividualSubscription.robot | 3 ++- .../NFVMANOPerformanceManagement-API/IndividualThreshold.robot | 3 ++- SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot | 3 ++- SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot | 3 ++- SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot | 3 ++- .../NFVMANOCimKeywords.robot | 3 ++- .../NSInstanceUsageNotificationKeywords.robot | 2 ++ .../NSLCOperationGrantingKeywords.robot | 2 ++ SOL012/PolicyManagement-API/PolicyManagementKeywords.robot | 2 ++ 50 files changed, 100 insertions(+), 35 deletions(-) diff --git a/SOL002/VNFConfiguration-API/Configuration.robot b/SOL002/VNFConfiguration-API/Configuration.robot index e73d7b725..870974463 100644 --- a/SOL002/VNFConfiguration-API/Configuration.robot +++ b/SOL002/VNFConfiguration-API/Configuration.robot @@ -136,7 +136,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/problem+json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema}= Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFFaultManagement-API/Alarms.robot b/SOL002/VNFFaultManagement-API/Alarms.robot index 38cda3c6b..799660219 100644 --- a/SOL002/VNFFaultManagement-API/Alarms.robot +++ b/SOL002/VNFFaultManagement-API/Alarms.robot @@ -352,7 +352,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot index 84bf414a5..84e3acec7 100644 --- a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot @@ -191,7 +191,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot index bb36528d0..e390d767c 100644 --- a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot @@ -147,7 +147,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index 9277b7d58..9e6d937f2 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -427,7 +427,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFIndicator-API/IndividualSubscription.robot b/SOL002/VNFIndicator-API/IndividualSubscription.robot index 4281108b3..ea2a8d777 100644 --- a/SOL002/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL002/VNFIndicator-API/IndividualSubscription.robot @@ -168,7 +168,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot index 3a6ce0935..037704350 100644 --- a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot @@ -218,7 +218,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index 481813f72..ba59c8166 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -282,7 +282,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFIndicator-API/VNFIndicators.robot b/SOL002/VNFIndicator-API/VNFIndicators.robot index 36b0d5309..0a53a03b2 100644 --- a/SOL002/VNFIndicator-API/VNFIndicators.robot +++ b/SOL002/VNFIndicator-API/VNFIndicators.robot @@ -286,7 +286,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${schema} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${jsonSchema}= Catenate SEPARATOR= ${schema} .schema.json Validate Json ${jsonSchema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index 5f98314bf..751f102fc 100644 --- a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -214,7 +214,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 5568a8b60..9a9fb2659 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -44,6 +44,8 @@ Check HTTP Location Header Contains URI of Created Resource Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index 32440446f..9efe99998 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -229,7 +229,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot index c441161df..fbaf31ae6 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot @@ -155,7 +155,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index b89cfb101..3b1ede734 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -228,7 +228,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 6729e776e..8de51eb61 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -409,7 +409,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index 63cc80724..9f9c31401 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -258,7 +258,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index a5e14818d..f986bff12 100644 --- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -271,7 +271,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot index 72dce684a..896533beb 100644 --- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot @@ -63,6 +63,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot index eb7e4d107..adadcbcc8 100644 --- a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot +++ b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot @@ -168,7 +168,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 7949f59da..7cfc01879 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -42,6 +42,8 @@ Check Operation Occurrence Id existence Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 09cc71681..d404f521b 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -165,6 +165,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index 5f78fe347..f018e15ca 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -162,6 +162,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 244baea75..e7a7b117a 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -648,7 +648,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index 8e672dda5..bda65d8b1 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -250,7 +250,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot index 913685180..f75b0d0f4 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot @@ -144,7 +144,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot index ccfbc2cc8..c991eb863 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -239,7 +239,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL003/VNFPerformanceManagement-API/PMJobs.robot b/SOL003/VNFPerformanceManagement-API/PMJobs.robot index 62f90e043..49c284c4c 100644 --- a/SOL003/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL003/VNFPerformanceManagement-API/PMJobs.robot @@ -445,7 +445,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL003/VNFPerformanceManagement-API/Thresholds.robot b/SOL003/VNFPerformanceManagement-API/Thresholds.robot index 191540a1d..230ae2300 100644 --- a/SOL003/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL003/VNFPerformanceManagement-API/Thresholds.robot @@ -262,7 +262,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index 0a68e1451..b45a9f84c 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -84,6 +84,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot index 82d28996e..0e98e5e17 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot @@ -34,6 +34,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot b/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot index 1efc69be4..d4ce40ea1 100644 --- a/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot +++ b/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot @@ -86,6 +86,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index fa450c157..1f7d141ef 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -853,7 +853,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Log ${response['body']} Validate Json ${schema} ${response['body']} diff --git a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot index 8584aaec2..be49a99aa 100644 --- a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot +++ b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot @@ -35,6 +35,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index bbde72695..446f6ba0f 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -198,6 +198,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index 8c566c0d4..69f8826c5 100644 --- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot +++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot @@ -556,7 +556,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 9cd205605..5a858d074 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -921,7 +921,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index 165ffc5bb..90349731f 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -87,6 +87,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot index a83c15dd4..7b776100f 100644 --- a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -39,6 +39,8 @@ GET Fault Management Alarms Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate ${input} .schema.json Validate Json ${schema} ${response[0]['body']} Log Json Schema Validation OK diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index f1ea06205..cb971a90d 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -24,7 +24,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot index 7b7b2564e..fb16841cf 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot @@ -177,7 +177,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot index b11f802b7..873fa6f4f 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot @@ -143,7 +143,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot index 0092c466b..2e0558a51 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualSubscription.robot @@ -102,7 +102,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot index 1e8c9a94e..d66a5f555 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot @@ -177,7 +177,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot index f9be6fcb0..66281f44c 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot @@ -403,7 +403,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot index c3ae8e0db..e1185af35 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot @@ -204,7 +204,8 @@ Check HTTP Response Header Contains Link Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot index a96ea74c2..71a956bf4 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot @@ -213,7 +213,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 0689396c5..5657f95cb 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -24,7 +24,8 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - Should Contain ${response['headers']['Content-Type']} application/json + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot b/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot index dd6194450..b72d95c96 100644 --- a/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot +++ b/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot @@ -35,6 +35,8 @@ Check HTTP Response Header Contains Link Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate ${input} .schema.json Validate Json ${schema} ${response['body']} diff --git a/SOL011/NSLifecycleOperationGranting-API/NSLCOperationGrantingKeywords.robot b/SOL011/NSLifecycleOperationGranting-API/NSLCOperationGrantingKeywords.robot index 9d29ab9d9..9838b930b 100644 --- a/SOL011/NSLifecycleOperationGranting-API/NSLCOperationGrantingKeywords.robot +++ b/SOL011/NSLifecycleOperationGranting-API/NSLCOperationGrantingKeywords.robot @@ -43,6 +43,8 @@ Check Resource URI existence Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate ${input} .schema.json Validate Json ${schema} ${response['body']} diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index 2de04c799..3f760a7d8 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -91,6 +91,8 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json ${schema} = Catenate ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK -- GitLab From d60ff1cc2f2f270c61856634082f45e52d4a3a04 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Wed, 22 Sep 2021 17:23:11 +0200 Subject: [PATCH 569/580] Fix issue #153 --- .../VnfLcmMntOperationKeywords.robot | 8 +++++--- .../VNFPackageManagementKeywords.robot | 15 ++++++++++++++- .../VnfSnapshotPackageManagementKeywords.robot | 4 ++++ .../NSDManagement-API/NSDManagementKeywords.robot | 8 ++++++++ .../VNFPackageManagementKeywords.robot | 7 +++++++ .../VnfSnapshotPackageManagementKeywords.robot | 6 +++++- requirements.txt | 4 ++-- scripts/docker/Dockerfile | 2 +- 8 files changed, 46 insertions(+), 8 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 7cfc01879..82d820f54 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -2071,8 +2071,9 @@ GET VNF State Snapshot - Range Request Set Headers {"Range":"${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot + Unset Headers ["Range"] ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} GET VNF State Snapshot - Invalid Range Pass Execution If ${VNFM_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. @@ -2081,8 +2082,9 @@ GET VNF State Snapshot - Invalid Range Set Headers {"Range":"${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot + Unset Headers ["Range"] ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} GET VNF State Snapshot - Conflict in State Log Trying to get information about a VNF State Snapshot whose creation process is not completed @@ -2134,4 +2136,4 @@ Check HTTP Content-Length Header Is Set Log Check Content-Range HTTP Header Should Contain ${response['headers']} Content-Length Should Be Equal As Strings ${response['headers']['Content-Length']} ${full_length} - Log Header Content-Length is present \ No newline at end of file + Log Header Content-Length is present diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index e7a7b117a..0e268af7b 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -279,6 +279,7 @@ GET Individual VNF Package Content with Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -288,6 +289,7 @@ GET Individual VNF Package Content with explicit Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -311,6 +313,7 @@ GET Individual VNF Package Content with invalid Range Request Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -581,6 +584,7 @@ GET Individual VNF Package Artifact with Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -591,6 +595,7 @@ GET Individual VNF Package Artifact with invalid Range Request Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1054,6 +1059,7 @@ GET Individual OnBoarded VNF Package Content with Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/package_content + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1064,6 +1070,7 @@ GET Individual OnBoarded VNF Package Content with invalid Range Request Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/package_content + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1103,6 +1110,7 @@ GET Individual OnBoarded VNF Package Artifact with Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1113,6 +1121,7 @@ GET Individual OnBoarded VNF Package Artifact with invalid Range Request Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1397,6 +1406,7 @@ Get Artifact in VNF Package with Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1430,6 +1440,7 @@ GET VNF Package Artifact with invalid Range Request Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1520,6 +1531,7 @@ Get Artifact in OnBoarded VNF Package with Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1553,6 +1565,7 @@ GET OnBoarded VNF Package Artifact with invalid Range Request Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1661,4 +1674,4 @@ Match the VNF subscription Response Attributes with Descriptors 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/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index b45a9f84c..cc739c3af 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -285,6 +285,7 @@ GET VNF Snapshot Package Content - Range Request Set Headers {"Range":"${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + Unset Headers ["Range"] ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -295,6 +296,7 @@ GET VNF Snapshot Package Content - Invalid Range Set Headers {"Range":"${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + Unset Headers ["Range"] ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -374,6 +376,7 @@ GET Individual VNF Snapshot Package Artifact - Range Request Set Headers {"Range":"${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + Unset Headers ["Range"] ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -384,6 +387,7 @@ GET Individual VNF Snapshot Package Artifact - Invalid Range Set Headers {"Range":"${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + Unset Headers ["Range"] ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 1f7d141ef..3e3fd76b3 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -346,6 +346,7 @@ GET NSD Content with Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -356,6 +357,7 @@ GET NSD Content with invalid Range Request Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -658,6 +660,7 @@ Get PNFD Content with Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -667,6 +670,7 @@ Get PNFD Content with invalid Range Request Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1379,6 +1383,7 @@ GET Individual PNFD Archive Artifact with Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/artifacts/${pnfd_artifactPath} + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1411,6 +1416,7 @@ GET Individual PNFD Archive Artifact with invalid Range Request Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/artifacts/${pnfd_artifactPath} + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1450,6 +1456,7 @@ GET Individual NSD Archive Artifact with Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath} + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1494,6 +1501,7 @@ GET Individual NSD Archive Artifact with invalid Range Request Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId}/artifacts/${artifactPath} + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 5a858d074..e4661c100 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -457,6 +457,7 @@ GET Individual VNF Package Content with Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -466,6 +467,7 @@ GET Individual VNF Package Content with explicit Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -489,6 +491,7 @@ GET Individual VNF Package Content with invalid Range Request Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -586,6 +589,7 @@ GET Individual VNF Package Artifact with Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -596,6 +600,7 @@ GET Individual VNF Package Artifact with invalid Range Request Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1133,6 +1138,7 @@ Get Artifact in VNF Package with Range Request Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} @@ -1166,6 +1172,7 @@ GET VNF Package Artifact with invalid Range Request Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts + Unset Headers ["Range"] ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index 90349731f..e5c9cf02e 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -324,6 +324,7 @@ GET VNF Snapshot Package Content - Range Request Set Headers {"Range":"${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + Unset Headers ["Range"] ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -334,6 +335,7 @@ GET VNF Snapshot Package Content - Invalid Range Set Headers {"Range":"${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content + Unset Headers ["Range"] ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -438,6 +440,7 @@ GET Individual VNF Snapshot Package Artifact - Range Request Set Headers {"Range":"${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + Unset Headers ["Range"] ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -448,6 +451,7 @@ GET Individual VNF Snapshot Package Artifact - Invalid Range Set Headers {"Range":"${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} + Unset Headers ["Range"] ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -825,4 +829,4 @@ DELETE Access Configuration for External Artifacts Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/ext_artifacts_access ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Set Global Variable ${response} ${outputResponse} diff --git a/requirements.txt b/requirements.txt index bafc102d3..4f00299b7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,9 @@ ## To install the libraries, use: # pip -r requirements.txt - +git+https://github.com/etsi-cti-admin/RESTinstance robotframework==3.1 -RESTinstance==1.0.0rc4 +#RESTinstance==1.0.0rc4 robotframework-dependencylibrary==1.0.0.post1 robotframework-jsonlibrary==0.3 robotframework-jsonschemalibrary==1.0 diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile index bf5f18016..9f082157b 100644 --- a/scripts/docker/Dockerfile +++ b/scripts/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:16.04 +FROM ubuntu:18.04 MAINTAINER ETSI STF 583 -- GitLab From 16f03de8332c36a619ab4e1bc8c728651ded875b Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Wed, 22 Sep 2021 17:47:40 +0200 Subject: [PATCH 570/580] CI/CD enhancements --- .jenkins.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.jenkins.sh b/.jenkins.sh index 22ed7fcf2..8bfd08f3e 100644 --- a/.jenkins.sh +++ b/.jenkins.sh @@ -12,7 +12,18 @@ run_dir="$(pwd)" echo "Using git branch $GIT_BRANCH" bash ./scripts/build-container.sh -bash ./scripts/run-container.sh "${run_dir}" "$GIT_BRANCH" +ret=$? +if [ "$ret" != "0" ]; then + echo "build-container.sh failed" + exit -1 +fi + +bash ./scripts/run-container.sh "${run_dir}" +ret=$? +if [ "$ret" != "0" ]; then + echo "run-container.sh failed" + exit -1 +fi if [[ "$GIT_BRANCH" =~ .*fix-plu$ ]]; then @@ -30,3 +41,4 @@ fi ret=$? echo "Final validation result: $ret" exit $ret + -- GitLab From 651162ee4a936551ecaf233b98c1ae417e8bcbf0 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 27 Sep 2021 10:21:05 +0200 Subject: [PATCH 571/580] fixed issue #191 in 3.3.1-fix-plu --- SOL005/NSFaultManagement-API/schemas/alarm.schema.json | 5 ++++- SOL005/NSFaultManagement-API/schemas/alarms.schema.json | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/SOL005/NSFaultManagement-API/schemas/alarm.schema.json b/SOL005/NSFaultManagement-API/schemas/alarm.schema.json index 76fc39504..5aadd14cd 100644 --- a/SOL005/NSFaultManagement-API/schemas/alarm.schema.json +++ b/SOL005/NSFaultManagement-API/schemas/alarm.schema.json @@ -157,7 +157,10 @@ }, "faultDetails": { "description": "Provides additional information about the fault..\n", - "type": "string" + "type": "array", + "items": { + "type": "string" + } }, "_links": { "description": "Links for this resource.\n", diff --git a/SOL005/NSFaultManagement-API/schemas/alarms.schema.json b/SOL005/NSFaultManagement-API/schemas/alarms.schema.json index 716025e57..b43c87fb1 100644 --- a/SOL005/NSFaultManagement-API/schemas/alarms.schema.json +++ b/SOL005/NSFaultManagement-API/schemas/alarms.schema.json @@ -159,7 +159,10 @@ }, "faultDetails": { "description": "Provides additional information about the fault..\n", - "type": "string" + "type": "array", + "items": { + "type": "string" + } }, "_links": { "description": "Links for this resource.\n", -- GitLab From e78bc6a4fb5e0f6ba1cb80f318e89aab1998c7d7 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Mon, 27 Sep 2021 10:36:23 +0200 Subject: [PATCH 572/580] fixed issue #192 in 3.3.1-fix-plu --- SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 496319b49..9baf42f52 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -132,5 +132,5 @@ Check resource existence Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${instantiatedVnfInstanceId} Integer response status 200 \ No newline at end of file -- GitLab From 2e629660d74cad90f75e083e0e2f721cdefeb6ca Mon Sep 17 00:00:00 2001 From: muhammadh Date: Tue, 28 Sep 2021 13:08:31 +0500 Subject: [PATCH 573/580] fixed VNFD parsing in SOL002 VNF-LCM-API --- .../VnfLcmOperationKeywords.robot | 23 +- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 221 +++++++++--------- .../environment/variables.txt | 2 + 3 files changed, 127 insertions(+), 119 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 9a9fb2659..45395980a 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -1463,8 +1463,17 @@ Fetch Information from SOL001 descriptor file @{VirtualLink_labels}= Create List @{CP_labels}= Create List @{Storage_labels}= Create List + + FOR ${key} IN @{node_types.keys()} + ${node_type}= Get Variable Value ${node_types['${key}']['derived_from']} + ${is_VNF}= Run Keyword And Return Status Should Be Equal As Strings ${node_type} ${tosca_type_VNF} + Run Keyword If ${is_VNF} Set Global Variable ${tosca_type_derived_from_VNF} ${key} + END + ${derived_type_is_used}= Run Keyword And Return Status Should not be empty ${tosca_type_derived_from_VNF} + Run Keyword If ${derived_type_is_used} Set Global Variable ${tosca_type_VNF} ${tosca_type_derived_from_VNF} + FOR ${key} IN @{topology_template.node_templates.keys()} - ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} + ${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} @@ -1486,12 +1495,12 @@ Fetch Information from SOL001 descriptor file Get VNF Attributes from SOL001 [Arguments] ${VNF_label} Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml - ${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} + ${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} diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index e9159106a..04f00443c 100644 --- a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -1,73 +1,114 @@ tosca_definitions_version: tosca_simple_yaml_1_2 description: "TST010 reference VNF-B" + +imports: + - https://forge.etsi.org/rep/nfv/SOL001/raw/v3.3.1/etsi_nfv_sol001_vnfd_types.yaml + metadata: descriptor_id: "VNF-B" vendor: "ETSI TST WG" version: "2.0" + +node_types: + tst010.vnf.simple: + derived_from: tosca.nodes.nfv.VNF + properties: + descriptor_id: + type: string + default: VNF-B + descriptor_version: + type: string + default: '1.0' + provider: + type: string + default: ETSI TST WG + product_name: + type: string + default: VNF-B + software_version: + type: string + default: '1.0' + product_info_name: + type: string + default: VNF-B + product_info_description: + type: string + default: TST010 reference VNF-B + flavour_id: + type: string + default: VNF-B_flavor + flavour_description: + type: string + default: "VNF-B flavor" + vnfm_info: + type: list + entry_schema: + type: string + default: [ 'etsivnfm:v2.3.1' ] + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + description: Invoked upon receipt of a Scale VNF request + terminate: + description: Invoked upon receipt Terminate VNF request + operate: + description: Invoked upon receipt of an Operate VNF request + requirements: + - virtual_link_right: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_left: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_management: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 0] + topology_template: substitution_mappings: - node_type: "tosca.nodes.nfv.VNF" + node_type: "tst010.vnf.simple" requirements: + virtual_link_right: + [right, virtual_link_right] 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: + layer_protocols: [ ipv4 ] order: 1 requirements: - virtual_link_right: - virtual_binding: VDU-B-2 + - virtual_binding: VDU-B management: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] order: 0 requirements: - virtual_link_management: - virtual_binding: VDU-B-1 + - virtual_binding: VDU-B left: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] 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: + - virtual_binding: VDU-B + vdu-b-1-vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: - size_of_storage: 20 + size_of_storage: 20 GB rdma_enabled: false sw_image_data: name: "vdu-b-1 image" @@ -76,63 +117,15 @@ topology_template: algorithm: "sha-224" hash: "somehashfortst010" container_format: "bare" - disk-format: qcow2 - min-disk: '1' - min-ram: '2' + 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: + VDU-B: type: "tosca.nodes.nfv.Vdu.Compute" properties: name: "vdu-b-1-vcd" - descriptor: "Description of VDU-B-1" + description: "Description of VDU-B-1" vdu_profile: min_number_of_instances: 1 max_number_of_instances: 2 @@ -140,29 +133,33 @@ topology_template: virtual_compute: properties: virtual_memory: - virtual_mem_size: 4096 + virtual_mem_size: 4096 MB 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" + - virtual_storage: vdu-b-1-vsd + + vnf-b-1_VNF: + type: "tst010.vnf.simple" 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 + descriptor_id: "VNF-B" + descriptor_version: "2.0" + provider: "ETSI TST WG" + product_name: "VDU_VNF-B" + software_version: "2.0" + product_info_name: "VDU_VNF-B" + product_info_description: "TST010 reference VNF-A" + flavour_id: "VNF-B_flavor" + flavour_description: "VNF-B flavor" + vnfm_info: + - etsivnfm:v2.3.1 + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + implementation: scale-example.yaml + terminate: + implementation: terminate-example.yaml + operate: + implementation: operate-example.yaml \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index 4c3960dbd..2b40b0675 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -95,11 +95,13 @@ ${check_descriptors} 1 ${descriptorType} SOL006 ${check_multiple_instances} 0 +#############internal variables used for descriptor parsing################ ${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 +${tosca_type_derived_from_VNF} ${VDU_IDs} ${VNF_IDs} -- GitLab From 6b64ca06290643092063046e968920b264bff19c Mon Sep 17 00:00:00 2001 From: muhammadh Date: Tue, 28 Sep 2021 13:41:59 +0500 Subject: [PATCH 574/580] fixed VNFD parsing in SOL003 APIs --- .../VnfLcmMntOperationKeywords.robot | 22 +- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 221 ++++++------- .../environment/variables.txt | 4 +- .../Grants.robot | 139 +------- .../IndividualGrant.robot | 148 +-------- ...NFLifecycleOperationGrantingKeywords.robot | 311 ++++++++++++++++++ .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 221 ++++++------- .../VNFPackageManagementKeywords.robot | 115 ++++++- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 221 ++++++------- .../environment/variables.txt | 19 +- 10 files changed, 789 insertions(+), 632 deletions(-) create mode 100644 SOL003/VNFLifecycleOperationGranting-API/VNFLifecycleOperationGrantingKeywords.robot diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 82d820f54..7c2aed5f8 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1517,8 +1517,16 @@ Fetch Information from SOL001 descriptor file @{VirtualLink_labels}= Create List @{CP_labels}= Create List @{Storage_labels}= Create List + FOR ${key} IN @{node_types.keys()} + ${node_type}= Get Variable Value ${node_types['${key}']['derived_from']} + ${is_VNF}= Run Keyword And Return Status Should Be Equal As Strings ${node_type} ${tosca_type_VNF} + Run Keyword If ${is_VNF} Set Global Variable ${tosca_type_derived_from_VNF} ${key} + END + ${derived_type_is_used}= Run Keyword And Return Status Should not be empty ${tosca_type_derived_from_VNF} + Run Keyword If ${derived_type_is_used} Set Global Variable ${tosca_type_VNF} ${tosca_type_derived_from_VNF} + FOR ${key} IN @{topology_template.node_templates.keys()} - ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} + ${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} @@ -1540,12 +1548,12 @@ Fetch Information from SOL001 descriptor file Get VNF Attributes from SOL001 [Arguments] ${VNF_label} Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml - ${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} + ${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} diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index e9159106a..0e0688b94 100644 --- a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -1,73 +1,114 @@ tosca_definitions_version: tosca_simple_yaml_1_2 description: "TST010 reference VNF-B" + +imports: + - https://forge.etsi.org/rep/nfv/SOL001/raw/v3.3.1/etsi_nfv_sol001_vnfd_types.yaml + metadata: descriptor_id: "VNF-B" vendor: "ETSI TST WG" version: "2.0" + + node_types: + tst010.vnf.simple: + derived_from: tosca.nodes.nfv.VNF + properties: + descriptor_id: + type: string + default: VNF-B + descriptor_version: + type: string + default: '1.0' + provider: + type: string + default: ETSI TST WG + product_name: + type: string + default: VNF-B + software_version: + type: string + default: '1.0' + product_info_name: + type: string + default: VNF-B + product_info_description: + type: string + default: TST010 reference VNF-B + flavour_id: + type: string + default: VNF-B_flavor + flavour_description: + type: string + default: "VNF-B flavor" + vnfm_info: + type: list + entry_schema: + type: string + default: [ 'etsivnfm:v2.3.1' ] + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + description: Invoked upon receipt of a Scale VNF request + terminate: + description: Invoked upon receipt Terminate VNF request + operate: + description: Invoked upon receipt of an Operate VNF request + requirements: + - virtual_link_right: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_left: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_management: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 0] + topology_template: substitution_mappings: - node_type: "tosca.nodes.nfv.VNF" + node_type: "tst010.vnf.simple" requirements: + virtual_link_right: + [right, virtual_link_right] 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: + layer_protocols: [ ipv4 ] order: 1 requirements: - virtual_link_right: - virtual_binding: VDU-B-2 + - virtual_binding: VDU-B management: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] order: 0 requirements: - virtual_link_management: - virtual_binding: VDU-B-1 + - virtual_binding: VDU-B left: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] 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: + - virtual_binding: VDU-B + vdu-b-1-vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: - size_of_storage: 20 + size_of_storage: 20 GB rdma_enabled: false sw_image_data: name: "vdu-b-1 image" @@ -76,63 +117,15 @@ topology_template: algorithm: "sha-224" hash: "somehashfortst010" container_format: "bare" - disk-format: qcow2 - min-disk: '1' - min-ram: '2' + 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: + VDU-B: type: "tosca.nodes.nfv.Vdu.Compute" properties: name: "vdu-b-1-vcd" - descriptor: "Description of VDU-B-1" + description: "Description of VDU-B-1" vdu_profile: min_number_of_instances: 1 max_number_of_instances: 2 @@ -140,29 +133,33 @@ topology_template: virtual_compute: properties: virtual_memory: - virtual_mem_size: 4096 + virtual_mem_size: 4096 MB 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" + - virtual_storage: vdu-b-1-vsd + + vnf-b-1_VNF: + type: "tst010.vnf.simple" 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 + descriptor_id: "VNF-B" + descriptor_version: "2.0" + provider: "ETSI TST WG" + product_name: "VDU_VNF-B" + software_version: "2.0" + product_info_name: "VDU_VNF-B" + product_info_description: "TST010 reference VNF-A" + flavour_id: "VNF-B_flavor" + flavour_description: "VNF-B flavor" + vnfm_info: + - etsivnfm:v2.3.1 + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + implementation: scale-example.yaml + terminate: + implementation: terminate-example.yaml + operate: + implementation: operate-example.yaml \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index bb8e1657f..47b61bc5b 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -140,12 +140,14 @@ ${callbackResp} localhost ${descriptorType} SOL001 ${check_descriptors} 1 +#############internal variables used for descriptor parsing################ ${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 - +${tosca_type_derived_from_VNF} + ${VDU_IDs} ${VNF_IDs} ${virtualLink_IDs} diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index d404f521b..d8636fb18 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -1,6 +1,7 @@ *** Settings *** Library String -Resource environment/variables.txt +Resource environment/variables.txt +Resource VNFLifecycleOperationGrantingKeywords.robot Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary @@ -12,7 +13,6 @@ Documentation This resource represents grants. The client can use this resour ... from the NFVO to perform a particular VNF lifecycle operation. *** Variables *** -${response} {} ${retry} 2 min ${polling} 10 sec @@ -109,137 +109,4 @@ DELETE Grants - Method not implemented *** Keywords *** Wait for individual grant successful notification - Wait Until Keyword Succeeds ${retry} ${polling} Get an individual grant - Successful -Send Request Grant Request in Synchronous mode - Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/grants - Pass Execution If ${SYNC_MODE} == 0 The Granting process is asynchronous mode. Skipping the test - Set Headers {"Accept": "${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Run Keyword If ${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=${Descriptor_ID} flavourId=${Flavour_ID} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Send Request Grant Request in Asynchronous mode - Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/grants - Pass Execution If ${SYNC_MODE} == 1 The Granting process is synchronous mode. Skipping the test - Set Headers {"Accept": "${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Run Keyword If ${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=${Descriptor_ID} flavourId=${Flavour_ID} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Send Request for a new Grant Forbiden Operation - Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/grants - Log The grant request should be rejected - Set Headers {"Accept": "${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Run Keyword If ${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=${Descriptor_ID} flavourId=${Flavour_ID} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check Operation Occurrence Id existence - ${occId}= Get Value From Json ${response['headers']} $..Location - Should Not Be Empty ${occId} - -Check HTTP Response Header Contains - [Arguments] ${CONTENT_TYPE} - Should Contain ${response['headers']} ${CONTENT_TYPE} - Log Header is present - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json - ... ELSE Should Contain ${response['headers']['Content-Type']} application/json - ${schema} = Catenate SEPARATOR= ${input} .schema.json - Validate Json ${schema} ${response['body']} - -Get an individual grant - Successful - log Trying to read an individual grant - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${response['headers']['Location']} - Log Validate Status code - Integer response status 200 - -Get Grants - Log Trying to perform a GET. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants - ${body}= Output response - Set Suite Variable ${response} ${body} - -Put Grants - Log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/grants - ${body}= Output response - Set Suite Variable ${response} ${body} - -Patch Grants - Log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/grants - ${body}= Output response - Set Suite Variable ${response} ${body} - -Delete Grants - Log Trying to perform a DELETE. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/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 - Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml - ${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 - Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml - ${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} \ No newline at end of file + Wait Until Keyword Succeeds ${retry} ${polling} Get an individual grant - Successful \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index f018e15ca..cf4e7d026 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -1,5 +1,6 @@ *** Settings *** -Resource environment/variables.txt +Resource environment/variables.txt +Resource VNFLifecycleOperationGrantingKeywords.robot Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ @@ -100,147 +101,4 @@ DELETE an individual grant - Method not implemented ... Applicability: none ... Post-Conditions: none Delete individual Grant - Check HTTP Response Status Code Is 405 - -*** Keywords *** -Get individual grant - log Trying to read an individual grant - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Check resource existence - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - -Post individual Grant - log Trying to read an individual grant - Pass Execution If ${SYNC_MODE} == 1 Skipping. Synchronous mode is supported - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Put individual Grant - Log Trying to perform a GET. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Patch individual Grant - Log Trying to perform a GET. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Delete individual Grant - Log Trying to perform a GET. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} - ${body}= Output response - Set Suite Variable ${response} ${body} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Header Contains - [Arguments] ${CONTENT_TYPE} - Should Contain ${response['headers']} ${CONTENT_TYPE} - Log Header is present - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json - ... ELSE Should Contain ${response['headers']['Content-Type']} application/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 - Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml - @{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 - Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml - ${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} - Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml - @{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} - Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml - @{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} - Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml - ${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']} + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/VNFLifecycleOperationGrantingKeywords.robot b/SOL003/VNFLifecycleOperationGranting-API/VNFLifecycleOperationGrantingKeywords.robot new file mode 100644 index 000000000..bcc612f9f --- /dev/null +++ b/SOL003/VNFLifecycleOperationGranting-API/VNFLifecycleOperationGrantingKeywords.robot @@ -0,0 +1,311 @@ +*** Settings *** +Library String +Resource environment/variables.txt +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Library Collections + +*** Variables *** +${retry} 2 min +${polling} 10 sec + +*** Keywords *** +Wait for individual grant successful notification + Wait Until Keyword Succeeds ${retry} ${polling} Get an individual grant - Successful +Send Request Grant Request in Synchronous mode + Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/grants + Pass Execution If ${SYNC_MODE} == 0 The Granting process is asynchronous mode. Skipping the test + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + ${template}= Get File jsons/grantRequest.json + ${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 in Asynchronous mode + Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/grants + Pass Execution If ${SYNC_MODE} == 1 The Granting process is synchronous mode. Skipping the test + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + ${template}= Get File jsons/grantRequest.json + ${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 for a new Grant Forbiden Operation + Log Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/grants + Log The grant request should be rejected + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + ${template}= Get File jsons/grantRejectedRequest.json + ${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} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal As Strings ${response['status']} ${expected_status} + Log Status code validated + +Check Operation Occurrence Id existence + ${occId}= Get Value From Json ${response['headers']} $..Location + Should Not Be Empty ${occId} + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json + ... ELSE Should Contain ${response['headers']['Content-Type']} application/json + ${schema} = Catenate SEPARATOR= ${input} .schema.json + Validate Json ${schema} ${response['body']} + +Get an individual grant - Successful + log Trying to read an individual grant + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${response['headers']['Location']} + Log Validate Status code + Integer response status 200 + +Get Grants + Log Trying to perform a GET. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants + ${body}= Output response + Set Suite Variable ${response} ${body} + +Put Grants + Log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/grants + ${body}= Output response + Set Suite Variable ${response} ${body} + +Patch Grants + Log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/grants + ${body}= Output response + Set Suite Variable ${response} ${body} + +Delete Grants + Log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/grants + ${body}= Output response + Set Suite Variable ${response} ${body} + + +Get individual grant + log Trying to read an individual grant + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Check resource existence + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + +Post individual Grant + log Trying to read an individual grant + Pass Execution If ${SYNC_MODE} == 1 Skipping. Synchronous mode is supported + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Put individual Grant + Log Trying to perform a GET. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Patch individual Grant + Log Trying to perform a GET. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${response} ${body} + +Delete individual Grant + Log Trying to perform a GET. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} + ${body}= Output response + Set Suite Variable ${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 + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL001.yaml + @{VDU_labels}= Create List + @{VNF_labels}= Create List + @{VirtualLink_labels}= Create List + @{CP_labels}= Create List + @{Storage_labels}= Create List + FOR ${key} IN @{node_types.keys()} + ${node_type}= Get Variable Value ${node_types['${key}']['derived_from']} + ${is_VNF}= Run Keyword And Return Status Should Be Equal As Strings ${node_type} ${tosca_type_VNF} + Run Keyword If ${is_VNF} Set Global Variable ${tosca_type_derived_from_VNF} ${key} + END + ${derived_type_is_used}= Run Keyword And Return Status Should not be empty ${tosca_type_derived_from_VNF} + Run Keyword If ${derived_type_is_used} Set Global Variable ${tosca_type_VNF} ${tosca_type_derived_from_VNF} + 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} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL001.yaml + ${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 + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml + ${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} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml + @{VDU_labels}= Create List + ${Storage_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 ${Storage_labels} ${nfv.vnfd[0].vdu[${i}]['virtual-storage-desc']} + Append To List ${Compute_labels} ${nfv.vnfd[0].vdu[${i}]['virtual-compute-desc']} + Get Internal CPs for each VDU ${i} + END + Set Global Variable ${VDU_IDs} ${VDU_labels} + Set Global Variable ${Storage_IDs} ${Storage_labels} + Set Global Variable ${Compute_IDs} ${Compute_labels} + +Get Internal CPs for each VDU + [Arguments] ${vdu} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml + ${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} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml + @{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} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml + ${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} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml + @{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 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']} \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index e9159106a..603b1887d 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -1,73 +1,114 @@ tosca_definitions_version: tosca_simple_yaml_1_2 description: "TST010 reference VNF-B" + +imports: + - https://forge.etsi.org/rep/nfv/SOL001/raw/v3.3.1/etsi_nfv_sol001_vnfd_types.yaml + metadata: descriptor_id: "VNF-B" vendor: "ETSI TST WG" version: "2.0" + +node_types: + tst010.vnf.simple: + derived_from: tosca.nodes.nfv.VNF + properties: + descriptor_id: + type: string + default: VNF-B + descriptor_version: + type: string + default: '1.0' + provider: + type: string + default: ETSI TST WG + product_name: + type: string + default: VNF-B + software_version: + type: string + default: '1.0' + product_info_name: + type: string + default: VNF-B + product_info_description: + type: string + default: TST010 reference VNF-B + flavour_id: + type: string + default: VNF-B_flavor + flavour_description: + type: string + default: "VNF-B flavor" + vnfm_info: + type: list + entry_schema: + type: string + default: [ 'etsivnfm:v2.3.1' ] + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + description: Invoked upon receipt of a Scale VNF request + terminate: + description: Invoked upon receipt Terminate VNF request + operate: + description: Invoked upon receipt of an Operate VNF request + requirements: + - virtual_link_right: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_left: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_management: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 0] + topology_template: substitution_mappings: - node_type: "tosca.nodes.nfv.VNF" + node_type: "tst010.vnf.simple" requirements: + virtual_link_right: + [right, virtual_link_right] 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: + layer_protocols: [ ipv4 ] order: 1 requirements: - virtual_link_right: - virtual_binding: VDU-B-2 + - virtual_binding: VDU-B management: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] order: 0 requirements: - virtual_link_management: - virtual_binding: VDU-B-1 + - virtual_binding: VDU-B left: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] 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: + - virtual_binding: VDU-B + vdu-b-1-vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: - size_of_storage: 20 + size_of_storage: 20 GB rdma_enabled: false sw_image_data: name: "vdu-b-1 image" @@ -76,63 +117,15 @@ topology_template: algorithm: "sha-224" hash: "somehashfortst010" container_format: "bare" - disk-format: qcow2 - min-disk: '1' - min-ram: '2' + 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: + VDU-B: type: "tosca.nodes.nfv.Vdu.Compute" properties: name: "vdu-b-1-vcd" - descriptor: "Description of VDU-B-1" + description: "Description of VDU-B-1" vdu_profile: min_number_of_instances: 1 max_number_of_instances: 2 @@ -140,29 +133,33 @@ topology_template: virtual_compute: properties: virtual_memory: - virtual_mem_size: 4096 + virtual_mem_size: 4096 MB 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" + - virtual_storage: vdu-b-1-vsd + + vnf-b-1_VNF: + type: "tst010.vnf.simple" 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 + descriptor_id: "VNF-B" + descriptor_version: "2.0" + provider: "ETSI TST WG" + product_name: "VDU_VNF-B" + software_version: "2.0" + product_info_name: "VDU_VNF-B" + product_info_description: "TST010 reference VNF-A" + flavour_id: "VNF-B_flavor" + flavour_description: "VNF-B flavor" + vnfm_info: + - etsivnfm:v2.3.1 + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + implementation: scale-example.yaml + terminate: + implementation: terminate-example.yaml + operate: + implementation: operate-example.yaml \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 0e268af7b..f2f5d6687 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1627,16 +1627,54 @@ PARSE the Descriptor File Fetch Information from SOL001 descriptor file Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml - ${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} + @{VDU_labels}= Create List + @{VNF_labels}= Create List + @{VirtualLink_labels}= Create List + @{CP_labels}= Create List + @{Storage_labels}= Create List + FOR ${key} IN @{node_types.keys()} + ${node_type}= Get Variable Value ${node_types['${key}']['derived_from']} + ${is_VNF}= Run Keyword And Return Status Should Be Equal As Strings ${node_type} ${tosca_type_VNF} + Run Keyword If ${is_VNF} Set Global Variable ${tosca_type_derived_from_VNF} ${key} + END + ${derived_type_is_used}= Run Keyword And Return Status Should not be empty ${tosca_type_derived_from_VNF} + Run Keyword If ${derived_type_is_used} Set Global Variable ${tosca_type_VNF} ${tosca_type_derived_from_VNF} + 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} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL001.yaml + ${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 Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @@ -1644,13 +1682,78 @@ Fetch Information from SOL006 descriptor file ${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} + ${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} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml + @{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} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml + ${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} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml + @{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} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml + ${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} + Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml + @{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 Package Response Attributes with Descriptors #Checking Response attributes with VNF Descriptors Should Be Equal As Strings ${response['body']['vnfdId']} ${Descriptor_ID} diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index e9159106a..1d3878732 100644 --- a/SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -1,73 +1,114 @@ tosca_definitions_version: tosca_simple_yaml_1_2 description: "TST010 reference VNF-B" + +imports: + - https://forge.etsi.org/rep/nfv/SOL001/raw/v3.3.1/etsi_nfv_sol001_vnfd_types.yaml + metadata: descriptor_id: "VNF-B" vendor: "ETSI TST WG" version: "2.0" + +node_types: + tst010.vnf.simple: + derived_from: tosca.nodes.nfv.VNF + properties: + descriptor_id: + type: string + default: VNF-B + descriptor_version: + type: string + default: '1.0' + provider: + type: string + default: ETSI TST WG + product_name: + type: string + default: VNF-B + software_version: + type: string + default: '1.0' + product_info_name: + type: string + default: VNF-B + product_info_description: + type: string + default: TST010 reference VNF-B + flavour_id: + type: string + default: VNF-B_flavor + flavour_description: + type: string + default: "VNF-B flavor" + vnfm_info: + type: list + entry_schema: + type: string + default: [ 'etsivnfm:v2.3.1' ] + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + description: Invoked upon receipt of a Scale VNF request + terminate: + description: Invoked upon receipt Terminate VNF request + operate: + description: Invoked upon receipt of an Operate VNF request + requirements: + - virtual_link_right: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_left: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_management: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 0] + topology_template: substitution_mappings: - node_type: "tosca.nodes.nfv.VNF" + node_type: "tst010.vnf.simple" requirements: + virtual_link_right: + [right, virtual_link_right] 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: + layer_protocols: [ ipv4 ] order: 1 requirements: - virtual_link_right: - virtual_binding: VDU-B-2 + - virtual_binding: VDU-B management: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] order: 0 requirements: - virtual_link_management: - virtual_binding: VDU-B-1 + - virtual_binding: VDU-B left: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] 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: + - virtual_binding: VDU-B + vdu-b-1-vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: - size_of_storage: 20 + size_of_storage: 20 GB rdma_enabled: false sw_image_data: name: "vdu-b-1 image" @@ -76,63 +117,15 @@ topology_template: algorithm: "sha-224" hash: "somehashfortst010" container_format: "bare" - disk-format: qcow2 - min-disk: '1' - min-ram: '2' + 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: + VDU-B: type: "tosca.nodes.nfv.Vdu.Compute" properties: name: "vdu-b-1-vcd" - descriptor: "Description of VDU-B-1" + description: "Description of VDU-B-1" vdu_profile: min_number_of_instances: 1 max_number_of_instances: 2 @@ -140,29 +133,33 @@ topology_template: virtual_compute: properties: virtual_memory: - virtual_mem_size: 4096 + virtual_mem_size: 4096 MB 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" + - virtual_storage: vdu-b-1-vsd + + vnf-b-1_VNF: + type: "tst010.vnf.simple" 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 + descriptor_id: "VNF-B" + descriptor_version: "2.0" + provider: "ETSI TST WG" + product_name: "VDU_VNF-B" + software_version: "2.0" + product_info_name: "VDU_VNF-B" + product_info_description: "TST010 reference VNF-A" + flavour_id: "VNF-B_flavor" + flavour_description: "VNF-B flavor" + vnfm_info: + - etsivnfm:v2.3.1 + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + implementation: scale-example.yaml + terminate: + implementation: terminate-example.yaml + operate: + implementation: operate-example.yaml \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 0f3ab14e5..367da1ee0 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -95,9 +95,26 @@ ${callbackResp} localhost ${descriptorType} SOL001 ${check_descriptors} 1 +#############internal variables used for descriptor parsing################ +${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 +${tosca_type_derived_from_VNF} + +${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} +${Flavour_ID} \ No newline at end of file -- GitLab From 15fc587b9387e9a2db34a70e2299bdd7717c5a1f Mon Sep 17 00:00:00 2001 From: muhammadh Date: Tue, 28 Sep 2021 14:34:24 +0500 Subject: [PATCH 575/580] fixed VNFD parsing in SOL005 APIs --- .../NSLCMOperationKeywords.robot | 23 +- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 221 +++++++++--------- .../environment/variables.txt | 3 +- .../VNFPackageManagementKeywords.robot | 111 ++++++++- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 221 +++++++++--------- .../environment/variables.txt | 2 + 6 files changed, 341 insertions(+), 240 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 446f6ba0f..07deef4a1 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -247,8 +247,17 @@ Fetch Information from SOL001 descriptor file @{VirtualLink_labels}= Create List @{CP_labels}= Create List @{Storage_labels}= Create List + + FOR ${key} IN @{node_types.keys()} + ${node_type}= Get Variable Value ${node_types['${key}']['derived_from']} + ${is_VNF}= Run Keyword And Return Status Should Be Equal As Strings ${node_type} ${tosca_type_VNF} + Run Keyword If ${is_VNF} Set Global Variable ${tosca_type_derived_from_VNF} ${key} + END + ${derived_type_is_used}= Run Keyword And Return Status Should not be empty ${tosca_type_derived_from_VNF} + Run Keyword If ${derived_type_is_used} Set Global Variable ${tosca_type_VNF} ${tosca_type_derived_from_VNF} + FOR ${key} IN @{topology_template.node_templates.keys()} - ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} + ${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} @@ -270,12 +279,12 @@ Fetch Information from SOL001 descriptor file Get VNF Attributes from SOL001 [Arguments] ${VNF_label} Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml - ${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} + ${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} diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index 3a90f45bf..838bea448 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -1,73 +1,114 @@ tosca_definitions_version: tosca_simple_yaml_1_2 description: "TST010 reference VNF-B" + +imports: + - https://forge.etsi.org/rep/nfv/SOL001/raw/v3.3.1/etsi_nfv_sol001_vnfd_types.yaml + metadata: descriptor_id: "VNF-B" vendor: "ETSI TST WG" version: "2.0" + +node_types: + tst010.vnf.simple: + derived_from: tosca.nodes.nfv.VNF + properties: + descriptor_id: + type: string + default: VNF-B + descriptor_version: + type: string + default: '1.0' + provider: + type: string + default: ETSI TST WG + product_name: + type: string + default: VNF-B + software_version: + type: string + default: '1.0' + product_info_name: + type: string + default: VNF-B + product_info_description: + type: string + default: TST010 reference VNF-B + flavour_id: + type: string + default: VNF-B_flavor + flavour_description: + type: string + default: "VNF-B flavor" + vnfm_info: + type: list + entry_schema: + type: string + default: [ 'etsivnfm:v2.3.1' ] + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + description: Invoked upon receipt of a Scale VNF request + terminate: + description: Invoked upon receipt Terminate VNF request + operate: + description: Invoked upon receipt of an Operate VNF request + requirements: + - virtual_link_right: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_left: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_management: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 0] + topology_template: substitution_mappings: - node_type: "tosca.nodes.nfv.VNF" + node_type: "tst010.vnf.simple" requirements: + virtual_link_right: + [right, virtual_link_right] 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: + layer_protocols: [ ipv4 ] order: 1 requirements: - virtual_link_right: - virtual_binding: VDU-B-2 + - virtual_binding: VDU-B management: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] order: 0 requirements: - virtual_link_management: - virtual_binding: VDU-B-1 + - virtual_binding: VDU-B left: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] 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: + - virtual_binding: VDU-B + vdu-b-1-vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: - size_of_storage: 20 + size_of_storage: 20 GB rdma_enabled: false sw_image_data: name: "vdu-b-1 image" @@ -76,63 +117,15 @@ topology_template: algorithm: "sha-224" hash: "somehashfortst010" container_format: "bare" - disk-format: qcow2 - min-disk: '1' - min-ram: '2' + 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: - type: "tosca.nodes.nfv.VNF" - properties: - descriptor_id: "VNF_B" - 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: + VDU-B: type: "tosca.nodes.nfv.Vdu.Compute" properties: name: "vdu-b-1-vcd" - descriptor: "Description of VDU-B-1" + description: "Description of VDU-B-1" vdu_profile: min_number_of_instances: 1 max_number_of_instances: 2 @@ -140,29 +133,33 @@ topology_template: virtual_compute: properties: virtual_memory: - virtual_mem_size: 4096 + virtual_mem_size: 4096 MB 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" + - virtual_storage: vdu-b-1-vsd + + vnf-b-1_VNF: + type: "tst010.vnf.simple" 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 + descriptor_id: "VNF-B" + descriptor_version: "2.0" + provider: "ETSI TST WG" + product_name: "VDU_VNF-B" + software_version: "2.0" + product_info_name: "VDU_VNF-B" + product_info_description: "TST010 reference VNF-A" + flavour_id: "VNF-B_flavor" + flavour_description: "VNF-B flavor" + vnfm_info: + - etsivnfm:v2.3.1 + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + implementation: scale-example.yaml + terminate: + implementation: terminate-example.yaml + operate: + implementation: operate-example.yaml \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index ca2f36fe8..7e11084e3 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -101,11 +101,13 @@ ${callbackResp} 127.0.0.1 ${check_descriptors} 1 ${descriptorType} SOL006 +#############internal variables used for descriptor parsing################ ${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 +${tosca_type_derived_from_VNF} ${tosca_type_NS} tosca.nodes.nfv.NS ${tosca_type_NsVirtualLink} tosca.nodes.nfv.NsVirtualLink @@ -130,7 +132,6 @@ ${NS_Name} ${NS_Version} ${NS_InvariantId} - ${Descriptor_ID} ${Provider} ${Product_Name} diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index e4661c100..1f07d88e9 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -197,11 +197,46 @@ PARSE the Descriptor File Fetch Information from SOL001 descriptor file Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml - ${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} + @{VDU_labels}= Create List + @{VNF_labels}= Create List + @{VirtualLink_labels}= Create List + @{CP_labels}= Create List + @{Storage_labels}= Create List + FOR ${key} IN @{node_types.keys()} + ${node_type}= Get Variable Value ${node_types['${key}']['derived_from']} + ${is_VNF}= Run Keyword And Return Status Should Be Equal As Strings ${node_type} ${tosca_type_VNF} + Run Keyword If ${is_VNF} Set Global Variable ${tosca_type_derived_from_VNF} ${key} + END + ${derived_type_is_used}= Run Keyword And Return Status Should not be empty ${tosca_type_derived_from_VNF} + Run Keyword If ${derived_type_is_used} Set Global Variable ${tosca_type_VNF} ${tosca_type_derived_from_VNF} + 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} + Set Global Variable ${Descriptor_ID} ${descriptor_id} Set Global Variable ${Provider} ${provider} @@ -213,15 +248,75 @@ Fetch Information from SOL006 descriptor file Import Variables ${CURDIR}/descriptors/SOL006/VNFD/vnfd_SOL006.yaml ${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} + ${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 Response Attributes of vnfPkgInfo with Descriptors #Checking Response attributes with VNF Descriptors Should Be Equal As Strings ${response['body']['vnfdId']} ${Descriptor_Id} diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index e9159106a..603b1887d 100644 --- a/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -1,73 +1,114 @@ tosca_definitions_version: tosca_simple_yaml_1_2 description: "TST010 reference VNF-B" + +imports: + - https://forge.etsi.org/rep/nfv/SOL001/raw/v3.3.1/etsi_nfv_sol001_vnfd_types.yaml + metadata: descriptor_id: "VNF-B" vendor: "ETSI TST WG" version: "2.0" + +node_types: + tst010.vnf.simple: + derived_from: tosca.nodes.nfv.VNF + properties: + descriptor_id: + type: string + default: VNF-B + descriptor_version: + type: string + default: '1.0' + provider: + type: string + default: ETSI TST WG + product_name: + type: string + default: VNF-B + software_version: + type: string + default: '1.0' + product_info_name: + type: string + default: VNF-B + product_info_description: + type: string + default: TST010 reference VNF-B + flavour_id: + type: string + default: VNF-B_flavor + flavour_description: + type: string + default: "VNF-B flavor" + vnfm_info: + type: list + entry_schema: + type: string + default: [ 'etsivnfm:v2.3.1' ] + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + description: Invoked upon receipt of a Scale VNF request + terminate: + description: Invoked upon receipt Terminate VNF request + operate: + description: Invoked upon receipt of an Operate VNF request + requirements: + - virtual_link_right: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_left: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_management: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 0] + topology_template: substitution_mappings: - node_type: "tosca.nodes.nfv.VNF" + node_type: "tst010.vnf.simple" requirements: + virtual_link_right: + [right, virtual_link_right] 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: + layer_protocols: [ ipv4 ] order: 1 requirements: - virtual_link_right: - virtual_binding: VDU-B-2 + - virtual_binding: VDU-B management: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] order: 0 requirements: - virtual_link_management: - virtual_binding: VDU-B-1 + - virtual_binding: VDU-B left: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] 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: + - virtual_binding: VDU-B + vdu-b-1-vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: - size_of_storage: 20 + size_of_storage: 20 GB rdma_enabled: false sw_image_data: name: "vdu-b-1 image" @@ -76,63 +117,15 @@ topology_template: algorithm: "sha-224" hash: "somehashfortst010" container_format: "bare" - disk-format: qcow2 - min-disk: '1' - min-ram: '2' + 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: + VDU-B: type: "tosca.nodes.nfv.Vdu.Compute" properties: name: "vdu-b-1-vcd" - descriptor: "Description of VDU-B-1" + description: "Description of VDU-B-1" vdu_profile: min_number_of_instances: 1 max_number_of_instances: 2 @@ -140,29 +133,33 @@ topology_template: virtual_compute: properties: virtual_memory: - virtual_mem_size: 4096 + virtual_mem_size: 4096 MB 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" + - virtual_storage: vdu-b-1-vsd + + vnf-b-1_VNF: + type: "tst010.vnf.simple" 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 + descriptor_id: "VNF-B" + descriptor_version: "2.0" + provider: "ETSI TST WG" + product_name: "VDU_VNF-B" + software_version: "2.0" + product_info_name: "VDU_VNF-B" + product_info_description: "TST010 reference VNF-A" + flavour_id: "VNF-B_flavor" + flavour_description: "VNF-B flavor" + vnfm_info: + - etsivnfm:v2.3.1 + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + implementation: scale-example.yaml + terminate: + implementation: terminate-example.yaml + operate: + implementation: operate-example.yaml \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index af33fce8c..f2c1e1446 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -93,11 +93,13 @@ ${callbackResp} 127.0.0.1 ${check_descriptors} 1 ${descriptorType} SOL006 +#############internal variables used for descriptor parsing################ ${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 +${tosca_type_derived_from_VNF} ${VDU_IDs} ${VNF_IDs} -- GitLab From 348539ebe82cf40c0961c6ef2e2421d18bd9e1f9 Mon Sep 17 00:00:00 2001 From: muhammadh Date: Tue, 28 Sep 2021 14:38:54 +0500 Subject: [PATCH 576/580] added some missing internal variables to be removed from TAP GUI --- internal_variables.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/internal_variables.txt b/internal_variables.txt index 5890a71c9..9838cae32 100644 --- a/internal_variables.txt +++ b/internal_variables.txt @@ -364,6 +364,14 @@ ${NS_InvariantId} #${tosca_type_VDU_cp} tosca.nodes.nfv.VduCp #${tosca_type_storage} tosca.nodes.nfv.Vdu.VirtualBlockStorage +${tosca_type_NS} tosca.nodes.nfv.NS +${tosca_type_NsVirtualLink} tosca.nodes.nfv.NsVirtualLink +${tosca_type_NsCP} tosca.nodes.nfv.Cp + +${NS_VirtualLink_IDs} +${NsCP_IDs} +${SAP_IDs} + #${VDU_IDs} #${VNF_IDs} #${virtualLink_IDs} -- GitLab From 0e3bb2dc7291ff4a6ccd4f893a8dc92a168e3058 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Tue, 28 Sep 2021 15:58:52 +0200 Subject: [PATCH 577/580] Fix issue #193 --- SOL002/VNFFaultManagement-API/Subscriptions.robot | 2 +- .../VnfLcmOperationKeywords.robot | 6 +++--- .../VNFPerformanceManagementKeywords.robot | 4 ++-- .../VNFFaultManagement-API/FaultManagement-APIKeyword.robot | 6 +++--- SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot | 4 ++-- .../VnfLcmMntOperationKeywords.robot | 6 +++--- .../VNFPackageManagementKeywords.robot | 4 ++-- .../VRQANOperationKeywords.robot | 6 +++--- SOL005/NSDManagement-API/NSDManagementKeywords.robot | 4 ++-- SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot | 2 +- .../NSLifecycleManagement-API/NSLCMOperationKeywords.robot | 6 +++--- .../VNFPackageManagementKeywords.robot | 4 ++-- .../FaultManagement-APIKeyword.robot | 2 +- .../NFVMANOLogManagementKeywords.robot | 2 +- SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot | 2 +- .../NFVMANOCimKeywords.robot | 2 +- .../NSInstanceUsageNotificationKeywords.robot | 6 +++--- SOL011/NSInstanceUsageNotification-API/Subscriptions.robot | 1 - SOL012/PolicyManagement-API/PolicyManagementKeywords.robot | 4 ++-- SOL012/PolicyManagement-API/Subscriptions.robot | 1 - 20 files changed, 36 insertions(+), 38 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index 9e6d937f2..a88d02981 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -320,7 +320,7 @@ Post Create subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Global Variable ${response} ${output} Clear Requests ${callback_endpoint} diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 45395980a..a3cb7f143 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -1168,7 +1168,7 @@ Post Create subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} @@ -1187,7 +1187,7 @@ Post Create subscription - DUPLICATION &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} @@ -1205,7 +1205,7 @@ Post Create subscription - NO-DUPLICATION &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index f986bff12..8651f5c8e 100644 --- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -106,7 +106,7 @@ Send Post Request for VNF Performance Subscription Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body_request}= Get File jsons/subscriptions.json - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} allow_redirects=false ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1 @@ -137,7 +137,7 @@ Send Post Request for Duplicated VNF Performance Subscription Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body_request}= Get File jsons/subscriptions.json - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} allow_redirects=false ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 303 diff --git a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot index 896533beb..66ac5df09 100644 --- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot @@ -275,7 +275,7 @@ POST Subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} @@ -293,7 +293,7 @@ Send POST Request for duplicated subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} @@ -311,7 +311,7 @@ Send POST Request for duplicated subscription not permitted &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} diff --git a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot index adadcbcc8..8d764cab5 100644 --- a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot +++ b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot @@ -106,7 +106,7 @@ Send Post Request for VNF Indicator Subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Global Variable ${response} ${output} Clear Requests ${callback_endpoint} @@ -127,7 +127,7 @@ Send Post Request for Duplicated VNF indicator Subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Global Variable ${response} ${output} Clear Requests ${callback_endpoint} diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 7c2aed5f8..c9bb13f01 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1254,7 +1254,7 @@ Post Create subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} @@ -1274,7 +1274,7 @@ Post Create subscription - DUPLICATION &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} @@ -1294,7 +1294,7 @@ Post Create subscription - NO-DUPLICATION &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index f2f5d6687..e2cf20f87 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -418,7 +418,7 @@ Send Post Request for VNF Package Subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Global Variable ${response} ${output} Clear Requests ${callback_endpoint} @@ -437,7 +437,7 @@ Send Post Request for Duplicated VNF Package Subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Global Variable ${response} ${output} Clear Requests ${callback_endpoint} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot index 0e98e5e17..9c405cd24 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot @@ -103,7 +103,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} @@ -121,7 +121,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} @@ -139,7 +139,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 3e3fd76b3..e05cfa8b9 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -788,7 +788,7 @@ Send Post Request for NSD Management Subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Global Variable ${response} ${output} Clear Requests ${callback_endpoint} @@ -809,7 +809,7 @@ Send POST Request for Duplicated NSD Management Subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Global Variable ${response} ${output} Clear Requests ${callback_endpoint} diff --git a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot index be49a99aa..939ddbeeb 100644 --- a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot +++ b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot @@ -222,7 +222,7 @@ POST Subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Global Variable ${response} ${output} Clear Requests ${callback_endpoint} diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 07deef4a1..3fd36dfce 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -1138,7 +1138,7 @@ POST subscriptions &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} @@ -1157,7 +1157,7 @@ POST subscriptions DUPLICATION &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} @@ -1176,7 +1176,7 @@ POST subscriptions NO DUPLICATION &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 1f07d88e9..661f409bb 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -842,7 +842,7 @@ Send Post Request for VNF Package Subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Global Variable ${response} ${output} Clear Requests ${callback_endpoint} @@ -861,7 +861,7 @@ Send Post Request for Duplicated VNF Package Subscription &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Global Variable ${response} ${output} Clear Requests ${callback_endpoint} diff --git a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot index 7b776100f..66a272224 100644 --- a/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL009/NFVMANOFaultManagement-API/FaultManagement-APIKeyword.robot @@ -222,7 +222,7 @@ POST Subscription Duplication not permitted 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} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index cb971a90d..e1be24d63 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -474,7 +474,7 @@ Send Post Request for Duplicated Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot index e1185af35..013db6210 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Subscriptions.robot @@ -277,7 +277,7 @@ Send Post Request for Duplicated Performance Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index 5657f95cb..44fb39106 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -696,7 +696,7 @@ Send Post Request for Duplicated Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/CimSubscriptionRequest.json ${body_request}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} allow_redirects=false ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot b/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot index b72d95c96..87ccabc70 100644 --- a/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot +++ b/SOL011/NSInstanceUsageNotification-API/NSInstanceUsageNotificationKeywords.robot @@ -46,7 +46,7 @@ POST subscriptions Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/NsInstanceUsageSubscriptionRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -57,7 +57,7 @@ POST subscriptions DUPLICATION Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/NsInstanceUsageSubscriptionRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -68,7 +68,7 @@ POST subscriptions NO DUPLICATION Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${body}= Get File jsons/NsInstanceUsageSubscriptionRequest.json - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot index 45b83dff1..7ad64adf5 100644 --- a/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot +++ b/SOL011/NSInstanceUsageNotification-API/Subscriptions.robot @@ -49,7 +49,6 @@ POST Create a new Subscription - NO-DUPLICATION ... Applicability: Duplication NOT supported by NFVO-C ... Post-Conditions: Duplicate subscription is not created in the NFVO POST subscriptions NO DUPLICATION - Check Subscription Existence Check HTTP Response Status Code Is 303 Check HTTP Response Header Contains Location Check Postcondition Subscription Is Set diff --git a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot index 3f760a7d8..b6fd1f0e8 100644 --- a/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot +++ b/SOL012/PolicyManagement-API/PolicyManagementKeywords.robot @@ -154,7 +154,7 @@ POST subscriptions &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} @@ -175,7 +175,7 @@ POST subscriptions NO DUPLICATION &{notification_response}= Create Mock Response status_code=204 Log Issue the subscription request Create Mock Expectation ${notification_request} ${notification_response} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} allow_redirects=false ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Clear Requests ${callback_endpoint} diff --git a/SOL012/PolicyManagement-API/Subscriptions.robot b/SOL012/PolicyManagement-API/Subscriptions.robot index 2e10d4b89..f0267cc12 100644 --- a/SOL012/PolicyManagement-API/Subscriptions.robot +++ b/SOL012/PolicyManagement-API/Subscriptions.robot @@ -31,7 +31,6 @@ POST Create a new Subscription - DUPLICATION NOT ALLOWED ... Applicability: Duplication is not supported by NFVMANO. ... Post-Conditions: Individual subscription resource returned in the location header is available. POST subscriptions NO DUPLICATION - Check Subscription Existence Check HTTP Response Status Code Is 303 Check HTTP Response Header Contains Location Check Postcondition Individual Subscription Resource Returned in Location Header Is Available -- GitLab From 0faa7460e9f2ea830008f75f4df8e0a2f592f840 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Fri, 1 Oct 2021 11:42:03 +0200 Subject: [PATCH 578/580] fixed issue #194 in 3.3.1-fix-plu --- .../IndividualVNFInstance.robot | 2 +- .../VnfLcmMntOperationKeywords.robot | 25 ++++++++++++++++++- .../environment/variables.txt | 3 ++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 9baf42f52..423900cd7 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -84,7 +84,7 @@ PATCH Individual VNFInstance Conflict ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance not modified - PATCH individual vnfInstance + PATCH individual vnfInstance with conflict Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index c9bb13f01..a4bd5d49a 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -580,9 +580,31 @@ PATCH individual vnfInstance ${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} + +POST conflicting operation + Log Trying to create conflicting operation. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/terminateVnfRequest.json + ${body}= Format String ${template} terminationType=${terminationType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${anotherInstantiatedVnfInstanceId}/terminate ${body} + +PATCH individual vnfInstance with conflict + POST conflicting operation + log Trying to modify an individual VNF instance with conflict + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + 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/${anotherInstantiatedVnfInstanceId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + PATCH individual vnfInstance - Etag mismatch log Trying to modify an individual VNF instance Set Headers {"Accept":"${ACCEPT}"} @@ -603,6 +625,7 @@ DELETE individual vnfInstance Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + DELETE individual vnfInstance in INSTANTIATED state log Trying to delete an individual VNF instance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 47b61bc5b..2c277829e 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -44,11 +44,12 @@ ${erroneousRange} bytes=10000000-1000000000 # Requesting a out of range nu ${full_length} 2000 #Full size of the content file to be transmitted using partial downloads ${instantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${anotherInstantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${notInstantiatedVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${notExistingVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${vnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -${conflicVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${conflictOperationVnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${vnfInstanceId_NoSnapshotTask} no-snapshot-task-supported ${vnfSnapshotInfoId} ${vnfSnapshotInfoId_InUse} snapshotId-of-a-resource-AlreadyInUse-bySomeOther-operation -- GitLab From f24d1ff63fd0b09b3f735940ba04c0ef3d5e1d7e Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Tue, 5 Oct 2021 11:27:31 +0200 Subject: [PATCH 579/580] Update .jenkins.sh: Adding missing parameter to run-container script --- .jenkins.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.jenkins.sh b/.jenkins.sh index 8bfd08f3e..3fb76157c 100644 --- a/.jenkins.sh +++ b/.jenkins.sh @@ -18,7 +18,7 @@ if [ "$ret" != "0" ]; then exit -1 fi -bash ./scripts/run-container.sh "${run_dir}" +bash ./scripts/run-container.sh "${run_dir}" "$GIT_BRANCH" ret=$? if [ "$ret" != "0" ]; then echo "run-container.sh failed" -- GitLab From 88e90d66862167c69a7a62efd9eb871ef626d56f Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Tue, 5 Oct 2021 13:02:26 +0200 Subject: [PATCH 580/580] update readme --- README.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/README.md b/README.md index a2c16f5a6..3c60090f2 100644 --- a/README.md +++ b/README.md @@ -6,16 +6,10 @@ the APIs defined in ETSI NFV GS [SOL002](https://www.etsi.org/deliver/etsi_gs/NF [SOL005](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_NFV-SOL005v030301p.pdf), [SOL009](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/009/03.03.01_60/gs_NFV-SOL009v030301p.pdf), [SOL011](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/011/03.03.01_60/gs_NFV-SOL011v030301p.pdf), in their versions -v3.3.1 and [SOL012](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/012/03.04.01_60/gs_NFV-SOL012v030401p.pdf) in itis version v3.4.1 +v3.3.1 and [SOL012](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/012/03.04.01_60/gs_NFV-SOL012v030401p.pdf) in its version v3.4.1. More information and download is available at [DGS/NFV-TST010ed331](https://portal.etsi.org/webapp/WorkProgram/Report_WorkItem.asp?WKI_ID=58931). -**{- Disclaimer: The content of this repository is related to a DRAFT, i.e. a working document, of ETSI ISG NFV.-}** - -**{-It is provided for information only and is still under development. The content may be updated, replaced, or removed at any time. Do not use as reference material.-}** - -The latest draft may be downloaded at the [ISG NFV open area](https://docbox.etsi.org/isg/nfv/open/Drafts/). - ## Overview The Test Specification is built as a collection of [Robot Framework](robotframework.org/) Test Description. [Robot Framework](robotframework.org/) is a generic test automation framework for acceptance testing and acceptance test-driven development. -- GitLab